xref: /aosp_15_r20/external/swiftshader/include/vulkan/vulkan_structs.hpp (revision 03ce13f70fcc45d86ee91b7ee4cab1936a95046e)
1 // Copyright 2015-2024 The Khronos Group Inc.
2 //
3 // SPDX-License-Identifier: Apache-2.0 OR MIT
4 //
5 
6 // This header is generated from the Khronos Vulkan XML API Registry.
7 
8 #ifndef VULKAN_STRUCTS_HPP
9 #define VULKAN_STRUCTS_HPP
10 
11 #include <cstring>  // strcmp
12 
13 namespace VULKAN_HPP_NAMESPACE
14 {
15 
16   //===============
17   //=== STRUCTS ===
18   //===============
19 
20   struct AabbPositionsKHR
21   {
22     using NativeType = VkAabbPositionsKHR;
23 
24 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
25     VULKAN_HPP_CONSTEXPR
AabbPositionsKHRVULKAN_HPP_NAMESPACE::AabbPositionsKHR26       AabbPositionsKHR( float minX_ = {}, float minY_ = {}, float minZ_ = {}, float maxX_ = {}, float maxY_ = {}, float maxZ_ = {} ) VULKAN_HPP_NOEXCEPT
27       : minX{ minX_ }
28       , minY{ minY_ }
29       , minZ{ minZ_ }
30       , maxX{ maxX_ }
31       , maxY{ maxY_ }
32       , maxZ{ maxZ_ }
33     {
34     }
35 
36     VULKAN_HPP_CONSTEXPR AabbPositionsKHR( AabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37 
AabbPositionsKHRVULKAN_HPP_NAMESPACE::AabbPositionsKHR38     AabbPositionsKHR( VkAabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT : AabbPositionsKHR( *reinterpret_cast<AabbPositionsKHR const *>( &rhs ) ) {}
39 
40     AabbPositionsKHR & operator=( AabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42 
operator =VULKAN_HPP_NAMESPACE::AabbPositionsKHR43     AabbPositionsKHR & operator=( VkAabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
44     {
45       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AabbPositionsKHR const *>( &rhs );
46       return *this;
47     }
48 
49 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setMinXVULKAN_HPP_NAMESPACE::AabbPositionsKHR50     VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMinX( float minX_ ) VULKAN_HPP_NOEXCEPT
51     {
52       minX = minX_;
53       return *this;
54     }
55 
setMinYVULKAN_HPP_NAMESPACE::AabbPositionsKHR56     VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMinY( float minY_ ) VULKAN_HPP_NOEXCEPT
57     {
58       minY = minY_;
59       return *this;
60     }
61 
setMinZVULKAN_HPP_NAMESPACE::AabbPositionsKHR62     VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMinZ( float minZ_ ) VULKAN_HPP_NOEXCEPT
63     {
64       minZ = minZ_;
65       return *this;
66     }
67 
setMaxXVULKAN_HPP_NAMESPACE::AabbPositionsKHR68     VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMaxX( float maxX_ ) VULKAN_HPP_NOEXCEPT
69     {
70       maxX = maxX_;
71       return *this;
72     }
73 
setMaxYVULKAN_HPP_NAMESPACE::AabbPositionsKHR74     VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMaxY( float maxY_ ) VULKAN_HPP_NOEXCEPT
75     {
76       maxY = maxY_;
77       return *this;
78     }
79 
setMaxZVULKAN_HPP_NAMESPACE::AabbPositionsKHR80     VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMaxZ( float maxZ_ ) VULKAN_HPP_NOEXCEPT
81     {
82       maxZ = maxZ_;
83       return *this;
84     }
85 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86 
operator VkAabbPositionsKHR const&VULKAN_HPP_NAMESPACE::AabbPositionsKHR87     operator VkAabbPositionsKHR const &() const VULKAN_HPP_NOEXCEPT
88     {
89       return *reinterpret_cast<const VkAabbPositionsKHR *>( this );
90     }
91 
operator VkAabbPositionsKHR&VULKAN_HPP_NAMESPACE::AabbPositionsKHR92     operator VkAabbPositionsKHR &() VULKAN_HPP_NOEXCEPT
93     {
94       return *reinterpret_cast<VkAabbPositionsKHR *>( this );
95     }
96 
97 #if defined( VULKAN_HPP_USE_REFLECT )
98 #  if 14 <= VULKAN_HPP_CPP_VERSION
99     auto
100 #  else
101     std::tuple<float const &, float const &, float const &, float const &, float const &, float const &>
102 #  endif
reflectVULKAN_HPP_NAMESPACE::AabbPositionsKHR103       reflect() const VULKAN_HPP_NOEXCEPT
104     {
105       return std::tie( minX, minY, minZ, maxX, maxY, maxZ );
106     }
107 #endif
108 
109 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
110     auto operator<=>( AabbPositionsKHR const & ) const = default;
111 #else
operator ==VULKAN_HPP_NAMESPACE::AabbPositionsKHR112     bool operator==( AabbPositionsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
113     {
114 #  if defined( VULKAN_HPP_USE_REFLECT )
115       return this->reflect() == rhs.reflect();
116 #  else
117       return ( minX == rhs.minX ) && ( minY == rhs.minY ) && ( minZ == rhs.minZ ) && ( maxX == rhs.maxX ) && ( maxY == rhs.maxY ) && ( maxZ == rhs.maxZ );
118 #  endif
119     }
120 
operator !=VULKAN_HPP_NAMESPACE::AabbPositionsKHR121     bool operator!=( AabbPositionsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122     {
123       return !operator==( rhs );
124     }
125 #endif
126 
127   public:
128     float minX = {};
129     float minY = {};
130     float minZ = {};
131     float maxX = {};
132     float maxY = {};
133     float maxZ = {};
134   };
135 
136   using AabbPositionsNV = AabbPositionsKHR;
137 
138   union DeviceOrHostAddressConstKHR
139   {
140     using NativeType = VkDeviceOrHostAddressConstKHR;
141 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
142 
DeviceOrHostAddressConstKHR(VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_={} )143     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstKHR( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {} ) : deviceAddress( deviceAddress_ ) {}
144 
DeviceOrHostAddressConstKHR(const void * hostAddress_)145     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstKHR( const void * hostAddress_ ) : hostAddress( hostAddress_ ) {}
146 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
147 
148 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setDeviceAddress(VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_)149     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstKHR & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
150     {
151       deviceAddress = deviceAddress_;
152       return *this;
153     }
154 
setHostAddress(const void * hostAddress_)155     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstKHR & setHostAddress( const void * hostAddress_ ) VULKAN_HPP_NOEXCEPT
156     {
157       hostAddress = hostAddress_;
158       return *this;
159     }
160 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
161 
operator VkDeviceOrHostAddressConstKHR const&() const162     operator VkDeviceOrHostAddressConstKHR const &() const
163     {
164       return *reinterpret_cast<const VkDeviceOrHostAddressConstKHR *>( this );
165     }
166 
operator VkDeviceOrHostAddressConstKHR&()167     operator VkDeviceOrHostAddressConstKHR &()
168     {
169       return *reinterpret_cast<VkDeviceOrHostAddressConstKHR *>( this );
170     }
171 
172 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
173     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress;
174     const void *                        hostAddress;
175 #else
176     VkDeviceAddress                                 deviceAddress;
177     const void *                                    hostAddress;
178 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
179   };
180 
181   struct AccelerationStructureGeometryTrianglesDataKHR
182   {
183     using NativeType = VkAccelerationStructureGeometryTrianglesDataKHR;
184 
185     static const bool                                  allowDuplicate = false;
186     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureGeometryTrianglesDataKHR;
187 
188 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
189     VULKAN_HPP_CONSTEXPR_14
AccelerationStructureGeometryTrianglesDataKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR190       AccelerationStructureGeometryTrianglesDataKHR( VULKAN_HPP_NAMESPACE::Format                      vertexFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
191                                                      VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR vertexData_   = {},
192                                                      VULKAN_HPP_NAMESPACE::DeviceSize                  vertexStride_ = {},
193                                                      uint32_t                                          maxVertex_    = {},
194                                                      VULKAN_HPP_NAMESPACE::IndexType                   indexType_    = VULKAN_HPP_NAMESPACE::IndexType::eUint16,
195                                                      VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR indexData_    = {},
196                                                      VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR transformData_ = {},
197                                                      const void *                                      pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
198       : pNext{ pNext_ }
199       , vertexFormat{ vertexFormat_ }
200       , vertexData{ vertexData_ }
201       , vertexStride{ vertexStride_ }
202       , maxVertex{ maxVertex_ }
203       , indexType{ indexType_ }
204       , indexData{ indexData_ }
205       , transformData{ transformData_ }
206     {
207     }
208 
209     VULKAN_HPP_CONSTEXPR_14
210       AccelerationStructureGeometryTrianglesDataKHR( AccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
211 
AccelerationStructureGeometryTrianglesDataKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR212     AccelerationStructureGeometryTrianglesDataKHR( VkAccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
213       : AccelerationStructureGeometryTrianglesDataKHR( *reinterpret_cast<AccelerationStructureGeometryTrianglesDataKHR const *>( &rhs ) )
214     {
215     }
216 
217     AccelerationStructureGeometryTrianglesDataKHR & operator=( AccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
218 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
219 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR220     AccelerationStructureGeometryTrianglesDataKHR & operator=( VkAccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
221     {
222       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR const *>( &rhs );
223       return *this;
224     }
225 
226 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR227     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
228     {
229       pNext = pNext_;
230       return *this;
231     }
232 
setVertexFormatVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR233     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & setVertexFormat( VULKAN_HPP_NAMESPACE::Format vertexFormat_ ) VULKAN_HPP_NOEXCEPT
234     {
235       vertexFormat = vertexFormat_;
236       return *this;
237     }
238 
239     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR &
setVertexDataVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR240       setVertexData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & vertexData_ ) VULKAN_HPP_NOEXCEPT
241     {
242       vertexData = vertexData_;
243       return *this;
244     }
245 
246     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR &
setVertexStrideVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR247       setVertexStride( VULKAN_HPP_NAMESPACE::DeviceSize vertexStride_ ) VULKAN_HPP_NOEXCEPT
248     {
249       vertexStride = vertexStride_;
250       return *this;
251     }
252 
setMaxVertexVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR253     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & setMaxVertex( uint32_t maxVertex_ ) VULKAN_HPP_NOEXCEPT
254     {
255       maxVertex = maxVertex_;
256       return *this;
257     }
258 
setIndexTypeVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR259     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & setIndexType( VULKAN_HPP_NAMESPACE::IndexType indexType_ ) VULKAN_HPP_NOEXCEPT
260     {
261       indexType = indexType_;
262       return *this;
263     }
264 
265     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR &
setIndexDataVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR266       setIndexData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & indexData_ ) VULKAN_HPP_NOEXCEPT
267     {
268       indexData = indexData_;
269       return *this;
270     }
271 
272     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR &
setTransformDataVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR273       setTransformData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & transformData_ ) VULKAN_HPP_NOEXCEPT
274     {
275       transformData = transformData_;
276       return *this;
277     }
278 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
279 
operator VkAccelerationStructureGeometryTrianglesDataKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR280     operator VkAccelerationStructureGeometryTrianglesDataKHR const &() const VULKAN_HPP_NOEXCEPT
281     {
282       return *reinterpret_cast<const VkAccelerationStructureGeometryTrianglesDataKHR *>( this );
283     }
284 
operator VkAccelerationStructureGeometryTrianglesDataKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR285     operator VkAccelerationStructureGeometryTrianglesDataKHR &() VULKAN_HPP_NOEXCEPT
286     {
287       return *reinterpret_cast<VkAccelerationStructureGeometryTrianglesDataKHR *>( this );
288     }
289 
290 #if defined( VULKAN_HPP_USE_REFLECT )
291 #  if 14 <= VULKAN_HPP_CPP_VERSION
292     auto
293 #  else
294     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
295                const void * const &,
296                VULKAN_HPP_NAMESPACE::Format const &,
297                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
298                VULKAN_HPP_NAMESPACE::DeviceSize const &,
299                uint32_t const &,
300                VULKAN_HPP_NAMESPACE::IndexType const &,
301                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
302                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &>
303 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR304       reflect() const VULKAN_HPP_NOEXCEPT
305     {
306       return std::tie( sType, pNext, vertexFormat, vertexData, vertexStride, maxVertex, indexType, indexData, transformData );
307     }
308 #endif
309 
310   public:
311     VULKAN_HPP_NAMESPACE::StructureType               sType         = StructureType::eAccelerationStructureGeometryTrianglesDataKHR;
312     const void *                                      pNext         = {};
313     VULKAN_HPP_NAMESPACE::Format                      vertexFormat  = VULKAN_HPP_NAMESPACE::Format::eUndefined;
314     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR vertexData    = {};
315     VULKAN_HPP_NAMESPACE::DeviceSize                  vertexStride  = {};
316     uint32_t                                          maxVertex     = {};
317     VULKAN_HPP_NAMESPACE::IndexType                   indexType     = VULKAN_HPP_NAMESPACE::IndexType::eUint16;
318     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR indexData     = {};
319     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR transformData = {};
320   };
321 
322   template <>
323   struct CppType<StructureType, StructureType::eAccelerationStructureGeometryTrianglesDataKHR>
324   {
325     using Type = AccelerationStructureGeometryTrianglesDataKHR;
326   };
327 
328   struct AccelerationStructureGeometryAabbsDataKHR
329   {
330     using NativeType = VkAccelerationStructureGeometryAabbsDataKHR;
331 
332     static const bool                                  allowDuplicate = false;
333     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureGeometryAabbsDataKHR;
334 
335 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureGeometryAabbsDataKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR336     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data_   = {},
337                                                                        VULKAN_HPP_NAMESPACE::DeviceSize                  stride_ = {},
338                                                                        const void *                                      pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
339       : pNext{ pNext_ }
340       , data{ data_ }
341       , stride{ stride_ }
342     {
343     }
344 
345     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR( AccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
346 
AccelerationStructureGeometryAabbsDataKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR347     AccelerationStructureGeometryAabbsDataKHR( VkAccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
348       : AccelerationStructureGeometryAabbsDataKHR( *reinterpret_cast<AccelerationStructureGeometryAabbsDataKHR const *>( &rhs ) )
349     {
350     }
351 
352     AccelerationStructureGeometryAabbsDataKHR & operator=( AccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
353 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
354 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR355     AccelerationStructureGeometryAabbsDataKHR & operator=( VkAccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
356     {
357       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR const *>( &rhs );
358       return *this;
359     }
360 
361 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR362     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
363     {
364       pNext = pNext_;
365       return *this;
366     }
367 
368     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR &
setDataVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR369       setData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & data_ ) VULKAN_HPP_NOEXCEPT
370     {
371       data = data_;
372       return *this;
373     }
374 
setStrideVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR375     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR & setStride( VULKAN_HPP_NAMESPACE::DeviceSize stride_ ) VULKAN_HPP_NOEXCEPT
376     {
377       stride = stride_;
378       return *this;
379     }
380 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
381 
operator VkAccelerationStructureGeometryAabbsDataKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR382     operator VkAccelerationStructureGeometryAabbsDataKHR const &() const VULKAN_HPP_NOEXCEPT
383     {
384       return *reinterpret_cast<const VkAccelerationStructureGeometryAabbsDataKHR *>( this );
385     }
386 
operator VkAccelerationStructureGeometryAabbsDataKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR387     operator VkAccelerationStructureGeometryAabbsDataKHR &() VULKAN_HPP_NOEXCEPT
388     {
389       return *reinterpret_cast<VkAccelerationStructureGeometryAabbsDataKHR *>( this );
390     }
391 
392 #if defined( VULKAN_HPP_USE_REFLECT )
393 #  if 14 <= VULKAN_HPP_CPP_VERSION
394     auto
395 #  else
396     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
397                const void * const &,
398                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
399                VULKAN_HPP_NAMESPACE::DeviceSize const &>
400 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR401       reflect() const VULKAN_HPP_NOEXCEPT
402     {
403       return std::tie( sType, pNext, data, stride );
404     }
405 #endif
406 
407   public:
408     VULKAN_HPP_NAMESPACE::StructureType               sType  = StructureType::eAccelerationStructureGeometryAabbsDataKHR;
409     const void *                                      pNext  = {};
410     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data   = {};
411     VULKAN_HPP_NAMESPACE::DeviceSize                  stride = {};
412   };
413 
414   template <>
415   struct CppType<StructureType, StructureType::eAccelerationStructureGeometryAabbsDataKHR>
416   {
417     using Type = AccelerationStructureGeometryAabbsDataKHR;
418   };
419 
420   struct AccelerationStructureGeometryInstancesDataKHR
421   {
422     using NativeType = VkAccelerationStructureGeometryInstancesDataKHR;
423 
424     static const bool                                  allowDuplicate = false;
425     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureGeometryInstancesDataKHR;
426 
427 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureGeometryInstancesDataKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR428     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR( VULKAN_HPP_NAMESPACE::Bool32                      arrayOfPointers_ = {},
429                                                                            VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data_            = {},
430                                                                            const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
431       : pNext{ pNext_ }
432       , arrayOfPointers{ arrayOfPointers_ }
433       , data{ data_ }
434     {
435     }
436 
437     VULKAN_HPP_CONSTEXPR_14
438       AccelerationStructureGeometryInstancesDataKHR( AccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
439 
AccelerationStructureGeometryInstancesDataKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR440     AccelerationStructureGeometryInstancesDataKHR( VkAccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
441       : AccelerationStructureGeometryInstancesDataKHR( *reinterpret_cast<AccelerationStructureGeometryInstancesDataKHR const *>( &rhs ) )
442     {
443     }
444 
445     AccelerationStructureGeometryInstancesDataKHR & operator=( AccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
446 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
447 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR448     AccelerationStructureGeometryInstancesDataKHR & operator=( VkAccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
449     {
450       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR const *>( &rhs );
451       return *this;
452     }
453 
454 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR455     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
456     {
457       pNext = pNext_;
458       return *this;
459     }
460 
461     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR &
setArrayOfPointersVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR462       setArrayOfPointers( VULKAN_HPP_NAMESPACE::Bool32 arrayOfPointers_ ) VULKAN_HPP_NOEXCEPT
463     {
464       arrayOfPointers = arrayOfPointers_;
465       return *this;
466     }
467 
468     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR &
setDataVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR469       setData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & data_ ) VULKAN_HPP_NOEXCEPT
470     {
471       data = data_;
472       return *this;
473     }
474 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
475 
operator VkAccelerationStructureGeometryInstancesDataKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR476     operator VkAccelerationStructureGeometryInstancesDataKHR const &() const VULKAN_HPP_NOEXCEPT
477     {
478       return *reinterpret_cast<const VkAccelerationStructureGeometryInstancesDataKHR *>( this );
479     }
480 
operator VkAccelerationStructureGeometryInstancesDataKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR481     operator VkAccelerationStructureGeometryInstancesDataKHR &() VULKAN_HPP_NOEXCEPT
482     {
483       return *reinterpret_cast<VkAccelerationStructureGeometryInstancesDataKHR *>( this );
484     }
485 
486 #if defined( VULKAN_HPP_USE_REFLECT )
487 #  if 14 <= VULKAN_HPP_CPP_VERSION
488     auto
489 #  else
490     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
491                const void * const &,
492                VULKAN_HPP_NAMESPACE::Bool32 const &,
493                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &>
494 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR495       reflect() const VULKAN_HPP_NOEXCEPT
496     {
497       return std::tie( sType, pNext, arrayOfPointers, data );
498     }
499 #endif
500 
501   public:
502     VULKAN_HPP_NAMESPACE::StructureType               sType           = StructureType::eAccelerationStructureGeometryInstancesDataKHR;
503     const void *                                      pNext           = {};
504     VULKAN_HPP_NAMESPACE::Bool32                      arrayOfPointers = {};
505     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data            = {};
506   };
507 
508   template <>
509   struct CppType<StructureType, StructureType::eAccelerationStructureGeometryInstancesDataKHR>
510   {
511     using Type = AccelerationStructureGeometryInstancesDataKHR;
512   };
513 
514   union AccelerationStructureGeometryDataKHR
515   {
516     using NativeType = VkAccelerationStructureGeometryDataKHR;
517 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
518 
AccelerationStructureGeometryDataKHR(VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR triangles_={} )519     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR triangles_ = {} )
520       : triangles( triangles_ )
521     {
522     }
523 
AccelerationStructureGeometryDataKHR(VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR aabbs_)524     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR aabbs_ ) : aabbs( aabbs_ ) {}
525 
AccelerationStructureGeometryDataKHR(VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR instances_)526     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR instances_ )
527       : instances( instances_ )
528     {
529     }
530 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
531 
532 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
533     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR &
setTriangles(VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR const & triangles_)534       setTriangles( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR const & triangles_ ) VULKAN_HPP_NOEXCEPT
535     {
536       triangles = triangles_;
537       return *this;
538     }
539 
540     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR &
setAabbs(VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR const & aabbs_)541       setAabbs( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR const & aabbs_ ) VULKAN_HPP_NOEXCEPT
542     {
543       aabbs = aabbs_;
544       return *this;
545     }
546 
547     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR &
setInstances(VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR const & instances_)548       setInstances( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR const & instances_ ) VULKAN_HPP_NOEXCEPT
549     {
550       instances = instances_;
551       return *this;
552     }
553 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
554 
operator VkAccelerationStructureGeometryDataKHR const&() const555     operator VkAccelerationStructureGeometryDataKHR const &() const
556     {
557       return *reinterpret_cast<const VkAccelerationStructureGeometryDataKHR *>( this );
558     }
559 
operator VkAccelerationStructureGeometryDataKHR&()560     operator VkAccelerationStructureGeometryDataKHR &()
561     {
562       return *reinterpret_cast<VkAccelerationStructureGeometryDataKHR *>( this );
563     }
564 
565 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
566     VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR triangles;
567     VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR     aabbs;
568     VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR instances;
569 #else
570     VkAccelerationStructureGeometryTrianglesDataKHR triangles;
571     VkAccelerationStructureGeometryAabbsDataKHR     aabbs;
572     VkAccelerationStructureGeometryInstancesDataKHR instances;
573 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
574   };
575 
576   struct AccelerationStructureGeometryKHR
577   {
578     using NativeType = VkAccelerationStructureGeometryKHR;
579 
580     static const bool                                  allowDuplicate = false;
581     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureGeometryKHR;
582 
583 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
584     VULKAN_HPP_CONSTEXPR_14
AccelerationStructureGeometryKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR585       AccelerationStructureGeometryKHR( VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType_ = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles,
586                                         VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR geometry_ = {},
587                                         VULKAN_HPP_NAMESPACE::GeometryFlagsKHR                     flags_    = {},
588                                         const void *                                               pNext_    = nullptr ) VULKAN_HPP_NOEXCEPT
589       : pNext{ pNext_ }
590       , geometryType{ geometryType_ }
591       , geometry{ geometry_ }
592       , flags{ flags_ }
593     {
594     }
595 
596     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR( AccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
597 
AccelerationStructureGeometryKHRVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR598     AccelerationStructureGeometryKHR( VkAccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT
599       : AccelerationStructureGeometryKHR( *reinterpret_cast<AccelerationStructureGeometryKHR const *>( &rhs ) )
600     {
601     }
602 
603     AccelerationStructureGeometryKHR & operator=( AccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
604 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
605 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR606     AccelerationStructureGeometryKHR & operator=( VkAccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT
607     {
608       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR const *>( &rhs );
609       return *this;
610     }
611 
612 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR613     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
614     {
615       pNext = pNext_;
616       return *this;
617     }
618 
setGeometryTypeVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR619     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR & setGeometryType( VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType_ ) VULKAN_HPP_NOEXCEPT
620     {
621       geometryType = geometryType_;
622       return *this;
623     }
624 
625     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR &
setGeometryVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR626       setGeometry( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR const & geometry_ ) VULKAN_HPP_NOEXCEPT
627     {
628       geometry = geometry_;
629       return *this;
630     }
631 
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR632     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR & setFlags( VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
633     {
634       flags = flags_;
635       return *this;
636     }
637 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
638 
operator VkAccelerationStructureGeometryKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR639     operator VkAccelerationStructureGeometryKHR const &() const VULKAN_HPP_NOEXCEPT
640     {
641       return *reinterpret_cast<const VkAccelerationStructureGeometryKHR *>( this );
642     }
643 
operator VkAccelerationStructureGeometryKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR644     operator VkAccelerationStructureGeometryKHR &() VULKAN_HPP_NOEXCEPT
645     {
646       return *reinterpret_cast<VkAccelerationStructureGeometryKHR *>( this );
647     }
648 
649 #if defined( VULKAN_HPP_USE_REFLECT )
650 #  if 14 <= VULKAN_HPP_CPP_VERSION
651     auto
652 #  else
653     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
654                const void * const &,
655                VULKAN_HPP_NAMESPACE::GeometryTypeKHR const &,
656                VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR const &,
657                VULKAN_HPP_NAMESPACE::GeometryFlagsKHR const &>
658 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR659       reflect() const VULKAN_HPP_NOEXCEPT
660     {
661       return std::tie( sType, pNext, geometryType, geometry, flags );
662     }
663 #endif
664 
665   public:
666     VULKAN_HPP_NAMESPACE::StructureType                        sType        = StructureType::eAccelerationStructureGeometryKHR;
667     const void *                                               pNext        = {};
668     VULKAN_HPP_NAMESPACE::GeometryTypeKHR                      geometryType = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles;
669     VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR geometry     = {};
670     VULKAN_HPP_NAMESPACE::GeometryFlagsKHR                     flags        = {};
671   };
672 
673   template <>
674   struct CppType<StructureType, StructureType::eAccelerationStructureGeometryKHR>
675   {
676     using Type = AccelerationStructureGeometryKHR;
677   };
678 
679   union DeviceOrHostAddressKHR
680   {
681     using NativeType = VkDeviceOrHostAddressKHR;
682 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
683 
DeviceOrHostAddressKHR(VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_={} )684     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {} ) : deviceAddress( deviceAddress_ ) {}
685 
DeviceOrHostAddressKHR(void * hostAddress_)686     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR( void * hostAddress_ ) : hostAddress( hostAddress_ ) {}
687 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
688 
689 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setDeviceAddress(VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_)690     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
691     {
692       deviceAddress = deviceAddress_;
693       return *this;
694     }
695 
setHostAddress(void * hostAddress_)696     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR & setHostAddress( void * hostAddress_ ) VULKAN_HPP_NOEXCEPT
697     {
698       hostAddress = hostAddress_;
699       return *this;
700     }
701 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
702 
operator VkDeviceOrHostAddressKHR const&() const703     operator VkDeviceOrHostAddressKHR const &() const
704     {
705       return *reinterpret_cast<const VkDeviceOrHostAddressKHR *>( this );
706     }
707 
operator VkDeviceOrHostAddressKHR&()708     operator VkDeviceOrHostAddressKHR &()
709     {
710       return *reinterpret_cast<VkDeviceOrHostAddressKHR *>( this );
711     }
712 
713 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
714     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress;
715     void *                              hostAddress;
716 #else
717     VkDeviceAddress                                 deviceAddress;
718     void *                                          hostAddress;
719 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
720   };
721 
722   struct AccelerationStructureBuildGeometryInfoKHR
723   {
724     using NativeType = VkAccelerationStructureBuildGeometryInfoKHR;
725 
726     static const bool                                  allowDuplicate = false;
727     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureBuildGeometryInfoKHR;
728 
729 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureBuildGeometryInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR730     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR(
731       VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR                     type_  = VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR::eTopLevel,
732       VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR               flags_ = {},
733       VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR                mode_  = VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR::eBuild,
734       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR                         srcAccelerationStructure_ = {},
735       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR                         dstAccelerationStructure_ = {},
736       uint32_t                                                               geometryCount_            = {},
737       const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR *         pGeometries_              = {},
738       const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const * ppGeometries_             = {},
739       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR                           scratchData_              = {},
740       const void *                                                           pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
741       : pNext{ pNext_ }
742       , type{ type_ }
743       , flags{ flags_ }
744       , mode{ mode_ }
745       , srcAccelerationStructure{ srcAccelerationStructure_ }
746       , dstAccelerationStructure{ dstAccelerationStructure_ }
747       , geometryCount{ geometryCount_ }
748       , pGeometries{ pGeometries_ }
749       , ppGeometries{ ppGeometries_ }
750       , scratchData{ scratchData_ }
751     {
752     }
753 
754     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR( AccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
755 
AccelerationStructureBuildGeometryInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR756     AccelerationStructureBuildGeometryInfoKHR( VkAccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
757       : AccelerationStructureBuildGeometryInfoKHR( *reinterpret_cast<AccelerationStructureBuildGeometryInfoKHR const *>( &rhs ) )
758     {
759     }
760 
761 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
AccelerationStructureBuildGeometryInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR762     AccelerationStructureBuildGeometryInfoKHR(
763       VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR                                                                          type_,
764       VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR                                                                    flags_,
765       VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR                                                                     mode_,
766       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR                                                                              srcAccelerationStructure_,
767       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR                                                                              dstAccelerationStructure_,
768       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR> const &         geometries_,
769       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const> const & pGeometries_ = {},
770       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR                                                                                scratchData_ = {},
771       const void *                                                                                                                pNext_       = nullptr )
772       : pNext( pNext_ )
773       , type( type_ )
774       , flags( flags_ )
775       , mode( mode_ )
776       , srcAccelerationStructure( srcAccelerationStructure_ )
777       , dstAccelerationStructure( dstAccelerationStructure_ )
778       , geometryCount( static_cast<uint32_t>( !geometries_.empty() ? geometries_.size() : pGeometries_.size() ) )
779       , pGeometries( geometries_.data() )
780       , ppGeometries( pGeometries_.data() )
781       , scratchData( scratchData_ )
782     {
783 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
784       VULKAN_HPP_ASSERT( ( !geometries_.empty() + !pGeometries_.empty() ) <= 1 );
785 #    else
786       if ( 1 < ( !geometries_.empty() + !pGeometries_.empty() ) )
787       {
788         throw LogicError(
789           VULKAN_HPP_NAMESPACE_STRING
790           "::AccelerationStructureBuildGeometryInfoKHR::AccelerationStructureBuildGeometryInfoKHR: 1 < ( !geometries_.empty() + !pGeometries_.empty() )" );
791       }
792 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
793     }
794 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
795 
796     AccelerationStructureBuildGeometryInfoKHR & operator=( AccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
797 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
798 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR799     AccelerationStructureBuildGeometryInfoKHR & operator=( VkAccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
800     {
801       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR const *>( &rhs );
802       return *this;
803     }
804 
805 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR806     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
807     {
808       pNext = pNext_;
809       return *this;
810     }
811 
setTypeVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR812     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setType( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type_ ) VULKAN_HPP_NOEXCEPT
813     {
814       type = type_;
815       return *this;
816     }
817 
818     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR819       setFlags( VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
820     {
821       flags = flags_;
822       return *this;
823     }
824 
825     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR &
setModeVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR826       setMode( VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR mode_ ) VULKAN_HPP_NOEXCEPT
827     {
828       mode = mode_;
829       return *this;
830     }
831 
832     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR &
setSrcAccelerationStructureVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR833       setSrcAccelerationStructure( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR srcAccelerationStructure_ ) VULKAN_HPP_NOEXCEPT
834     {
835       srcAccelerationStructure = srcAccelerationStructure_;
836       return *this;
837     }
838 
839     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR &
setDstAccelerationStructureVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR840       setDstAccelerationStructure( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dstAccelerationStructure_ ) VULKAN_HPP_NOEXCEPT
841     {
842       dstAccelerationStructure = dstAccelerationStructure_;
843       return *this;
844     }
845 
setGeometryCountVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR846     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setGeometryCount( uint32_t geometryCount_ ) VULKAN_HPP_NOEXCEPT
847     {
848       geometryCount = geometryCount_;
849       return *this;
850     }
851 
852     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR &
setPGeometriesVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR853       setPGeometries( const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * pGeometries_ ) VULKAN_HPP_NOEXCEPT
854     {
855       pGeometries = pGeometries_;
856       return *this;
857     }
858 
859 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setGeometriesVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR860     AccelerationStructureBuildGeometryInfoKHR & setGeometries(
861       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR> const & geometries_ ) VULKAN_HPP_NOEXCEPT
862     {
863       geometryCount = static_cast<uint32_t>( geometries_.size() );
864       pGeometries   = geometries_.data();
865       return *this;
866     }
867 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
868 
869     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR &
setPpGeometriesVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR870       setPpGeometries( const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const * ppGeometries_ ) VULKAN_HPP_NOEXCEPT
871     {
872       ppGeometries = ppGeometries_;
873       return *this;
874     }
875 
876 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
877     AccelerationStructureBuildGeometryInfoKHR &
setPGeometriesVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR878       setPGeometries( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const> const & pGeometries_ )
879         VULKAN_HPP_NOEXCEPT
880     {
881       geometryCount = static_cast<uint32_t>( pGeometries_.size() );
882       ppGeometries  = pGeometries_.data();
883       return *this;
884     }
885 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
886 
887     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR &
setScratchDataVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR888       setScratchData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const & scratchData_ ) VULKAN_HPP_NOEXCEPT
889     {
890       scratchData = scratchData_;
891       return *this;
892     }
893 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
894 
operator VkAccelerationStructureBuildGeometryInfoKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR895     operator VkAccelerationStructureBuildGeometryInfoKHR const &() const VULKAN_HPP_NOEXCEPT
896     {
897       return *reinterpret_cast<const VkAccelerationStructureBuildGeometryInfoKHR *>( this );
898     }
899 
operator VkAccelerationStructureBuildGeometryInfoKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR900     operator VkAccelerationStructureBuildGeometryInfoKHR &() VULKAN_HPP_NOEXCEPT
901     {
902       return *reinterpret_cast<VkAccelerationStructureBuildGeometryInfoKHR *>( this );
903     }
904 
905 #if defined( VULKAN_HPP_USE_REFLECT )
906 #  if 14 <= VULKAN_HPP_CPP_VERSION
907     auto
908 #  else
909     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
910                const void * const &,
911                VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR const &,
912                VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR const &,
913                VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR const &,
914                VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &,
915                VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &,
916                uint32_t const &,
917                const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const &,
918                const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const * const &,
919                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const &>
920 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR921       reflect() const VULKAN_HPP_NOEXCEPT
922     {
923       return std::tie(
924         sType, pNext, type, flags, mode, srcAccelerationStructure, dstAccelerationStructure, geometryCount, pGeometries, ppGeometries, scratchData );
925     }
926 #endif
927 
928   public:
929     VULKAN_HPP_NAMESPACE::StructureType                                    sType = StructureType::eAccelerationStructureBuildGeometryInfoKHR;
930     const void *                                                           pNext = {};
931     VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR                     type  = VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR::eTopLevel;
932     VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR               flags = {};
933     VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR                mode  = VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR::eBuild;
934     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR                         srcAccelerationStructure = {};
935     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR                         dstAccelerationStructure = {};
936     uint32_t                                                               geometryCount            = {};
937     const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR *         pGeometries              = {};
938     const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR * const * ppGeometries             = {};
939     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR                           scratchData              = {};
940   };
941 
942   template <>
943   struct CppType<StructureType, StructureType::eAccelerationStructureBuildGeometryInfoKHR>
944   {
945     using Type = AccelerationStructureBuildGeometryInfoKHR;
946   };
947 
948   struct AccelerationStructureBuildRangeInfoKHR
949   {
950     using NativeType = VkAccelerationStructureBuildRangeInfoKHR;
951 
952 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureBuildRangeInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR953     VULKAN_HPP_CONSTEXPR AccelerationStructureBuildRangeInfoKHR( uint32_t primitiveCount_  = {},
954                                                                  uint32_t primitiveOffset_ = {},
955                                                                  uint32_t firstVertex_     = {},
956                                                                  uint32_t transformOffset_ = {} ) VULKAN_HPP_NOEXCEPT
957       : primitiveCount{ primitiveCount_ }
958       , primitiveOffset{ primitiveOffset_ }
959       , firstVertex{ firstVertex_ }
960       , transformOffset{ transformOffset_ }
961     {
962     }
963 
964     VULKAN_HPP_CONSTEXPR AccelerationStructureBuildRangeInfoKHR( AccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
965 
AccelerationStructureBuildRangeInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR966     AccelerationStructureBuildRangeInfoKHR( VkAccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
967       : AccelerationStructureBuildRangeInfoKHR( *reinterpret_cast<AccelerationStructureBuildRangeInfoKHR const *>( &rhs ) )
968     {
969     }
970 
971     AccelerationStructureBuildRangeInfoKHR & operator=( AccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
972 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
973 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR974     AccelerationStructureBuildRangeInfoKHR & operator=( VkAccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
975     {
976       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR const *>( &rhs );
977       return *this;
978     }
979 
980 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPrimitiveCountVULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR981     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR & setPrimitiveCount( uint32_t primitiveCount_ ) VULKAN_HPP_NOEXCEPT
982     {
983       primitiveCount = primitiveCount_;
984       return *this;
985     }
986 
setPrimitiveOffsetVULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR987     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR & setPrimitiveOffset( uint32_t primitiveOffset_ ) VULKAN_HPP_NOEXCEPT
988     {
989       primitiveOffset = primitiveOffset_;
990       return *this;
991     }
992 
setFirstVertexVULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR993     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR & setFirstVertex( uint32_t firstVertex_ ) VULKAN_HPP_NOEXCEPT
994     {
995       firstVertex = firstVertex_;
996       return *this;
997     }
998 
setTransformOffsetVULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR999     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR & setTransformOffset( uint32_t transformOffset_ ) VULKAN_HPP_NOEXCEPT
1000     {
1001       transformOffset = transformOffset_;
1002       return *this;
1003     }
1004 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1005 
operator VkAccelerationStructureBuildRangeInfoKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1006     operator VkAccelerationStructureBuildRangeInfoKHR const &() const VULKAN_HPP_NOEXCEPT
1007     {
1008       return *reinterpret_cast<const VkAccelerationStructureBuildRangeInfoKHR *>( this );
1009     }
1010 
operator VkAccelerationStructureBuildRangeInfoKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1011     operator VkAccelerationStructureBuildRangeInfoKHR &() VULKAN_HPP_NOEXCEPT
1012     {
1013       return *reinterpret_cast<VkAccelerationStructureBuildRangeInfoKHR *>( this );
1014     }
1015 
1016 #if defined( VULKAN_HPP_USE_REFLECT )
1017 #  if 14 <= VULKAN_HPP_CPP_VERSION
1018     auto
1019 #  else
1020     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &>
1021 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1022       reflect() const VULKAN_HPP_NOEXCEPT
1023     {
1024       return std::tie( primitiveCount, primitiveOffset, firstVertex, transformOffset );
1025     }
1026 #endif
1027 
1028 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1029     auto operator<=>( AccelerationStructureBuildRangeInfoKHR const & ) const = default;
1030 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1031     bool                                            operator==( AccelerationStructureBuildRangeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
1032     {
1033 #  if defined( VULKAN_HPP_USE_REFLECT )
1034       return this->reflect() == rhs.reflect();
1035 #  else
1036       return ( primitiveCount == rhs.primitiveCount ) && ( primitiveOffset == rhs.primitiveOffset ) && ( firstVertex == rhs.firstVertex ) &&
1037              ( transformOffset == rhs.transformOffset );
1038 #  endif
1039     }
1040 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR1041     bool operator!=( AccelerationStructureBuildRangeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
1042     {
1043       return !operator==( rhs );
1044     }
1045 #endif
1046 
1047   public:
1048     uint32_t primitiveCount  = {};
1049     uint32_t primitiveOffset = {};
1050     uint32_t firstVertex     = {};
1051     uint32_t transformOffset = {};
1052   };
1053 
1054   struct AccelerationStructureBuildSizesInfoKHR
1055   {
1056     using NativeType = VkAccelerationStructureBuildSizesInfoKHR;
1057 
1058     static const bool                                  allowDuplicate = false;
1059     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureBuildSizesInfoKHR;
1060 
1061 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureBuildSizesInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1062     VULKAN_HPP_CONSTEXPR AccelerationStructureBuildSizesInfoKHR( VULKAN_HPP_NAMESPACE::DeviceSize accelerationStructureSize_ = {},
1063                                                                  VULKAN_HPP_NAMESPACE::DeviceSize updateScratchSize_         = {},
1064                                                                  VULKAN_HPP_NAMESPACE::DeviceSize buildScratchSize_          = {},
1065                                                                  const void *                     pNext_                     = nullptr ) VULKAN_HPP_NOEXCEPT
1066       : pNext{ pNext_ }
1067       , accelerationStructureSize{ accelerationStructureSize_ }
1068       , updateScratchSize{ updateScratchSize_ }
1069       , buildScratchSize{ buildScratchSize_ }
1070     {
1071     }
1072 
1073     VULKAN_HPP_CONSTEXPR AccelerationStructureBuildSizesInfoKHR( AccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1074 
AccelerationStructureBuildSizesInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1075     AccelerationStructureBuildSizesInfoKHR( VkAccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
1076       : AccelerationStructureBuildSizesInfoKHR( *reinterpret_cast<AccelerationStructureBuildSizesInfoKHR const *>( &rhs ) )
1077     {
1078     }
1079 
1080     AccelerationStructureBuildSizesInfoKHR & operator=( AccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1081 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1082 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1083     AccelerationStructureBuildSizesInfoKHR & operator=( VkAccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
1084     {
1085       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR const *>( &rhs );
1086       return *this;
1087     }
1088 
operator VkAccelerationStructureBuildSizesInfoKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1089     operator VkAccelerationStructureBuildSizesInfoKHR const &() const VULKAN_HPP_NOEXCEPT
1090     {
1091       return *reinterpret_cast<const VkAccelerationStructureBuildSizesInfoKHR *>( this );
1092     }
1093 
operator VkAccelerationStructureBuildSizesInfoKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1094     operator VkAccelerationStructureBuildSizesInfoKHR &() VULKAN_HPP_NOEXCEPT
1095     {
1096       return *reinterpret_cast<VkAccelerationStructureBuildSizesInfoKHR *>( this );
1097     }
1098 
1099 #if defined( VULKAN_HPP_USE_REFLECT )
1100 #  if 14 <= VULKAN_HPP_CPP_VERSION
1101     auto
1102 #  else
1103     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
1104                const void * const &,
1105                VULKAN_HPP_NAMESPACE::DeviceSize const &,
1106                VULKAN_HPP_NAMESPACE::DeviceSize const &,
1107                VULKAN_HPP_NAMESPACE::DeviceSize const &>
1108 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1109       reflect() const VULKAN_HPP_NOEXCEPT
1110     {
1111       return std::tie( sType, pNext, accelerationStructureSize, updateScratchSize, buildScratchSize );
1112     }
1113 #endif
1114 
1115 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1116     auto operator<=>( AccelerationStructureBuildSizesInfoKHR const & ) const = default;
1117 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1118     bool operator==( AccelerationStructureBuildSizesInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
1119     {
1120 #  if defined( VULKAN_HPP_USE_REFLECT )
1121       return this->reflect() == rhs.reflect();
1122 #  else
1123       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructureSize == rhs.accelerationStructureSize ) &&
1124              ( updateScratchSize == rhs.updateScratchSize ) && ( buildScratchSize == rhs.buildScratchSize );
1125 #  endif
1126     }
1127 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR1128     bool operator!=( AccelerationStructureBuildSizesInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
1129     {
1130       return !operator==( rhs );
1131     }
1132 #endif
1133 
1134   public:
1135     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::eAccelerationStructureBuildSizesInfoKHR;
1136     const void *                        pNext                     = {};
1137     VULKAN_HPP_NAMESPACE::DeviceSize    accelerationStructureSize = {};
1138     VULKAN_HPP_NAMESPACE::DeviceSize    updateScratchSize         = {};
1139     VULKAN_HPP_NAMESPACE::DeviceSize    buildScratchSize          = {};
1140   };
1141 
1142   template <>
1143   struct CppType<StructureType, StructureType::eAccelerationStructureBuildSizesInfoKHR>
1144   {
1145     using Type = AccelerationStructureBuildSizesInfoKHR;
1146   };
1147 
1148   struct AccelerationStructureCaptureDescriptorDataInfoEXT
1149   {
1150     using NativeType = VkAccelerationStructureCaptureDescriptorDataInfoEXT;
1151 
1152     static const bool                                  allowDuplicate = false;
1153     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureCaptureDescriptorDataInfoEXT;
1154 
1155 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureCaptureDescriptorDataInfoEXTVULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1156     VULKAN_HPP_CONSTEXPR AccelerationStructureCaptureDescriptorDataInfoEXT( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure_   = {},
1157                                                                             VULKAN_HPP_NAMESPACE::AccelerationStructureNV  accelerationStructureNV_ = {},
1158                                                                             const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
1159       : pNext{ pNext_ }
1160       , accelerationStructure{ accelerationStructure_ }
1161       , accelerationStructureNV{ accelerationStructureNV_ }
1162     {
1163     }
1164 
1165     VULKAN_HPP_CONSTEXPR
1166       AccelerationStructureCaptureDescriptorDataInfoEXT( AccelerationStructureCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1167 
AccelerationStructureCaptureDescriptorDataInfoEXTVULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1168     AccelerationStructureCaptureDescriptorDataInfoEXT( VkAccelerationStructureCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
1169       : AccelerationStructureCaptureDescriptorDataInfoEXT( *reinterpret_cast<AccelerationStructureCaptureDescriptorDataInfoEXT const *>( &rhs ) )
1170     {
1171     }
1172 
1173     AccelerationStructureCaptureDescriptorDataInfoEXT &
1174       operator=( AccelerationStructureCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1175 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1176 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1177     AccelerationStructureCaptureDescriptorDataInfoEXT & operator=( VkAccelerationStructureCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
1178     {
1179       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT const *>( &rhs );
1180       return *this;
1181     }
1182 
1183 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1184     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCaptureDescriptorDataInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
1185     {
1186       pNext = pNext_;
1187       return *this;
1188     }
1189 
1190     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCaptureDescriptorDataInfoEXT &
setAccelerationStructureVULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1191       setAccelerationStructure( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure_ ) VULKAN_HPP_NOEXCEPT
1192     {
1193       accelerationStructure = accelerationStructure_;
1194       return *this;
1195     }
1196 
1197     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCaptureDescriptorDataInfoEXT &
setAccelerationStructureNVVULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1198       setAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructureNV_ ) VULKAN_HPP_NOEXCEPT
1199     {
1200       accelerationStructureNV = accelerationStructureNV_;
1201       return *this;
1202     }
1203 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1204 
operator VkAccelerationStructureCaptureDescriptorDataInfoEXT const&VULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1205     operator VkAccelerationStructureCaptureDescriptorDataInfoEXT const &() const VULKAN_HPP_NOEXCEPT
1206     {
1207       return *reinterpret_cast<const VkAccelerationStructureCaptureDescriptorDataInfoEXT *>( this );
1208     }
1209 
operator VkAccelerationStructureCaptureDescriptorDataInfoEXT&VULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1210     operator VkAccelerationStructureCaptureDescriptorDataInfoEXT &() VULKAN_HPP_NOEXCEPT
1211     {
1212       return *reinterpret_cast<VkAccelerationStructureCaptureDescriptorDataInfoEXT *>( this );
1213     }
1214 
1215 #if defined( VULKAN_HPP_USE_REFLECT )
1216 #  if 14 <= VULKAN_HPP_CPP_VERSION
1217     auto
1218 #  else
1219     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
1220                const void * const &,
1221                VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &,
1222                VULKAN_HPP_NAMESPACE::AccelerationStructureNV const &>
1223 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1224       reflect() const VULKAN_HPP_NOEXCEPT
1225     {
1226       return std::tie( sType, pNext, accelerationStructure, accelerationStructureNV );
1227     }
1228 #endif
1229 
1230 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1231     auto operator<=>( AccelerationStructureCaptureDescriptorDataInfoEXT const & ) const = default;
1232 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1233     bool operator==( AccelerationStructureCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
1234     {
1235 #  if defined( VULKAN_HPP_USE_REFLECT )
1236       return this->reflect() == rhs.reflect();
1237 #  else
1238       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructure == rhs.accelerationStructure ) &&
1239              ( accelerationStructureNV == rhs.accelerationStructureNV );
1240 #  endif
1241     }
1242 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT1243     bool operator!=( AccelerationStructureCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
1244     {
1245       return !operator==( rhs );
1246     }
1247 #endif
1248 
1249   public:
1250     VULKAN_HPP_NAMESPACE::StructureType            sType                   = StructureType::eAccelerationStructureCaptureDescriptorDataInfoEXT;
1251     const void *                                   pNext                   = {};
1252     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure   = {};
1253     VULKAN_HPP_NAMESPACE::AccelerationStructureNV  accelerationStructureNV = {};
1254   };
1255 
1256   template <>
1257   struct CppType<StructureType, StructureType::eAccelerationStructureCaptureDescriptorDataInfoEXT>
1258   {
1259     using Type = AccelerationStructureCaptureDescriptorDataInfoEXT;
1260   };
1261 
1262   struct AccelerationStructureCreateInfoKHR
1263   {
1264     using NativeType = VkAccelerationStructureCreateInfoKHR;
1265 
1266     static const bool                                  allowDuplicate = false;
1267     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureCreateInfoKHR;
1268 
1269 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureCreateInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1270     VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfoKHR(
1271       VULKAN_HPP_NAMESPACE::AccelerationStructureCreateFlagsKHR createFlags_   = {},
1272       VULKAN_HPP_NAMESPACE::Buffer                              buffer_        = {},
1273       VULKAN_HPP_NAMESPACE::DeviceSize                          offset_        = {},
1274       VULKAN_HPP_NAMESPACE::DeviceSize                          size_          = {},
1275       VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR        type_          = VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR::eTopLevel,
1276       VULKAN_HPP_NAMESPACE::DeviceAddress                       deviceAddress_ = {},
1277       const void *                                              pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
1278       : pNext{ pNext_ }
1279       , createFlags{ createFlags_ }
1280       , buffer{ buffer_ }
1281       , offset{ offset_ }
1282       , size{ size_ }
1283       , type{ type_ }
1284       , deviceAddress{ deviceAddress_ }
1285     {
1286     }
1287 
1288     VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfoKHR( AccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1289 
AccelerationStructureCreateInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1290     AccelerationStructureCreateInfoKHR( VkAccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
1291       : AccelerationStructureCreateInfoKHR( *reinterpret_cast<AccelerationStructureCreateInfoKHR const *>( &rhs ) )
1292     {
1293     }
1294 
1295     AccelerationStructureCreateInfoKHR & operator=( AccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1296 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1297 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1298     AccelerationStructureCreateInfoKHR & operator=( VkAccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
1299     {
1300       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR const *>( &rhs );
1301       return *this;
1302     }
1303 
1304 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1305     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
1306     {
1307       pNext = pNext_;
1308       return *this;
1309     }
1310 
1311     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR &
setCreateFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1312       setCreateFlags( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateFlagsKHR createFlags_ ) VULKAN_HPP_NOEXCEPT
1313     {
1314       createFlags = createFlags_;
1315       return *this;
1316     }
1317 
setBufferVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1318     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
1319     {
1320       buffer = buffer_;
1321       return *this;
1322     }
1323 
setOffsetVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1324     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
1325     {
1326       offset = offset_;
1327       return *this;
1328     }
1329 
setSizeVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1330     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
1331     {
1332       size = size_;
1333       return *this;
1334     }
1335 
setTypeVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1336     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & setType( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type_ ) VULKAN_HPP_NOEXCEPT
1337     {
1338       type = type_;
1339       return *this;
1340     }
1341 
setDeviceAddressVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1342     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
1343     {
1344       deviceAddress = deviceAddress_;
1345       return *this;
1346     }
1347 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1348 
operator VkAccelerationStructureCreateInfoKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1349     operator VkAccelerationStructureCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
1350     {
1351       return *reinterpret_cast<const VkAccelerationStructureCreateInfoKHR *>( this );
1352     }
1353 
operator VkAccelerationStructureCreateInfoKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1354     operator VkAccelerationStructureCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
1355     {
1356       return *reinterpret_cast<VkAccelerationStructureCreateInfoKHR *>( this );
1357     }
1358 
1359 #if defined( VULKAN_HPP_USE_REFLECT )
1360 #  if 14 <= VULKAN_HPP_CPP_VERSION
1361     auto
1362 #  else
1363     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
1364                const void * const &,
1365                VULKAN_HPP_NAMESPACE::AccelerationStructureCreateFlagsKHR const &,
1366                VULKAN_HPP_NAMESPACE::Buffer const &,
1367                VULKAN_HPP_NAMESPACE::DeviceSize const &,
1368                VULKAN_HPP_NAMESPACE::DeviceSize const &,
1369                VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR const &,
1370                VULKAN_HPP_NAMESPACE::DeviceAddress const &>
1371 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1372       reflect() const VULKAN_HPP_NOEXCEPT
1373     {
1374       return std::tie( sType, pNext, createFlags, buffer, offset, size, type, deviceAddress );
1375     }
1376 #endif
1377 
1378 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1379     auto operator<=>( AccelerationStructureCreateInfoKHR const & ) const = default;
1380 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1381     bool operator==( AccelerationStructureCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
1382     {
1383 #  if defined( VULKAN_HPP_USE_REFLECT )
1384       return this->reflect() == rhs.reflect();
1385 #  else
1386       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( createFlags == rhs.createFlags ) && ( buffer == rhs.buffer ) && ( offset == rhs.offset ) &&
1387              ( size == rhs.size ) && ( type == rhs.type ) && ( deviceAddress == rhs.deviceAddress );
1388 #  endif
1389     }
1390 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR1391     bool operator!=( AccelerationStructureCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
1392     {
1393       return !operator==( rhs );
1394     }
1395 #endif
1396 
1397   public:
1398     VULKAN_HPP_NAMESPACE::StructureType                       sType         = StructureType::eAccelerationStructureCreateInfoKHR;
1399     const void *                                              pNext         = {};
1400     VULKAN_HPP_NAMESPACE::AccelerationStructureCreateFlagsKHR createFlags   = {};
1401     VULKAN_HPP_NAMESPACE::Buffer                              buffer        = {};
1402     VULKAN_HPP_NAMESPACE::DeviceSize                          offset        = {};
1403     VULKAN_HPP_NAMESPACE::DeviceSize                          size          = {};
1404     VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR        type          = VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR::eTopLevel;
1405     VULKAN_HPP_NAMESPACE::DeviceAddress                       deviceAddress = {};
1406   };
1407 
1408   template <>
1409   struct CppType<StructureType, StructureType::eAccelerationStructureCreateInfoKHR>
1410   {
1411     using Type = AccelerationStructureCreateInfoKHR;
1412   };
1413 
1414   struct GeometryTrianglesNV
1415   {
1416     using NativeType = VkGeometryTrianglesNV;
1417 
1418     static const bool                                  allowDuplicate = false;
1419     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGeometryTrianglesNV;
1420 
1421 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GeometryTrianglesNVVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1422     VULKAN_HPP_CONSTEXPR GeometryTrianglesNV( VULKAN_HPP_NAMESPACE::Buffer     vertexData_      = {},
1423                                               VULKAN_HPP_NAMESPACE::DeviceSize vertexOffset_    = {},
1424                                               uint32_t                         vertexCount_     = {},
1425                                               VULKAN_HPP_NAMESPACE::DeviceSize vertexStride_    = {},
1426                                               VULKAN_HPP_NAMESPACE::Format     vertexFormat_    = VULKAN_HPP_NAMESPACE::Format::eUndefined,
1427                                               VULKAN_HPP_NAMESPACE::Buffer     indexData_       = {},
1428                                               VULKAN_HPP_NAMESPACE::DeviceSize indexOffset_     = {},
1429                                               uint32_t                         indexCount_      = {},
1430                                               VULKAN_HPP_NAMESPACE::IndexType  indexType_       = VULKAN_HPP_NAMESPACE::IndexType::eUint16,
1431                                               VULKAN_HPP_NAMESPACE::Buffer     transformData_   = {},
1432                                               VULKAN_HPP_NAMESPACE::DeviceSize transformOffset_ = {},
1433                                               const void *                     pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
1434       : pNext{ pNext_ }
1435       , vertexData{ vertexData_ }
1436       , vertexOffset{ vertexOffset_ }
1437       , vertexCount{ vertexCount_ }
1438       , vertexStride{ vertexStride_ }
1439       , vertexFormat{ vertexFormat_ }
1440       , indexData{ indexData_ }
1441       , indexOffset{ indexOffset_ }
1442       , indexCount{ indexCount_ }
1443       , indexType{ indexType_ }
1444       , transformData{ transformData_ }
1445       , transformOffset{ transformOffset_ }
1446     {
1447     }
1448 
1449     VULKAN_HPP_CONSTEXPR GeometryTrianglesNV( GeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1450 
GeometryTrianglesNVVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1451     GeometryTrianglesNV( VkGeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT : GeometryTrianglesNV( *reinterpret_cast<GeometryTrianglesNV const *>( &rhs ) )
1452     {
1453     }
1454 
1455     GeometryTrianglesNV & operator=( GeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1456 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1457 
operator =VULKAN_HPP_NAMESPACE::GeometryTrianglesNV1458     GeometryTrianglesNV & operator=( VkGeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT
1459     {
1460       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeometryTrianglesNV const *>( &rhs );
1461       return *this;
1462     }
1463 
1464 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1465     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
1466     {
1467       pNext = pNext_;
1468       return *this;
1469     }
1470 
setVertexDataVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1471     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setVertexData( VULKAN_HPP_NAMESPACE::Buffer vertexData_ ) VULKAN_HPP_NOEXCEPT
1472     {
1473       vertexData = vertexData_;
1474       return *this;
1475     }
1476 
setVertexOffsetVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1477     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setVertexOffset( VULKAN_HPP_NAMESPACE::DeviceSize vertexOffset_ ) VULKAN_HPP_NOEXCEPT
1478     {
1479       vertexOffset = vertexOffset_;
1480       return *this;
1481     }
1482 
setVertexCountVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1483     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setVertexCount( uint32_t vertexCount_ ) VULKAN_HPP_NOEXCEPT
1484     {
1485       vertexCount = vertexCount_;
1486       return *this;
1487     }
1488 
setVertexStrideVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1489     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setVertexStride( VULKAN_HPP_NAMESPACE::DeviceSize vertexStride_ ) VULKAN_HPP_NOEXCEPT
1490     {
1491       vertexStride = vertexStride_;
1492       return *this;
1493     }
1494 
setVertexFormatVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1495     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setVertexFormat( VULKAN_HPP_NAMESPACE::Format vertexFormat_ ) VULKAN_HPP_NOEXCEPT
1496     {
1497       vertexFormat = vertexFormat_;
1498       return *this;
1499     }
1500 
setIndexDataVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1501     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setIndexData( VULKAN_HPP_NAMESPACE::Buffer indexData_ ) VULKAN_HPP_NOEXCEPT
1502     {
1503       indexData = indexData_;
1504       return *this;
1505     }
1506 
setIndexOffsetVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1507     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setIndexOffset( VULKAN_HPP_NAMESPACE::DeviceSize indexOffset_ ) VULKAN_HPP_NOEXCEPT
1508     {
1509       indexOffset = indexOffset_;
1510       return *this;
1511     }
1512 
setIndexCountVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1513     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setIndexCount( uint32_t indexCount_ ) VULKAN_HPP_NOEXCEPT
1514     {
1515       indexCount = indexCount_;
1516       return *this;
1517     }
1518 
setIndexTypeVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1519     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setIndexType( VULKAN_HPP_NAMESPACE::IndexType indexType_ ) VULKAN_HPP_NOEXCEPT
1520     {
1521       indexType = indexType_;
1522       return *this;
1523     }
1524 
setTransformDataVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1525     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setTransformData( VULKAN_HPP_NAMESPACE::Buffer transformData_ ) VULKAN_HPP_NOEXCEPT
1526     {
1527       transformData = transformData_;
1528       return *this;
1529     }
1530 
setTransformOffsetVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1531     VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setTransformOffset( VULKAN_HPP_NAMESPACE::DeviceSize transformOffset_ ) VULKAN_HPP_NOEXCEPT
1532     {
1533       transformOffset = transformOffset_;
1534       return *this;
1535     }
1536 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1537 
operator VkGeometryTrianglesNV const&VULKAN_HPP_NAMESPACE::GeometryTrianglesNV1538     operator VkGeometryTrianglesNV const &() const VULKAN_HPP_NOEXCEPT
1539     {
1540       return *reinterpret_cast<const VkGeometryTrianglesNV *>( this );
1541     }
1542 
operator VkGeometryTrianglesNV&VULKAN_HPP_NAMESPACE::GeometryTrianglesNV1543     operator VkGeometryTrianglesNV &() VULKAN_HPP_NOEXCEPT
1544     {
1545       return *reinterpret_cast<VkGeometryTrianglesNV *>( this );
1546     }
1547 
1548 #if defined( VULKAN_HPP_USE_REFLECT )
1549 #  if 14 <= VULKAN_HPP_CPP_VERSION
1550     auto
1551 #  else
1552     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
1553                const void * const &,
1554                VULKAN_HPP_NAMESPACE::Buffer const &,
1555                VULKAN_HPP_NAMESPACE::DeviceSize const &,
1556                uint32_t const &,
1557                VULKAN_HPP_NAMESPACE::DeviceSize const &,
1558                VULKAN_HPP_NAMESPACE::Format const &,
1559                VULKAN_HPP_NAMESPACE::Buffer const &,
1560                VULKAN_HPP_NAMESPACE::DeviceSize const &,
1561                uint32_t const &,
1562                VULKAN_HPP_NAMESPACE::IndexType const &,
1563                VULKAN_HPP_NAMESPACE::Buffer const &,
1564                VULKAN_HPP_NAMESPACE::DeviceSize const &>
1565 #  endif
reflectVULKAN_HPP_NAMESPACE::GeometryTrianglesNV1566       reflect() const VULKAN_HPP_NOEXCEPT
1567     {
1568       return std::tie( sType,
1569                        pNext,
1570                        vertexData,
1571                        vertexOffset,
1572                        vertexCount,
1573                        vertexStride,
1574                        vertexFormat,
1575                        indexData,
1576                        indexOffset,
1577                        indexCount,
1578                        indexType,
1579                        transformData,
1580                        transformOffset );
1581     }
1582 #endif
1583 
1584 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1585     auto operator<=>( GeometryTrianglesNV const & ) const = default;
1586 #else
operator ==VULKAN_HPP_NAMESPACE::GeometryTrianglesNV1587     bool operator==( GeometryTrianglesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1588     {
1589 #  if defined( VULKAN_HPP_USE_REFLECT )
1590       return this->reflect() == rhs.reflect();
1591 #  else
1592       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vertexData == rhs.vertexData ) && ( vertexOffset == rhs.vertexOffset ) &&
1593              ( vertexCount == rhs.vertexCount ) && ( vertexStride == rhs.vertexStride ) && ( vertexFormat == rhs.vertexFormat ) &&
1594              ( indexData == rhs.indexData ) && ( indexOffset == rhs.indexOffset ) && ( indexCount == rhs.indexCount ) && ( indexType == rhs.indexType ) &&
1595              ( transformData == rhs.transformData ) && ( transformOffset == rhs.transformOffset );
1596 #  endif
1597     }
1598 
operator !=VULKAN_HPP_NAMESPACE::GeometryTrianglesNV1599     bool operator!=( GeometryTrianglesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1600     {
1601       return !operator==( rhs );
1602     }
1603 #endif
1604 
1605   public:
1606     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eGeometryTrianglesNV;
1607     const void *                        pNext           = {};
1608     VULKAN_HPP_NAMESPACE::Buffer        vertexData      = {};
1609     VULKAN_HPP_NAMESPACE::DeviceSize    vertexOffset    = {};
1610     uint32_t                            vertexCount     = {};
1611     VULKAN_HPP_NAMESPACE::DeviceSize    vertexStride    = {};
1612     VULKAN_HPP_NAMESPACE::Format        vertexFormat    = VULKAN_HPP_NAMESPACE::Format::eUndefined;
1613     VULKAN_HPP_NAMESPACE::Buffer        indexData       = {};
1614     VULKAN_HPP_NAMESPACE::DeviceSize    indexOffset     = {};
1615     uint32_t                            indexCount      = {};
1616     VULKAN_HPP_NAMESPACE::IndexType     indexType       = VULKAN_HPP_NAMESPACE::IndexType::eUint16;
1617     VULKAN_HPP_NAMESPACE::Buffer        transformData   = {};
1618     VULKAN_HPP_NAMESPACE::DeviceSize    transformOffset = {};
1619   };
1620 
1621   template <>
1622   struct CppType<StructureType, StructureType::eGeometryTrianglesNV>
1623   {
1624     using Type = GeometryTrianglesNV;
1625   };
1626 
1627   struct GeometryAABBNV
1628   {
1629     using NativeType = VkGeometryAABBNV;
1630 
1631     static const bool                                  allowDuplicate = false;
1632     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGeometryAabbNV;
1633 
1634 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GeometryAABBNVVULKAN_HPP_NAMESPACE::GeometryAABBNV1635     VULKAN_HPP_CONSTEXPR GeometryAABBNV( VULKAN_HPP_NAMESPACE::Buffer     aabbData_ = {},
1636                                          uint32_t                         numAABBs_ = {},
1637                                          uint32_t                         stride_   = {},
1638                                          VULKAN_HPP_NAMESPACE::DeviceSize offset_   = {},
1639                                          const void *                     pNext_    = nullptr ) VULKAN_HPP_NOEXCEPT
1640       : pNext{ pNext_ }
1641       , aabbData{ aabbData_ }
1642       , numAABBs{ numAABBs_ }
1643       , stride{ stride_ }
1644       , offset{ offset_ }
1645     {
1646     }
1647 
1648     VULKAN_HPP_CONSTEXPR GeometryAABBNV( GeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1649 
GeometryAABBNVVULKAN_HPP_NAMESPACE::GeometryAABBNV1650     GeometryAABBNV( VkGeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT : GeometryAABBNV( *reinterpret_cast<GeometryAABBNV const *>( &rhs ) ) {}
1651 
1652     GeometryAABBNV & operator=( GeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1653 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1654 
operator =VULKAN_HPP_NAMESPACE::GeometryAABBNV1655     GeometryAABBNV & operator=( VkGeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT
1656     {
1657       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeometryAABBNV const *>( &rhs );
1658       return *this;
1659     }
1660 
1661 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GeometryAABBNV1662     VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
1663     {
1664       pNext = pNext_;
1665       return *this;
1666     }
1667 
setAabbDataVULKAN_HPP_NAMESPACE::GeometryAABBNV1668     VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setAabbData( VULKAN_HPP_NAMESPACE::Buffer aabbData_ ) VULKAN_HPP_NOEXCEPT
1669     {
1670       aabbData = aabbData_;
1671       return *this;
1672     }
1673 
setNumAABBsVULKAN_HPP_NAMESPACE::GeometryAABBNV1674     VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setNumAABBs( uint32_t numAABBs_ ) VULKAN_HPP_NOEXCEPT
1675     {
1676       numAABBs = numAABBs_;
1677       return *this;
1678     }
1679 
setStrideVULKAN_HPP_NAMESPACE::GeometryAABBNV1680     VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT
1681     {
1682       stride = stride_;
1683       return *this;
1684     }
1685 
setOffsetVULKAN_HPP_NAMESPACE::GeometryAABBNV1686     VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
1687     {
1688       offset = offset_;
1689       return *this;
1690     }
1691 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1692 
operator VkGeometryAABBNV const&VULKAN_HPP_NAMESPACE::GeometryAABBNV1693     operator VkGeometryAABBNV const &() const VULKAN_HPP_NOEXCEPT
1694     {
1695       return *reinterpret_cast<const VkGeometryAABBNV *>( this );
1696     }
1697 
operator VkGeometryAABBNV&VULKAN_HPP_NAMESPACE::GeometryAABBNV1698     operator VkGeometryAABBNV &() VULKAN_HPP_NOEXCEPT
1699     {
1700       return *reinterpret_cast<VkGeometryAABBNV *>( this );
1701     }
1702 
1703 #if defined( VULKAN_HPP_USE_REFLECT )
1704 #  if 14 <= VULKAN_HPP_CPP_VERSION
1705     auto
1706 #  else
1707     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
1708                const void * const &,
1709                VULKAN_HPP_NAMESPACE::Buffer const &,
1710                uint32_t const &,
1711                uint32_t const &,
1712                VULKAN_HPP_NAMESPACE::DeviceSize const &>
1713 #  endif
reflectVULKAN_HPP_NAMESPACE::GeometryAABBNV1714       reflect() const VULKAN_HPP_NOEXCEPT
1715     {
1716       return std::tie( sType, pNext, aabbData, numAABBs, stride, offset );
1717     }
1718 #endif
1719 
1720 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1721     auto operator<=>( GeometryAABBNV const & ) const = default;
1722 #else
operator ==VULKAN_HPP_NAMESPACE::GeometryAABBNV1723     bool operator==( GeometryAABBNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1724     {
1725 #  if defined( VULKAN_HPP_USE_REFLECT )
1726       return this->reflect() == rhs.reflect();
1727 #  else
1728       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( aabbData == rhs.aabbData ) && ( numAABBs == rhs.numAABBs ) && ( stride == rhs.stride ) &&
1729              ( offset == rhs.offset );
1730 #  endif
1731     }
1732 
operator !=VULKAN_HPP_NAMESPACE::GeometryAABBNV1733     bool operator!=( GeometryAABBNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1734     {
1735       return !operator==( rhs );
1736     }
1737 #endif
1738 
1739   public:
1740     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eGeometryAabbNV;
1741     const void *                        pNext    = {};
1742     VULKAN_HPP_NAMESPACE::Buffer        aabbData = {};
1743     uint32_t                            numAABBs = {};
1744     uint32_t                            stride   = {};
1745     VULKAN_HPP_NAMESPACE::DeviceSize    offset   = {};
1746   };
1747 
1748   template <>
1749   struct CppType<StructureType, StructureType::eGeometryAabbNV>
1750   {
1751     using Type = GeometryAABBNV;
1752   };
1753 
1754   struct GeometryDataNV
1755   {
1756     using NativeType = VkGeometryDataNV;
1757 
1758 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GeometryDataNVVULKAN_HPP_NAMESPACE::GeometryDataNV1759     VULKAN_HPP_CONSTEXPR GeometryDataNV( VULKAN_HPP_NAMESPACE::GeometryTrianglesNV triangles_ = {},
1760                                          VULKAN_HPP_NAMESPACE::GeometryAABBNV      aabbs_     = {} ) VULKAN_HPP_NOEXCEPT
1761       : triangles{ triangles_ }
1762       , aabbs{ aabbs_ }
1763     {
1764     }
1765 
1766     VULKAN_HPP_CONSTEXPR GeometryDataNV( GeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1767 
GeometryDataNVVULKAN_HPP_NAMESPACE::GeometryDataNV1768     GeometryDataNV( VkGeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT : GeometryDataNV( *reinterpret_cast<GeometryDataNV const *>( &rhs ) ) {}
1769 
1770     GeometryDataNV & operator=( GeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1771 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1772 
operator =VULKAN_HPP_NAMESPACE::GeometryDataNV1773     GeometryDataNV & operator=( VkGeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
1774     {
1775       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeometryDataNV const *>( &rhs );
1776       return *this;
1777     }
1778 
1779 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setTrianglesVULKAN_HPP_NAMESPACE::GeometryDataNV1780     VULKAN_HPP_CONSTEXPR_14 GeometryDataNV & setTriangles( VULKAN_HPP_NAMESPACE::GeometryTrianglesNV const & triangles_ ) VULKAN_HPP_NOEXCEPT
1781     {
1782       triangles = triangles_;
1783       return *this;
1784     }
1785 
setAabbsVULKAN_HPP_NAMESPACE::GeometryDataNV1786     VULKAN_HPP_CONSTEXPR_14 GeometryDataNV & setAabbs( VULKAN_HPP_NAMESPACE::GeometryAABBNV const & aabbs_ ) VULKAN_HPP_NOEXCEPT
1787     {
1788       aabbs = aabbs_;
1789       return *this;
1790     }
1791 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1792 
operator VkGeometryDataNV const&VULKAN_HPP_NAMESPACE::GeometryDataNV1793     operator VkGeometryDataNV const &() const VULKAN_HPP_NOEXCEPT
1794     {
1795       return *reinterpret_cast<const VkGeometryDataNV *>( this );
1796     }
1797 
operator VkGeometryDataNV&VULKAN_HPP_NAMESPACE::GeometryDataNV1798     operator VkGeometryDataNV &() VULKAN_HPP_NOEXCEPT
1799     {
1800       return *reinterpret_cast<VkGeometryDataNV *>( this );
1801     }
1802 
1803 #if defined( VULKAN_HPP_USE_REFLECT )
1804 #  if 14 <= VULKAN_HPP_CPP_VERSION
1805     auto
1806 #  else
1807     std::tuple<VULKAN_HPP_NAMESPACE::GeometryTrianglesNV const &, VULKAN_HPP_NAMESPACE::GeometryAABBNV const &>
1808 #  endif
reflectVULKAN_HPP_NAMESPACE::GeometryDataNV1809       reflect() const VULKAN_HPP_NOEXCEPT
1810     {
1811       return std::tie( triangles, aabbs );
1812     }
1813 #endif
1814 
1815 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1816     auto operator<=>( GeometryDataNV const & ) const = default;
1817 #else
operator ==VULKAN_HPP_NAMESPACE::GeometryDataNV1818     bool operator==( GeometryDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1819     {
1820 #  if defined( VULKAN_HPP_USE_REFLECT )
1821       return this->reflect() == rhs.reflect();
1822 #  else
1823       return ( triangles == rhs.triangles ) && ( aabbs == rhs.aabbs );
1824 #  endif
1825     }
1826 
operator !=VULKAN_HPP_NAMESPACE::GeometryDataNV1827     bool operator!=( GeometryDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1828     {
1829       return !operator==( rhs );
1830     }
1831 #endif
1832 
1833   public:
1834     VULKAN_HPP_NAMESPACE::GeometryTrianglesNV triangles = {};
1835     VULKAN_HPP_NAMESPACE::GeometryAABBNV      aabbs     = {};
1836   };
1837 
1838   struct GeometryNV
1839   {
1840     using NativeType = VkGeometryNV;
1841 
1842     static const bool                                  allowDuplicate = false;
1843     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGeometryNV;
1844 
1845 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GeometryNVVULKAN_HPP_NAMESPACE::GeometryNV1846     VULKAN_HPP_CONSTEXPR GeometryNV( VULKAN_HPP_NAMESPACE::GeometryTypeKHR  geometryType_ = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles,
1847                                      VULKAN_HPP_NAMESPACE::GeometryDataNV   geometry_     = {},
1848                                      VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags_        = {},
1849                                      const void *                           pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
1850       : pNext{ pNext_ }
1851       , geometryType{ geometryType_ }
1852       , geometry{ geometry_ }
1853       , flags{ flags_ }
1854     {
1855     }
1856 
1857     VULKAN_HPP_CONSTEXPR GeometryNV( GeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1858 
GeometryNVVULKAN_HPP_NAMESPACE::GeometryNV1859     GeometryNV( VkGeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT : GeometryNV( *reinterpret_cast<GeometryNV const *>( &rhs ) ) {}
1860 
1861     GeometryNV & operator=( GeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1862 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1863 
operator =VULKAN_HPP_NAMESPACE::GeometryNV1864     GeometryNV & operator=( VkGeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT
1865     {
1866       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeometryNV const *>( &rhs );
1867       return *this;
1868     }
1869 
1870 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GeometryNV1871     VULKAN_HPP_CONSTEXPR_14 GeometryNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
1872     {
1873       pNext = pNext_;
1874       return *this;
1875     }
1876 
setGeometryTypeVULKAN_HPP_NAMESPACE::GeometryNV1877     VULKAN_HPP_CONSTEXPR_14 GeometryNV & setGeometryType( VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType_ ) VULKAN_HPP_NOEXCEPT
1878     {
1879       geometryType = geometryType_;
1880       return *this;
1881     }
1882 
setGeometryVULKAN_HPP_NAMESPACE::GeometryNV1883     VULKAN_HPP_CONSTEXPR_14 GeometryNV & setGeometry( VULKAN_HPP_NAMESPACE::GeometryDataNV const & geometry_ ) VULKAN_HPP_NOEXCEPT
1884     {
1885       geometry = geometry_;
1886       return *this;
1887     }
1888 
setFlagsVULKAN_HPP_NAMESPACE::GeometryNV1889     VULKAN_HPP_CONSTEXPR_14 GeometryNV & setFlags( VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
1890     {
1891       flags = flags_;
1892       return *this;
1893     }
1894 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1895 
operator VkGeometryNV const&VULKAN_HPP_NAMESPACE::GeometryNV1896     operator VkGeometryNV const &() const VULKAN_HPP_NOEXCEPT
1897     {
1898       return *reinterpret_cast<const VkGeometryNV *>( this );
1899     }
1900 
operator VkGeometryNV&VULKAN_HPP_NAMESPACE::GeometryNV1901     operator VkGeometryNV &() VULKAN_HPP_NOEXCEPT
1902     {
1903       return *reinterpret_cast<VkGeometryNV *>( this );
1904     }
1905 
1906 #if defined( VULKAN_HPP_USE_REFLECT )
1907 #  if 14 <= VULKAN_HPP_CPP_VERSION
1908     auto
1909 #  else
1910     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
1911                const void * const &,
1912                VULKAN_HPP_NAMESPACE::GeometryTypeKHR const &,
1913                VULKAN_HPP_NAMESPACE::GeometryDataNV const &,
1914                VULKAN_HPP_NAMESPACE::GeometryFlagsKHR const &>
1915 #  endif
reflectVULKAN_HPP_NAMESPACE::GeometryNV1916       reflect() const VULKAN_HPP_NOEXCEPT
1917     {
1918       return std::tie( sType, pNext, geometryType, geometry, flags );
1919     }
1920 #endif
1921 
1922 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
1923     auto operator<=>( GeometryNV const & ) const = default;
1924 #else
operator ==VULKAN_HPP_NAMESPACE::GeometryNV1925     bool operator==( GeometryNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1926     {
1927 #  if defined( VULKAN_HPP_USE_REFLECT )
1928       return this->reflect() == rhs.reflect();
1929 #  else
1930       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( geometryType == rhs.geometryType ) && ( geometry == rhs.geometry ) && ( flags == rhs.flags );
1931 #  endif
1932     }
1933 
operator !=VULKAN_HPP_NAMESPACE::GeometryNV1934     bool operator!=( GeometryNV const & rhs ) const VULKAN_HPP_NOEXCEPT
1935     {
1936       return !operator==( rhs );
1937     }
1938 #endif
1939 
1940   public:
1941     VULKAN_HPP_NAMESPACE::StructureType    sType        = StructureType::eGeometryNV;
1942     const void *                           pNext        = {};
1943     VULKAN_HPP_NAMESPACE::GeometryTypeKHR  geometryType = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles;
1944     VULKAN_HPP_NAMESPACE::GeometryDataNV   geometry     = {};
1945     VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags        = {};
1946   };
1947 
1948   template <>
1949   struct CppType<StructureType, StructureType::eGeometryNV>
1950   {
1951     using Type = GeometryNV;
1952   };
1953 
1954   struct AccelerationStructureInfoNV
1955   {
1956     using NativeType = VkAccelerationStructureInfoNV;
1957 
1958     static const bool                                  allowDuplicate = false;
1959     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureInfoNV;
1960 
1961 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV1962     VULKAN_HPP_CONSTEXPR AccelerationStructureInfoNV( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV       type_          = {},
1963                                                       VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV flags_         = {},
1964                                                       uint32_t                                                instanceCount_ = {},
1965                                                       uint32_t                                                geometryCount_ = {},
1966                                                       const VULKAN_HPP_NAMESPACE::GeometryNV *                pGeometries_   = {},
1967                                                       const void *                                            pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
1968       : pNext{ pNext_ }
1969       , type{ type_ }
1970       , flags{ flags_ }
1971       , instanceCount{ instanceCount_ }
1972       , geometryCount{ geometryCount_ }
1973       , pGeometries{ pGeometries_ }
1974     {
1975     }
1976 
1977     VULKAN_HPP_CONSTEXPR AccelerationStructureInfoNV( AccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1978 
AccelerationStructureInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV1979     AccelerationStructureInfoNV( VkAccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
1980       : AccelerationStructureInfoNV( *reinterpret_cast<AccelerationStructureInfoNV const *>( &rhs ) )
1981     {
1982     }
1983 
1984 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
AccelerationStructureInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV1985     AccelerationStructureInfoNV( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV                                             type_,
1986                                  VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV                                       flags_,
1987                                  uint32_t                                                                                      instanceCount_,
1988                                  VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::GeometryNV> const & geometries_,
1989                                  const void *                                                                                  pNext_ = nullptr )
1990       : pNext( pNext_ )
1991       , type( type_ )
1992       , flags( flags_ )
1993       , instanceCount( instanceCount_ )
1994       , geometryCount( static_cast<uint32_t>( geometries_.size() ) )
1995       , pGeometries( geometries_.data() )
1996     {
1997     }
1998 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
1999 
2000     AccelerationStructureInfoNV & operator=( AccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2001 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2002 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2003     AccelerationStructureInfoNV & operator=( VkAccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
2004     {
2005       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV const *>( &rhs );
2006       return *this;
2007     }
2008 
2009 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2010     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2011     {
2012       pNext = pNext_;
2013       return *this;
2014     }
2015 
setTypeVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2016     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & setType( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV type_ ) VULKAN_HPP_NOEXCEPT
2017     {
2018       type = type_;
2019       return *this;
2020     }
2021 
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2022     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & setFlags( VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
2023     {
2024       flags = flags_;
2025       return *this;
2026     }
2027 
setInstanceCountVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2028     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & setInstanceCount( uint32_t instanceCount_ ) VULKAN_HPP_NOEXCEPT
2029     {
2030       instanceCount = instanceCount_;
2031       return *this;
2032     }
2033 
setGeometryCountVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2034     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & setGeometryCount( uint32_t geometryCount_ ) VULKAN_HPP_NOEXCEPT
2035     {
2036       geometryCount = geometryCount_;
2037       return *this;
2038     }
2039 
setPGeometriesVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2040     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & setPGeometries( const VULKAN_HPP_NAMESPACE::GeometryNV * pGeometries_ ) VULKAN_HPP_NOEXCEPT
2041     {
2042       pGeometries = pGeometries_;
2043       return *this;
2044     }
2045 
2046 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
2047     AccelerationStructureInfoNV &
setGeometriesVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2048       setGeometries( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::GeometryNV> const & geometries_ ) VULKAN_HPP_NOEXCEPT
2049     {
2050       geometryCount = static_cast<uint32_t>( geometries_.size() );
2051       pGeometries   = geometries_.data();
2052       return *this;
2053     }
2054 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
2055 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2056 
operator VkAccelerationStructureInfoNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2057     operator VkAccelerationStructureInfoNV const &() const VULKAN_HPP_NOEXCEPT
2058     {
2059       return *reinterpret_cast<const VkAccelerationStructureInfoNV *>( this );
2060     }
2061 
operator VkAccelerationStructureInfoNV&VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2062     operator VkAccelerationStructureInfoNV &() VULKAN_HPP_NOEXCEPT
2063     {
2064       return *reinterpret_cast<VkAccelerationStructureInfoNV *>( this );
2065     }
2066 
2067 #if defined( VULKAN_HPP_USE_REFLECT )
2068 #  if 14 <= VULKAN_HPP_CPP_VERSION
2069     auto
2070 #  else
2071     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
2072                const void * const &,
2073                VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV const &,
2074                VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV const &,
2075                uint32_t const &,
2076                uint32_t const &,
2077                const VULKAN_HPP_NAMESPACE::GeometryNV * const &>
2078 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2079       reflect() const VULKAN_HPP_NOEXCEPT
2080     {
2081       return std::tie( sType, pNext, type, flags, instanceCount, geometryCount, pGeometries );
2082     }
2083 #endif
2084 
2085 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2086     auto operator<=>( AccelerationStructureInfoNV const & ) const = default;
2087 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2088     bool operator==( AccelerationStructureInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2089     {
2090 #  if defined( VULKAN_HPP_USE_REFLECT )
2091       return this->reflect() == rhs.reflect();
2092 #  else
2093       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ) && ( flags == rhs.flags ) && ( instanceCount == rhs.instanceCount ) &&
2094              ( geometryCount == rhs.geometryCount ) && ( pGeometries == rhs.pGeometries );
2095 #  endif
2096     }
2097 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV2098     bool operator!=( AccelerationStructureInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2099     {
2100       return !operator==( rhs );
2101     }
2102 #endif
2103 
2104   public:
2105     VULKAN_HPP_NAMESPACE::StructureType                     sType         = StructureType::eAccelerationStructureInfoNV;
2106     const void *                                            pNext         = {};
2107     VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV       type          = {};
2108     VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV flags         = {};
2109     uint32_t                                                instanceCount = {};
2110     uint32_t                                                geometryCount = {};
2111     const VULKAN_HPP_NAMESPACE::GeometryNV *                pGeometries   = {};
2112   };
2113 
2114   template <>
2115   struct CppType<StructureType, StructureType::eAccelerationStructureInfoNV>
2116   {
2117     using Type = AccelerationStructureInfoNV;
2118   };
2119 
2120   struct AccelerationStructureCreateInfoNV
2121   {
2122     using NativeType = VkAccelerationStructureCreateInfoNV;
2123 
2124     static const bool                                  allowDuplicate = false;
2125     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureCreateInfoNV;
2126 
2127 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureCreateInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2128     VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfoNV( VULKAN_HPP_NAMESPACE::DeviceSize                  compactedSize_ = {},
2129                                                             VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV info_          = {},
2130                                                             const void *                                      pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
2131       : pNext{ pNext_ }
2132       , compactedSize{ compactedSize_ }
2133       , info{ info_ }
2134     {
2135     }
2136 
2137     VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfoNV( AccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2138 
AccelerationStructureCreateInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2139     AccelerationStructureCreateInfoNV( VkAccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
2140       : AccelerationStructureCreateInfoNV( *reinterpret_cast<AccelerationStructureCreateInfoNV const *>( &rhs ) )
2141     {
2142     }
2143 
2144     AccelerationStructureCreateInfoNV & operator=( AccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2145 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2146 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2147     AccelerationStructureCreateInfoNV & operator=( VkAccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
2148     {
2149       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV const *>( &rhs );
2150       return *this;
2151     }
2152 
2153 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2154     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2155     {
2156       pNext = pNext_;
2157       return *this;
2158     }
2159 
setCompactedSizeVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2160     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoNV & setCompactedSize( VULKAN_HPP_NAMESPACE::DeviceSize compactedSize_ ) VULKAN_HPP_NOEXCEPT
2161     {
2162       compactedSize = compactedSize_;
2163       return *this;
2164     }
2165 
setInfoVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2166     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoNV & setInfo( VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV const & info_ ) VULKAN_HPP_NOEXCEPT
2167     {
2168       info = info_;
2169       return *this;
2170     }
2171 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2172 
operator VkAccelerationStructureCreateInfoNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2173     operator VkAccelerationStructureCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
2174     {
2175       return *reinterpret_cast<const VkAccelerationStructureCreateInfoNV *>( this );
2176     }
2177 
operator VkAccelerationStructureCreateInfoNV&VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2178     operator VkAccelerationStructureCreateInfoNV &() VULKAN_HPP_NOEXCEPT
2179     {
2180       return *reinterpret_cast<VkAccelerationStructureCreateInfoNV *>( this );
2181     }
2182 
2183 #if defined( VULKAN_HPP_USE_REFLECT )
2184 #  if 14 <= VULKAN_HPP_CPP_VERSION
2185     auto
2186 #  else
2187     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
2188                const void * const &,
2189                VULKAN_HPP_NAMESPACE::DeviceSize const &,
2190                VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV const &>
2191 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2192       reflect() const VULKAN_HPP_NOEXCEPT
2193     {
2194       return std::tie( sType, pNext, compactedSize, info );
2195     }
2196 #endif
2197 
2198 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2199     auto operator<=>( AccelerationStructureCreateInfoNV const & ) const = default;
2200 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2201     bool operator==( AccelerationStructureCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2202     {
2203 #  if defined( VULKAN_HPP_USE_REFLECT )
2204       return this->reflect() == rhs.reflect();
2205 #  else
2206       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( compactedSize == rhs.compactedSize ) && ( info == rhs.info );
2207 #  endif
2208     }
2209 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV2210     bool operator!=( AccelerationStructureCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2211     {
2212       return !operator==( rhs );
2213     }
2214 #endif
2215 
2216   public:
2217     VULKAN_HPP_NAMESPACE::StructureType               sType         = StructureType::eAccelerationStructureCreateInfoNV;
2218     const void *                                      pNext         = {};
2219     VULKAN_HPP_NAMESPACE::DeviceSize                  compactedSize = {};
2220     VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV info          = {};
2221   };
2222 
2223   template <>
2224   struct CppType<StructureType, StructureType::eAccelerationStructureCreateInfoNV>
2225   {
2226     using Type = AccelerationStructureCreateInfoNV;
2227   };
2228 
2229   struct AccelerationStructureDeviceAddressInfoKHR
2230   {
2231     using NativeType = VkAccelerationStructureDeviceAddressInfoKHR;
2232 
2233     static const bool                                  allowDuplicate = false;
2234     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureDeviceAddressInfoKHR;
2235 
2236 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureDeviceAddressInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2237     VULKAN_HPP_CONSTEXPR AccelerationStructureDeviceAddressInfoKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure_ = {},
2238                                                                     const void *                                   pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
2239       : pNext{ pNext_ }
2240       , accelerationStructure{ accelerationStructure_ }
2241     {
2242     }
2243 
2244     VULKAN_HPP_CONSTEXPR AccelerationStructureDeviceAddressInfoKHR( AccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2245 
AccelerationStructureDeviceAddressInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2246     AccelerationStructureDeviceAddressInfoKHR( VkAccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
2247       : AccelerationStructureDeviceAddressInfoKHR( *reinterpret_cast<AccelerationStructureDeviceAddressInfoKHR const *>( &rhs ) )
2248     {
2249     }
2250 
2251     AccelerationStructureDeviceAddressInfoKHR & operator=( AccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2252 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2253 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2254     AccelerationStructureDeviceAddressInfoKHR & operator=( VkAccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
2255     {
2256       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR const *>( &rhs );
2257       return *this;
2258     }
2259 
2260 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2261     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDeviceAddressInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2262     {
2263       pNext = pNext_;
2264       return *this;
2265     }
2266 
2267     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDeviceAddressInfoKHR &
setAccelerationStructureVULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2268       setAccelerationStructure( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure_ ) VULKAN_HPP_NOEXCEPT
2269     {
2270       accelerationStructure = accelerationStructure_;
2271       return *this;
2272     }
2273 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2274 
operator VkAccelerationStructureDeviceAddressInfoKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2275     operator VkAccelerationStructureDeviceAddressInfoKHR const &() const VULKAN_HPP_NOEXCEPT
2276     {
2277       return *reinterpret_cast<const VkAccelerationStructureDeviceAddressInfoKHR *>( this );
2278     }
2279 
operator VkAccelerationStructureDeviceAddressInfoKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2280     operator VkAccelerationStructureDeviceAddressInfoKHR &() VULKAN_HPP_NOEXCEPT
2281     {
2282       return *reinterpret_cast<VkAccelerationStructureDeviceAddressInfoKHR *>( this );
2283     }
2284 
2285 #if defined( VULKAN_HPP_USE_REFLECT )
2286 #  if 14 <= VULKAN_HPP_CPP_VERSION
2287     auto
2288 #  else
2289     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &>
2290 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2291       reflect() const VULKAN_HPP_NOEXCEPT
2292     {
2293       return std::tie( sType, pNext, accelerationStructure );
2294     }
2295 #endif
2296 
2297 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2298     auto operator<=>( AccelerationStructureDeviceAddressInfoKHR const & ) const = default;
2299 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2300     bool operator==( AccelerationStructureDeviceAddressInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
2301     {
2302 #  if defined( VULKAN_HPP_USE_REFLECT )
2303       return this->reflect() == rhs.reflect();
2304 #  else
2305       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructure == rhs.accelerationStructure );
2306 #  endif
2307     }
2308 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR2309     bool operator!=( AccelerationStructureDeviceAddressInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
2310     {
2311       return !operator==( rhs );
2312     }
2313 #endif
2314 
2315   public:
2316     VULKAN_HPP_NAMESPACE::StructureType            sType                 = StructureType::eAccelerationStructureDeviceAddressInfoKHR;
2317     const void *                                   pNext                 = {};
2318     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure = {};
2319   };
2320 
2321   template <>
2322   struct CppType<StructureType, StructureType::eAccelerationStructureDeviceAddressInfoKHR>
2323   {
2324     using Type = AccelerationStructureDeviceAddressInfoKHR;
2325   };
2326 
2327   struct AccelerationStructureGeometryMotionTrianglesDataNV
2328   {
2329     using NativeType = VkAccelerationStructureGeometryMotionTrianglesDataNV;
2330 
2331     static const bool                                  allowDuplicate = false;
2332     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureGeometryMotionTrianglesDataNV;
2333 
2334 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureGeometryMotionTrianglesDataNVVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2335     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryMotionTrianglesDataNV( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR vertexData_ = {},
2336                                                                                 const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
2337       : pNext{ pNext_ }
2338       , vertexData{ vertexData_ }
2339     {
2340     }
2341 
2342     VULKAN_HPP_CONSTEXPR_14
2343       AccelerationStructureGeometryMotionTrianglesDataNV( AccelerationStructureGeometryMotionTrianglesDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2344 
AccelerationStructureGeometryMotionTrianglesDataNVVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2345     AccelerationStructureGeometryMotionTrianglesDataNV( VkAccelerationStructureGeometryMotionTrianglesDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
2346       : AccelerationStructureGeometryMotionTrianglesDataNV( *reinterpret_cast<AccelerationStructureGeometryMotionTrianglesDataNV const *>( &rhs ) )
2347     {
2348     }
2349 
2350     AccelerationStructureGeometryMotionTrianglesDataNV &
2351       operator=( AccelerationStructureGeometryMotionTrianglesDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2352 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2353 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2354     AccelerationStructureGeometryMotionTrianglesDataNV & operator=( VkAccelerationStructureGeometryMotionTrianglesDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
2355     {
2356       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV const *>( &rhs );
2357       return *this;
2358     }
2359 
2360 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2361     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryMotionTrianglesDataNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2362     {
2363       pNext = pNext_;
2364       return *this;
2365     }
2366 
2367     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryMotionTrianglesDataNV &
setVertexDataVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2368       setVertexData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & vertexData_ ) VULKAN_HPP_NOEXCEPT
2369     {
2370       vertexData = vertexData_;
2371       return *this;
2372     }
2373 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2374 
operator VkAccelerationStructureGeometryMotionTrianglesDataNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2375     operator VkAccelerationStructureGeometryMotionTrianglesDataNV const &() const VULKAN_HPP_NOEXCEPT
2376     {
2377       return *reinterpret_cast<const VkAccelerationStructureGeometryMotionTrianglesDataNV *>( this );
2378     }
2379 
operator VkAccelerationStructureGeometryMotionTrianglesDataNV&VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2380     operator VkAccelerationStructureGeometryMotionTrianglesDataNV &() VULKAN_HPP_NOEXCEPT
2381     {
2382       return *reinterpret_cast<VkAccelerationStructureGeometryMotionTrianglesDataNV *>( this );
2383     }
2384 
2385 #if defined( VULKAN_HPP_USE_REFLECT )
2386 #  if 14 <= VULKAN_HPP_CPP_VERSION
2387     auto
2388 #  else
2389     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &>
2390 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV2391       reflect() const VULKAN_HPP_NOEXCEPT
2392     {
2393       return std::tie( sType, pNext, vertexData );
2394     }
2395 #endif
2396 
2397   public:
2398     VULKAN_HPP_NAMESPACE::StructureType               sType      = StructureType::eAccelerationStructureGeometryMotionTrianglesDataNV;
2399     const void *                                      pNext      = {};
2400     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR vertexData = {};
2401   };
2402 
2403   template <>
2404   struct CppType<StructureType, StructureType::eAccelerationStructureGeometryMotionTrianglesDataNV>
2405   {
2406     using Type = AccelerationStructureGeometryMotionTrianglesDataNV;
2407   };
2408 
2409   struct TransformMatrixKHR
2410   {
2411     using NativeType = VkTransformMatrixKHR;
2412 
2413 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
TransformMatrixKHRVULKAN_HPP_NAMESPACE::TransformMatrixKHR2414     VULKAN_HPP_CONSTEXPR_14 TransformMatrixKHR( std::array<std::array<float, 4>, 3> const & matrix_ = {} ) VULKAN_HPP_NOEXCEPT : matrix{ matrix_ } {}
2415 
2416     VULKAN_HPP_CONSTEXPR_14 TransformMatrixKHR( TransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2417 
TransformMatrixKHRVULKAN_HPP_NAMESPACE::TransformMatrixKHR2418     TransformMatrixKHR( VkTransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT : TransformMatrixKHR( *reinterpret_cast<TransformMatrixKHR const *>( &rhs ) ) {}
2419 
2420     TransformMatrixKHR & operator=( TransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2421 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2422 
operator =VULKAN_HPP_NAMESPACE::TransformMatrixKHR2423     TransformMatrixKHR & operator=( VkTransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT
2424     {
2425       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::TransformMatrixKHR const *>( &rhs );
2426       return *this;
2427     }
2428 
2429 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setMatrixVULKAN_HPP_NAMESPACE::TransformMatrixKHR2430     VULKAN_HPP_CONSTEXPR_14 TransformMatrixKHR & setMatrix( std::array<std::array<float, 4>, 3> matrix_ ) VULKAN_HPP_NOEXCEPT
2431     {
2432       matrix = matrix_;
2433       return *this;
2434     }
2435 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2436 
operator VkTransformMatrixKHR const&VULKAN_HPP_NAMESPACE::TransformMatrixKHR2437     operator VkTransformMatrixKHR const &() const VULKAN_HPP_NOEXCEPT
2438     {
2439       return *reinterpret_cast<const VkTransformMatrixKHR *>( this );
2440     }
2441 
operator VkTransformMatrixKHR&VULKAN_HPP_NAMESPACE::TransformMatrixKHR2442     operator VkTransformMatrixKHR &() VULKAN_HPP_NOEXCEPT
2443     {
2444       return *reinterpret_cast<VkTransformMatrixKHR *>( this );
2445     }
2446 
2447 #if defined( VULKAN_HPP_USE_REFLECT )
2448 #  if 14 <= VULKAN_HPP_CPP_VERSION
2449     auto
2450 #  else
2451     std::tuple<VULKAN_HPP_NAMESPACE::ArrayWrapper2D<float, 3, 4> const &>
2452 #  endif
reflectVULKAN_HPP_NAMESPACE::TransformMatrixKHR2453       reflect() const VULKAN_HPP_NOEXCEPT
2454     {
2455       return std::tie( matrix );
2456     }
2457 #endif
2458 
2459 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2460     auto operator<=>( TransformMatrixKHR const & ) const = default;
2461 #else
operator ==VULKAN_HPP_NAMESPACE::TransformMatrixKHR2462     bool operator==( TransformMatrixKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
2463     {
2464 #  if defined( VULKAN_HPP_USE_REFLECT )
2465       return this->reflect() == rhs.reflect();
2466 #  else
2467       return ( matrix == rhs.matrix );
2468 #  endif
2469     }
2470 
operator !=VULKAN_HPP_NAMESPACE::TransformMatrixKHR2471     bool operator!=( TransformMatrixKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
2472     {
2473       return !operator==( rhs );
2474     }
2475 #endif
2476 
2477   public:
2478     VULKAN_HPP_NAMESPACE::ArrayWrapper2D<float, 3, 4> matrix = {};
2479   };
2480 
2481   using TransformMatrixNV = TransformMatrixKHR;
2482 
2483   struct AccelerationStructureInstanceKHR
2484   {
2485     using NativeType = VkAccelerationStructureInstanceKHR;
2486 
2487 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureInstanceKHRVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2488     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR( VULKAN_HPP_NAMESPACE::TransformMatrixKHR       transform_                              = {},
2489                                                               uint32_t                                       instanceCustomIndex_                    = {},
2490                                                               uint32_t                                       mask_                                   = {},
2491                                                               uint32_t                                       instanceShaderBindingTableRecordOffset_ = {},
2492                                                               VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_                                  = {},
2493                                                               uint64_t accelerationStructureReference_ = {} ) VULKAN_HPP_NOEXCEPT
2494       : transform{ transform_ }
2495       , instanceCustomIndex{ instanceCustomIndex_ }
2496       , mask{ mask_ }
2497       , instanceShaderBindingTableRecordOffset{ instanceShaderBindingTableRecordOffset_ }
2498       , flags{ flags_ }
2499       , accelerationStructureReference{ accelerationStructureReference_ }
2500     {
2501     }
2502 
2503     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR( AccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2504 
AccelerationStructureInstanceKHRVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2505     AccelerationStructureInstanceKHR( VkAccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT
2506       : AccelerationStructureInstanceKHR( *reinterpret_cast<AccelerationStructureInstanceKHR const *>( &rhs ) )
2507     {
2508     }
2509 
2510     AccelerationStructureInstanceKHR & operator=( AccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2511 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2512 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2513     AccelerationStructureInstanceKHR & operator=( VkAccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT
2514     {
2515       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR const *>( &rhs );
2516       return *this;
2517     }
2518 
2519 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setTransformVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2520     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR & setTransform( VULKAN_HPP_NAMESPACE::TransformMatrixKHR const & transform_ ) VULKAN_HPP_NOEXCEPT
2521     {
2522       transform = transform_;
2523       return *this;
2524     }
2525 
setInstanceCustomIndexVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2526     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR & setInstanceCustomIndex( uint32_t instanceCustomIndex_ ) VULKAN_HPP_NOEXCEPT
2527     {
2528       instanceCustomIndex = instanceCustomIndex_;
2529       return *this;
2530     }
2531 
setMaskVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2532     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR & setMask( uint32_t mask_ ) VULKAN_HPP_NOEXCEPT
2533     {
2534       mask = mask_;
2535       return *this;
2536     }
2537 
2538     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR &
setInstanceShaderBindingTableRecordOffsetVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2539       setInstanceShaderBindingTableRecordOffset( uint32_t instanceShaderBindingTableRecordOffset_ ) VULKAN_HPP_NOEXCEPT
2540     {
2541       instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset_;
2542       return *this;
2543     }
2544 
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2545     AccelerationStructureInstanceKHR & setFlags( VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
2546     {
2547       flags = *reinterpret_cast<VkGeometryInstanceFlagsKHR *>( &flags_ );
2548       return *this;
2549     }
2550 
setAccelerationStructureReferenceVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2551     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR & setAccelerationStructureReference( uint64_t accelerationStructureReference_ ) VULKAN_HPP_NOEXCEPT
2552     {
2553       accelerationStructureReference = accelerationStructureReference_;
2554       return *this;
2555     }
2556 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2557 
operator VkAccelerationStructureInstanceKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2558     operator VkAccelerationStructureInstanceKHR const &() const VULKAN_HPP_NOEXCEPT
2559     {
2560       return *reinterpret_cast<const VkAccelerationStructureInstanceKHR *>( this );
2561     }
2562 
operator VkAccelerationStructureInstanceKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2563     operator VkAccelerationStructureInstanceKHR &() VULKAN_HPP_NOEXCEPT
2564     {
2565       return *reinterpret_cast<VkAccelerationStructureInstanceKHR *>( this );
2566     }
2567 
2568 #if defined( VULKAN_HPP_USE_REFLECT )
2569 #  if 14 <= VULKAN_HPP_CPP_VERSION
2570     auto
2571 #  else
2572     std::tuple<VULKAN_HPP_NAMESPACE::TransformMatrixKHR const &,
2573                uint32_t const &,
2574                uint32_t const &,
2575                uint32_t const &,
2576                VkGeometryInstanceFlagsKHR const &,
2577                uint64_t const &>
2578 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2579       reflect() const VULKAN_HPP_NOEXCEPT
2580     {
2581       return std::tie( transform, instanceCustomIndex, mask, instanceShaderBindingTableRecordOffset, flags, accelerationStructureReference );
2582     }
2583 #endif
2584 
2585 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2586     auto operator<=>( AccelerationStructureInstanceKHR const & ) const = default;
2587 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2588     bool operator==( AccelerationStructureInstanceKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
2589     {
2590 #  if defined( VULKAN_HPP_USE_REFLECT )
2591       return this->reflect() == rhs.reflect();
2592 #  else
2593       return ( transform == rhs.transform ) && ( instanceCustomIndex == rhs.instanceCustomIndex ) && ( mask == rhs.mask ) &&
2594              ( instanceShaderBindingTableRecordOffset == rhs.instanceShaderBindingTableRecordOffset ) && ( flags == rhs.flags ) &&
2595              ( accelerationStructureReference == rhs.accelerationStructureReference );
2596 #  endif
2597     }
2598 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR2599     bool operator!=( AccelerationStructureInstanceKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
2600     {
2601       return !operator==( rhs );
2602     }
2603 #endif
2604 
2605   public:
2606     VULKAN_HPP_NAMESPACE::TransformMatrixKHR transform = {};
2607     uint32_t                                 instanceCustomIndex                    : 24;
2608     uint32_t                                 mask                                   : 8;
2609     uint32_t                                 instanceShaderBindingTableRecordOffset : 24;
2610     VkGeometryInstanceFlagsKHR               flags                                  : 8;
2611     uint64_t                                 accelerationStructureReference = {};
2612   };
2613 
2614   using AccelerationStructureInstanceNV = AccelerationStructureInstanceKHR;
2615 
2616   struct AccelerationStructureMatrixMotionInstanceNV
2617   {
2618     using NativeType = VkAccelerationStructureMatrixMotionInstanceNV;
2619 
2620 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureMatrixMotionInstanceNVVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2621     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV( VULKAN_HPP_NAMESPACE::TransformMatrixKHR transformT0_                            = {},
2622                                                                          VULKAN_HPP_NAMESPACE::TransformMatrixKHR transformT1_                            = {},
2623                                                                          uint32_t                                 instanceCustomIndex_                    = {},
2624                                                                          uint32_t                                 mask_                                   = {},
2625                                                                          uint32_t                                 instanceShaderBindingTableRecordOffset_ = {},
2626                                                                          VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_                            = {},
2627                                                                          uint64_t accelerationStructureReference_ = {} ) VULKAN_HPP_NOEXCEPT
2628       : transformT0{ transformT0_ }
2629       , transformT1{ transformT1_ }
2630       , instanceCustomIndex{ instanceCustomIndex_ }
2631       , mask{ mask_ }
2632       , instanceShaderBindingTableRecordOffset{ instanceShaderBindingTableRecordOffset_ }
2633       , flags{ flags_ }
2634       , accelerationStructureReference{ accelerationStructureReference_ }
2635     {
2636     }
2637 
2638     VULKAN_HPP_CONSTEXPR_14
2639       AccelerationStructureMatrixMotionInstanceNV( AccelerationStructureMatrixMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2640 
AccelerationStructureMatrixMotionInstanceNVVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2641     AccelerationStructureMatrixMotionInstanceNV( VkAccelerationStructureMatrixMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT
2642       : AccelerationStructureMatrixMotionInstanceNV( *reinterpret_cast<AccelerationStructureMatrixMotionInstanceNV const *>( &rhs ) )
2643     {
2644     }
2645 
2646     AccelerationStructureMatrixMotionInstanceNV & operator=( AccelerationStructureMatrixMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2647 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2648 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2649     AccelerationStructureMatrixMotionInstanceNV & operator=( VkAccelerationStructureMatrixMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT
2650     {
2651       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV const *>( &rhs );
2652       return *this;
2653     }
2654 
2655 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
2656     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV &
setTransformT0VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2657       setTransformT0( VULKAN_HPP_NAMESPACE::TransformMatrixKHR const & transformT0_ ) VULKAN_HPP_NOEXCEPT
2658     {
2659       transformT0 = transformT0_;
2660       return *this;
2661     }
2662 
2663     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV &
setTransformT1VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2664       setTransformT1( VULKAN_HPP_NAMESPACE::TransformMatrixKHR const & transformT1_ ) VULKAN_HPP_NOEXCEPT
2665     {
2666       transformT1 = transformT1_;
2667       return *this;
2668     }
2669 
setInstanceCustomIndexVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2670     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV & setInstanceCustomIndex( uint32_t instanceCustomIndex_ ) VULKAN_HPP_NOEXCEPT
2671     {
2672       instanceCustomIndex = instanceCustomIndex_;
2673       return *this;
2674     }
2675 
setMaskVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2676     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV & setMask( uint32_t mask_ ) VULKAN_HPP_NOEXCEPT
2677     {
2678       mask = mask_;
2679       return *this;
2680     }
2681 
2682     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV &
setInstanceShaderBindingTableRecordOffsetVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2683       setInstanceShaderBindingTableRecordOffset( uint32_t instanceShaderBindingTableRecordOffset_ ) VULKAN_HPP_NOEXCEPT
2684     {
2685       instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset_;
2686       return *this;
2687     }
2688 
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2689     AccelerationStructureMatrixMotionInstanceNV & setFlags( VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
2690     {
2691       flags = *reinterpret_cast<VkGeometryInstanceFlagsKHR *>( &flags_ );
2692       return *this;
2693     }
2694 
2695     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV &
setAccelerationStructureReferenceVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2696       setAccelerationStructureReference( uint64_t accelerationStructureReference_ ) VULKAN_HPP_NOEXCEPT
2697     {
2698       accelerationStructureReference = accelerationStructureReference_;
2699       return *this;
2700     }
2701 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2702 
operator VkAccelerationStructureMatrixMotionInstanceNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2703     operator VkAccelerationStructureMatrixMotionInstanceNV const &() const VULKAN_HPP_NOEXCEPT
2704     {
2705       return *reinterpret_cast<const VkAccelerationStructureMatrixMotionInstanceNV *>( this );
2706     }
2707 
operator VkAccelerationStructureMatrixMotionInstanceNV&VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2708     operator VkAccelerationStructureMatrixMotionInstanceNV &() VULKAN_HPP_NOEXCEPT
2709     {
2710       return *reinterpret_cast<VkAccelerationStructureMatrixMotionInstanceNV *>( this );
2711     }
2712 
2713 #if defined( VULKAN_HPP_USE_REFLECT )
2714 #  if 14 <= VULKAN_HPP_CPP_VERSION
2715     auto
2716 #  else
2717     std::tuple<VULKAN_HPP_NAMESPACE::TransformMatrixKHR const &,
2718                VULKAN_HPP_NAMESPACE::TransformMatrixKHR const &,
2719                uint32_t const &,
2720                uint32_t const &,
2721                uint32_t const &,
2722                VkGeometryInstanceFlagsKHR const &,
2723                uint64_t const &>
2724 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2725       reflect() const VULKAN_HPP_NOEXCEPT
2726     {
2727       return std::tie( transformT0, transformT1, instanceCustomIndex, mask, instanceShaderBindingTableRecordOffset, flags, accelerationStructureReference );
2728     }
2729 #endif
2730 
2731 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2732     auto operator<=>( AccelerationStructureMatrixMotionInstanceNV const & ) const = default;
2733 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2734     bool operator==( AccelerationStructureMatrixMotionInstanceNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2735     {
2736 #  if defined( VULKAN_HPP_USE_REFLECT )
2737       return this->reflect() == rhs.reflect();
2738 #  else
2739       return ( transformT0 == rhs.transformT0 ) && ( transformT1 == rhs.transformT1 ) && ( instanceCustomIndex == rhs.instanceCustomIndex ) &&
2740              ( mask == rhs.mask ) && ( instanceShaderBindingTableRecordOffset == rhs.instanceShaderBindingTableRecordOffset ) && ( flags == rhs.flags ) &&
2741              ( accelerationStructureReference == rhs.accelerationStructureReference );
2742 #  endif
2743     }
2744 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV2745     bool operator!=( AccelerationStructureMatrixMotionInstanceNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2746     {
2747       return !operator==( rhs );
2748     }
2749 #endif
2750 
2751   public:
2752     VULKAN_HPP_NAMESPACE::TransformMatrixKHR transformT0 = {};
2753     VULKAN_HPP_NAMESPACE::TransformMatrixKHR transformT1 = {};
2754     uint32_t                                 instanceCustomIndex                    : 24;
2755     uint32_t                                 mask                                   : 8;
2756     uint32_t                                 instanceShaderBindingTableRecordOffset : 24;
2757     VkGeometryInstanceFlagsKHR               flags                                  : 8;
2758     uint64_t                                 accelerationStructureReference = {};
2759   };
2760 
2761   struct AccelerationStructureMemoryRequirementsInfoNV
2762   {
2763     using NativeType = VkAccelerationStructureMemoryRequirementsInfoNV;
2764 
2765     static const bool                                  allowDuplicate = false;
2766     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureMemoryRequirementsInfoNV;
2767 
2768 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureMemoryRequirementsInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2769     VULKAN_HPP_CONSTEXPR AccelerationStructureMemoryRequirementsInfoNV(
2770       VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV type_ = VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV::eObject,
2771       VULKAN_HPP_NAMESPACE::AccelerationStructureNV                       accelerationStructure_ = {},
2772       const void *                                                        pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
2773       : pNext{ pNext_ }
2774       , type{ type_ }
2775       , accelerationStructure{ accelerationStructure_ }
2776     {
2777     }
2778 
2779     VULKAN_HPP_CONSTEXPR
2780       AccelerationStructureMemoryRequirementsInfoNV( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2781 
AccelerationStructureMemoryRequirementsInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2782     AccelerationStructureMemoryRequirementsInfoNV( VkAccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
2783       : AccelerationStructureMemoryRequirementsInfoNV( *reinterpret_cast<AccelerationStructureMemoryRequirementsInfoNV const *>( &rhs ) )
2784     {
2785     }
2786 
2787     AccelerationStructureMemoryRequirementsInfoNV & operator=( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2788 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2789 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2790     AccelerationStructureMemoryRequirementsInfoNV & operator=( VkAccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
2791     {
2792       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV const *>( &rhs );
2793       return *this;
2794     }
2795 
2796 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2797     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMemoryRequirementsInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2798     {
2799       pNext = pNext_;
2800       return *this;
2801     }
2802 
2803     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMemoryRequirementsInfoNV &
setTypeVULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2804       setType( VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV type_ ) VULKAN_HPP_NOEXCEPT
2805     {
2806       type = type_;
2807       return *this;
2808     }
2809 
2810     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMemoryRequirementsInfoNV &
setAccelerationStructureVULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2811       setAccelerationStructure( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure_ ) VULKAN_HPP_NOEXCEPT
2812     {
2813       accelerationStructure = accelerationStructure_;
2814       return *this;
2815     }
2816 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2817 
operator VkAccelerationStructureMemoryRequirementsInfoNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2818     operator VkAccelerationStructureMemoryRequirementsInfoNV const &() const VULKAN_HPP_NOEXCEPT
2819     {
2820       return *reinterpret_cast<const VkAccelerationStructureMemoryRequirementsInfoNV *>( this );
2821     }
2822 
operator VkAccelerationStructureMemoryRequirementsInfoNV&VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2823     operator VkAccelerationStructureMemoryRequirementsInfoNV &() VULKAN_HPP_NOEXCEPT
2824     {
2825       return *reinterpret_cast<VkAccelerationStructureMemoryRequirementsInfoNV *>( this );
2826     }
2827 
2828 #if defined( VULKAN_HPP_USE_REFLECT )
2829 #  if 14 <= VULKAN_HPP_CPP_VERSION
2830     auto
2831 #  else
2832     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
2833                const void * const &,
2834                VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV const &,
2835                VULKAN_HPP_NAMESPACE::AccelerationStructureNV const &>
2836 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2837       reflect() const VULKAN_HPP_NOEXCEPT
2838     {
2839       return std::tie( sType, pNext, type, accelerationStructure );
2840     }
2841 #endif
2842 
2843 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2844     auto operator<=>( AccelerationStructureMemoryRequirementsInfoNV const & ) const = default;
2845 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2846     bool operator==( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2847     {
2848 #  if defined( VULKAN_HPP_USE_REFLECT )
2849       return this->reflect() == rhs.reflect();
2850 #  else
2851       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ) && ( accelerationStructure == rhs.accelerationStructure );
2852 #  endif
2853     }
2854 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV2855     bool operator!=( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2856     {
2857       return !operator==( rhs );
2858     }
2859 #endif
2860 
2861   public:
2862     VULKAN_HPP_NAMESPACE::StructureType                                 sType = StructureType::eAccelerationStructureMemoryRequirementsInfoNV;
2863     const void *                                                        pNext = {};
2864     VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV type  = VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV::eObject;
2865     VULKAN_HPP_NAMESPACE::AccelerationStructureNV                       accelerationStructure = {};
2866   };
2867 
2868   template <>
2869   struct CppType<StructureType, StructureType::eAccelerationStructureMemoryRequirementsInfoNV>
2870   {
2871     using Type = AccelerationStructureMemoryRequirementsInfoNV;
2872   };
2873 
2874   struct AccelerationStructureMotionInfoNV
2875   {
2876     using NativeType = VkAccelerationStructureMotionInfoNV;
2877 
2878     static const bool                                  allowDuplicate = false;
2879     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureMotionInfoNV;
2880 
2881 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureMotionInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2882     VULKAN_HPP_CONSTEXPR AccelerationStructureMotionInfoNV( uint32_t                                                     maxInstances_ = {},
2883                                                             VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoFlagsNV flags_        = {},
2884                                                             const void *                                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
2885       : pNext{ pNext_ }
2886       , maxInstances{ maxInstances_ }
2887       , flags{ flags_ }
2888     {
2889     }
2890 
2891     VULKAN_HPP_CONSTEXPR AccelerationStructureMotionInfoNV( AccelerationStructureMotionInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2892 
AccelerationStructureMotionInfoNVVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2893     AccelerationStructureMotionInfoNV( VkAccelerationStructureMotionInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
2894       : AccelerationStructureMotionInfoNV( *reinterpret_cast<AccelerationStructureMotionInfoNV const *>( &rhs ) )
2895     {
2896     }
2897 
2898     AccelerationStructureMotionInfoNV & operator=( AccelerationStructureMotionInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2899 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2900 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2901     AccelerationStructureMotionInfoNV & operator=( VkAccelerationStructureMotionInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
2902     {
2903       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV const *>( &rhs );
2904       return *this;
2905     }
2906 
2907 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2908     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2909     {
2910       pNext = pNext_;
2911       return *this;
2912     }
2913 
setMaxInstancesVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2914     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInfoNV & setMaxInstances( uint32_t maxInstances_ ) VULKAN_HPP_NOEXCEPT
2915     {
2916       maxInstances = maxInstances_;
2917       return *this;
2918     }
2919 
2920     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInfoNV &
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2921       setFlags( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
2922     {
2923       flags = flags_;
2924       return *this;
2925     }
2926 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2927 
operator VkAccelerationStructureMotionInfoNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2928     operator VkAccelerationStructureMotionInfoNV const &() const VULKAN_HPP_NOEXCEPT
2929     {
2930       return *reinterpret_cast<const VkAccelerationStructureMotionInfoNV *>( this );
2931     }
2932 
operator VkAccelerationStructureMotionInfoNV&VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2933     operator VkAccelerationStructureMotionInfoNV &() VULKAN_HPP_NOEXCEPT
2934     {
2935       return *reinterpret_cast<VkAccelerationStructureMotionInfoNV *>( this );
2936     }
2937 
2938 #if defined( VULKAN_HPP_USE_REFLECT )
2939 #  if 14 <= VULKAN_HPP_CPP_VERSION
2940     auto
2941 #  else
2942     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
2943                const void * const &,
2944                uint32_t const &,
2945                VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoFlagsNV const &>
2946 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2947       reflect() const VULKAN_HPP_NOEXCEPT
2948     {
2949       return std::tie( sType, pNext, maxInstances, flags );
2950     }
2951 #endif
2952 
2953 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
2954     auto operator<=>( AccelerationStructureMotionInfoNV const & ) const = default;
2955 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2956     bool operator==( AccelerationStructureMotionInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2957     {
2958 #  if defined( VULKAN_HPP_USE_REFLECT )
2959       return this->reflect() == rhs.reflect();
2960 #  else
2961       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxInstances == rhs.maxInstances ) && ( flags == rhs.flags );
2962 #  endif
2963     }
2964 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV2965     bool operator!=( AccelerationStructureMotionInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
2966     {
2967       return !operator==( rhs );
2968     }
2969 #endif
2970 
2971   public:
2972     VULKAN_HPP_NAMESPACE::StructureType                          sType        = StructureType::eAccelerationStructureMotionInfoNV;
2973     const void *                                                 pNext        = {};
2974     uint32_t                                                     maxInstances = {};
2975     VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoFlagsNV flags        = {};
2976   };
2977 
2978   template <>
2979   struct CppType<StructureType, StructureType::eAccelerationStructureMotionInfoNV>
2980   {
2981     using Type = AccelerationStructureMotionInfoNV;
2982   };
2983 
2984   struct SRTDataNV
2985   {
2986     using NativeType = VkSRTDataNV;
2987 
2988 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SRTDataNVVULKAN_HPP_NAMESPACE::SRTDataNV2989     VULKAN_HPP_CONSTEXPR SRTDataNV( float sx_  = {},
2990                                     float a_   = {},
2991                                     float b_   = {},
2992                                     float pvx_ = {},
2993                                     float sy_  = {},
2994                                     float c_   = {},
2995                                     float pvy_ = {},
2996                                     float sz_  = {},
2997                                     float pvz_ = {},
2998                                     float qx_  = {},
2999                                     float qy_  = {},
3000                                     float qz_  = {},
3001                                     float qw_  = {},
3002                                     float tx_  = {},
3003                                     float ty_  = {},
3004                                     float tz_  = {} ) VULKAN_HPP_NOEXCEPT
3005       : sx{ sx_ }
3006       , a{ a_ }
3007       , b{ b_ }
3008       , pvx{ pvx_ }
3009       , sy{ sy_ }
3010       , c{ c_ }
3011       , pvy{ pvy_ }
3012       , sz{ sz_ }
3013       , pvz{ pvz_ }
3014       , qx{ qx_ }
3015       , qy{ qy_ }
3016       , qz{ qz_ }
3017       , qw{ qw_ }
3018       , tx{ tx_ }
3019       , ty{ ty_ }
3020       , tz{ tz_ }
3021     {
3022     }
3023 
3024     VULKAN_HPP_CONSTEXPR SRTDataNV( SRTDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3025 
SRTDataNVVULKAN_HPP_NAMESPACE::SRTDataNV3026     SRTDataNV( VkSRTDataNV const & rhs ) VULKAN_HPP_NOEXCEPT : SRTDataNV( *reinterpret_cast<SRTDataNV const *>( &rhs ) ) {}
3027 
3028     SRTDataNV & operator=( SRTDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3029 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3030 
operator =VULKAN_HPP_NAMESPACE::SRTDataNV3031     SRTDataNV & operator=( VkSRTDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
3032     {
3033       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SRTDataNV const *>( &rhs );
3034       return *this;
3035     }
3036 
3037 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSxVULKAN_HPP_NAMESPACE::SRTDataNV3038     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setSx( float sx_ ) VULKAN_HPP_NOEXCEPT
3039     {
3040       sx = sx_;
3041       return *this;
3042     }
3043 
setAVULKAN_HPP_NAMESPACE::SRTDataNV3044     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setA( float a_ ) VULKAN_HPP_NOEXCEPT
3045     {
3046       a = a_;
3047       return *this;
3048     }
3049 
setBVULKAN_HPP_NAMESPACE::SRTDataNV3050     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setB( float b_ ) VULKAN_HPP_NOEXCEPT
3051     {
3052       b = b_;
3053       return *this;
3054     }
3055 
setPvxVULKAN_HPP_NAMESPACE::SRTDataNV3056     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setPvx( float pvx_ ) VULKAN_HPP_NOEXCEPT
3057     {
3058       pvx = pvx_;
3059       return *this;
3060     }
3061 
setSyVULKAN_HPP_NAMESPACE::SRTDataNV3062     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setSy( float sy_ ) VULKAN_HPP_NOEXCEPT
3063     {
3064       sy = sy_;
3065       return *this;
3066     }
3067 
setCVULKAN_HPP_NAMESPACE::SRTDataNV3068     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setC( float c_ ) VULKAN_HPP_NOEXCEPT
3069     {
3070       c = c_;
3071       return *this;
3072     }
3073 
setPvyVULKAN_HPP_NAMESPACE::SRTDataNV3074     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setPvy( float pvy_ ) VULKAN_HPP_NOEXCEPT
3075     {
3076       pvy = pvy_;
3077       return *this;
3078     }
3079 
setSzVULKAN_HPP_NAMESPACE::SRTDataNV3080     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setSz( float sz_ ) VULKAN_HPP_NOEXCEPT
3081     {
3082       sz = sz_;
3083       return *this;
3084     }
3085 
setPvzVULKAN_HPP_NAMESPACE::SRTDataNV3086     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setPvz( float pvz_ ) VULKAN_HPP_NOEXCEPT
3087     {
3088       pvz = pvz_;
3089       return *this;
3090     }
3091 
setQxVULKAN_HPP_NAMESPACE::SRTDataNV3092     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setQx( float qx_ ) VULKAN_HPP_NOEXCEPT
3093     {
3094       qx = qx_;
3095       return *this;
3096     }
3097 
setQyVULKAN_HPP_NAMESPACE::SRTDataNV3098     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setQy( float qy_ ) VULKAN_HPP_NOEXCEPT
3099     {
3100       qy = qy_;
3101       return *this;
3102     }
3103 
setQzVULKAN_HPP_NAMESPACE::SRTDataNV3104     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setQz( float qz_ ) VULKAN_HPP_NOEXCEPT
3105     {
3106       qz = qz_;
3107       return *this;
3108     }
3109 
setQwVULKAN_HPP_NAMESPACE::SRTDataNV3110     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setQw( float qw_ ) VULKAN_HPP_NOEXCEPT
3111     {
3112       qw = qw_;
3113       return *this;
3114     }
3115 
setTxVULKAN_HPP_NAMESPACE::SRTDataNV3116     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setTx( float tx_ ) VULKAN_HPP_NOEXCEPT
3117     {
3118       tx = tx_;
3119       return *this;
3120     }
3121 
setTyVULKAN_HPP_NAMESPACE::SRTDataNV3122     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setTy( float ty_ ) VULKAN_HPP_NOEXCEPT
3123     {
3124       ty = ty_;
3125       return *this;
3126     }
3127 
setTzVULKAN_HPP_NAMESPACE::SRTDataNV3128     VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setTz( float tz_ ) VULKAN_HPP_NOEXCEPT
3129     {
3130       tz = tz_;
3131       return *this;
3132     }
3133 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3134 
operator VkSRTDataNV const&VULKAN_HPP_NAMESPACE::SRTDataNV3135     operator VkSRTDataNV const &() const VULKAN_HPP_NOEXCEPT
3136     {
3137       return *reinterpret_cast<const VkSRTDataNV *>( this );
3138     }
3139 
operator VkSRTDataNV&VULKAN_HPP_NAMESPACE::SRTDataNV3140     operator VkSRTDataNV &() VULKAN_HPP_NOEXCEPT
3141     {
3142       return *reinterpret_cast<VkSRTDataNV *>( this );
3143     }
3144 
3145 #if defined( VULKAN_HPP_USE_REFLECT )
3146 #  if 14 <= VULKAN_HPP_CPP_VERSION
3147     auto
3148 #  else
3149     std::tuple<float const &,
3150                float const &,
3151                float const &,
3152                float const &,
3153                float const &,
3154                float const &,
3155                float const &,
3156                float const &,
3157                float const &,
3158                float const &,
3159                float const &,
3160                float const &,
3161                float const &,
3162                float const &,
3163                float const &,
3164                float const &>
3165 #  endif
reflectVULKAN_HPP_NAMESPACE::SRTDataNV3166       reflect() const VULKAN_HPP_NOEXCEPT
3167     {
3168       return std::tie( sx, a, b, pvx, sy, c, pvy, sz, pvz, qx, qy, qz, qw, tx, ty, tz );
3169     }
3170 #endif
3171 
3172 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
3173     auto operator<=>( SRTDataNV const & ) const = default;
3174 #else
operator ==VULKAN_HPP_NAMESPACE::SRTDataNV3175     bool operator==( SRTDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT
3176     {
3177 #  if defined( VULKAN_HPP_USE_REFLECT )
3178       return this->reflect() == rhs.reflect();
3179 #  else
3180       return ( sx == rhs.sx ) && ( a == rhs.a ) && ( b == rhs.b ) && ( pvx == rhs.pvx ) && ( sy == rhs.sy ) && ( c == rhs.c ) && ( pvy == rhs.pvy ) &&
3181              ( sz == rhs.sz ) && ( pvz == rhs.pvz ) && ( qx == rhs.qx ) && ( qy == rhs.qy ) && ( qz == rhs.qz ) && ( qw == rhs.qw ) && ( tx == rhs.tx ) &&
3182              ( ty == rhs.ty ) && ( tz == rhs.tz );
3183 #  endif
3184     }
3185 
operator !=VULKAN_HPP_NAMESPACE::SRTDataNV3186     bool operator!=( SRTDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT
3187     {
3188       return !operator==( rhs );
3189     }
3190 #endif
3191 
3192   public:
3193     float sx  = {};
3194     float a   = {};
3195     float b   = {};
3196     float pvx = {};
3197     float sy  = {};
3198     float c   = {};
3199     float pvy = {};
3200     float sz  = {};
3201     float pvz = {};
3202     float qx  = {};
3203     float qy  = {};
3204     float qz  = {};
3205     float qw  = {};
3206     float tx  = {};
3207     float ty  = {};
3208     float tz  = {};
3209   };
3210 
3211   struct AccelerationStructureSRTMotionInstanceNV
3212   {
3213     using NativeType = VkAccelerationStructureSRTMotionInstanceNV;
3214 
3215 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureSRTMotionInstanceNVVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3216     VULKAN_HPP_CONSTEXPR AccelerationStructureSRTMotionInstanceNV( VULKAN_HPP_NAMESPACE::SRTDataNV                transformT0_                            = {},
3217                                                                    VULKAN_HPP_NAMESPACE::SRTDataNV                transformT1_                            = {},
3218                                                                    uint32_t                                       instanceCustomIndex_                    = {},
3219                                                                    uint32_t                                       mask_                                   = {},
3220                                                                    uint32_t                                       instanceShaderBindingTableRecordOffset_ = {},
3221                                                                    VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_                                  = {},
3222                                                                    uint64_t accelerationStructureReference_ = {} ) VULKAN_HPP_NOEXCEPT
3223       : transformT0{ transformT0_ }
3224       , transformT1{ transformT1_ }
3225       , instanceCustomIndex{ instanceCustomIndex_ }
3226       , mask{ mask_ }
3227       , instanceShaderBindingTableRecordOffset{ instanceShaderBindingTableRecordOffset_ }
3228       , flags{ flags_ }
3229       , accelerationStructureReference{ accelerationStructureReference_ }
3230     {
3231     }
3232 
3233     VULKAN_HPP_CONSTEXPR AccelerationStructureSRTMotionInstanceNV( AccelerationStructureSRTMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3234 
AccelerationStructureSRTMotionInstanceNVVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3235     AccelerationStructureSRTMotionInstanceNV( VkAccelerationStructureSRTMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT
3236       : AccelerationStructureSRTMotionInstanceNV( *reinterpret_cast<AccelerationStructureSRTMotionInstanceNV const *>( &rhs ) )
3237     {
3238     }
3239 
3240     AccelerationStructureSRTMotionInstanceNV & operator=( AccelerationStructureSRTMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3241 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3242 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3243     AccelerationStructureSRTMotionInstanceNV & operator=( VkAccelerationStructureSRTMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT
3244     {
3245       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV const *>( &rhs );
3246       return *this;
3247     }
3248 
3249 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
3250     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV &
setTransformT0VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3251       setTransformT0( VULKAN_HPP_NAMESPACE::SRTDataNV const & transformT0_ ) VULKAN_HPP_NOEXCEPT
3252     {
3253       transformT0 = transformT0_;
3254       return *this;
3255     }
3256 
3257     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV &
setTransformT1VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3258       setTransformT1( VULKAN_HPP_NAMESPACE::SRTDataNV const & transformT1_ ) VULKAN_HPP_NOEXCEPT
3259     {
3260       transformT1 = transformT1_;
3261       return *this;
3262     }
3263 
setInstanceCustomIndexVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3264     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV & setInstanceCustomIndex( uint32_t instanceCustomIndex_ ) VULKAN_HPP_NOEXCEPT
3265     {
3266       instanceCustomIndex = instanceCustomIndex_;
3267       return *this;
3268     }
3269 
setMaskVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3270     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV & setMask( uint32_t mask_ ) VULKAN_HPP_NOEXCEPT
3271     {
3272       mask = mask_;
3273       return *this;
3274     }
3275 
3276     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV &
setInstanceShaderBindingTableRecordOffsetVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3277       setInstanceShaderBindingTableRecordOffset( uint32_t instanceShaderBindingTableRecordOffset_ ) VULKAN_HPP_NOEXCEPT
3278     {
3279       instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset_;
3280       return *this;
3281     }
3282 
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3283     AccelerationStructureSRTMotionInstanceNV & setFlags( VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
3284     {
3285       flags = *reinterpret_cast<VkGeometryInstanceFlagsKHR *>( &flags_ );
3286       return *this;
3287     }
3288 
3289     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV &
setAccelerationStructureReferenceVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3290       setAccelerationStructureReference( uint64_t accelerationStructureReference_ ) VULKAN_HPP_NOEXCEPT
3291     {
3292       accelerationStructureReference = accelerationStructureReference_;
3293       return *this;
3294     }
3295 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3296 
operator VkAccelerationStructureSRTMotionInstanceNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3297     operator VkAccelerationStructureSRTMotionInstanceNV const &() const VULKAN_HPP_NOEXCEPT
3298     {
3299       return *reinterpret_cast<const VkAccelerationStructureSRTMotionInstanceNV *>( this );
3300     }
3301 
operator VkAccelerationStructureSRTMotionInstanceNV&VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3302     operator VkAccelerationStructureSRTMotionInstanceNV &() VULKAN_HPP_NOEXCEPT
3303     {
3304       return *reinterpret_cast<VkAccelerationStructureSRTMotionInstanceNV *>( this );
3305     }
3306 
3307 #if defined( VULKAN_HPP_USE_REFLECT )
3308 #  if 14 <= VULKAN_HPP_CPP_VERSION
3309     auto
3310 #  else
3311     std::tuple<VULKAN_HPP_NAMESPACE::SRTDataNV const &,
3312                VULKAN_HPP_NAMESPACE::SRTDataNV const &,
3313                uint32_t const &,
3314                uint32_t const &,
3315                uint32_t const &,
3316                VkGeometryInstanceFlagsKHR const &,
3317                uint64_t const &>
3318 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3319       reflect() const VULKAN_HPP_NOEXCEPT
3320     {
3321       return std::tie( transformT0, transformT1, instanceCustomIndex, mask, instanceShaderBindingTableRecordOffset, flags, accelerationStructureReference );
3322     }
3323 #endif
3324 
3325 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
3326     auto operator<=>( AccelerationStructureSRTMotionInstanceNV const & ) const = default;
3327 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3328     bool operator==( AccelerationStructureSRTMotionInstanceNV const & rhs ) const VULKAN_HPP_NOEXCEPT
3329     {
3330 #  if defined( VULKAN_HPP_USE_REFLECT )
3331       return this->reflect() == rhs.reflect();
3332 #  else
3333       return ( transformT0 == rhs.transformT0 ) && ( transformT1 == rhs.transformT1 ) && ( instanceCustomIndex == rhs.instanceCustomIndex ) &&
3334              ( mask == rhs.mask ) && ( instanceShaderBindingTableRecordOffset == rhs.instanceShaderBindingTableRecordOffset ) && ( flags == rhs.flags ) &&
3335              ( accelerationStructureReference == rhs.accelerationStructureReference );
3336 #  endif
3337     }
3338 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV3339     bool operator!=( AccelerationStructureSRTMotionInstanceNV const & rhs ) const VULKAN_HPP_NOEXCEPT
3340     {
3341       return !operator==( rhs );
3342     }
3343 #endif
3344 
3345   public:
3346     VULKAN_HPP_NAMESPACE::SRTDataNV transformT0 = {};
3347     VULKAN_HPP_NAMESPACE::SRTDataNV transformT1 = {};
3348     uint32_t                        instanceCustomIndex                    : 24;
3349     uint32_t                        mask                                   : 8;
3350     uint32_t                        instanceShaderBindingTableRecordOffset : 24;
3351     VkGeometryInstanceFlagsKHR      flags                                  : 8;
3352     uint64_t                        accelerationStructureReference = {};
3353   };
3354 
3355   union AccelerationStructureMotionInstanceDataNV
3356   {
3357     using NativeType = VkAccelerationStructureMotionInstanceDataNV;
3358 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
3359 
AccelerationStructureMotionInstanceDataNV(VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR staticInstance_={} )3360     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV( VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR staticInstance_ = {} )
3361       : staticInstance( staticInstance_ )
3362     {
3363     }
3364 
AccelerationStructureMotionInstanceDataNV(VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV matrixMotionInstance_)3365     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV( VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV matrixMotionInstance_ )
3366       : matrixMotionInstance( matrixMotionInstance_ )
3367     {
3368     }
3369 
AccelerationStructureMotionInstanceDataNV(VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV srtMotionInstance_)3370     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV( VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV srtMotionInstance_ )
3371       : srtMotionInstance( srtMotionInstance_ )
3372     {
3373     }
3374 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
3375 
3376 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
3377     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV &
setStaticInstance(VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR const & staticInstance_)3378       setStaticInstance( VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR const & staticInstance_ ) VULKAN_HPP_NOEXCEPT
3379     {
3380       staticInstance = staticInstance_;
3381       return *this;
3382     }
3383 
3384     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV &
setMatrixMotionInstance(VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV const & matrixMotionInstance_)3385       setMatrixMotionInstance( VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV const & matrixMotionInstance_ ) VULKAN_HPP_NOEXCEPT
3386     {
3387       matrixMotionInstance = matrixMotionInstance_;
3388       return *this;
3389     }
3390 
3391     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV &
setSrtMotionInstance(VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV const & srtMotionInstance_)3392       setSrtMotionInstance( VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV const & srtMotionInstance_ ) VULKAN_HPP_NOEXCEPT
3393     {
3394       srtMotionInstance = srtMotionInstance_;
3395       return *this;
3396     }
3397 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
3398 
operator VkAccelerationStructureMotionInstanceDataNV const&() const3399     operator VkAccelerationStructureMotionInstanceDataNV const &() const
3400     {
3401       return *reinterpret_cast<const VkAccelerationStructureMotionInstanceDataNV *>( this );
3402     }
3403 
operator VkAccelerationStructureMotionInstanceDataNV&()3404     operator VkAccelerationStructureMotionInstanceDataNV &()
3405     {
3406       return *reinterpret_cast<VkAccelerationStructureMotionInstanceDataNV *>( this );
3407     }
3408 
3409 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
3410     VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR            staticInstance;
3411     VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV matrixMotionInstance;
3412     VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV    srtMotionInstance;
3413 #else
3414     VkAccelerationStructureInstanceKHR            staticInstance;
3415     VkAccelerationStructureMatrixMotionInstanceNV matrixMotionInstance;
3416     VkAccelerationStructureSRTMotionInstanceNV    srtMotionInstance;
3417 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
3418   };
3419 
3420   struct AccelerationStructureMotionInstanceNV
3421   {
3422     using NativeType = VkAccelerationStructureMotionInstanceNV;
3423 
3424 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureMotionInstanceNVVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3425     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV(
3426       VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV  type_  = VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV::eStatic,
3427       VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceFlagsNV flags_ = {},
3428       VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceDataNV  data_  = {} ) VULKAN_HPP_NOEXCEPT
3429       : type{ type_ }
3430       , flags{ flags_ }
3431       , data{ data_ }
3432     {
3433     }
3434 
3435     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV( AccelerationStructureMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3436 
AccelerationStructureMotionInstanceNVVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3437     AccelerationStructureMotionInstanceNV( VkAccelerationStructureMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT
3438       : AccelerationStructureMotionInstanceNV( *reinterpret_cast<AccelerationStructureMotionInstanceNV const *>( &rhs ) )
3439     {
3440     }
3441 
3442     AccelerationStructureMotionInstanceNV & operator=( AccelerationStructureMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3443 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3444 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3445     AccelerationStructureMotionInstanceNV & operator=( VkAccelerationStructureMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT
3446     {
3447       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV const *>( &rhs );
3448       return *this;
3449     }
3450 
3451 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
3452     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV &
setTypeVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3453       setType( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV type_ ) VULKAN_HPP_NOEXCEPT
3454     {
3455       type = type_;
3456       return *this;
3457     }
3458 
3459     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV &
setFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3460       setFlags( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
3461     {
3462       flags = flags_;
3463       return *this;
3464     }
3465 
3466     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV &
setDataVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3467       setData( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceDataNV const & data_ ) VULKAN_HPP_NOEXCEPT
3468     {
3469       data = data_;
3470       return *this;
3471     }
3472 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3473 
operator VkAccelerationStructureMotionInstanceNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3474     operator VkAccelerationStructureMotionInstanceNV const &() const VULKAN_HPP_NOEXCEPT
3475     {
3476       return *reinterpret_cast<const VkAccelerationStructureMotionInstanceNV *>( this );
3477     }
3478 
operator VkAccelerationStructureMotionInstanceNV&VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3479     operator VkAccelerationStructureMotionInstanceNV &() VULKAN_HPP_NOEXCEPT
3480     {
3481       return *reinterpret_cast<VkAccelerationStructureMotionInstanceNV *>( this );
3482     }
3483 
3484 #if defined( VULKAN_HPP_USE_REFLECT )
3485 #  if 14 <= VULKAN_HPP_CPP_VERSION
3486     auto
3487 #  else
3488     std::tuple<VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV const &,
3489                VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceFlagsNV const &,
3490                VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceDataNV const &>
3491 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV3492       reflect() const VULKAN_HPP_NOEXCEPT
3493     {
3494       return std::tie( type, flags, data );
3495     }
3496 #endif
3497 
3498   public:
3499     VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV  type  = VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceTypeNV::eStatic;
3500     VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceFlagsNV flags = {};
3501     VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceDataNV  data  = {};
3502   };
3503 
3504   struct MicromapUsageEXT
3505   {
3506     using NativeType = VkMicromapUsageEXT;
3507 
3508 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MicromapUsageEXTVULKAN_HPP_NAMESPACE::MicromapUsageEXT3509     VULKAN_HPP_CONSTEXPR MicromapUsageEXT( uint32_t count_ = {}, uint32_t subdivisionLevel_ = {}, uint32_t format_ = {} ) VULKAN_HPP_NOEXCEPT
3510       : count{ count_ }
3511       , subdivisionLevel{ subdivisionLevel_ }
3512       , format{ format_ }
3513     {
3514     }
3515 
3516     VULKAN_HPP_CONSTEXPR MicromapUsageEXT( MicromapUsageEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3517 
MicromapUsageEXTVULKAN_HPP_NAMESPACE::MicromapUsageEXT3518     MicromapUsageEXT( VkMicromapUsageEXT const & rhs ) VULKAN_HPP_NOEXCEPT : MicromapUsageEXT( *reinterpret_cast<MicromapUsageEXT const *>( &rhs ) ) {}
3519 
3520     MicromapUsageEXT & operator=( MicromapUsageEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3521 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3522 
operator =VULKAN_HPP_NAMESPACE::MicromapUsageEXT3523     MicromapUsageEXT & operator=( VkMicromapUsageEXT const & rhs ) VULKAN_HPP_NOEXCEPT
3524     {
3525       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MicromapUsageEXT const *>( &rhs );
3526       return *this;
3527     }
3528 
3529 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setCountVULKAN_HPP_NAMESPACE::MicromapUsageEXT3530     VULKAN_HPP_CONSTEXPR_14 MicromapUsageEXT & setCount( uint32_t count_ ) VULKAN_HPP_NOEXCEPT
3531     {
3532       count = count_;
3533       return *this;
3534     }
3535 
setSubdivisionLevelVULKAN_HPP_NAMESPACE::MicromapUsageEXT3536     VULKAN_HPP_CONSTEXPR_14 MicromapUsageEXT & setSubdivisionLevel( uint32_t subdivisionLevel_ ) VULKAN_HPP_NOEXCEPT
3537     {
3538       subdivisionLevel = subdivisionLevel_;
3539       return *this;
3540     }
3541 
setFormatVULKAN_HPP_NAMESPACE::MicromapUsageEXT3542     VULKAN_HPP_CONSTEXPR_14 MicromapUsageEXT & setFormat( uint32_t format_ ) VULKAN_HPP_NOEXCEPT
3543     {
3544       format = format_;
3545       return *this;
3546     }
3547 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3548 
operator VkMicromapUsageEXT const&VULKAN_HPP_NAMESPACE::MicromapUsageEXT3549     operator VkMicromapUsageEXT const &() const VULKAN_HPP_NOEXCEPT
3550     {
3551       return *reinterpret_cast<const VkMicromapUsageEXT *>( this );
3552     }
3553 
operator VkMicromapUsageEXT&VULKAN_HPP_NAMESPACE::MicromapUsageEXT3554     operator VkMicromapUsageEXT &() VULKAN_HPP_NOEXCEPT
3555     {
3556       return *reinterpret_cast<VkMicromapUsageEXT *>( this );
3557     }
3558 
3559 #if defined( VULKAN_HPP_USE_REFLECT )
3560 #  if 14 <= VULKAN_HPP_CPP_VERSION
3561     auto
3562 #  else
3563     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
3564 #  endif
reflectVULKAN_HPP_NAMESPACE::MicromapUsageEXT3565       reflect() const VULKAN_HPP_NOEXCEPT
3566     {
3567       return std::tie( count, subdivisionLevel, format );
3568     }
3569 #endif
3570 
3571 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
3572     auto operator<=>( MicromapUsageEXT const & ) const = default;
3573 #else
operator ==VULKAN_HPP_NAMESPACE::MicromapUsageEXT3574     bool                                          operator==( MicromapUsageEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
3575     {
3576 #  if defined( VULKAN_HPP_USE_REFLECT )
3577       return this->reflect() == rhs.reflect();
3578 #  else
3579       return ( count == rhs.count ) && ( subdivisionLevel == rhs.subdivisionLevel ) && ( format == rhs.format );
3580 #  endif
3581     }
3582 
operator !=VULKAN_HPP_NAMESPACE::MicromapUsageEXT3583     bool operator!=( MicromapUsageEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
3584     {
3585       return !operator==( rhs );
3586     }
3587 #endif
3588 
3589   public:
3590     uint32_t count            = {};
3591     uint32_t subdivisionLevel = {};
3592     uint32_t format           = {};
3593   };
3594 
3595 #if defined( VK_ENABLE_BETA_EXTENSIONS )
3596   struct AccelerationStructureTrianglesDisplacementMicromapNV
3597   {
3598     using NativeType = VkAccelerationStructureTrianglesDisplacementMicromapNV;
3599 
3600     static const bool                                  allowDuplicate = false;
3601     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureTrianglesDisplacementMicromapNV;
3602 
3603 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureTrianglesDisplacementMicromapNVVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3604     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV(
3605       VULKAN_HPP_NAMESPACE::Format                           displacementBiasAndScaleFormat_        = VULKAN_HPP_NAMESPACE::Format::eUndefined,
3606       VULKAN_HPP_NAMESPACE::Format                           displacementVectorFormat_              = VULKAN_HPP_NAMESPACE::Format::eUndefined,
3607       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      displacementBiasAndScaleBuffer_        = {},
3608       VULKAN_HPP_NAMESPACE::DeviceSize                       displacementBiasAndScaleStride_        = {},
3609       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      displacementVectorBuffer_              = {},
3610       VULKAN_HPP_NAMESPACE::DeviceSize                       displacementVectorStride_              = {},
3611       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      displacedMicromapPrimitiveFlags_       = {},
3612       VULKAN_HPP_NAMESPACE::DeviceSize                       displacedMicromapPrimitiveFlagsStride_ = {},
3613       VULKAN_HPP_NAMESPACE::IndexType                        indexType_                             = VULKAN_HPP_NAMESPACE::IndexType::eUint16,
3614       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      indexBuffer_                           = {},
3615       VULKAN_HPP_NAMESPACE::DeviceSize                       indexStride_                           = {},
3616       uint32_t                                               baseTriangle_                          = {},
3617       uint32_t                                               usageCountsCount_                      = {},
3618       const VULKAN_HPP_NAMESPACE::MicromapUsageEXT *         pUsageCounts_                          = {},
3619       const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * ppUsageCounts_                         = {},
3620       VULKAN_HPP_NAMESPACE::MicromapEXT                      micromap_                              = {},
3621       void *                                                 pNext_                                 = nullptr ) VULKAN_HPP_NOEXCEPT
3622       : pNext{ pNext_ }
3623       , displacementBiasAndScaleFormat{ displacementBiasAndScaleFormat_ }
3624       , displacementVectorFormat{ displacementVectorFormat_ }
3625       , displacementBiasAndScaleBuffer{ displacementBiasAndScaleBuffer_ }
3626       , displacementBiasAndScaleStride{ displacementBiasAndScaleStride_ }
3627       , displacementVectorBuffer{ displacementVectorBuffer_ }
3628       , displacementVectorStride{ displacementVectorStride_ }
3629       , displacedMicromapPrimitiveFlags{ displacedMicromapPrimitiveFlags_ }
3630       , displacedMicromapPrimitiveFlagsStride{ displacedMicromapPrimitiveFlagsStride_ }
3631       , indexType{ indexType_ }
3632       , indexBuffer{ indexBuffer_ }
3633       , indexStride{ indexStride_ }
3634       , baseTriangle{ baseTriangle_ }
3635       , usageCountsCount{ usageCountsCount_ }
3636       , pUsageCounts{ pUsageCounts_ }
3637       , ppUsageCounts{ ppUsageCounts_ }
3638       , micromap{ micromap_ }
3639     {
3640     }
3641 
3642     VULKAN_HPP_CONSTEXPR_14
3643       AccelerationStructureTrianglesDisplacementMicromapNV( AccelerationStructureTrianglesDisplacementMicromapNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3644 
AccelerationStructureTrianglesDisplacementMicromapNVVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3645     AccelerationStructureTrianglesDisplacementMicromapNV( VkAccelerationStructureTrianglesDisplacementMicromapNV const & rhs ) VULKAN_HPP_NOEXCEPT
3646       : AccelerationStructureTrianglesDisplacementMicromapNV( *reinterpret_cast<AccelerationStructureTrianglesDisplacementMicromapNV const *>( &rhs ) )
3647     {
3648     }
3649 
3650 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
AccelerationStructureTrianglesDisplacementMicromapNVVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3651     AccelerationStructureTrianglesDisplacementMicromapNV(
3652       VULKAN_HPP_NAMESPACE::Format                                                                                displacementBiasAndScaleFormat_,
3653       VULKAN_HPP_NAMESPACE::Format                                                                                displacementVectorFormat_,
3654       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR                                                           displacementBiasAndScaleBuffer_,
3655       VULKAN_HPP_NAMESPACE::DeviceSize                                                                            displacementBiasAndScaleStride_,
3656       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR                                                           displacementVectorBuffer_,
3657       VULKAN_HPP_NAMESPACE::DeviceSize                                                                            displacementVectorStride_,
3658       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR                                                           displacedMicromapPrimitiveFlags_,
3659       VULKAN_HPP_NAMESPACE::DeviceSize                                                                            displacedMicromapPrimitiveFlagsStride_,
3660       VULKAN_HPP_NAMESPACE::IndexType                                                                             indexType_,
3661       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR                                                           indexBuffer_,
3662       VULKAN_HPP_NAMESPACE::DeviceSize                                                                            indexStride_,
3663       uint32_t                                                                                                    baseTriangle_,
3664       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT> const &         usageCounts_,
3665       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const> const & pUsageCounts_ = {},
3666       VULKAN_HPP_NAMESPACE::MicromapEXT                                                                           micromap_     = {},
3667       void *                                                                                                      pNext_        = nullptr )
3668       : pNext( pNext_ )
3669       , displacementBiasAndScaleFormat( displacementBiasAndScaleFormat_ )
3670       , displacementVectorFormat( displacementVectorFormat_ )
3671       , displacementBiasAndScaleBuffer( displacementBiasAndScaleBuffer_ )
3672       , displacementBiasAndScaleStride( displacementBiasAndScaleStride_ )
3673       , displacementVectorBuffer( displacementVectorBuffer_ )
3674       , displacementVectorStride( displacementVectorStride_ )
3675       , displacedMicromapPrimitiveFlags( displacedMicromapPrimitiveFlags_ )
3676       , displacedMicromapPrimitiveFlagsStride( displacedMicromapPrimitiveFlagsStride_ )
3677       , indexType( indexType_ )
3678       , indexBuffer( indexBuffer_ )
3679       , indexStride( indexStride_ )
3680       , baseTriangle( baseTriangle_ )
3681       , usageCountsCount( static_cast<uint32_t>( usageCounts_.size() ) )
3682       , pUsageCounts( usageCounts_.data() )
3683       , ppUsageCounts( pUsageCounts_.data() )
3684       , micromap( micromap_ )
3685     {
3686 #      ifdef VULKAN_HPP_NO_EXCEPTIONS
3687       VULKAN_HPP_ASSERT( usageCounts_.empty() || pUsageCounts_.empty() || ( usageCounts_.size() == pUsageCounts_.size() ) );
3688 #      else
3689       if ( !usageCounts_.empty() && !pUsageCounts_.empty() && ( usageCounts_.size() != pUsageCounts_.size() ) )
3690       {
3691         throw LogicError(
3692           VULKAN_HPP_NAMESPACE_STRING
3693           "::AccelerationStructureTrianglesDisplacementMicromapNV::AccelerationStructureTrianglesDisplacementMicromapNV: !usageCounts_.empty() && !pUsageCounts_.empty() && ( usageCounts_.size() != pUsageCounts_.size() )" );
3694       }
3695 #      endif /*VULKAN_HPP_NO_EXCEPTIONS*/
3696     }
3697 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
3698 
3699     AccelerationStructureTrianglesDisplacementMicromapNV &
3700       operator=( AccelerationStructureTrianglesDisplacementMicromapNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3701 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3702 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3703     AccelerationStructureTrianglesDisplacementMicromapNV & operator=( VkAccelerationStructureTrianglesDisplacementMicromapNV const & rhs ) VULKAN_HPP_NOEXCEPT
3704     {
3705       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV const *>( &rhs );
3706       return *this;
3707     }
3708 
3709 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3710     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
3711     {
3712       pNext = pNext_;
3713       return *this;
3714     }
3715 
3716     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setDisplacementBiasAndScaleFormatVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3717       setDisplacementBiasAndScaleFormat( VULKAN_HPP_NAMESPACE::Format displacementBiasAndScaleFormat_ ) VULKAN_HPP_NOEXCEPT
3718     {
3719       displacementBiasAndScaleFormat = displacementBiasAndScaleFormat_;
3720       return *this;
3721     }
3722 
3723     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setDisplacementVectorFormatVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3724       setDisplacementVectorFormat( VULKAN_HPP_NAMESPACE::Format displacementVectorFormat_ ) VULKAN_HPP_NOEXCEPT
3725     {
3726       displacementVectorFormat = displacementVectorFormat_;
3727       return *this;
3728     }
3729 
3730     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setDisplacementBiasAndScaleBufferVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3731       setDisplacementBiasAndScaleBuffer( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & displacementBiasAndScaleBuffer_ ) VULKAN_HPP_NOEXCEPT
3732     {
3733       displacementBiasAndScaleBuffer = displacementBiasAndScaleBuffer_;
3734       return *this;
3735     }
3736 
3737     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setDisplacementBiasAndScaleStrideVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3738       setDisplacementBiasAndScaleStride( VULKAN_HPP_NAMESPACE::DeviceSize displacementBiasAndScaleStride_ ) VULKAN_HPP_NOEXCEPT
3739     {
3740       displacementBiasAndScaleStride = displacementBiasAndScaleStride_;
3741       return *this;
3742     }
3743 
3744     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setDisplacementVectorBufferVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3745       setDisplacementVectorBuffer( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & displacementVectorBuffer_ ) VULKAN_HPP_NOEXCEPT
3746     {
3747       displacementVectorBuffer = displacementVectorBuffer_;
3748       return *this;
3749     }
3750 
3751     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setDisplacementVectorStrideVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3752       setDisplacementVectorStride( VULKAN_HPP_NAMESPACE::DeviceSize displacementVectorStride_ ) VULKAN_HPP_NOEXCEPT
3753     {
3754       displacementVectorStride = displacementVectorStride_;
3755       return *this;
3756     }
3757 
3758     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setDisplacedMicromapPrimitiveFlagsVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3759       setDisplacedMicromapPrimitiveFlags( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & displacedMicromapPrimitiveFlags_ ) VULKAN_HPP_NOEXCEPT
3760     {
3761       displacedMicromapPrimitiveFlags = displacedMicromapPrimitiveFlags_;
3762       return *this;
3763     }
3764 
3765     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setDisplacedMicromapPrimitiveFlagsStrideVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3766       setDisplacedMicromapPrimitiveFlagsStride( VULKAN_HPP_NAMESPACE::DeviceSize displacedMicromapPrimitiveFlagsStride_ ) VULKAN_HPP_NOEXCEPT
3767     {
3768       displacedMicromapPrimitiveFlagsStride = displacedMicromapPrimitiveFlagsStride_;
3769       return *this;
3770     }
3771 
3772     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setIndexTypeVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3773       setIndexType( VULKAN_HPP_NAMESPACE::IndexType indexType_ ) VULKAN_HPP_NOEXCEPT
3774     {
3775       indexType = indexType_;
3776       return *this;
3777     }
3778 
3779     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setIndexBufferVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3780       setIndexBuffer( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & indexBuffer_ ) VULKAN_HPP_NOEXCEPT
3781     {
3782       indexBuffer = indexBuffer_;
3783       return *this;
3784     }
3785 
3786     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setIndexStrideVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3787       setIndexStride( VULKAN_HPP_NAMESPACE::DeviceSize indexStride_ ) VULKAN_HPP_NOEXCEPT
3788     {
3789       indexStride = indexStride_;
3790       return *this;
3791     }
3792 
setBaseTriangleVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3793     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & setBaseTriangle( uint32_t baseTriangle_ ) VULKAN_HPP_NOEXCEPT
3794     {
3795       baseTriangle = baseTriangle_;
3796       return *this;
3797     }
3798 
setUsageCountsCountVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3799     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & setUsageCountsCount( uint32_t usageCountsCount_ ) VULKAN_HPP_NOEXCEPT
3800     {
3801       usageCountsCount = usageCountsCount_;
3802       return *this;
3803     }
3804 
3805     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setPUsageCountsVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3806       setPUsageCounts( const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * pUsageCounts_ ) VULKAN_HPP_NOEXCEPT
3807     {
3808       pUsageCounts = pUsageCounts_;
3809       return *this;
3810     }
3811 
3812 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
3813     AccelerationStructureTrianglesDisplacementMicromapNV &
setUsageCountsVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3814       setUsageCounts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT> const & usageCounts_ ) VULKAN_HPP_NOEXCEPT
3815     {
3816       usageCountsCount = static_cast<uint32_t>( usageCounts_.size() );
3817       pUsageCounts     = usageCounts_.data();
3818       return *this;
3819     }
3820 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
3821 
3822     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setPpUsageCountsVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3823       setPpUsageCounts( const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * ppUsageCounts_ ) VULKAN_HPP_NOEXCEPT
3824     {
3825       ppUsageCounts = ppUsageCounts_;
3826       return *this;
3827     }
3828 
3829 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPUsageCountsVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3830     AccelerationStructureTrianglesDisplacementMicromapNV & setPUsageCounts(
3831       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const> const & pUsageCounts_ ) VULKAN_HPP_NOEXCEPT
3832     {
3833       usageCountsCount = static_cast<uint32_t>( pUsageCounts_.size() );
3834       ppUsageCounts    = pUsageCounts_.data();
3835       return *this;
3836     }
3837 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
3838 
3839     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV &
setMicromapVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3840       setMicromap( VULKAN_HPP_NAMESPACE::MicromapEXT micromap_ ) VULKAN_HPP_NOEXCEPT
3841     {
3842       micromap = micromap_;
3843       return *this;
3844     }
3845 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3846 
operator VkAccelerationStructureTrianglesDisplacementMicromapNV const&VULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3847     operator VkAccelerationStructureTrianglesDisplacementMicromapNV const &() const VULKAN_HPP_NOEXCEPT
3848     {
3849       return *reinterpret_cast<const VkAccelerationStructureTrianglesDisplacementMicromapNV *>( this );
3850     }
3851 
operator VkAccelerationStructureTrianglesDisplacementMicromapNV&VULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3852     operator VkAccelerationStructureTrianglesDisplacementMicromapNV &() VULKAN_HPP_NOEXCEPT
3853     {
3854       return *reinterpret_cast<VkAccelerationStructureTrianglesDisplacementMicromapNV *>( this );
3855     }
3856 
3857 #  if defined( VULKAN_HPP_USE_REFLECT )
3858 #    if 14 <= VULKAN_HPP_CPP_VERSION
3859     auto
3860 #    else
3861     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
3862                void * const &,
3863                VULKAN_HPP_NAMESPACE::Format const &,
3864                VULKAN_HPP_NAMESPACE::Format const &,
3865                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
3866                VULKAN_HPP_NAMESPACE::DeviceSize const &,
3867                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
3868                VULKAN_HPP_NAMESPACE::DeviceSize const &,
3869                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
3870                VULKAN_HPP_NAMESPACE::DeviceSize const &,
3871                VULKAN_HPP_NAMESPACE::IndexType const &,
3872                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
3873                VULKAN_HPP_NAMESPACE::DeviceSize const &,
3874                uint32_t const &,
3875                uint32_t const &,
3876                const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const &,
3877                const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * const &,
3878                VULKAN_HPP_NAMESPACE::MicromapEXT const &>
3879 #    endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV3880       reflect() const VULKAN_HPP_NOEXCEPT
3881     {
3882       return std::tie( sType,
3883                        pNext,
3884                        displacementBiasAndScaleFormat,
3885                        displacementVectorFormat,
3886                        displacementBiasAndScaleBuffer,
3887                        displacementBiasAndScaleStride,
3888                        displacementVectorBuffer,
3889                        displacementVectorStride,
3890                        displacedMicromapPrimitiveFlags,
3891                        displacedMicromapPrimitiveFlagsStride,
3892                        indexType,
3893                        indexBuffer,
3894                        indexStride,
3895                        baseTriangle,
3896                        usageCountsCount,
3897                        pUsageCounts,
3898                        ppUsageCounts,
3899                        micromap );
3900     }
3901 #  endif
3902 
3903   public:
3904     VULKAN_HPP_NAMESPACE::StructureType                    sType = StructureType::eAccelerationStructureTrianglesDisplacementMicromapNV;
3905     void *                                                 pNext = {};
3906     VULKAN_HPP_NAMESPACE::Format                           displacementBiasAndScaleFormat        = VULKAN_HPP_NAMESPACE::Format::eUndefined;
3907     VULKAN_HPP_NAMESPACE::Format                           displacementVectorFormat              = VULKAN_HPP_NAMESPACE::Format::eUndefined;
3908     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      displacementBiasAndScaleBuffer        = {};
3909     VULKAN_HPP_NAMESPACE::DeviceSize                       displacementBiasAndScaleStride        = {};
3910     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      displacementVectorBuffer              = {};
3911     VULKAN_HPP_NAMESPACE::DeviceSize                       displacementVectorStride              = {};
3912     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      displacedMicromapPrimitiveFlags       = {};
3913     VULKAN_HPP_NAMESPACE::DeviceSize                       displacedMicromapPrimitiveFlagsStride = {};
3914     VULKAN_HPP_NAMESPACE::IndexType                        indexType                             = VULKAN_HPP_NAMESPACE::IndexType::eUint16;
3915     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      indexBuffer                           = {};
3916     VULKAN_HPP_NAMESPACE::DeviceSize                       indexStride                           = {};
3917     uint32_t                                               baseTriangle                          = {};
3918     uint32_t                                               usageCountsCount                      = {};
3919     const VULKAN_HPP_NAMESPACE::MicromapUsageEXT *         pUsageCounts                          = {};
3920     const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * ppUsageCounts                         = {};
3921     VULKAN_HPP_NAMESPACE::MicromapEXT                      micromap                              = {};
3922   };
3923 
3924   template <>
3925   struct CppType<StructureType, StructureType::eAccelerationStructureTrianglesDisplacementMicromapNV>
3926   {
3927     using Type = AccelerationStructureTrianglesDisplacementMicromapNV;
3928   };
3929 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
3930 
3931   struct AccelerationStructureTrianglesOpacityMicromapEXT
3932   {
3933     using NativeType = VkAccelerationStructureTrianglesOpacityMicromapEXT;
3934 
3935     static const bool                                  allowDuplicate = false;
3936     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureTrianglesOpacityMicromapEXT;
3937 
3938 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
3939     VULKAN_HPP_CONSTEXPR_14
AccelerationStructureTrianglesOpacityMicromapEXTVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT3940       AccelerationStructureTrianglesOpacityMicromapEXT( VULKAN_HPP_NAMESPACE::IndexType                   indexType_ = VULKAN_HPP_NAMESPACE::IndexType::eUint16,
3941                                                         VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR indexBuffer_        = {},
3942                                                         VULKAN_HPP_NAMESPACE::DeviceSize                  indexStride_        = {},
3943                                                         uint32_t                                          baseTriangle_       = {},
3944                                                         uint32_t                                          usageCountsCount_   = {},
3945                                                         const VULKAN_HPP_NAMESPACE::MicromapUsageEXT *    pUsageCounts_       = {},
3946                                                         const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * ppUsageCounts_ = {},
3947                                                         VULKAN_HPP_NAMESPACE::MicromapEXT                      micromap_      = {},
3948                                                         void *                                                 pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
3949       : pNext{ pNext_ }
3950       , indexType{ indexType_ }
3951       , indexBuffer{ indexBuffer_ }
3952       , indexStride{ indexStride_ }
3953       , baseTriangle{ baseTriangle_ }
3954       , usageCountsCount{ usageCountsCount_ }
3955       , pUsageCounts{ pUsageCounts_ }
3956       , ppUsageCounts{ ppUsageCounts_ }
3957       , micromap{ micromap_ }
3958     {
3959     }
3960 
3961     VULKAN_HPP_CONSTEXPR_14
3962       AccelerationStructureTrianglesOpacityMicromapEXT( AccelerationStructureTrianglesOpacityMicromapEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3963 
AccelerationStructureTrianglesOpacityMicromapEXTVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT3964     AccelerationStructureTrianglesOpacityMicromapEXT( VkAccelerationStructureTrianglesOpacityMicromapEXT const & rhs ) VULKAN_HPP_NOEXCEPT
3965       : AccelerationStructureTrianglesOpacityMicromapEXT( *reinterpret_cast<AccelerationStructureTrianglesOpacityMicromapEXT const *>( &rhs ) )
3966     {
3967     }
3968 
3969 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
AccelerationStructureTrianglesOpacityMicromapEXTVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT3970     AccelerationStructureTrianglesOpacityMicromapEXT(
3971       VULKAN_HPP_NAMESPACE::IndexType                                                                             indexType_,
3972       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR                                                           indexBuffer_,
3973       VULKAN_HPP_NAMESPACE::DeviceSize                                                                            indexStride_,
3974       uint32_t                                                                                                    baseTriangle_,
3975       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT> const &         usageCounts_,
3976       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const> const & pUsageCounts_ = {},
3977       VULKAN_HPP_NAMESPACE::MicromapEXT                                                                           micromap_     = {},
3978       void *                                                                                                      pNext_        = nullptr )
3979       : pNext( pNext_ )
3980       , indexType( indexType_ )
3981       , indexBuffer( indexBuffer_ )
3982       , indexStride( indexStride_ )
3983       , baseTriangle( baseTriangle_ )
3984       , usageCountsCount( static_cast<uint32_t>( !usageCounts_.empty() ? usageCounts_.size() : pUsageCounts_.size() ) )
3985       , pUsageCounts( usageCounts_.data() )
3986       , ppUsageCounts( pUsageCounts_.data() )
3987       , micromap( micromap_ )
3988     {
3989 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
3990       VULKAN_HPP_ASSERT( ( !usageCounts_.empty() + !pUsageCounts_.empty() ) <= 1 );
3991 #    else
3992       if ( 1 < ( !usageCounts_.empty() + !pUsageCounts_.empty() ) )
3993       {
3994         throw LogicError(
3995           VULKAN_HPP_NAMESPACE_STRING
3996           "::AccelerationStructureTrianglesOpacityMicromapEXT::AccelerationStructureTrianglesOpacityMicromapEXT: 1 < ( !usageCounts_.empty() + !pUsageCounts_.empty() )" );
3997       }
3998 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
3999     }
4000 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
4001 
4002     AccelerationStructureTrianglesOpacityMicromapEXT & operator=( AccelerationStructureTrianglesOpacityMicromapEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4003 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4004 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4005     AccelerationStructureTrianglesOpacityMicromapEXT & operator=( VkAccelerationStructureTrianglesOpacityMicromapEXT const & rhs ) VULKAN_HPP_NOEXCEPT
4006     {
4007       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT const *>( &rhs );
4008       return *this;
4009     }
4010 
4011 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4012     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
4013     {
4014       pNext = pNext_;
4015       return *this;
4016     }
4017 
setIndexTypeVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4018     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT & setIndexType( VULKAN_HPP_NAMESPACE::IndexType indexType_ ) VULKAN_HPP_NOEXCEPT
4019     {
4020       indexType = indexType_;
4021       return *this;
4022     }
4023 
4024     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT &
setIndexBufferVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4025       setIndexBuffer( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & indexBuffer_ ) VULKAN_HPP_NOEXCEPT
4026     {
4027       indexBuffer = indexBuffer_;
4028       return *this;
4029     }
4030 
4031     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT &
setIndexStrideVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4032       setIndexStride( VULKAN_HPP_NAMESPACE::DeviceSize indexStride_ ) VULKAN_HPP_NOEXCEPT
4033     {
4034       indexStride = indexStride_;
4035       return *this;
4036     }
4037 
setBaseTriangleVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4038     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT & setBaseTriangle( uint32_t baseTriangle_ ) VULKAN_HPP_NOEXCEPT
4039     {
4040       baseTriangle = baseTriangle_;
4041       return *this;
4042     }
4043 
setUsageCountsCountVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4044     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT & setUsageCountsCount( uint32_t usageCountsCount_ ) VULKAN_HPP_NOEXCEPT
4045     {
4046       usageCountsCount = usageCountsCount_;
4047       return *this;
4048     }
4049 
4050     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT &
setPUsageCountsVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4051       setPUsageCounts( const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * pUsageCounts_ ) VULKAN_HPP_NOEXCEPT
4052     {
4053       pUsageCounts = pUsageCounts_;
4054       return *this;
4055     }
4056 
4057 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
4058     AccelerationStructureTrianglesOpacityMicromapEXT &
setUsageCountsVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4059       setUsageCounts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT> const & usageCounts_ ) VULKAN_HPP_NOEXCEPT
4060     {
4061       usageCountsCount = static_cast<uint32_t>( usageCounts_.size() );
4062       pUsageCounts     = usageCounts_.data();
4063       return *this;
4064     }
4065 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
4066 
4067     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT &
setPpUsageCountsVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4068       setPpUsageCounts( const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * ppUsageCounts_ ) VULKAN_HPP_NOEXCEPT
4069     {
4070       ppUsageCounts = ppUsageCounts_;
4071       return *this;
4072     }
4073 
4074 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPUsageCountsVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4075     AccelerationStructureTrianglesOpacityMicromapEXT & setPUsageCounts(
4076       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const> const & pUsageCounts_ ) VULKAN_HPP_NOEXCEPT
4077     {
4078       usageCountsCount = static_cast<uint32_t>( pUsageCounts_.size() );
4079       ppUsageCounts    = pUsageCounts_.data();
4080       return *this;
4081     }
4082 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
4083 
setMicromapVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4084     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT & setMicromap( VULKAN_HPP_NAMESPACE::MicromapEXT micromap_ ) VULKAN_HPP_NOEXCEPT
4085     {
4086       micromap = micromap_;
4087       return *this;
4088     }
4089 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4090 
operator VkAccelerationStructureTrianglesOpacityMicromapEXT const&VULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4091     operator VkAccelerationStructureTrianglesOpacityMicromapEXT const &() const VULKAN_HPP_NOEXCEPT
4092     {
4093       return *reinterpret_cast<const VkAccelerationStructureTrianglesOpacityMicromapEXT *>( this );
4094     }
4095 
operator VkAccelerationStructureTrianglesOpacityMicromapEXT&VULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4096     operator VkAccelerationStructureTrianglesOpacityMicromapEXT &() VULKAN_HPP_NOEXCEPT
4097     {
4098       return *reinterpret_cast<VkAccelerationStructureTrianglesOpacityMicromapEXT *>( this );
4099     }
4100 
4101 #if defined( VULKAN_HPP_USE_REFLECT )
4102 #  if 14 <= VULKAN_HPP_CPP_VERSION
4103     auto
4104 #  else
4105     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
4106                void * const &,
4107                VULKAN_HPP_NAMESPACE::IndexType const &,
4108                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
4109                VULKAN_HPP_NAMESPACE::DeviceSize const &,
4110                uint32_t const &,
4111                uint32_t const &,
4112                const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const &,
4113                const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * const &,
4114                VULKAN_HPP_NAMESPACE::MicromapEXT const &>
4115 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT4116       reflect() const VULKAN_HPP_NOEXCEPT
4117     {
4118       return std::tie( sType, pNext, indexType, indexBuffer, indexStride, baseTriangle, usageCountsCount, pUsageCounts, ppUsageCounts, micromap );
4119     }
4120 #endif
4121 
4122   public:
4123     VULKAN_HPP_NAMESPACE::StructureType                    sType            = StructureType::eAccelerationStructureTrianglesOpacityMicromapEXT;
4124     void *                                                 pNext            = {};
4125     VULKAN_HPP_NAMESPACE::IndexType                        indexType        = VULKAN_HPP_NAMESPACE::IndexType::eUint16;
4126     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      indexBuffer      = {};
4127     VULKAN_HPP_NAMESPACE::DeviceSize                       indexStride      = {};
4128     uint32_t                                               baseTriangle     = {};
4129     uint32_t                                               usageCountsCount = {};
4130     const VULKAN_HPP_NAMESPACE::MicromapUsageEXT *         pUsageCounts     = {};
4131     const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * ppUsageCounts    = {};
4132     VULKAN_HPP_NAMESPACE::MicromapEXT                      micromap         = {};
4133   };
4134 
4135   template <>
4136   struct CppType<StructureType, StructureType::eAccelerationStructureTrianglesOpacityMicromapEXT>
4137   {
4138     using Type = AccelerationStructureTrianglesOpacityMicromapEXT;
4139   };
4140 
4141   struct AccelerationStructureVersionInfoKHR
4142   {
4143     using NativeType = VkAccelerationStructureVersionInfoKHR;
4144 
4145     static const bool                                  allowDuplicate = false;
4146     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAccelerationStructureVersionInfoKHR;
4147 
4148 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AccelerationStructureVersionInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR4149     VULKAN_HPP_CONSTEXPR AccelerationStructureVersionInfoKHR( const uint8_t * pVersionData_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
4150       : pNext{ pNext_ }
4151       , pVersionData{ pVersionData_ }
4152     {
4153     }
4154 
4155     VULKAN_HPP_CONSTEXPR AccelerationStructureVersionInfoKHR( AccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4156 
AccelerationStructureVersionInfoKHRVULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR4157     AccelerationStructureVersionInfoKHR( VkAccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
4158       : AccelerationStructureVersionInfoKHR( *reinterpret_cast<AccelerationStructureVersionInfoKHR const *>( &rhs ) )
4159     {
4160     }
4161 
4162     AccelerationStructureVersionInfoKHR & operator=( AccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4163 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4164 
operator =VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR4165     AccelerationStructureVersionInfoKHR & operator=( VkAccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
4166     {
4167       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR const *>( &rhs );
4168       return *this;
4169     }
4170 
4171 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR4172     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureVersionInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
4173     {
4174       pNext = pNext_;
4175       return *this;
4176     }
4177 
setPVersionDataVULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR4178     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureVersionInfoKHR & setPVersionData( const uint8_t * pVersionData_ ) VULKAN_HPP_NOEXCEPT
4179     {
4180       pVersionData = pVersionData_;
4181       return *this;
4182     }
4183 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4184 
operator VkAccelerationStructureVersionInfoKHR const&VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR4185     operator VkAccelerationStructureVersionInfoKHR const &() const VULKAN_HPP_NOEXCEPT
4186     {
4187       return *reinterpret_cast<const VkAccelerationStructureVersionInfoKHR *>( this );
4188     }
4189 
operator VkAccelerationStructureVersionInfoKHR&VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR4190     operator VkAccelerationStructureVersionInfoKHR &() VULKAN_HPP_NOEXCEPT
4191     {
4192       return *reinterpret_cast<VkAccelerationStructureVersionInfoKHR *>( this );
4193     }
4194 
4195 #if defined( VULKAN_HPP_USE_REFLECT )
4196 #  if 14 <= VULKAN_HPP_CPP_VERSION
4197     auto
4198 #  else
4199     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const uint8_t * const &>
4200 #  endif
reflectVULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR4201       reflect() const VULKAN_HPP_NOEXCEPT
4202     {
4203       return std::tie( sType, pNext, pVersionData );
4204     }
4205 #endif
4206 
4207 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
4208     auto operator<=>( AccelerationStructureVersionInfoKHR const & ) const = default;
4209 #else
operator ==VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR4210     bool operator==( AccelerationStructureVersionInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
4211     {
4212 #  if defined( VULKAN_HPP_USE_REFLECT )
4213       return this->reflect() == rhs.reflect();
4214 #  else
4215       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pVersionData == rhs.pVersionData );
4216 #  endif
4217     }
4218 
operator !=VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR4219     bool operator!=( AccelerationStructureVersionInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
4220     {
4221       return !operator==( rhs );
4222     }
4223 #endif
4224 
4225   public:
4226     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eAccelerationStructureVersionInfoKHR;
4227     const void *                        pNext        = {};
4228     const uint8_t *                     pVersionData = {};
4229   };
4230 
4231   template <>
4232   struct CppType<StructureType, StructureType::eAccelerationStructureVersionInfoKHR>
4233   {
4234     using Type = AccelerationStructureVersionInfoKHR;
4235   };
4236 
4237   struct AcquireNextImageInfoKHR
4238   {
4239     using NativeType = VkAcquireNextImageInfoKHR;
4240 
4241     static const bool                                  allowDuplicate = false;
4242     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAcquireNextImageInfoKHR;
4243 
4244 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AcquireNextImageInfoKHRVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4245     VULKAN_HPP_CONSTEXPR AcquireNextImageInfoKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_  = {},
4246                                                   uint64_t                           timeout_    = {},
4247                                                   VULKAN_HPP_NAMESPACE::Semaphore    semaphore_  = {},
4248                                                   VULKAN_HPP_NAMESPACE::Fence        fence_      = {},
4249                                                   uint32_t                           deviceMask_ = {},
4250                                                   const void *                       pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
4251       : pNext{ pNext_ }
4252       , swapchain{ swapchain_ }
4253       , timeout{ timeout_ }
4254       , semaphore{ semaphore_ }
4255       , fence{ fence_ }
4256       , deviceMask{ deviceMask_ }
4257     {
4258     }
4259 
4260     VULKAN_HPP_CONSTEXPR AcquireNextImageInfoKHR( AcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4261 
AcquireNextImageInfoKHRVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4262     AcquireNextImageInfoKHR( VkAcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
4263       : AcquireNextImageInfoKHR( *reinterpret_cast<AcquireNextImageInfoKHR const *>( &rhs ) )
4264     {
4265     }
4266 
4267     AcquireNextImageInfoKHR & operator=( AcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4268 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4269 
operator =VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4270     AcquireNextImageInfoKHR & operator=( VkAcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
4271     {
4272       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR const *>( &rhs );
4273       return *this;
4274     }
4275 
4276 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4277     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
4278     {
4279       pNext = pNext_;
4280       return *this;
4281     }
4282 
setSwapchainVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4283     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ ) VULKAN_HPP_NOEXCEPT
4284     {
4285       swapchain = swapchain_;
4286       return *this;
4287     }
4288 
setTimeoutVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4289     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setTimeout( uint64_t timeout_ ) VULKAN_HPP_NOEXCEPT
4290     {
4291       timeout = timeout_;
4292       return *this;
4293     }
4294 
setSemaphoreVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4295     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
4296     {
4297       semaphore = semaphore_;
4298       return *this;
4299     }
4300 
setFenceVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4301     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT
4302     {
4303       fence = fence_;
4304       return *this;
4305     }
4306 
setDeviceMaskVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4307     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT
4308     {
4309       deviceMask = deviceMask_;
4310       return *this;
4311     }
4312 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4313 
operator VkAcquireNextImageInfoKHR const&VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4314     operator VkAcquireNextImageInfoKHR const &() const VULKAN_HPP_NOEXCEPT
4315     {
4316       return *reinterpret_cast<const VkAcquireNextImageInfoKHR *>( this );
4317     }
4318 
operator VkAcquireNextImageInfoKHR&VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4319     operator VkAcquireNextImageInfoKHR &() VULKAN_HPP_NOEXCEPT
4320     {
4321       return *reinterpret_cast<VkAcquireNextImageInfoKHR *>( this );
4322     }
4323 
4324 #if defined( VULKAN_HPP_USE_REFLECT )
4325 #  if 14 <= VULKAN_HPP_CPP_VERSION
4326     auto
4327 #  else
4328     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
4329                const void * const &,
4330                VULKAN_HPP_NAMESPACE::SwapchainKHR const &,
4331                uint64_t const &,
4332                VULKAN_HPP_NAMESPACE::Semaphore const &,
4333                VULKAN_HPP_NAMESPACE::Fence const &,
4334                uint32_t const &>
4335 #  endif
reflectVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4336       reflect() const VULKAN_HPP_NOEXCEPT
4337     {
4338       return std::tie( sType, pNext, swapchain, timeout, semaphore, fence, deviceMask );
4339     }
4340 #endif
4341 
4342 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
4343     auto operator<=>( AcquireNextImageInfoKHR const & ) const = default;
4344 #else
operator ==VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4345     bool operator==( AcquireNextImageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
4346     {
4347 #  if defined( VULKAN_HPP_USE_REFLECT )
4348       return this->reflect() == rhs.reflect();
4349 #  else
4350       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchain == rhs.swapchain ) && ( timeout == rhs.timeout ) &&
4351              ( semaphore == rhs.semaphore ) && ( fence == rhs.fence ) && ( deviceMask == rhs.deviceMask );
4352 #  endif
4353     }
4354 
operator !=VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR4355     bool operator!=( AcquireNextImageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
4356     {
4357       return !operator==( rhs );
4358     }
4359 #endif
4360 
4361   public:
4362     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eAcquireNextImageInfoKHR;
4363     const void *                        pNext      = {};
4364     VULKAN_HPP_NAMESPACE::SwapchainKHR  swapchain  = {};
4365     uint64_t                            timeout    = {};
4366     VULKAN_HPP_NAMESPACE::Semaphore     semaphore  = {};
4367     VULKAN_HPP_NAMESPACE::Fence         fence      = {};
4368     uint32_t                            deviceMask = {};
4369   };
4370 
4371   template <>
4372   struct CppType<StructureType, StructureType::eAcquireNextImageInfoKHR>
4373   {
4374     using Type = AcquireNextImageInfoKHR;
4375   };
4376 
4377   struct AcquireProfilingLockInfoKHR
4378   {
4379     using NativeType = VkAcquireProfilingLockInfoKHR;
4380 
4381     static const bool                                  allowDuplicate = false;
4382     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAcquireProfilingLockInfoKHR;
4383 
4384 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AcquireProfilingLockInfoKHRVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4385     VULKAN_HPP_CONSTEXPR AcquireProfilingLockInfoKHR( VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR flags_   = {},
4386                                                       uint64_t                                           timeout_ = {},
4387                                                       const void *                                       pNext_   = nullptr ) VULKAN_HPP_NOEXCEPT
4388       : pNext{ pNext_ }
4389       , flags{ flags_ }
4390       , timeout{ timeout_ }
4391     {
4392     }
4393 
4394     VULKAN_HPP_CONSTEXPR AcquireProfilingLockInfoKHR( AcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4395 
AcquireProfilingLockInfoKHRVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4396     AcquireProfilingLockInfoKHR( VkAcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
4397       : AcquireProfilingLockInfoKHR( *reinterpret_cast<AcquireProfilingLockInfoKHR const *>( &rhs ) )
4398     {
4399     }
4400 
4401     AcquireProfilingLockInfoKHR & operator=( AcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4402 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4403 
operator =VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4404     AcquireProfilingLockInfoKHR & operator=( VkAcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
4405     {
4406       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR const *>( &rhs );
4407       return *this;
4408     }
4409 
4410 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4411     VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
4412     {
4413       pNext = pNext_;
4414       return *this;
4415     }
4416 
setFlagsVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4417     VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
4418     {
4419       flags = flags_;
4420       return *this;
4421     }
4422 
setTimeoutVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4423     VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR & setTimeout( uint64_t timeout_ ) VULKAN_HPP_NOEXCEPT
4424     {
4425       timeout = timeout_;
4426       return *this;
4427     }
4428 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4429 
operator VkAcquireProfilingLockInfoKHR const&VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4430     operator VkAcquireProfilingLockInfoKHR const &() const VULKAN_HPP_NOEXCEPT
4431     {
4432       return *reinterpret_cast<const VkAcquireProfilingLockInfoKHR *>( this );
4433     }
4434 
operator VkAcquireProfilingLockInfoKHR&VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4435     operator VkAcquireProfilingLockInfoKHR &() VULKAN_HPP_NOEXCEPT
4436     {
4437       return *reinterpret_cast<VkAcquireProfilingLockInfoKHR *>( this );
4438     }
4439 
4440 #if defined( VULKAN_HPP_USE_REFLECT )
4441 #  if 14 <= VULKAN_HPP_CPP_VERSION
4442     auto
4443 #  else
4444     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR const &, uint64_t const &>
4445 #  endif
reflectVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4446       reflect() const VULKAN_HPP_NOEXCEPT
4447     {
4448       return std::tie( sType, pNext, flags, timeout );
4449     }
4450 #endif
4451 
4452 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
4453     auto operator<=>( AcquireProfilingLockInfoKHR const & ) const = default;
4454 #else
operator ==VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4455     bool operator==( AcquireProfilingLockInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
4456     {
4457 #  if defined( VULKAN_HPP_USE_REFLECT )
4458       return this->reflect() == rhs.reflect();
4459 #  else
4460       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( timeout == rhs.timeout );
4461 #  endif
4462     }
4463 
operator !=VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR4464     bool operator!=( AcquireProfilingLockInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
4465     {
4466       return !operator==( rhs );
4467     }
4468 #endif
4469 
4470   public:
4471     VULKAN_HPP_NAMESPACE::StructureType                sType   = StructureType::eAcquireProfilingLockInfoKHR;
4472     const void *                                       pNext   = {};
4473     VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR flags   = {};
4474     uint64_t                                           timeout = {};
4475   };
4476 
4477   template <>
4478   struct CppType<StructureType, StructureType::eAcquireProfilingLockInfoKHR>
4479   {
4480     using Type = AcquireProfilingLockInfoKHR;
4481   };
4482 
4483   struct AllocationCallbacks
4484   {
4485     using NativeType = VkAllocationCallbacks;
4486 
4487 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AllocationCallbacksVULKAN_HPP_NAMESPACE::AllocationCallbacks4488     VULKAN_HPP_CONSTEXPR AllocationCallbacks( void *                               pUserData_             = {},
4489                                               PFN_vkAllocationFunction             pfnAllocation_         = {},
4490                                               PFN_vkReallocationFunction           pfnReallocation_       = {},
4491                                               PFN_vkFreeFunction                   pfnFree_               = {},
4492                                               PFN_vkInternalAllocationNotification pfnInternalAllocation_ = {},
4493                                               PFN_vkInternalFreeNotification       pfnInternalFree_       = {} ) VULKAN_HPP_NOEXCEPT
4494       : pUserData{ pUserData_ }
4495       , pfnAllocation{ pfnAllocation_ }
4496       , pfnReallocation{ pfnReallocation_ }
4497       , pfnFree{ pfnFree_ }
4498       , pfnInternalAllocation{ pfnInternalAllocation_ }
4499       , pfnInternalFree{ pfnInternalFree_ }
4500     {
4501     }
4502 
4503     VULKAN_HPP_CONSTEXPR AllocationCallbacks( AllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4504 
AllocationCallbacksVULKAN_HPP_NAMESPACE::AllocationCallbacks4505     AllocationCallbacks( VkAllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT : AllocationCallbacks( *reinterpret_cast<AllocationCallbacks const *>( &rhs ) )
4506     {
4507     }
4508 
4509     AllocationCallbacks & operator=( AllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4510 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4511 
operator =VULKAN_HPP_NAMESPACE::AllocationCallbacks4512     AllocationCallbacks & operator=( VkAllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT
4513     {
4514       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AllocationCallbacks const *>( &rhs );
4515       return *this;
4516     }
4517 
4518 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPUserDataVULKAN_HPP_NAMESPACE::AllocationCallbacks4519     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT
4520     {
4521       pUserData = pUserData_;
4522       return *this;
4523     }
4524 
setPfnAllocationVULKAN_HPP_NAMESPACE::AllocationCallbacks4525     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnAllocation( PFN_vkAllocationFunction pfnAllocation_ ) VULKAN_HPP_NOEXCEPT
4526     {
4527       pfnAllocation = pfnAllocation_;
4528       return *this;
4529     }
4530 
setPfnReallocationVULKAN_HPP_NAMESPACE::AllocationCallbacks4531     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnReallocation( PFN_vkReallocationFunction pfnReallocation_ ) VULKAN_HPP_NOEXCEPT
4532     {
4533       pfnReallocation = pfnReallocation_;
4534       return *this;
4535     }
4536 
setPfnFreeVULKAN_HPP_NAMESPACE::AllocationCallbacks4537     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnFree( PFN_vkFreeFunction pfnFree_ ) VULKAN_HPP_NOEXCEPT
4538     {
4539       pfnFree = pfnFree_;
4540       return *this;
4541     }
4542 
setPfnInternalAllocationVULKAN_HPP_NAMESPACE::AllocationCallbacks4543     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnInternalAllocation( PFN_vkInternalAllocationNotification pfnInternalAllocation_ ) VULKAN_HPP_NOEXCEPT
4544     {
4545       pfnInternalAllocation = pfnInternalAllocation_;
4546       return *this;
4547     }
4548 
setPfnInternalFreeVULKAN_HPP_NAMESPACE::AllocationCallbacks4549     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnInternalFree( PFN_vkInternalFreeNotification pfnInternalFree_ ) VULKAN_HPP_NOEXCEPT
4550     {
4551       pfnInternalFree = pfnInternalFree_;
4552       return *this;
4553     }
4554 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4555 
operator VkAllocationCallbacks const&VULKAN_HPP_NAMESPACE::AllocationCallbacks4556     operator VkAllocationCallbacks const &() const VULKAN_HPP_NOEXCEPT
4557     {
4558       return *reinterpret_cast<const VkAllocationCallbacks *>( this );
4559     }
4560 
operator VkAllocationCallbacks&VULKAN_HPP_NAMESPACE::AllocationCallbacks4561     operator VkAllocationCallbacks &() VULKAN_HPP_NOEXCEPT
4562     {
4563       return *reinterpret_cast<VkAllocationCallbacks *>( this );
4564     }
4565 
4566 #if defined( VULKAN_HPP_USE_REFLECT )
4567 #  if 14 <= VULKAN_HPP_CPP_VERSION
4568     auto
4569 #  else
4570     std::tuple<void * const &,
4571                PFN_vkAllocationFunction const &,
4572                PFN_vkReallocationFunction const &,
4573                PFN_vkFreeFunction const &,
4574                PFN_vkInternalAllocationNotification const &,
4575                PFN_vkInternalFreeNotification const &>
4576 #  endif
reflectVULKAN_HPP_NAMESPACE::AllocationCallbacks4577       reflect() const VULKAN_HPP_NOEXCEPT
4578     {
4579       return std::tie( pUserData, pfnAllocation, pfnReallocation, pfnFree, pfnInternalAllocation, pfnInternalFree );
4580     }
4581 #endif
4582 
operator ==VULKAN_HPP_NAMESPACE::AllocationCallbacks4583     bool operator==( AllocationCallbacks const & rhs ) const VULKAN_HPP_NOEXCEPT
4584     {
4585 #if defined( VULKAN_HPP_USE_REFLECT )
4586       return this->reflect() == rhs.reflect();
4587 #else
4588       return ( pUserData == rhs.pUserData ) && ( pfnAllocation == rhs.pfnAllocation ) && ( pfnReallocation == rhs.pfnReallocation ) &&
4589              ( pfnFree == rhs.pfnFree ) && ( pfnInternalAllocation == rhs.pfnInternalAllocation ) && ( pfnInternalFree == rhs.pfnInternalFree );
4590 #endif
4591     }
4592 
operator !=VULKAN_HPP_NAMESPACE::AllocationCallbacks4593     bool operator!=( AllocationCallbacks const & rhs ) const VULKAN_HPP_NOEXCEPT
4594     {
4595       return !operator==( rhs );
4596     }
4597 
4598   public:
4599     void *                               pUserData             = {};
4600     PFN_vkAllocationFunction             pfnAllocation         = {};
4601     PFN_vkReallocationFunction           pfnReallocation       = {};
4602     PFN_vkFreeFunction                   pfnFree               = {};
4603     PFN_vkInternalAllocationNotification pfnInternalAllocation = {};
4604     PFN_vkInternalFreeNotification       pfnInternalFree       = {};
4605   };
4606 
4607   struct AmigoProfilingSubmitInfoSEC
4608   {
4609     using NativeType = VkAmigoProfilingSubmitInfoSEC;
4610 
4611     static const bool                                  allowDuplicate = false;
4612     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAmigoProfilingSubmitInfoSEC;
4613 
4614 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
4615     VULKAN_HPP_CONSTEXPR
AmigoProfilingSubmitInfoSECVULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4616       AmigoProfilingSubmitInfoSEC( uint64_t firstDrawTimestamp_ = {}, uint64_t swapBufferTimestamp_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
4617       : pNext{ pNext_ }
4618       , firstDrawTimestamp{ firstDrawTimestamp_ }
4619       , swapBufferTimestamp{ swapBufferTimestamp_ }
4620     {
4621     }
4622 
4623     VULKAN_HPP_CONSTEXPR AmigoProfilingSubmitInfoSEC( AmigoProfilingSubmitInfoSEC const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4624 
AmigoProfilingSubmitInfoSECVULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4625     AmigoProfilingSubmitInfoSEC( VkAmigoProfilingSubmitInfoSEC const & rhs ) VULKAN_HPP_NOEXCEPT
4626       : AmigoProfilingSubmitInfoSEC( *reinterpret_cast<AmigoProfilingSubmitInfoSEC const *>( &rhs ) )
4627     {
4628     }
4629 
4630     AmigoProfilingSubmitInfoSEC & operator=( AmigoProfilingSubmitInfoSEC const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4631 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4632 
operator =VULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4633     AmigoProfilingSubmitInfoSEC & operator=( VkAmigoProfilingSubmitInfoSEC const & rhs ) VULKAN_HPP_NOEXCEPT
4634     {
4635       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC const *>( &rhs );
4636       return *this;
4637     }
4638 
4639 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4640     VULKAN_HPP_CONSTEXPR_14 AmigoProfilingSubmitInfoSEC & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
4641     {
4642       pNext = pNext_;
4643       return *this;
4644     }
4645 
setFirstDrawTimestampVULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4646     VULKAN_HPP_CONSTEXPR_14 AmigoProfilingSubmitInfoSEC & setFirstDrawTimestamp( uint64_t firstDrawTimestamp_ ) VULKAN_HPP_NOEXCEPT
4647     {
4648       firstDrawTimestamp = firstDrawTimestamp_;
4649       return *this;
4650     }
4651 
setSwapBufferTimestampVULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4652     VULKAN_HPP_CONSTEXPR_14 AmigoProfilingSubmitInfoSEC & setSwapBufferTimestamp( uint64_t swapBufferTimestamp_ ) VULKAN_HPP_NOEXCEPT
4653     {
4654       swapBufferTimestamp = swapBufferTimestamp_;
4655       return *this;
4656     }
4657 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4658 
operator VkAmigoProfilingSubmitInfoSEC const&VULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4659     operator VkAmigoProfilingSubmitInfoSEC const &() const VULKAN_HPP_NOEXCEPT
4660     {
4661       return *reinterpret_cast<const VkAmigoProfilingSubmitInfoSEC *>( this );
4662     }
4663 
operator VkAmigoProfilingSubmitInfoSEC&VULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4664     operator VkAmigoProfilingSubmitInfoSEC &() VULKAN_HPP_NOEXCEPT
4665     {
4666       return *reinterpret_cast<VkAmigoProfilingSubmitInfoSEC *>( this );
4667     }
4668 
4669 #if defined( VULKAN_HPP_USE_REFLECT )
4670 #  if 14 <= VULKAN_HPP_CPP_VERSION
4671     auto
4672 #  else
4673     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint64_t const &, uint64_t const &>
4674 #  endif
reflectVULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4675       reflect() const VULKAN_HPP_NOEXCEPT
4676     {
4677       return std::tie( sType, pNext, firstDrawTimestamp, swapBufferTimestamp );
4678     }
4679 #endif
4680 
4681 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
4682     auto operator<=>( AmigoProfilingSubmitInfoSEC const & ) const = default;
4683 #else
operator ==VULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4684     bool operator==( AmigoProfilingSubmitInfoSEC const & rhs ) const VULKAN_HPP_NOEXCEPT
4685     {
4686 #  if defined( VULKAN_HPP_USE_REFLECT )
4687       return this->reflect() == rhs.reflect();
4688 #  else
4689       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( firstDrawTimestamp == rhs.firstDrawTimestamp ) &&
4690              ( swapBufferTimestamp == rhs.swapBufferTimestamp );
4691 #  endif
4692     }
4693 
operator !=VULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC4694     bool operator!=( AmigoProfilingSubmitInfoSEC const & rhs ) const VULKAN_HPP_NOEXCEPT
4695     {
4696       return !operator==( rhs );
4697     }
4698 #endif
4699 
4700   public:
4701     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::eAmigoProfilingSubmitInfoSEC;
4702     const void *                        pNext               = {};
4703     uint64_t                            firstDrawTimestamp  = {};
4704     uint64_t                            swapBufferTimestamp = {};
4705   };
4706 
4707   template <>
4708   struct CppType<StructureType, StructureType::eAmigoProfilingSubmitInfoSEC>
4709   {
4710     using Type = AmigoProfilingSubmitInfoSEC;
4711   };
4712 
4713   struct ComponentMapping
4714   {
4715     using NativeType = VkComponentMapping;
4716 
4717 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ComponentMappingVULKAN_HPP_NAMESPACE::ComponentMapping4718     VULKAN_HPP_CONSTEXPR ComponentMapping( VULKAN_HPP_NAMESPACE::ComponentSwizzle r_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity,
4719                                            VULKAN_HPP_NAMESPACE::ComponentSwizzle g_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity,
4720                                            VULKAN_HPP_NAMESPACE::ComponentSwizzle b_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity,
4721                                            VULKAN_HPP_NAMESPACE::ComponentSwizzle a_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity ) VULKAN_HPP_NOEXCEPT
4722       : r{ r_ }
4723       , g{ g_ }
4724       , b{ b_ }
4725       , a{ a_ }
4726     {
4727     }
4728 
4729     VULKAN_HPP_CONSTEXPR ComponentMapping( ComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4730 
ComponentMappingVULKAN_HPP_NAMESPACE::ComponentMapping4731     ComponentMapping( VkComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT : ComponentMapping( *reinterpret_cast<ComponentMapping const *>( &rhs ) ) {}
4732 
4733     ComponentMapping & operator=( ComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4734 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4735 
operator =VULKAN_HPP_NAMESPACE::ComponentMapping4736     ComponentMapping & operator=( VkComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT
4737     {
4738       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ComponentMapping const *>( &rhs );
4739       return *this;
4740     }
4741 
4742 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setRVULKAN_HPP_NAMESPACE::ComponentMapping4743     VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setR( VULKAN_HPP_NAMESPACE::ComponentSwizzle r_ ) VULKAN_HPP_NOEXCEPT
4744     {
4745       r = r_;
4746       return *this;
4747     }
4748 
setGVULKAN_HPP_NAMESPACE::ComponentMapping4749     VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setG( VULKAN_HPP_NAMESPACE::ComponentSwizzle g_ ) VULKAN_HPP_NOEXCEPT
4750     {
4751       g = g_;
4752       return *this;
4753     }
4754 
setBVULKAN_HPP_NAMESPACE::ComponentMapping4755     VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setB( VULKAN_HPP_NAMESPACE::ComponentSwizzle b_ ) VULKAN_HPP_NOEXCEPT
4756     {
4757       b = b_;
4758       return *this;
4759     }
4760 
setAVULKAN_HPP_NAMESPACE::ComponentMapping4761     VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setA( VULKAN_HPP_NAMESPACE::ComponentSwizzle a_ ) VULKAN_HPP_NOEXCEPT
4762     {
4763       a = a_;
4764       return *this;
4765     }
4766 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4767 
operator VkComponentMapping const&VULKAN_HPP_NAMESPACE::ComponentMapping4768     operator VkComponentMapping const &() const VULKAN_HPP_NOEXCEPT
4769     {
4770       return *reinterpret_cast<const VkComponentMapping *>( this );
4771     }
4772 
operator VkComponentMapping&VULKAN_HPP_NAMESPACE::ComponentMapping4773     operator VkComponentMapping &() VULKAN_HPP_NOEXCEPT
4774     {
4775       return *reinterpret_cast<VkComponentMapping *>( this );
4776     }
4777 
4778 #if defined( VULKAN_HPP_USE_REFLECT )
4779 #  if 14 <= VULKAN_HPP_CPP_VERSION
4780     auto
4781 #  else
4782     std::tuple<VULKAN_HPP_NAMESPACE::ComponentSwizzle const &,
4783                VULKAN_HPP_NAMESPACE::ComponentSwizzle const &,
4784                VULKAN_HPP_NAMESPACE::ComponentSwizzle const &,
4785                VULKAN_HPP_NAMESPACE::ComponentSwizzle const &>
4786 #  endif
reflectVULKAN_HPP_NAMESPACE::ComponentMapping4787       reflect() const VULKAN_HPP_NOEXCEPT
4788     {
4789       return std::tie( r, g, b, a );
4790     }
4791 #endif
4792 
4793 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
4794     auto operator<=>( ComponentMapping const & ) const = default;
4795 #else
operator ==VULKAN_HPP_NAMESPACE::ComponentMapping4796     bool operator==( ComponentMapping const & rhs ) const VULKAN_HPP_NOEXCEPT
4797     {
4798 #  if defined( VULKAN_HPP_USE_REFLECT )
4799       return this->reflect() == rhs.reflect();
4800 #  else
4801       return ( r == rhs.r ) && ( g == rhs.g ) && ( b == rhs.b ) && ( a == rhs.a );
4802 #  endif
4803     }
4804 
operator !=VULKAN_HPP_NAMESPACE::ComponentMapping4805     bool operator!=( ComponentMapping const & rhs ) const VULKAN_HPP_NOEXCEPT
4806     {
4807       return !operator==( rhs );
4808     }
4809 #endif
4810 
4811   public:
4812     VULKAN_HPP_NAMESPACE::ComponentSwizzle r = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity;
4813     VULKAN_HPP_NAMESPACE::ComponentSwizzle g = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity;
4814     VULKAN_HPP_NAMESPACE::ComponentSwizzle b = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity;
4815     VULKAN_HPP_NAMESPACE::ComponentSwizzle a = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity;
4816   };
4817 
4818 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
4819   struct AndroidHardwareBufferFormatProperties2ANDROID
4820   {
4821     using NativeType = VkAndroidHardwareBufferFormatProperties2ANDROID;
4822 
4823     static const bool                                  allowDuplicate = false;
4824     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAndroidHardwareBufferFormatProperties2ANDROID;
4825 
4826 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AndroidHardwareBufferFormatProperties2ANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4827     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferFormatProperties2ANDROID(
4828       VULKAN_HPP_NAMESPACE::Format                      format_                           = VULKAN_HPP_NAMESPACE::Format::eUndefined,
4829       uint64_t                                          externalFormat_                   = {},
4830       VULKAN_HPP_NAMESPACE::FormatFeatureFlags2         formatFeatures_                   = {},
4831       VULKAN_HPP_NAMESPACE::ComponentMapping            samplerYcbcrConversionComponents_ = {},
4832       VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel_              = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity,
4833       VULKAN_HPP_NAMESPACE::SamplerYcbcrRange           suggestedYcbcrRange_              = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull,
4834       VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedXChromaOffset_           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
4835       VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedYChromaOffset_           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
4836       void *                                            pNext_                            = nullptr ) VULKAN_HPP_NOEXCEPT
4837       : pNext{ pNext_ }
4838       , format{ format_ }
4839       , externalFormat{ externalFormat_ }
4840       , formatFeatures{ formatFeatures_ }
4841       , samplerYcbcrConversionComponents{ samplerYcbcrConversionComponents_ }
4842       , suggestedYcbcrModel{ suggestedYcbcrModel_ }
4843       , suggestedYcbcrRange{ suggestedYcbcrRange_ }
4844       , suggestedXChromaOffset{ suggestedXChromaOffset_ }
4845       , suggestedYChromaOffset{ suggestedYChromaOffset_ }
4846     {
4847     }
4848 
4849     VULKAN_HPP_CONSTEXPR
4850       AndroidHardwareBufferFormatProperties2ANDROID( AndroidHardwareBufferFormatProperties2ANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4851 
AndroidHardwareBufferFormatProperties2ANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4852     AndroidHardwareBufferFormatProperties2ANDROID( VkAndroidHardwareBufferFormatProperties2ANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
4853       : AndroidHardwareBufferFormatProperties2ANDROID( *reinterpret_cast<AndroidHardwareBufferFormatProperties2ANDROID const *>( &rhs ) )
4854     {
4855     }
4856 
4857     AndroidHardwareBufferFormatProperties2ANDROID & operator=( AndroidHardwareBufferFormatProperties2ANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4858 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4859 
operator =VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4860     AndroidHardwareBufferFormatProperties2ANDROID & operator=( VkAndroidHardwareBufferFormatProperties2ANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
4861     {
4862       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID const *>( &rhs );
4863       return *this;
4864     }
4865 
operator VkAndroidHardwareBufferFormatProperties2ANDROID const&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4866     operator VkAndroidHardwareBufferFormatProperties2ANDROID const &() const VULKAN_HPP_NOEXCEPT
4867     {
4868       return *reinterpret_cast<const VkAndroidHardwareBufferFormatProperties2ANDROID *>( this );
4869     }
4870 
operator VkAndroidHardwareBufferFormatProperties2ANDROID&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4871     operator VkAndroidHardwareBufferFormatProperties2ANDROID &() VULKAN_HPP_NOEXCEPT
4872     {
4873       return *reinterpret_cast<VkAndroidHardwareBufferFormatProperties2ANDROID *>( this );
4874     }
4875 
4876 #  if defined( VULKAN_HPP_USE_REFLECT )
4877 #    if 14 <= VULKAN_HPP_CPP_VERSION
4878     auto
4879 #    else
4880     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
4881                void * const &,
4882                VULKAN_HPP_NAMESPACE::Format const &,
4883                uint64_t const &,
4884                VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 const &,
4885                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
4886                VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion const &,
4887                VULKAN_HPP_NAMESPACE::SamplerYcbcrRange const &,
4888                VULKAN_HPP_NAMESPACE::ChromaLocation const &,
4889                VULKAN_HPP_NAMESPACE::ChromaLocation const &>
4890 #    endif
reflectVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4891       reflect() const VULKAN_HPP_NOEXCEPT
4892     {
4893       return std::tie( sType,
4894                        pNext,
4895                        format,
4896                        externalFormat,
4897                        formatFeatures,
4898                        samplerYcbcrConversionComponents,
4899                        suggestedYcbcrModel,
4900                        suggestedYcbcrRange,
4901                        suggestedXChromaOffset,
4902                        suggestedYChromaOffset );
4903     }
4904 #  endif
4905 
4906 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
4907     auto operator<=>( AndroidHardwareBufferFormatProperties2ANDROID const & ) const = default;
4908 #  else
operator ==VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4909     bool operator==( AndroidHardwareBufferFormatProperties2ANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
4910     {
4911 #    if defined( VULKAN_HPP_USE_REFLECT )
4912       return this->reflect() == rhs.reflect();
4913 #    else
4914       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( externalFormat == rhs.externalFormat ) &&
4915              ( formatFeatures == rhs.formatFeatures ) && ( samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents ) &&
4916              ( suggestedYcbcrModel == rhs.suggestedYcbcrModel ) && ( suggestedYcbcrRange == rhs.suggestedYcbcrRange ) &&
4917              ( suggestedXChromaOffset == rhs.suggestedXChromaOffset ) && ( suggestedYChromaOffset == rhs.suggestedYChromaOffset );
4918 #    endif
4919     }
4920 
operator !=VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID4921     bool operator!=( AndroidHardwareBufferFormatProperties2ANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
4922     {
4923       return !operator==( rhs );
4924     }
4925 #  endif
4926 
4927   public:
4928     VULKAN_HPP_NAMESPACE::StructureType               sType                            = StructureType::eAndroidHardwareBufferFormatProperties2ANDROID;
4929     void *                                            pNext                            = {};
4930     VULKAN_HPP_NAMESPACE::Format                      format                           = VULKAN_HPP_NAMESPACE::Format::eUndefined;
4931     uint64_t                                          externalFormat                   = {};
4932     VULKAN_HPP_NAMESPACE::FormatFeatureFlags2         formatFeatures                   = {};
4933     VULKAN_HPP_NAMESPACE::ComponentMapping            samplerYcbcrConversionComponents = {};
4934     VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel              = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity;
4935     VULKAN_HPP_NAMESPACE::SamplerYcbcrRange           suggestedYcbcrRange              = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull;
4936     VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedXChromaOffset           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
4937     VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedYChromaOffset           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
4938   };
4939 
4940   template <>
4941   struct CppType<StructureType, StructureType::eAndroidHardwareBufferFormatProperties2ANDROID>
4942   {
4943     using Type = AndroidHardwareBufferFormatProperties2ANDROID;
4944   };
4945 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
4946 
4947 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
4948   struct AndroidHardwareBufferFormatPropertiesANDROID
4949   {
4950     using NativeType = VkAndroidHardwareBufferFormatPropertiesANDROID;
4951 
4952     static const bool                                  allowDuplicate = false;
4953     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAndroidHardwareBufferFormatPropertiesANDROID;
4954 
4955 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AndroidHardwareBufferFormatPropertiesANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID4956     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferFormatPropertiesANDROID(
4957       VULKAN_HPP_NAMESPACE::Format                      format_                           = VULKAN_HPP_NAMESPACE::Format::eUndefined,
4958       uint64_t                                          externalFormat_                   = {},
4959       VULKAN_HPP_NAMESPACE::FormatFeatureFlags          formatFeatures_                   = {},
4960       VULKAN_HPP_NAMESPACE::ComponentMapping            samplerYcbcrConversionComponents_ = {},
4961       VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel_              = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity,
4962       VULKAN_HPP_NAMESPACE::SamplerYcbcrRange           suggestedYcbcrRange_              = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull,
4963       VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedXChromaOffset_           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
4964       VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedYChromaOffset_           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
4965       void *                                            pNext_                            = nullptr ) VULKAN_HPP_NOEXCEPT
4966       : pNext{ pNext_ }
4967       , format{ format_ }
4968       , externalFormat{ externalFormat_ }
4969       , formatFeatures{ formatFeatures_ }
4970       , samplerYcbcrConversionComponents{ samplerYcbcrConversionComponents_ }
4971       , suggestedYcbcrModel{ suggestedYcbcrModel_ }
4972       , suggestedYcbcrRange{ suggestedYcbcrRange_ }
4973       , suggestedXChromaOffset{ suggestedXChromaOffset_ }
4974       , suggestedYChromaOffset{ suggestedYChromaOffset_ }
4975     {
4976     }
4977 
4978     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferFormatPropertiesANDROID( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4979 
AndroidHardwareBufferFormatPropertiesANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID4980     AndroidHardwareBufferFormatPropertiesANDROID( VkAndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
4981       : AndroidHardwareBufferFormatPropertiesANDROID( *reinterpret_cast<AndroidHardwareBufferFormatPropertiesANDROID const *>( &rhs ) )
4982     {
4983     }
4984 
4985     AndroidHardwareBufferFormatPropertiesANDROID & operator=( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4986 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4987 
operator =VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID4988     AndroidHardwareBufferFormatPropertiesANDROID & operator=( VkAndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
4989     {
4990       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID const *>( &rhs );
4991       return *this;
4992     }
4993 
operator VkAndroidHardwareBufferFormatPropertiesANDROID const&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID4994     operator VkAndroidHardwareBufferFormatPropertiesANDROID const &() const VULKAN_HPP_NOEXCEPT
4995     {
4996       return *reinterpret_cast<const VkAndroidHardwareBufferFormatPropertiesANDROID *>( this );
4997     }
4998 
operator VkAndroidHardwareBufferFormatPropertiesANDROID&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID4999     operator VkAndroidHardwareBufferFormatPropertiesANDROID &() VULKAN_HPP_NOEXCEPT
5000     {
5001       return *reinterpret_cast<VkAndroidHardwareBufferFormatPropertiesANDROID *>( this );
5002     }
5003 
5004 #  if defined( VULKAN_HPP_USE_REFLECT )
5005 #    if 14 <= VULKAN_HPP_CPP_VERSION
5006     auto
5007 #    else
5008     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
5009                void * const &,
5010                VULKAN_HPP_NAMESPACE::Format const &,
5011                uint64_t const &,
5012                VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &,
5013                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
5014                VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion const &,
5015                VULKAN_HPP_NAMESPACE::SamplerYcbcrRange const &,
5016                VULKAN_HPP_NAMESPACE::ChromaLocation const &,
5017                VULKAN_HPP_NAMESPACE::ChromaLocation const &>
5018 #    endif
reflectVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID5019       reflect() const VULKAN_HPP_NOEXCEPT
5020     {
5021       return std::tie( sType,
5022                        pNext,
5023                        format,
5024                        externalFormat,
5025                        formatFeatures,
5026                        samplerYcbcrConversionComponents,
5027                        suggestedYcbcrModel,
5028                        suggestedYcbcrRange,
5029                        suggestedXChromaOffset,
5030                        suggestedYChromaOffset );
5031     }
5032 #  endif
5033 
5034 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5035     auto operator<=>( AndroidHardwareBufferFormatPropertiesANDROID const & ) const = default;
5036 #  else
operator ==VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID5037     bool operator==( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
5038     {
5039 #    if defined( VULKAN_HPP_USE_REFLECT )
5040       return this->reflect() == rhs.reflect();
5041 #    else
5042       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( externalFormat == rhs.externalFormat ) &&
5043              ( formatFeatures == rhs.formatFeatures ) && ( samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents ) &&
5044              ( suggestedYcbcrModel == rhs.suggestedYcbcrModel ) && ( suggestedYcbcrRange == rhs.suggestedYcbcrRange ) &&
5045              ( suggestedXChromaOffset == rhs.suggestedXChromaOffset ) && ( suggestedYChromaOffset == rhs.suggestedYChromaOffset );
5046 #    endif
5047     }
5048 
operator !=VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID5049     bool operator!=( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
5050     {
5051       return !operator==( rhs );
5052     }
5053 #  endif
5054 
5055   public:
5056     VULKAN_HPP_NAMESPACE::StructureType               sType                            = StructureType::eAndroidHardwareBufferFormatPropertiesANDROID;
5057     void *                                            pNext                            = {};
5058     VULKAN_HPP_NAMESPACE::Format                      format                           = VULKAN_HPP_NAMESPACE::Format::eUndefined;
5059     uint64_t                                          externalFormat                   = {};
5060     VULKAN_HPP_NAMESPACE::FormatFeatureFlags          formatFeatures                   = {};
5061     VULKAN_HPP_NAMESPACE::ComponentMapping            samplerYcbcrConversionComponents = {};
5062     VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel              = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity;
5063     VULKAN_HPP_NAMESPACE::SamplerYcbcrRange           suggestedYcbcrRange              = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull;
5064     VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedXChromaOffset           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
5065     VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedYChromaOffset           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
5066   };
5067 
5068   template <>
5069   struct CppType<StructureType, StructureType::eAndroidHardwareBufferFormatPropertiesANDROID>
5070   {
5071     using Type = AndroidHardwareBufferFormatPropertiesANDROID;
5072   };
5073 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
5074 
5075 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
5076   struct AndroidHardwareBufferFormatResolvePropertiesANDROID
5077   {
5078     using NativeType = VkAndroidHardwareBufferFormatResolvePropertiesANDROID;
5079 
5080     static const bool                                  allowDuplicate = false;
5081     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAndroidHardwareBufferFormatResolvePropertiesANDROID;
5082 
5083 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
5084     VULKAN_HPP_CONSTEXPR
AndroidHardwareBufferFormatResolvePropertiesANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatResolvePropertiesANDROID5085       AndroidHardwareBufferFormatResolvePropertiesANDROID( VULKAN_HPP_NAMESPACE::Format colorAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
5086                                                            void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
5087       : pNext{ pNext_ }
5088       , colorAttachmentFormat{ colorAttachmentFormat_ }
5089     {
5090     }
5091 
5092     VULKAN_HPP_CONSTEXPR
5093       AndroidHardwareBufferFormatResolvePropertiesANDROID( AndroidHardwareBufferFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5094 
AndroidHardwareBufferFormatResolvePropertiesANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatResolvePropertiesANDROID5095     AndroidHardwareBufferFormatResolvePropertiesANDROID( VkAndroidHardwareBufferFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
5096       : AndroidHardwareBufferFormatResolvePropertiesANDROID( *reinterpret_cast<AndroidHardwareBufferFormatResolvePropertiesANDROID const *>( &rhs ) )
5097     {
5098     }
5099 
5100     AndroidHardwareBufferFormatResolvePropertiesANDROID &
5101       operator=( AndroidHardwareBufferFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5102 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5103 
operator =VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatResolvePropertiesANDROID5104     AndroidHardwareBufferFormatResolvePropertiesANDROID & operator=( VkAndroidHardwareBufferFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
5105     {
5106       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatResolvePropertiesANDROID const *>( &rhs );
5107       return *this;
5108     }
5109 
operator VkAndroidHardwareBufferFormatResolvePropertiesANDROID const&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatResolvePropertiesANDROID5110     operator VkAndroidHardwareBufferFormatResolvePropertiesANDROID const &() const VULKAN_HPP_NOEXCEPT
5111     {
5112       return *reinterpret_cast<const VkAndroidHardwareBufferFormatResolvePropertiesANDROID *>( this );
5113     }
5114 
operator VkAndroidHardwareBufferFormatResolvePropertiesANDROID&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatResolvePropertiesANDROID5115     operator VkAndroidHardwareBufferFormatResolvePropertiesANDROID &() VULKAN_HPP_NOEXCEPT
5116     {
5117       return *reinterpret_cast<VkAndroidHardwareBufferFormatResolvePropertiesANDROID *>( this );
5118     }
5119 
5120 #  if defined( VULKAN_HPP_USE_REFLECT )
5121 #    if 14 <= VULKAN_HPP_CPP_VERSION
5122     auto
5123 #    else
5124     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Format const &>
5125 #    endif
reflectVULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatResolvePropertiesANDROID5126       reflect() const VULKAN_HPP_NOEXCEPT
5127     {
5128       return std::tie( sType, pNext, colorAttachmentFormat );
5129     }
5130 #  endif
5131 
5132 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5133     auto operator<=>( AndroidHardwareBufferFormatResolvePropertiesANDROID const & ) const = default;
5134 #  else
operator ==VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatResolvePropertiesANDROID5135     bool operator==( AndroidHardwareBufferFormatResolvePropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
5136     {
5137 #    if defined( VULKAN_HPP_USE_REFLECT )
5138       return this->reflect() == rhs.reflect();
5139 #    else
5140       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( colorAttachmentFormat == rhs.colorAttachmentFormat );
5141 #    endif
5142     }
5143 
operator !=VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatResolvePropertiesANDROID5144     bool operator!=( AndroidHardwareBufferFormatResolvePropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
5145     {
5146       return !operator==( rhs );
5147     }
5148 #  endif
5149 
5150   public:
5151     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::eAndroidHardwareBufferFormatResolvePropertiesANDROID;
5152     void *                              pNext                 = {};
5153     VULKAN_HPP_NAMESPACE::Format        colorAttachmentFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined;
5154   };
5155 
5156   template <>
5157   struct CppType<StructureType, StructureType::eAndroidHardwareBufferFormatResolvePropertiesANDROID>
5158   {
5159     using Type = AndroidHardwareBufferFormatResolvePropertiesANDROID;
5160   };
5161 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
5162 
5163 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
5164   struct AndroidHardwareBufferPropertiesANDROID
5165   {
5166     using NativeType = VkAndroidHardwareBufferPropertiesANDROID;
5167 
5168     static const bool                                  allowDuplicate = false;
5169     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAndroidHardwareBufferPropertiesANDROID;
5170 
5171 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AndroidHardwareBufferPropertiesANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID5172     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferPropertiesANDROID( VULKAN_HPP_NAMESPACE::DeviceSize allocationSize_ = {},
5173                                                                  uint32_t                         memoryTypeBits_ = {},
5174                                                                  void *                           pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
5175       : pNext{ pNext_ }
5176       , allocationSize{ allocationSize_ }
5177       , memoryTypeBits{ memoryTypeBits_ }
5178     {
5179     }
5180 
5181     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferPropertiesANDROID( AndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5182 
AndroidHardwareBufferPropertiesANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID5183     AndroidHardwareBufferPropertiesANDROID( VkAndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
5184       : AndroidHardwareBufferPropertiesANDROID( *reinterpret_cast<AndroidHardwareBufferPropertiesANDROID const *>( &rhs ) )
5185     {
5186     }
5187 
5188     AndroidHardwareBufferPropertiesANDROID & operator=( AndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5189 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5190 
operator =VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID5191     AndroidHardwareBufferPropertiesANDROID & operator=( VkAndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
5192     {
5193       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID const *>( &rhs );
5194       return *this;
5195     }
5196 
operator VkAndroidHardwareBufferPropertiesANDROID const&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID5197     operator VkAndroidHardwareBufferPropertiesANDROID const &() const VULKAN_HPP_NOEXCEPT
5198     {
5199       return *reinterpret_cast<const VkAndroidHardwareBufferPropertiesANDROID *>( this );
5200     }
5201 
operator VkAndroidHardwareBufferPropertiesANDROID&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID5202     operator VkAndroidHardwareBufferPropertiesANDROID &() VULKAN_HPP_NOEXCEPT
5203     {
5204       return *reinterpret_cast<VkAndroidHardwareBufferPropertiesANDROID *>( this );
5205     }
5206 
5207 #  if defined( VULKAN_HPP_USE_REFLECT )
5208 #    if 14 <= VULKAN_HPP_CPP_VERSION
5209     auto
5210 #    else
5211     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, uint32_t const &>
5212 #    endif
reflectVULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID5213       reflect() const VULKAN_HPP_NOEXCEPT
5214     {
5215       return std::tie( sType, pNext, allocationSize, memoryTypeBits );
5216     }
5217 #  endif
5218 
5219 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5220     auto operator<=>( AndroidHardwareBufferPropertiesANDROID const & ) const = default;
5221 #  else
operator ==VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID5222     bool operator==( AndroidHardwareBufferPropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
5223     {
5224 #    if defined( VULKAN_HPP_USE_REFLECT )
5225       return this->reflect() == rhs.reflect();
5226 #    else
5227       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( allocationSize == rhs.allocationSize ) && ( memoryTypeBits == rhs.memoryTypeBits );
5228 #    endif
5229     }
5230 
operator !=VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID5231     bool operator!=( AndroidHardwareBufferPropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
5232     {
5233       return !operator==( rhs );
5234     }
5235 #  endif
5236 
5237   public:
5238     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eAndroidHardwareBufferPropertiesANDROID;
5239     void *                              pNext          = {};
5240     VULKAN_HPP_NAMESPACE::DeviceSize    allocationSize = {};
5241     uint32_t                            memoryTypeBits = {};
5242   };
5243 
5244   template <>
5245   struct CppType<StructureType, StructureType::eAndroidHardwareBufferPropertiesANDROID>
5246   {
5247     using Type = AndroidHardwareBufferPropertiesANDROID;
5248   };
5249 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
5250 
5251 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
5252   struct AndroidHardwareBufferUsageANDROID
5253   {
5254     using NativeType = VkAndroidHardwareBufferUsageANDROID;
5255 
5256     static const bool                                  allowDuplicate = false;
5257     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAndroidHardwareBufferUsageANDROID;
5258 
5259 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AndroidHardwareBufferUsageANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID5260     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferUsageANDROID( uint64_t androidHardwareBufferUsage_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
5261       : pNext{ pNext_ }
5262       , androidHardwareBufferUsage{ androidHardwareBufferUsage_ }
5263     {
5264     }
5265 
5266     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferUsageANDROID( AndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5267 
AndroidHardwareBufferUsageANDROIDVULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID5268     AndroidHardwareBufferUsageANDROID( VkAndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
5269       : AndroidHardwareBufferUsageANDROID( *reinterpret_cast<AndroidHardwareBufferUsageANDROID const *>( &rhs ) )
5270     {
5271     }
5272 
5273     AndroidHardwareBufferUsageANDROID & operator=( AndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5274 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5275 
operator =VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID5276     AndroidHardwareBufferUsageANDROID & operator=( VkAndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
5277     {
5278       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID const *>( &rhs );
5279       return *this;
5280     }
5281 
operator VkAndroidHardwareBufferUsageANDROID const&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID5282     operator VkAndroidHardwareBufferUsageANDROID const &() const VULKAN_HPP_NOEXCEPT
5283     {
5284       return *reinterpret_cast<const VkAndroidHardwareBufferUsageANDROID *>( this );
5285     }
5286 
operator VkAndroidHardwareBufferUsageANDROID&VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID5287     operator VkAndroidHardwareBufferUsageANDROID &() VULKAN_HPP_NOEXCEPT
5288     {
5289       return *reinterpret_cast<VkAndroidHardwareBufferUsageANDROID *>( this );
5290     }
5291 
5292 #  if defined( VULKAN_HPP_USE_REFLECT )
5293 #    if 14 <= VULKAN_HPP_CPP_VERSION
5294     auto
5295 #    else
5296     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint64_t const &>
5297 #    endif
reflectVULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID5298       reflect() const VULKAN_HPP_NOEXCEPT
5299     {
5300       return std::tie( sType, pNext, androidHardwareBufferUsage );
5301     }
5302 #  endif
5303 
5304 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5305     auto operator<=>( AndroidHardwareBufferUsageANDROID const & ) const = default;
5306 #  else
operator ==VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID5307     bool operator==( AndroidHardwareBufferUsageANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
5308     {
5309 #    if defined( VULKAN_HPP_USE_REFLECT )
5310       return this->reflect() == rhs.reflect();
5311 #    else
5312       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( androidHardwareBufferUsage == rhs.androidHardwareBufferUsage );
5313 #    endif
5314     }
5315 
operator !=VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID5316     bool operator!=( AndroidHardwareBufferUsageANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
5317     {
5318       return !operator==( rhs );
5319     }
5320 #  endif
5321 
5322   public:
5323     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::eAndroidHardwareBufferUsageANDROID;
5324     void *                              pNext                      = {};
5325     uint64_t                            androidHardwareBufferUsage = {};
5326   };
5327 
5328   template <>
5329   struct CppType<StructureType, StructureType::eAndroidHardwareBufferUsageANDROID>
5330   {
5331     using Type = AndroidHardwareBufferUsageANDROID;
5332   };
5333 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
5334 
5335 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
5336   struct AndroidSurfaceCreateInfoKHR
5337   {
5338     using NativeType = VkAndroidSurfaceCreateInfoKHR;
5339 
5340     static const bool                                  allowDuplicate = false;
5341     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAndroidSurfaceCreateInfoKHR;
5342 
5343 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AndroidSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5344     VULKAN_HPP_CONSTEXPR AndroidSurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateFlagsKHR flags_  = {},
5345                                                       struct ANativeWindow *                             window_ = {},
5346                                                       const void *                                       pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
5347       : pNext{ pNext_ }
5348       , flags{ flags_ }
5349       , window{ window_ }
5350     {
5351     }
5352 
5353     VULKAN_HPP_CONSTEXPR AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5354 
AndroidSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5355     AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
5356       : AndroidSurfaceCreateInfoKHR( *reinterpret_cast<AndroidSurfaceCreateInfoKHR const *>( &rhs ) )
5357     {
5358     }
5359 
5360     AndroidSurfaceCreateInfoKHR & operator=( AndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5361 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5362 
operator =VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5363     AndroidSurfaceCreateInfoKHR & operator=( VkAndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
5364     {
5365       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR const *>( &rhs );
5366       return *this;
5367     }
5368 
5369 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5370     VULKAN_HPP_CONSTEXPR_14 AndroidSurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
5371     {
5372       pNext = pNext_;
5373       return *this;
5374     }
5375 
setFlagsVULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5376     VULKAN_HPP_CONSTEXPR_14 AndroidSurfaceCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
5377     {
5378       flags = flags_;
5379       return *this;
5380     }
5381 
setWindowVULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5382     VULKAN_HPP_CONSTEXPR_14 AndroidSurfaceCreateInfoKHR & setWindow( struct ANativeWindow * window_ ) VULKAN_HPP_NOEXCEPT
5383     {
5384       window = window_;
5385       return *this;
5386     }
5387 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5388 
operator VkAndroidSurfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5389     operator VkAndroidSurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
5390     {
5391       return *reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR *>( this );
5392     }
5393 
operator VkAndroidSurfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5394     operator VkAndroidSurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
5395     {
5396       return *reinterpret_cast<VkAndroidSurfaceCreateInfoKHR *>( this );
5397     }
5398 
5399 #  if defined( VULKAN_HPP_USE_REFLECT )
5400 #    if 14 <= VULKAN_HPP_CPP_VERSION
5401     auto
5402 #    else
5403     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
5404                const void * const &,
5405                VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateFlagsKHR const &,
5406                struct ANativeWindow * const &>
5407 #    endif
reflectVULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5408       reflect() const VULKAN_HPP_NOEXCEPT
5409     {
5410       return std::tie( sType, pNext, flags, window );
5411     }
5412 #  endif
5413 
5414 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5415     auto operator<=>( AndroidSurfaceCreateInfoKHR const & ) const = default;
5416 #  else
operator ==VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5417     bool operator==( AndroidSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
5418     {
5419 #    if defined( VULKAN_HPP_USE_REFLECT )
5420       return this->reflect() == rhs.reflect();
5421 #    else
5422       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( window == rhs.window );
5423 #    endif
5424     }
5425 
operator !=VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR5426     bool operator!=( AndroidSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
5427     {
5428       return !operator==( rhs );
5429     }
5430 #  endif
5431 
5432   public:
5433     VULKAN_HPP_NAMESPACE::StructureType                sType  = StructureType::eAndroidSurfaceCreateInfoKHR;
5434     const void *                                       pNext  = {};
5435     VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateFlagsKHR flags  = {};
5436     struct ANativeWindow *                             window = {};
5437   };
5438 
5439   template <>
5440   struct CppType<StructureType, StructureType::eAndroidSurfaceCreateInfoKHR>
5441   {
5442     using Type = AndroidSurfaceCreateInfoKHR;
5443   };
5444 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
5445 
5446   struct ApplicationInfo
5447   {
5448     using NativeType = VkApplicationInfo;
5449 
5450     static const bool                                  allowDuplicate = false;
5451     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eApplicationInfo;
5452 
5453 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ApplicationInfoVULKAN_HPP_NAMESPACE::ApplicationInfo5454     VULKAN_HPP_CONSTEXPR ApplicationInfo( const char * pApplicationName_   = {},
5455                                           uint32_t     applicationVersion_ = {},
5456                                           const char * pEngineName_        = {},
5457                                           uint32_t     engineVersion_      = {},
5458                                           uint32_t     apiVersion_         = {},
5459                                           const void * pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
5460       : pNext{ pNext_ }
5461       , pApplicationName{ pApplicationName_ }
5462       , applicationVersion{ applicationVersion_ }
5463       , pEngineName{ pEngineName_ }
5464       , engineVersion{ engineVersion_ }
5465       , apiVersion{ apiVersion_ }
5466     {
5467     }
5468 
5469     VULKAN_HPP_CONSTEXPR ApplicationInfo( ApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5470 
ApplicationInfoVULKAN_HPP_NAMESPACE::ApplicationInfo5471     ApplicationInfo( VkApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT : ApplicationInfo( *reinterpret_cast<ApplicationInfo const *>( &rhs ) ) {}
5472 
5473     ApplicationInfo & operator=( ApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5474 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5475 
operator =VULKAN_HPP_NAMESPACE::ApplicationInfo5476     ApplicationInfo & operator=( VkApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT
5477     {
5478       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ApplicationInfo const *>( &rhs );
5479       return *this;
5480     }
5481 
5482 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ApplicationInfo5483     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
5484     {
5485       pNext = pNext_;
5486       return *this;
5487     }
5488 
setPApplicationNameVULKAN_HPP_NAMESPACE::ApplicationInfo5489     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setPApplicationName( const char * pApplicationName_ ) VULKAN_HPP_NOEXCEPT
5490     {
5491       pApplicationName = pApplicationName_;
5492       return *this;
5493     }
5494 
setApplicationVersionVULKAN_HPP_NAMESPACE::ApplicationInfo5495     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setApplicationVersion( uint32_t applicationVersion_ ) VULKAN_HPP_NOEXCEPT
5496     {
5497       applicationVersion = applicationVersion_;
5498       return *this;
5499     }
5500 
setPEngineNameVULKAN_HPP_NAMESPACE::ApplicationInfo5501     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setPEngineName( const char * pEngineName_ ) VULKAN_HPP_NOEXCEPT
5502     {
5503       pEngineName = pEngineName_;
5504       return *this;
5505     }
5506 
setEngineVersionVULKAN_HPP_NAMESPACE::ApplicationInfo5507     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setEngineVersion( uint32_t engineVersion_ ) VULKAN_HPP_NOEXCEPT
5508     {
5509       engineVersion = engineVersion_;
5510       return *this;
5511     }
5512 
setApiVersionVULKAN_HPP_NAMESPACE::ApplicationInfo5513     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setApiVersion( uint32_t apiVersion_ ) VULKAN_HPP_NOEXCEPT
5514     {
5515       apiVersion = apiVersion_;
5516       return *this;
5517     }
5518 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5519 
operator VkApplicationInfo const&VULKAN_HPP_NAMESPACE::ApplicationInfo5520     operator VkApplicationInfo const &() const VULKAN_HPP_NOEXCEPT
5521     {
5522       return *reinterpret_cast<const VkApplicationInfo *>( this );
5523     }
5524 
operator VkApplicationInfo&VULKAN_HPP_NAMESPACE::ApplicationInfo5525     operator VkApplicationInfo &() VULKAN_HPP_NOEXCEPT
5526     {
5527       return *reinterpret_cast<VkApplicationInfo *>( this );
5528     }
5529 
5530 #if defined( VULKAN_HPP_USE_REFLECT )
5531 #  if 14 <= VULKAN_HPP_CPP_VERSION
5532     auto
5533 #  else
5534     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
5535                const void * const &,
5536                const char * const &,
5537                uint32_t const &,
5538                const char * const &,
5539                uint32_t const &,
5540                uint32_t const &>
5541 #  endif
reflectVULKAN_HPP_NAMESPACE::ApplicationInfo5542       reflect() const VULKAN_HPP_NOEXCEPT
5543     {
5544       return std::tie( sType, pNext, pApplicationName, applicationVersion, pEngineName, engineVersion, apiVersion );
5545     }
5546 #endif
5547 
5548 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::ApplicationInfo5549     std::strong_ordering operator<=>( ApplicationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
5550     {
5551       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
5552         return cmp;
5553       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
5554         return cmp;
5555       if ( pApplicationName != rhs.pApplicationName )
5556         if ( auto cmp = strcmp( pApplicationName, rhs.pApplicationName ); cmp != 0 )
5557           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
5558       if ( auto cmp = applicationVersion <=> rhs.applicationVersion; cmp != 0 )
5559         return cmp;
5560       if ( pEngineName != rhs.pEngineName )
5561         if ( auto cmp = strcmp( pEngineName, rhs.pEngineName ); cmp != 0 )
5562           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
5563       if ( auto cmp = engineVersion <=> rhs.engineVersion; cmp != 0 )
5564         return cmp;
5565       if ( auto cmp = apiVersion <=> rhs.apiVersion; cmp != 0 )
5566         return cmp;
5567 
5568       return std::strong_ordering::equivalent;
5569     }
5570 #endif
5571 
operator ==VULKAN_HPP_NAMESPACE::ApplicationInfo5572     bool operator==( ApplicationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
5573     {
5574       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) &&
5575              ( ( pApplicationName == rhs.pApplicationName ) || ( strcmp( pApplicationName, rhs.pApplicationName ) == 0 ) ) &&
5576              ( applicationVersion == rhs.applicationVersion ) && ( ( pEngineName == rhs.pEngineName ) || ( strcmp( pEngineName, rhs.pEngineName ) == 0 ) ) &&
5577              ( engineVersion == rhs.engineVersion ) && ( apiVersion == rhs.apiVersion );
5578     }
5579 
operator !=VULKAN_HPP_NAMESPACE::ApplicationInfo5580     bool operator!=( ApplicationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
5581     {
5582       return !operator==( rhs );
5583     }
5584 
5585   public:
5586     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::eApplicationInfo;
5587     const void *                        pNext              = {};
5588     const char *                        pApplicationName   = {};
5589     uint32_t                            applicationVersion = {};
5590     const char *                        pEngineName        = {};
5591     uint32_t                            engineVersion      = {};
5592     uint32_t                            apiVersion         = {};
5593   };
5594 
5595   template <>
5596   struct CppType<StructureType, StructureType::eApplicationInfo>
5597   {
5598     using Type = ApplicationInfo;
5599   };
5600 
5601   struct AttachmentDescription
5602   {
5603     using NativeType = VkAttachmentDescription;
5604 
5605 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
5606     VULKAN_HPP_CONSTEXPR
AttachmentDescriptionVULKAN_HPP_NAMESPACE::AttachmentDescription5607       AttachmentDescription( VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_          = {},
5608                              VULKAN_HPP_NAMESPACE::Format                     format_         = VULKAN_HPP_NAMESPACE::Format::eUndefined,
5609                              VULKAN_HPP_NAMESPACE::SampleCountFlagBits        samples_        = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
5610                              VULKAN_HPP_NAMESPACE::AttachmentLoadOp           loadOp_         = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad,
5611                              VULKAN_HPP_NAMESPACE::AttachmentStoreOp          storeOp_        = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore,
5612                              VULKAN_HPP_NAMESPACE::AttachmentLoadOp           stencilLoadOp_  = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad,
5613                              VULKAN_HPP_NAMESPACE::AttachmentStoreOp          stencilStoreOp_ = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore,
5614                              VULKAN_HPP_NAMESPACE::ImageLayout                initialLayout_  = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
5615                              VULKAN_HPP_NAMESPACE::ImageLayout                finalLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined ) VULKAN_HPP_NOEXCEPT
5616       : flags{ flags_ }
5617       , format{ format_ }
5618       , samples{ samples_ }
5619       , loadOp{ loadOp_ }
5620       , storeOp{ storeOp_ }
5621       , stencilLoadOp{ stencilLoadOp_ }
5622       , stencilStoreOp{ stencilStoreOp_ }
5623       , initialLayout{ initialLayout_ }
5624       , finalLayout{ finalLayout_ }
5625     {
5626     }
5627 
5628     VULKAN_HPP_CONSTEXPR AttachmentDescription( AttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5629 
AttachmentDescriptionVULKAN_HPP_NAMESPACE::AttachmentDescription5630     AttachmentDescription( VkAttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT
5631       : AttachmentDescription( *reinterpret_cast<AttachmentDescription const *>( &rhs ) )
5632     {
5633     }
5634 
5635     AttachmentDescription & operator=( AttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5636 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5637 
operator =VULKAN_HPP_NAMESPACE::AttachmentDescription5638     AttachmentDescription & operator=( VkAttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT
5639     {
5640       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentDescription const *>( &rhs );
5641       return *this;
5642     }
5643 
5644 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFlagsVULKAN_HPP_NAMESPACE::AttachmentDescription5645     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setFlags( VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT
5646     {
5647       flags = flags_;
5648       return *this;
5649     }
5650 
setFormatVULKAN_HPP_NAMESPACE::AttachmentDescription5651     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
5652     {
5653       format = format_;
5654       return *this;
5655     }
5656 
setSamplesVULKAN_HPP_NAMESPACE::AttachmentDescription5657     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT
5658     {
5659       samples = samples_;
5660       return *this;
5661     }
5662 
setLoadOpVULKAN_HPP_NAMESPACE::AttachmentDescription5663     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ ) VULKAN_HPP_NOEXCEPT
5664     {
5665       loadOp = loadOp_;
5666       return *this;
5667     }
5668 
setStoreOpVULKAN_HPP_NAMESPACE::AttachmentDescription5669     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ ) VULKAN_HPP_NOEXCEPT
5670     {
5671       storeOp = storeOp_;
5672       return *this;
5673     }
5674 
setStencilLoadOpVULKAN_HPP_NAMESPACE::AttachmentDescription5675     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setStencilLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp_ ) VULKAN_HPP_NOEXCEPT
5676     {
5677       stencilLoadOp = stencilLoadOp_;
5678       return *this;
5679     }
5680 
setStencilStoreOpVULKAN_HPP_NAMESPACE::AttachmentDescription5681     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setStencilStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_ ) VULKAN_HPP_NOEXCEPT
5682     {
5683       stencilStoreOp = stencilStoreOp_;
5684       return *this;
5685     }
5686 
setInitialLayoutVULKAN_HPP_NAMESPACE::AttachmentDescription5687     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ ) VULKAN_HPP_NOEXCEPT
5688     {
5689       initialLayout = initialLayout_;
5690       return *this;
5691     }
5692 
setFinalLayoutVULKAN_HPP_NAMESPACE::AttachmentDescription5693     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setFinalLayout( VULKAN_HPP_NAMESPACE::ImageLayout finalLayout_ ) VULKAN_HPP_NOEXCEPT
5694     {
5695       finalLayout = finalLayout_;
5696       return *this;
5697     }
5698 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5699 
operator VkAttachmentDescription const&VULKAN_HPP_NAMESPACE::AttachmentDescription5700     operator VkAttachmentDescription const &() const VULKAN_HPP_NOEXCEPT
5701     {
5702       return *reinterpret_cast<const VkAttachmentDescription *>( this );
5703     }
5704 
operator VkAttachmentDescription&VULKAN_HPP_NAMESPACE::AttachmentDescription5705     operator VkAttachmentDescription &() VULKAN_HPP_NOEXCEPT
5706     {
5707       return *reinterpret_cast<VkAttachmentDescription *>( this );
5708     }
5709 
5710 #if defined( VULKAN_HPP_USE_REFLECT )
5711 #  if 14 <= VULKAN_HPP_CPP_VERSION
5712     auto
5713 #  else
5714     std::tuple<VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags const &,
5715                VULKAN_HPP_NAMESPACE::Format const &,
5716                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
5717                VULKAN_HPP_NAMESPACE::AttachmentLoadOp const &,
5718                VULKAN_HPP_NAMESPACE::AttachmentStoreOp const &,
5719                VULKAN_HPP_NAMESPACE::AttachmentLoadOp const &,
5720                VULKAN_HPP_NAMESPACE::AttachmentStoreOp const &,
5721                VULKAN_HPP_NAMESPACE::ImageLayout const &,
5722                VULKAN_HPP_NAMESPACE::ImageLayout const &>
5723 #  endif
reflectVULKAN_HPP_NAMESPACE::AttachmentDescription5724       reflect() const VULKAN_HPP_NOEXCEPT
5725     {
5726       return std::tie( flags, format, samples, loadOp, storeOp, stencilLoadOp, stencilStoreOp, initialLayout, finalLayout );
5727     }
5728 #endif
5729 
5730 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5731     auto operator<=>( AttachmentDescription const & ) const = default;
5732 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentDescription5733     bool operator==( AttachmentDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
5734     {
5735 #  if defined( VULKAN_HPP_USE_REFLECT )
5736       return this->reflect() == rhs.reflect();
5737 #  else
5738       return ( flags == rhs.flags ) && ( format == rhs.format ) && ( samples == rhs.samples ) && ( loadOp == rhs.loadOp ) && ( storeOp == rhs.storeOp ) &&
5739              ( stencilLoadOp == rhs.stencilLoadOp ) && ( stencilStoreOp == rhs.stencilStoreOp ) && ( initialLayout == rhs.initialLayout ) &&
5740              ( finalLayout == rhs.finalLayout );
5741 #  endif
5742     }
5743 
operator !=VULKAN_HPP_NAMESPACE::AttachmentDescription5744     bool operator!=( AttachmentDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
5745     {
5746       return !operator==( rhs );
5747     }
5748 #endif
5749 
5750   public:
5751     VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags          = {};
5752     VULKAN_HPP_NAMESPACE::Format                     format         = VULKAN_HPP_NAMESPACE::Format::eUndefined;
5753     VULKAN_HPP_NAMESPACE::SampleCountFlagBits        samples        = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
5754     VULKAN_HPP_NAMESPACE::AttachmentLoadOp           loadOp         = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad;
5755     VULKAN_HPP_NAMESPACE::AttachmentStoreOp          storeOp        = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore;
5756     VULKAN_HPP_NAMESPACE::AttachmentLoadOp           stencilLoadOp  = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad;
5757     VULKAN_HPP_NAMESPACE::AttachmentStoreOp          stencilStoreOp = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore;
5758     VULKAN_HPP_NAMESPACE::ImageLayout                initialLayout  = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
5759     VULKAN_HPP_NAMESPACE::ImageLayout                finalLayout    = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
5760   };
5761 
5762   struct AttachmentDescription2
5763   {
5764     using NativeType = VkAttachmentDescription2;
5765 
5766     static const bool                                  allowDuplicate = false;
5767     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAttachmentDescription2;
5768 
5769 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentDescription2VULKAN_HPP_NAMESPACE::AttachmentDescription25770     VULKAN_HPP_CONSTEXPR AttachmentDescription2( VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_   = {},
5771                                                  VULKAN_HPP_NAMESPACE::Format                     format_  = VULKAN_HPP_NAMESPACE::Format::eUndefined,
5772                                                  VULKAN_HPP_NAMESPACE::SampleCountFlagBits        samples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
5773                                                  VULKAN_HPP_NAMESPACE::AttachmentLoadOp           loadOp_  = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad,
5774                                                  VULKAN_HPP_NAMESPACE::AttachmentStoreOp          storeOp_ = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore,
5775                                                  VULKAN_HPP_NAMESPACE::AttachmentLoadOp  stencilLoadOp_    = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad,
5776                                                  VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_   = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore,
5777                                                  VULKAN_HPP_NAMESPACE::ImageLayout       initialLayout_    = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
5778                                                  VULKAN_HPP_NAMESPACE::ImageLayout       finalLayout_      = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
5779                                                  const void *                            pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
5780       : pNext{ pNext_ }
5781       , flags{ flags_ }
5782       , format{ format_ }
5783       , samples{ samples_ }
5784       , loadOp{ loadOp_ }
5785       , storeOp{ storeOp_ }
5786       , stencilLoadOp{ stencilLoadOp_ }
5787       , stencilStoreOp{ stencilStoreOp_ }
5788       , initialLayout{ initialLayout_ }
5789       , finalLayout{ finalLayout_ }
5790     {
5791     }
5792 
5793     VULKAN_HPP_CONSTEXPR AttachmentDescription2( AttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5794 
AttachmentDescription2VULKAN_HPP_NAMESPACE::AttachmentDescription25795     AttachmentDescription2( VkAttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT
5796       : AttachmentDescription2( *reinterpret_cast<AttachmentDescription2 const *>( &rhs ) )
5797     {
5798     }
5799 
5800     AttachmentDescription2 & operator=( AttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5801 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5802 
operator =VULKAN_HPP_NAMESPACE::AttachmentDescription25803     AttachmentDescription2 & operator=( VkAttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT
5804     {
5805       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentDescription2 const *>( &rhs );
5806       return *this;
5807     }
5808 
5809 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AttachmentDescription25810     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
5811     {
5812       pNext = pNext_;
5813       return *this;
5814     }
5815 
setFlagsVULKAN_HPP_NAMESPACE::AttachmentDescription25816     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setFlags( VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT
5817     {
5818       flags = flags_;
5819       return *this;
5820     }
5821 
setFormatVULKAN_HPP_NAMESPACE::AttachmentDescription25822     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
5823     {
5824       format = format_;
5825       return *this;
5826     }
5827 
setSamplesVULKAN_HPP_NAMESPACE::AttachmentDescription25828     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT
5829     {
5830       samples = samples_;
5831       return *this;
5832     }
5833 
setLoadOpVULKAN_HPP_NAMESPACE::AttachmentDescription25834     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ ) VULKAN_HPP_NOEXCEPT
5835     {
5836       loadOp = loadOp_;
5837       return *this;
5838     }
5839 
setStoreOpVULKAN_HPP_NAMESPACE::AttachmentDescription25840     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ ) VULKAN_HPP_NOEXCEPT
5841     {
5842       storeOp = storeOp_;
5843       return *this;
5844     }
5845 
setStencilLoadOpVULKAN_HPP_NAMESPACE::AttachmentDescription25846     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setStencilLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp_ ) VULKAN_HPP_NOEXCEPT
5847     {
5848       stencilLoadOp = stencilLoadOp_;
5849       return *this;
5850     }
5851 
setStencilStoreOpVULKAN_HPP_NAMESPACE::AttachmentDescription25852     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setStencilStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_ ) VULKAN_HPP_NOEXCEPT
5853     {
5854       stencilStoreOp = stencilStoreOp_;
5855       return *this;
5856     }
5857 
setInitialLayoutVULKAN_HPP_NAMESPACE::AttachmentDescription25858     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ ) VULKAN_HPP_NOEXCEPT
5859     {
5860       initialLayout = initialLayout_;
5861       return *this;
5862     }
5863 
setFinalLayoutVULKAN_HPP_NAMESPACE::AttachmentDescription25864     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setFinalLayout( VULKAN_HPP_NAMESPACE::ImageLayout finalLayout_ ) VULKAN_HPP_NOEXCEPT
5865     {
5866       finalLayout = finalLayout_;
5867       return *this;
5868     }
5869 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5870 
operator VkAttachmentDescription2 const&VULKAN_HPP_NAMESPACE::AttachmentDescription25871     operator VkAttachmentDescription2 const &() const VULKAN_HPP_NOEXCEPT
5872     {
5873       return *reinterpret_cast<const VkAttachmentDescription2 *>( this );
5874     }
5875 
operator VkAttachmentDescription2&VULKAN_HPP_NAMESPACE::AttachmentDescription25876     operator VkAttachmentDescription2 &() VULKAN_HPP_NOEXCEPT
5877     {
5878       return *reinterpret_cast<VkAttachmentDescription2 *>( this );
5879     }
5880 
5881 #if defined( VULKAN_HPP_USE_REFLECT )
5882 #  if 14 <= VULKAN_HPP_CPP_VERSION
5883     auto
5884 #  else
5885     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
5886                const void * const &,
5887                VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags const &,
5888                VULKAN_HPP_NAMESPACE::Format const &,
5889                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
5890                VULKAN_HPP_NAMESPACE::AttachmentLoadOp const &,
5891                VULKAN_HPP_NAMESPACE::AttachmentStoreOp const &,
5892                VULKAN_HPP_NAMESPACE::AttachmentLoadOp const &,
5893                VULKAN_HPP_NAMESPACE::AttachmentStoreOp const &,
5894                VULKAN_HPP_NAMESPACE::ImageLayout const &,
5895                VULKAN_HPP_NAMESPACE::ImageLayout const &>
5896 #  endif
reflectVULKAN_HPP_NAMESPACE::AttachmentDescription25897       reflect() const VULKAN_HPP_NOEXCEPT
5898     {
5899       return std::tie( sType, pNext, flags, format, samples, loadOp, storeOp, stencilLoadOp, stencilStoreOp, initialLayout, finalLayout );
5900     }
5901 #endif
5902 
5903 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
5904     auto operator<=>( AttachmentDescription2 const & ) const = default;
5905 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentDescription25906     bool operator==( AttachmentDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT
5907     {
5908 #  if defined( VULKAN_HPP_USE_REFLECT )
5909       return this->reflect() == rhs.reflect();
5910 #  else
5911       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( format == rhs.format ) && ( samples == rhs.samples ) &&
5912              ( loadOp == rhs.loadOp ) && ( storeOp == rhs.storeOp ) && ( stencilLoadOp == rhs.stencilLoadOp ) && ( stencilStoreOp == rhs.stencilStoreOp ) &&
5913              ( initialLayout == rhs.initialLayout ) && ( finalLayout == rhs.finalLayout );
5914 #  endif
5915     }
5916 
operator !=VULKAN_HPP_NAMESPACE::AttachmentDescription25917     bool operator!=( AttachmentDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT
5918     {
5919       return !operator==( rhs );
5920     }
5921 #endif
5922 
5923   public:
5924     VULKAN_HPP_NAMESPACE::StructureType              sType          = StructureType::eAttachmentDescription2;
5925     const void *                                     pNext          = {};
5926     VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags          = {};
5927     VULKAN_HPP_NAMESPACE::Format                     format         = VULKAN_HPP_NAMESPACE::Format::eUndefined;
5928     VULKAN_HPP_NAMESPACE::SampleCountFlagBits        samples        = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
5929     VULKAN_HPP_NAMESPACE::AttachmentLoadOp           loadOp         = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad;
5930     VULKAN_HPP_NAMESPACE::AttachmentStoreOp          storeOp        = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore;
5931     VULKAN_HPP_NAMESPACE::AttachmentLoadOp           stencilLoadOp  = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad;
5932     VULKAN_HPP_NAMESPACE::AttachmentStoreOp          stencilStoreOp = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore;
5933     VULKAN_HPP_NAMESPACE::ImageLayout                initialLayout  = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
5934     VULKAN_HPP_NAMESPACE::ImageLayout                finalLayout    = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
5935   };
5936 
5937   template <>
5938   struct CppType<StructureType, StructureType::eAttachmentDescription2>
5939   {
5940     using Type = AttachmentDescription2;
5941   };
5942 
5943   using AttachmentDescription2KHR = AttachmentDescription2;
5944 
5945   struct AttachmentDescriptionStencilLayout
5946   {
5947     using NativeType = VkAttachmentDescriptionStencilLayout;
5948 
5949     static const bool                                  allowDuplicate = false;
5950     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAttachmentDescriptionStencilLayout;
5951 
5952 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
5953     VULKAN_HPP_CONSTEXPR
AttachmentDescriptionStencilLayoutVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout5954       AttachmentDescriptionStencilLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilInitialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
5955                                           VULKAN_HPP_NAMESPACE::ImageLayout stencilFinalLayout_   = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
5956                                           void *                            pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
5957       : pNext{ pNext_ }
5958       , stencilInitialLayout{ stencilInitialLayout_ }
5959       , stencilFinalLayout{ stencilFinalLayout_ }
5960     {
5961     }
5962 
5963     VULKAN_HPP_CONSTEXPR AttachmentDescriptionStencilLayout( AttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5964 
AttachmentDescriptionStencilLayoutVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout5965     AttachmentDescriptionStencilLayout( VkAttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
5966       : AttachmentDescriptionStencilLayout( *reinterpret_cast<AttachmentDescriptionStencilLayout const *>( &rhs ) )
5967     {
5968     }
5969 
5970     AttachmentDescriptionStencilLayout & operator=( AttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5971 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5972 
operator =VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout5973     AttachmentDescriptionStencilLayout & operator=( VkAttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
5974     {
5975       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout const *>( &rhs );
5976       return *this;
5977     }
5978 
5979 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout5980     VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
5981     {
5982       pNext = pNext_;
5983       return *this;
5984     }
5985 
5986     VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout &
setStencilInitialLayoutVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout5987       setStencilInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilInitialLayout_ ) VULKAN_HPP_NOEXCEPT
5988     {
5989       stencilInitialLayout = stencilInitialLayout_;
5990       return *this;
5991     }
5992 
5993     VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout &
setStencilFinalLayoutVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout5994       setStencilFinalLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilFinalLayout_ ) VULKAN_HPP_NOEXCEPT
5995     {
5996       stencilFinalLayout = stencilFinalLayout_;
5997       return *this;
5998     }
5999 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6000 
operator VkAttachmentDescriptionStencilLayout const&VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout6001     operator VkAttachmentDescriptionStencilLayout const &() const VULKAN_HPP_NOEXCEPT
6002     {
6003       return *reinterpret_cast<const VkAttachmentDescriptionStencilLayout *>( this );
6004     }
6005 
operator VkAttachmentDescriptionStencilLayout&VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout6006     operator VkAttachmentDescriptionStencilLayout &() VULKAN_HPP_NOEXCEPT
6007     {
6008       return *reinterpret_cast<VkAttachmentDescriptionStencilLayout *>( this );
6009     }
6010 
6011 #if defined( VULKAN_HPP_USE_REFLECT )
6012 #  if 14 <= VULKAN_HPP_CPP_VERSION
6013     auto
6014 #  else
6015     std::
6016       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ImageLayout const &, VULKAN_HPP_NAMESPACE::ImageLayout const &>
6017 #  endif
reflectVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout6018       reflect() const VULKAN_HPP_NOEXCEPT
6019     {
6020       return std::tie( sType, pNext, stencilInitialLayout, stencilFinalLayout );
6021     }
6022 #endif
6023 
6024 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6025     auto operator<=>( AttachmentDescriptionStencilLayout const & ) const = default;
6026 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout6027     bool operator==( AttachmentDescriptionStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
6028     {
6029 #  if defined( VULKAN_HPP_USE_REFLECT )
6030       return this->reflect() == rhs.reflect();
6031 #  else
6032       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stencilInitialLayout == rhs.stencilInitialLayout ) &&
6033              ( stencilFinalLayout == rhs.stencilFinalLayout );
6034 #  endif
6035     }
6036 
operator !=VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout6037     bool operator!=( AttachmentDescriptionStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
6038     {
6039       return !operator==( rhs );
6040     }
6041 #endif
6042 
6043   public:
6044     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::eAttachmentDescriptionStencilLayout;
6045     void *                              pNext                = {};
6046     VULKAN_HPP_NAMESPACE::ImageLayout   stencilInitialLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
6047     VULKAN_HPP_NAMESPACE::ImageLayout   stencilFinalLayout   = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
6048   };
6049 
6050   template <>
6051   struct CppType<StructureType, StructureType::eAttachmentDescriptionStencilLayout>
6052   {
6053     using Type = AttachmentDescriptionStencilLayout;
6054   };
6055 
6056   using AttachmentDescriptionStencilLayoutKHR = AttachmentDescriptionStencilLayout;
6057 
6058   struct AttachmentReference
6059   {
6060     using NativeType = VkAttachmentReference;
6061 
6062 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentReferenceVULKAN_HPP_NAMESPACE::AttachmentReference6063     VULKAN_HPP_CONSTEXPR AttachmentReference( uint32_t                          attachment_ = {},
6064                                               VULKAN_HPP_NAMESPACE::ImageLayout layout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined ) VULKAN_HPP_NOEXCEPT
6065       : attachment{ attachment_ }
6066       , layout{ layout_ }
6067     {
6068     }
6069 
6070     VULKAN_HPP_CONSTEXPR AttachmentReference( AttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6071 
AttachmentReferenceVULKAN_HPP_NAMESPACE::AttachmentReference6072     AttachmentReference( VkAttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT : AttachmentReference( *reinterpret_cast<AttachmentReference const *>( &rhs ) )
6073     {
6074     }
6075 
6076     AttachmentReference & operator=( AttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6077 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6078 
operator =VULKAN_HPP_NAMESPACE::AttachmentReference6079     AttachmentReference & operator=( VkAttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT
6080     {
6081       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentReference const *>( &rhs );
6082       return *this;
6083     }
6084 
6085 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAttachmentVULKAN_HPP_NAMESPACE::AttachmentReference6086     VULKAN_HPP_CONSTEXPR_14 AttachmentReference & setAttachment( uint32_t attachment_ ) VULKAN_HPP_NOEXCEPT
6087     {
6088       attachment = attachment_;
6089       return *this;
6090     }
6091 
setLayoutVULKAN_HPP_NAMESPACE::AttachmentReference6092     VULKAN_HPP_CONSTEXPR_14 AttachmentReference & setLayout( VULKAN_HPP_NAMESPACE::ImageLayout layout_ ) VULKAN_HPP_NOEXCEPT
6093     {
6094       layout = layout_;
6095       return *this;
6096     }
6097 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6098 
operator VkAttachmentReference const&VULKAN_HPP_NAMESPACE::AttachmentReference6099     operator VkAttachmentReference const &() const VULKAN_HPP_NOEXCEPT
6100     {
6101       return *reinterpret_cast<const VkAttachmentReference *>( this );
6102     }
6103 
operator VkAttachmentReference&VULKAN_HPP_NAMESPACE::AttachmentReference6104     operator VkAttachmentReference &() VULKAN_HPP_NOEXCEPT
6105     {
6106       return *reinterpret_cast<VkAttachmentReference *>( this );
6107     }
6108 
6109 #if defined( VULKAN_HPP_USE_REFLECT )
6110 #  if 14 <= VULKAN_HPP_CPP_VERSION
6111     auto
6112 #  else
6113     std::tuple<uint32_t const &, VULKAN_HPP_NAMESPACE::ImageLayout const &>
6114 #  endif
reflectVULKAN_HPP_NAMESPACE::AttachmentReference6115       reflect() const VULKAN_HPP_NOEXCEPT
6116     {
6117       return std::tie( attachment, layout );
6118     }
6119 #endif
6120 
6121 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6122     auto operator<=>( AttachmentReference const & ) const = default;
6123 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentReference6124     bool operator==( AttachmentReference const & rhs ) const VULKAN_HPP_NOEXCEPT
6125     {
6126 #  if defined( VULKAN_HPP_USE_REFLECT )
6127       return this->reflect() == rhs.reflect();
6128 #  else
6129       return ( attachment == rhs.attachment ) && ( layout == rhs.layout );
6130 #  endif
6131     }
6132 
operator !=VULKAN_HPP_NAMESPACE::AttachmentReference6133     bool operator!=( AttachmentReference const & rhs ) const VULKAN_HPP_NOEXCEPT
6134     {
6135       return !operator==( rhs );
6136     }
6137 #endif
6138 
6139   public:
6140     uint32_t                          attachment = {};
6141     VULKAN_HPP_NAMESPACE::ImageLayout layout     = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
6142   };
6143 
6144   struct AttachmentReference2
6145   {
6146     using NativeType = VkAttachmentReference2;
6147 
6148     static const bool                                  allowDuplicate = false;
6149     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAttachmentReference2;
6150 
6151 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentReference2VULKAN_HPP_NAMESPACE::AttachmentReference26152     VULKAN_HPP_CONSTEXPR AttachmentReference2( uint32_t                               attachment_ = {},
6153                                                VULKAN_HPP_NAMESPACE::ImageLayout      layout_     = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
6154                                                VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {},
6155                                                const void *                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
6156       : pNext{ pNext_ }
6157       , attachment{ attachment_ }
6158       , layout{ layout_ }
6159       , aspectMask{ aspectMask_ }
6160     {
6161     }
6162 
6163     VULKAN_HPP_CONSTEXPR AttachmentReference2( AttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6164 
AttachmentReference2VULKAN_HPP_NAMESPACE::AttachmentReference26165     AttachmentReference2( VkAttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT
6166       : AttachmentReference2( *reinterpret_cast<AttachmentReference2 const *>( &rhs ) )
6167     {
6168     }
6169 
6170     AttachmentReference2 & operator=( AttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6171 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6172 
operator =VULKAN_HPP_NAMESPACE::AttachmentReference26173     AttachmentReference2 & operator=( VkAttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT
6174     {
6175       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentReference2 const *>( &rhs );
6176       return *this;
6177     }
6178 
6179 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AttachmentReference26180     VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
6181     {
6182       pNext = pNext_;
6183       return *this;
6184     }
6185 
setAttachmentVULKAN_HPP_NAMESPACE::AttachmentReference26186     VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & setAttachment( uint32_t attachment_ ) VULKAN_HPP_NOEXCEPT
6187     {
6188       attachment = attachment_;
6189       return *this;
6190     }
6191 
setLayoutVULKAN_HPP_NAMESPACE::AttachmentReference26192     VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & setLayout( VULKAN_HPP_NAMESPACE::ImageLayout layout_ ) VULKAN_HPP_NOEXCEPT
6193     {
6194       layout = layout_;
6195       return *this;
6196     }
6197 
setAspectMaskVULKAN_HPP_NAMESPACE::AttachmentReference26198     VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
6199     {
6200       aspectMask = aspectMask_;
6201       return *this;
6202     }
6203 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6204 
operator VkAttachmentReference2 const&VULKAN_HPP_NAMESPACE::AttachmentReference26205     operator VkAttachmentReference2 const &() const VULKAN_HPP_NOEXCEPT
6206     {
6207       return *reinterpret_cast<const VkAttachmentReference2 *>( this );
6208     }
6209 
operator VkAttachmentReference2&VULKAN_HPP_NAMESPACE::AttachmentReference26210     operator VkAttachmentReference2 &() VULKAN_HPP_NOEXCEPT
6211     {
6212       return *reinterpret_cast<VkAttachmentReference2 *>( this );
6213     }
6214 
6215 #if defined( VULKAN_HPP_USE_REFLECT )
6216 #  if 14 <= VULKAN_HPP_CPP_VERSION
6217     auto
6218 #  else
6219     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
6220                const void * const &,
6221                uint32_t const &,
6222                VULKAN_HPP_NAMESPACE::ImageLayout const &,
6223                VULKAN_HPP_NAMESPACE::ImageAspectFlags const &>
6224 #  endif
reflectVULKAN_HPP_NAMESPACE::AttachmentReference26225       reflect() const VULKAN_HPP_NOEXCEPT
6226     {
6227       return std::tie( sType, pNext, attachment, layout, aspectMask );
6228     }
6229 #endif
6230 
6231 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6232     auto operator<=>( AttachmentReference2 const & ) const = default;
6233 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentReference26234     bool operator==( AttachmentReference2 const & rhs ) const VULKAN_HPP_NOEXCEPT
6235     {
6236 #  if defined( VULKAN_HPP_USE_REFLECT )
6237       return this->reflect() == rhs.reflect();
6238 #  else
6239       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachment == rhs.attachment ) && ( layout == rhs.layout ) &&
6240              ( aspectMask == rhs.aspectMask );
6241 #  endif
6242     }
6243 
operator !=VULKAN_HPP_NAMESPACE::AttachmentReference26244     bool operator!=( AttachmentReference2 const & rhs ) const VULKAN_HPP_NOEXCEPT
6245     {
6246       return !operator==( rhs );
6247     }
6248 #endif
6249 
6250   public:
6251     VULKAN_HPP_NAMESPACE::StructureType    sType      = StructureType::eAttachmentReference2;
6252     const void *                           pNext      = {};
6253     uint32_t                               attachment = {};
6254     VULKAN_HPP_NAMESPACE::ImageLayout      layout     = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
6255     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {};
6256   };
6257 
6258   template <>
6259   struct CppType<StructureType, StructureType::eAttachmentReference2>
6260   {
6261     using Type = AttachmentReference2;
6262   };
6263 
6264   using AttachmentReference2KHR = AttachmentReference2;
6265 
6266   struct AttachmentReferenceStencilLayout
6267   {
6268     using NativeType = VkAttachmentReferenceStencilLayout;
6269 
6270     static const bool                                  allowDuplicate = false;
6271     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAttachmentReferenceStencilLayout;
6272 
6273 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentReferenceStencilLayoutVULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout6274     VULKAN_HPP_CONSTEXPR AttachmentReferenceStencilLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
6275                                                            void *                            pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
6276       : pNext{ pNext_ }
6277       , stencilLayout{ stencilLayout_ }
6278     {
6279     }
6280 
6281     VULKAN_HPP_CONSTEXPR AttachmentReferenceStencilLayout( AttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6282 
AttachmentReferenceStencilLayoutVULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout6283     AttachmentReferenceStencilLayout( VkAttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
6284       : AttachmentReferenceStencilLayout( *reinterpret_cast<AttachmentReferenceStencilLayout const *>( &rhs ) )
6285     {
6286     }
6287 
6288     AttachmentReferenceStencilLayout & operator=( AttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6289 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6290 
operator =VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout6291     AttachmentReferenceStencilLayout & operator=( VkAttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
6292     {
6293       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout const *>( &rhs );
6294       return *this;
6295     }
6296 
6297 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout6298     VULKAN_HPP_CONSTEXPR_14 AttachmentReferenceStencilLayout & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
6299     {
6300       pNext = pNext_;
6301       return *this;
6302     }
6303 
setStencilLayoutVULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout6304     VULKAN_HPP_CONSTEXPR_14 AttachmentReferenceStencilLayout & setStencilLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilLayout_ ) VULKAN_HPP_NOEXCEPT
6305     {
6306       stencilLayout = stencilLayout_;
6307       return *this;
6308     }
6309 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6310 
operator VkAttachmentReferenceStencilLayout const&VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout6311     operator VkAttachmentReferenceStencilLayout const &() const VULKAN_HPP_NOEXCEPT
6312     {
6313       return *reinterpret_cast<const VkAttachmentReferenceStencilLayout *>( this );
6314     }
6315 
operator VkAttachmentReferenceStencilLayout&VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout6316     operator VkAttachmentReferenceStencilLayout &() VULKAN_HPP_NOEXCEPT
6317     {
6318       return *reinterpret_cast<VkAttachmentReferenceStencilLayout *>( this );
6319     }
6320 
6321 #if defined( VULKAN_HPP_USE_REFLECT )
6322 #  if 14 <= VULKAN_HPP_CPP_VERSION
6323     auto
6324 #  else
6325     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ImageLayout const &>
6326 #  endif
reflectVULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout6327       reflect() const VULKAN_HPP_NOEXCEPT
6328     {
6329       return std::tie( sType, pNext, stencilLayout );
6330     }
6331 #endif
6332 
6333 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6334     auto operator<=>( AttachmentReferenceStencilLayout const & ) const = default;
6335 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout6336     bool operator==( AttachmentReferenceStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
6337     {
6338 #  if defined( VULKAN_HPP_USE_REFLECT )
6339       return this->reflect() == rhs.reflect();
6340 #  else
6341       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stencilLayout == rhs.stencilLayout );
6342 #  endif
6343     }
6344 
operator !=VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout6345     bool operator!=( AttachmentReferenceStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
6346     {
6347       return !operator==( rhs );
6348     }
6349 #endif
6350 
6351   public:
6352     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eAttachmentReferenceStencilLayout;
6353     void *                              pNext         = {};
6354     VULKAN_HPP_NAMESPACE::ImageLayout   stencilLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
6355   };
6356 
6357   template <>
6358   struct CppType<StructureType, StructureType::eAttachmentReferenceStencilLayout>
6359   {
6360     using Type = AttachmentReferenceStencilLayout;
6361   };
6362 
6363   using AttachmentReferenceStencilLayoutKHR = AttachmentReferenceStencilLayout;
6364 
6365   struct AttachmentSampleCountInfoAMD
6366   {
6367     using NativeType = VkAttachmentSampleCountInfoAMD;
6368 
6369     static const bool                                  allowDuplicate = false;
6370     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eAttachmentSampleCountInfoAMD;
6371 
6372 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
6373     VULKAN_HPP_CONSTEXPR
AttachmentSampleCountInfoAMDVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6374       AttachmentSampleCountInfoAMD( uint32_t                                          colorAttachmentCount_    = {},
6375                                     const VULKAN_HPP_NAMESPACE::SampleCountFlagBits * pColorAttachmentSamples_ = {},
6376                                     VULKAN_HPP_NAMESPACE::SampleCountFlagBits depthStencilAttachmentSamples_   = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
6377                                     const void *                              pNext_                           = nullptr ) VULKAN_HPP_NOEXCEPT
6378       : pNext{ pNext_ }
6379       , colorAttachmentCount{ colorAttachmentCount_ }
6380       , pColorAttachmentSamples{ pColorAttachmentSamples_ }
6381       , depthStencilAttachmentSamples{ depthStencilAttachmentSamples_ }
6382     {
6383     }
6384 
6385     VULKAN_HPP_CONSTEXPR AttachmentSampleCountInfoAMD( AttachmentSampleCountInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6386 
AttachmentSampleCountInfoAMDVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6387     AttachmentSampleCountInfoAMD( VkAttachmentSampleCountInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
6388       : AttachmentSampleCountInfoAMD( *reinterpret_cast<AttachmentSampleCountInfoAMD const *>( &rhs ) )
6389     {
6390     }
6391 
6392 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
AttachmentSampleCountInfoAMDVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6393     AttachmentSampleCountInfoAMD(
6394       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SampleCountFlagBits> const & colorAttachmentSamples_,
6395       VULKAN_HPP_NAMESPACE::SampleCountFlagBits depthStencilAttachmentSamples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
6396       const void *                              pNext_                         = nullptr )
6397       : pNext( pNext_ )
6398       , colorAttachmentCount( static_cast<uint32_t>( colorAttachmentSamples_.size() ) )
6399       , pColorAttachmentSamples( colorAttachmentSamples_.data() )
6400       , depthStencilAttachmentSamples( depthStencilAttachmentSamples_ )
6401     {
6402     }
6403 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
6404 
6405     AttachmentSampleCountInfoAMD & operator=( AttachmentSampleCountInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6406 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6407 
operator =VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6408     AttachmentSampleCountInfoAMD & operator=( VkAttachmentSampleCountInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
6409     {
6410       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD const *>( &rhs );
6411       return *this;
6412     }
6413 
6414 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6415     VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
6416     {
6417       pNext = pNext_;
6418       return *this;
6419     }
6420 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6421     VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
6422     {
6423       colorAttachmentCount = colorAttachmentCount_;
6424       return *this;
6425     }
6426 
6427     VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD &
setPColorAttachmentSamplesVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6428       setPColorAttachmentSamples( const VULKAN_HPP_NAMESPACE::SampleCountFlagBits * pColorAttachmentSamples_ ) VULKAN_HPP_NOEXCEPT
6429     {
6430       pColorAttachmentSamples = pColorAttachmentSamples_;
6431       return *this;
6432     }
6433 
6434 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentSamplesVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6435     AttachmentSampleCountInfoAMD & setColorAttachmentSamples(
6436       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SampleCountFlagBits> const & colorAttachmentSamples_ ) VULKAN_HPP_NOEXCEPT
6437     {
6438       colorAttachmentCount    = static_cast<uint32_t>( colorAttachmentSamples_.size() );
6439       pColorAttachmentSamples = colorAttachmentSamples_.data();
6440       return *this;
6441     }
6442 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
6443 
6444     VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD &
setDepthStencilAttachmentSamplesVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6445       setDepthStencilAttachmentSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits depthStencilAttachmentSamples_ ) VULKAN_HPP_NOEXCEPT
6446     {
6447       depthStencilAttachmentSamples = depthStencilAttachmentSamples_;
6448       return *this;
6449     }
6450 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6451 
operator VkAttachmentSampleCountInfoAMD const&VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6452     operator VkAttachmentSampleCountInfoAMD const &() const VULKAN_HPP_NOEXCEPT
6453     {
6454       return *reinterpret_cast<const VkAttachmentSampleCountInfoAMD *>( this );
6455     }
6456 
operator VkAttachmentSampleCountInfoAMD&VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6457     operator VkAttachmentSampleCountInfoAMD &() VULKAN_HPP_NOEXCEPT
6458     {
6459       return *reinterpret_cast<VkAttachmentSampleCountInfoAMD *>( this );
6460     }
6461 
6462 #if defined( VULKAN_HPP_USE_REFLECT )
6463 #  if 14 <= VULKAN_HPP_CPP_VERSION
6464     auto
6465 #  else
6466     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
6467                const void * const &,
6468                uint32_t const &,
6469                const VULKAN_HPP_NAMESPACE::SampleCountFlagBits * const &,
6470                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &>
6471 #  endif
reflectVULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6472       reflect() const VULKAN_HPP_NOEXCEPT
6473     {
6474       return std::tie( sType, pNext, colorAttachmentCount, pColorAttachmentSamples, depthStencilAttachmentSamples );
6475     }
6476 #endif
6477 
6478 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6479     auto operator<=>( AttachmentSampleCountInfoAMD const & ) const = default;
6480 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6481     bool operator==( AttachmentSampleCountInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
6482     {
6483 #  if defined( VULKAN_HPP_USE_REFLECT )
6484       return this->reflect() == rhs.reflect();
6485 #  else
6486       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) &&
6487              ( pColorAttachmentSamples == rhs.pColorAttachmentSamples ) && ( depthStencilAttachmentSamples == rhs.depthStencilAttachmentSamples );
6488 #  endif
6489     }
6490 
operator !=VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD6491     bool operator!=( AttachmentSampleCountInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
6492     {
6493       return !operator==( rhs );
6494     }
6495 #endif
6496 
6497   public:
6498     VULKAN_HPP_NAMESPACE::StructureType               sType                         = StructureType::eAttachmentSampleCountInfoAMD;
6499     const void *                                      pNext                         = {};
6500     uint32_t                                          colorAttachmentCount          = {};
6501     const VULKAN_HPP_NAMESPACE::SampleCountFlagBits * pColorAttachmentSamples       = {};
6502     VULKAN_HPP_NAMESPACE::SampleCountFlagBits         depthStencilAttachmentSamples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
6503   };
6504 
6505   template <>
6506   struct CppType<StructureType, StructureType::eAttachmentSampleCountInfoAMD>
6507   {
6508     using Type = AttachmentSampleCountInfoAMD;
6509   };
6510 
6511   using AttachmentSampleCountInfoNV = AttachmentSampleCountInfoAMD;
6512 
6513   struct Extent2D
6514   {
6515     using NativeType = VkExtent2D;
6516 
6517 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Extent2DVULKAN_HPP_NAMESPACE::Extent2D6518     VULKAN_HPP_CONSTEXPR Extent2D( uint32_t width_ = {}, uint32_t height_ = {} ) VULKAN_HPP_NOEXCEPT
6519       : width{ width_ }
6520       , height{ height_ }
6521     {
6522     }
6523 
6524     VULKAN_HPP_CONSTEXPR Extent2D( Extent2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6525 
Extent2DVULKAN_HPP_NAMESPACE::Extent2D6526     Extent2D( VkExtent2D const & rhs ) VULKAN_HPP_NOEXCEPT : Extent2D( *reinterpret_cast<Extent2D const *>( &rhs ) ) {}
6527 
6528     Extent2D & operator=( Extent2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6529 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6530 
operator =VULKAN_HPP_NAMESPACE::Extent2D6531     Extent2D & operator=( VkExtent2D const & rhs ) VULKAN_HPP_NOEXCEPT
6532     {
6533       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Extent2D const *>( &rhs );
6534       return *this;
6535     }
6536 
6537 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setWidthVULKAN_HPP_NAMESPACE::Extent2D6538     VULKAN_HPP_CONSTEXPR_14 Extent2D & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
6539     {
6540       width = width_;
6541       return *this;
6542     }
6543 
setHeightVULKAN_HPP_NAMESPACE::Extent2D6544     VULKAN_HPP_CONSTEXPR_14 Extent2D & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
6545     {
6546       height = height_;
6547       return *this;
6548     }
6549 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6550 
operator VkExtent2D const&VULKAN_HPP_NAMESPACE::Extent2D6551     operator VkExtent2D const &() const VULKAN_HPP_NOEXCEPT
6552     {
6553       return *reinterpret_cast<const VkExtent2D *>( this );
6554     }
6555 
operator VkExtent2D&VULKAN_HPP_NAMESPACE::Extent2D6556     operator VkExtent2D &() VULKAN_HPP_NOEXCEPT
6557     {
6558       return *reinterpret_cast<VkExtent2D *>( this );
6559     }
6560 
6561 #if defined( VULKAN_HPP_USE_REFLECT )
6562 #  if 14 <= VULKAN_HPP_CPP_VERSION
6563     auto
6564 #  else
6565     std::tuple<uint32_t const &, uint32_t const &>
6566 #  endif
reflectVULKAN_HPP_NAMESPACE::Extent2D6567       reflect() const VULKAN_HPP_NOEXCEPT
6568     {
6569       return std::tie( width, height );
6570     }
6571 #endif
6572 
6573 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6574     auto operator<=>( Extent2D const & ) const = default;
6575 #else
operator ==VULKAN_HPP_NAMESPACE::Extent2D6576     bool operator==( Extent2D const & rhs ) const VULKAN_HPP_NOEXCEPT
6577     {
6578 #  if defined( VULKAN_HPP_USE_REFLECT )
6579       return this->reflect() == rhs.reflect();
6580 #  else
6581       return ( width == rhs.width ) && ( height == rhs.height );
6582 #  endif
6583     }
6584 
operator !=VULKAN_HPP_NAMESPACE::Extent2D6585     bool operator!=( Extent2D const & rhs ) const VULKAN_HPP_NOEXCEPT
6586     {
6587       return !operator==( rhs );
6588     }
6589 #endif
6590 
6591   public:
6592     uint32_t width  = {};
6593     uint32_t height = {};
6594   };
6595 
6596   struct SampleLocationEXT
6597   {
6598     using NativeType = VkSampleLocationEXT;
6599 
6600 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SampleLocationEXTVULKAN_HPP_NAMESPACE::SampleLocationEXT6601     VULKAN_HPP_CONSTEXPR SampleLocationEXT( float x_ = {}, float y_ = {} ) VULKAN_HPP_NOEXCEPT
6602       : x{ x_ }
6603       , y{ y_ }
6604     {
6605     }
6606 
6607     VULKAN_HPP_CONSTEXPR SampleLocationEXT( SampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6608 
SampleLocationEXTVULKAN_HPP_NAMESPACE::SampleLocationEXT6609     SampleLocationEXT( VkSampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT : SampleLocationEXT( *reinterpret_cast<SampleLocationEXT const *>( &rhs ) ) {}
6610 
6611     SampleLocationEXT & operator=( SampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6612 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6613 
operator =VULKAN_HPP_NAMESPACE::SampleLocationEXT6614     SampleLocationEXT & operator=( VkSampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT
6615     {
6616       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SampleLocationEXT const *>( &rhs );
6617       return *this;
6618     }
6619 
6620 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::SampleLocationEXT6621     VULKAN_HPP_CONSTEXPR_14 SampleLocationEXT & setX( float x_ ) VULKAN_HPP_NOEXCEPT
6622     {
6623       x = x_;
6624       return *this;
6625     }
6626 
setYVULKAN_HPP_NAMESPACE::SampleLocationEXT6627     VULKAN_HPP_CONSTEXPR_14 SampleLocationEXT & setY( float y_ ) VULKAN_HPP_NOEXCEPT
6628     {
6629       y = y_;
6630       return *this;
6631     }
6632 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6633 
operator VkSampleLocationEXT const&VULKAN_HPP_NAMESPACE::SampleLocationEXT6634     operator VkSampleLocationEXT const &() const VULKAN_HPP_NOEXCEPT
6635     {
6636       return *reinterpret_cast<const VkSampleLocationEXT *>( this );
6637     }
6638 
operator VkSampleLocationEXT&VULKAN_HPP_NAMESPACE::SampleLocationEXT6639     operator VkSampleLocationEXT &() VULKAN_HPP_NOEXCEPT
6640     {
6641       return *reinterpret_cast<VkSampleLocationEXT *>( this );
6642     }
6643 
6644 #if defined( VULKAN_HPP_USE_REFLECT )
6645 #  if 14 <= VULKAN_HPP_CPP_VERSION
6646     auto
6647 #  else
6648     std::tuple<float const &, float const &>
6649 #  endif
reflectVULKAN_HPP_NAMESPACE::SampleLocationEXT6650       reflect() const VULKAN_HPP_NOEXCEPT
6651     {
6652       return std::tie( x, y );
6653     }
6654 #endif
6655 
6656 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6657     auto operator<=>( SampleLocationEXT const & ) const = default;
6658 #else
operator ==VULKAN_HPP_NAMESPACE::SampleLocationEXT6659     bool operator==( SampleLocationEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
6660     {
6661 #  if defined( VULKAN_HPP_USE_REFLECT )
6662       return this->reflect() == rhs.reflect();
6663 #  else
6664       return ( x == rhs.x ) && ( y == rhs.y );
6665 #  endif
6666     }
6667 
operator !=VULKAN_HPP_NAMESPACE::SampleLocationEXT6668     bool operator!=( SampleLocationEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
6669     {
6670       return !operator==( rhs );
6671     }
6672 #endif
6673 
6674   public:
6675     float x = {};
6676     float y = {};
6677   };
6678 
6679   struct SampleLocationsInfoEXT
6680   {
6681     using NativeType = VkSampleLocationsInfoEXT;
6682 
6683     static const bool                                  allowDuplicate = false;
6684     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSampleLocationsInfoEXT;
6685 
6686 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
6687     VULKAN_HPP_CONSTEXPR
SampleLocationsInfoEXTVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6688       SampleLocationsInfoEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits       sampleLocationsPerPixel_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
6689                               VULKAN_HPP_NAMESPACE::Extent2D                  sampleLocationGridSize_  = {},
6690                               uint32_t                                        sampleLocationsCount_    = {},
6691                               const VULKAN_HPP_NAMESPACE::SampleLocationEXT * pSampleLocations_        = {},
6692                               const void *                                    pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
6693       : pNext{ pNext_ }
6694       , sampleLocationsPerPixel{ sampleLocationsPerPixel_ }
6695       , sampleLocationGridSize{ sampleLocationGridSize_ }
6696       , sampleLocationsCount{ sampleLocationsCount_ }
6697       , pSampleLocations{ pSampleLocations_ }
6698     {
6699     }
6700 
6701     VULKAN_HPP_CONSTEXPR SampleLocationsInfoEXT( SampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6702 
SampleLocationsInfoEXTVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6703     SampleLocationsInfoEXT( VkSampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
6704       : SampleLocationsInfoEXT( *reinterpret_cast<SampleLocationsInfoEXT const *>( &rhs ) )
6705     {
6706     }
6707 
6708 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SampleLocationsInfoEXTVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6709     SampleLocationsInfoEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits                                                            sampleLocationsPerPixel_,
6710                             VULKAN_HPP_NAMESPACE::Extent2D                                                                       sampleLocationGridSize_,
6711                             VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SampleLocationEXT> const & sampleLocations_,
6712                             const void *                                                                                         pNext_ = nullptr )
6713       : pNext( pNext_ )
6714       , sampleLocationsPerPixel( sampleLocationsPerPixel_ )
6715       , sampleLocationGridSize( sampleLocationGridSize_ )
6716       , sampleLocationsCount( static_cast<uint32_t>( sampleLocations_.size() ) )
6717       , pSampleLocations( sampleLocations_.data() )
6718     {
6719     }
6720 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
6721 
6722     SampleLocationsInfoEXT & operator=( SampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6723 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6724 
operator =VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6725     SampleLocationsInfoEXT & operator=( VkSampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
6726     {
6727       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const *>( &rhs );
6728       return *this;
6729     }
6730 
6731 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6732     VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
6733     {
6734       pNext = pNext_;
6735       return *this;
6736     }
6737 
6738     VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT &
setSampleLocationsPerPixelVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6739       setSampleLocationsPerPixel( VULKAN_HPP_NAMESPACE::SampleCountFlagBits sampleLocationsPerPixel_ ) VULKAN_HPP_NOEXCEPT
6740     {
6741       sampleLocationsPerPixel = sampleLocationsPerPixel_;
6742       return *this;
6743     }
6744 
6745     VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT &
setSampleLocationGridSizeVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6746       setSampleLocationGridSize( VULKAN_HPP_NAMESPACE::Extent2D const & sampleLocationGridSize_ ) VULKAN_HPP_NOEXCEPT
6747     {
6748       sampleLocationGridSize = sampleLocationGridSize_;
6749       return *this;
6750     }
6751 
setSampleLocationsCountVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6752     VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & setSampleLocationsCount( uint32_t sampleLocationsCount_ ) VULKAN_HPP_NOEXCEPT
6753     {
6754       sampleLocationsCount = sampleLocationsCount_;
6755       return *this;
6756     }
6757 
6758     VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT &
setPSampleLocationsVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6759       setPSampleLocations( const VULKAN_HPP_NAMESPACE::SampleLocationEXT * pSampleLocations_ ) VULKAN_HPP_NOEXCEPT
6760     {
6761       pSampleLocations = pSampleLocations_;
6762       return *this;
6763     }
6764 
6765 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSampleLocationsVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6766     SampleLocationsInfoEXT & setSampleLocations(
6767       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SampleLocationEXT> const & sampleLocations_ ) VULKAN_HPP_NOEXCEPT
6768     {
6769       sampleLocationsCount = static_cast<uint32_t>( sampleLocations_.size() );
6770       pSampleLocations     = sampleLocations_.data();
6771       return *this;
6772     }
6773 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
6774 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6775 
operator VkSampleLocationsInfoEXT const&VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6776     operator VkSampleLocationsInfoEXT const &() const VULKAN_HPP_NOEXCEPT
6777     {
6778       return *reinterpret_cast<const VkSampleLocationsInfoEXT *>( this );
6779     }
6780 
operator VkSampleLocationsInfoEXT&VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6781     operator VkSampleLocationsInfoEXT &() VULKAN_HPP_NOEXCEPT
6782     {
6783       return *reinterpret_cast<VkSampleLocationsInfoEXT *>( this );
6784     }
6785 
6786 #if defined( VULKAN_HPP_USE_REFLECT )
6787 #  if 14 <= VULKAN_HPP_CPP_VERSION
6788     auto
6789 #  else
6790     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
6791                const void * const &,
6792                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
6793                VULKAN_HPP_NAMESPACE::Extent2D const &,
6794                uint32_t const &,
6795                const VULKAN_HPP_NAMESPACE::SampleLocationEXT * const &>
6796 #  endif
reflectVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6797       reflect() const VULKAN_HPP_NOEXCEPT
6798     {
6799       return std::tie( sType, pNext, sampleLocationsPerPixel, sampleLocationGridSize, sampleLocationsCount, pSampleLocations );
6800     }
6801 #endif
6802 
6803 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6804     auto operator<=>( SampleLocationsInfoEXT const & ) const = default;
6805 #else
operator ==VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6806     bool operator==( SampleLocationsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
6807     {
6808 #  if defined( VULKAN_HPP_USE_REFLECT )
6809       return this->reflect() == rhs.reflect();
6810 #  else
6811       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sampleLocationsPerPixel == rhs.sampleLocationsPerPixel ) &&
6812              ( sampleLocationGridSize == rhs.sampleLocationGridSize ) && ( sampleLocationsCount == rhs.sampleLocationsCount ) &&
6813              ( pSampleLocations == rhs.pSampleLocations );
6814 #  endif
6815     }
6816 
operator !=VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT6817     bool operator!=( SampleLocationsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
6818     {
6819       return !operator==( rhs );
6820     }
6821 #endif
6822 
6823   public:
6824     VULKAN_HPP_NAMESPACE::StructureType             sType                   = StructureType::eSampleLocationsInfoEXT;
6825     const void *                                    pNext                   = {};
6826     VULKAN_HPP_NAMESPACE::SampleCountFlagBits       sampleLocationsPerPixel = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
6827     VULKAN_HPP_NAMESPACE::Extent2D                  sampleLocationGridSize  = {};
6828     uint32_t                                        sampleLocationsCount    = {};
6829     const VULKAN_HPP_NAMESPACE::SampleLocationEXT * pSampleLocations        = {};
6830   };
6831 
6832   template <>
6833   struct CppType<StructureType, StructureType::eSampleLocationsInfoEXT>
6834   {
6835     using Type = SampleLocationsInfoEXT;
6836   };
6837 
6838   struct AttachmentSampleLocationsEXT
6839   {
6840     using NativeType = VkAttachmentSampleLocationsEXT;
6841 
6842 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentSampleLocationsEXTVULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT6843     VULKAN_HPP_CONSTEXPR AttachmentSampleLocationsEXT( uint32_t                                     attachmentIndex_     = {},
6844                                                        VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo_ = {} ) VULKAN_HPP_NOEXCEPT
6845       : attachmentIndex{ attachmentIndex_ }
6846       , sampleLocationsInfo{ sampleLocationsInfo_ }
6847     {
6848     }
6849 
6850     VULKAN_HPP_CONSTEXPR AttachmentSampleLocationsEXT( AttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6851 
AttachmentSampleLocationsEXTVULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT6852     AttachmentSampleLocationsEXT( VkAttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
6853       : AttachmentSampleLocationsEXT( *reinterpret_cast<AttachmentSampleLocationsEXT const *>( &rhs ) )
6854     {
6855     }
6856 
6857     AttachmentSampleLocationsEXT & operator=( AttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6858 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6859 
operator =VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT6860     AttachmentSampleLocationsEXT & operator=( VkAttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
6861     {
6862       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT const *>( &rhs );
6863       return *this;
6864     }
6865 
6866 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAttachmentIndexVULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT6867     VULKAN_HPP_CONSTEXPR_14 AttachmentSampleLocationsEXT & setAttachmentIndex( uint32_t attachmentIndex_ ) VULKAN_HPP_NOEXCEPT
6868     {
6869       attachmentIndex = attachmentIndex_;
6870       return *this;
6871     }
6872 
6873     VULKAN_HPP_CONSTEXPR_14 AttachmentSampleLocationsEXT &
setSampleLocationsInfoVULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT6874       setSampleLocationsInfo( VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const & sampleLocationsInfo_ ) VULKAN_HPP_NOEXCEPT
6875     {
6876       sampleLocationsInfo = sampleLocationsInfo_;
6877       return *this;
6878     }
6879 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6880 
operator VkAttachmentSampleLocationsEXT const&VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT6881     operator VkAttachmentSampleLocationsEXT const &() const VULKAN_HPP_NOEXCEPT
6882     {
6883       return *reinterpret_cast<const VkAttachmentSampleLocationsEXT *>( this );
6884     }
6885 
operator VkAttachmentSampleLocationsEXT&VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT6886     operator VkAttachmentSampleLocationsEXT &() VULKAN_HPP_NOEXCEPT
6887     {
6888       return *reinterpret_cast<VkAttachmentSampleLocationsEXT *>( this );
6889     }
6890 
6891 #if defined( VULKAN_HPP_USE_REFLECT )
6892 #  if 14 <= VULKAN_HPP_CPP_VERSION
6893     auto
6894 #  else
6895     std::tuple<uint32_t const &, VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const &>
6896 #  endif
reflectVULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT6897       reflect() const VULKAN_HPP_NOEXCEPT
6898     {
6899       return std::tie( attachmentIndex, sampleLocationsInfo );
6900     }
6901 #endif
6902 
6903 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6904     auto operator<=>( AttachmentSampleLocationsEXT const & ) const = default;
6905 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT6906     bool operator==( AttachmentSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
6907     {
6908 #  if defined( VULKAN_HPP_USE_REFLECT )
6909       return this->reflect() == rhs.reflect();
6910 #  else
6911       return ( attachmentIndex == rhs.attachmentIndex ) && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
6912 #  endif
6913     }
6914 
operator !=VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT6915     bool operator!=( AttachmentSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
6916     {
6917       return !operator==( rhs );
6918     }
6919 #endif
6920 
6921   public:
6922     uint32_t                                     attachmentIndex     = {};
6923     VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo = {};
6924   };
6925 
6926   struct BaseInStructure
6927   {
6928     using NativeType = VkBaseInStructure;
6929 
6930 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BaseInStructureVULKAN_HPP_NAMESPACE::BaseInStructure6931     BaseInStructure( VULKAN_HPP_NAMESPACE::StructureType                  sType_ = VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo,
6932                      const struct VULKAN_HPP_NAMESPACE::BaseInStructure * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
6933       : sType{ sType_ }
6934       , pNext{ pNext_ }
6935     {
6936     }
6937 
6938     BaseInStructure( BaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6939 
BaseInStructureVULKAN_HPP_NAMESPACE::BaseInStructure6940     BaseInStructure( VkBaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT : BaseInStructure( *reinterpret_cast<BaseInStructure const *>( &rhs ) ) {}
6941 
6942     BaseInStructure & operator=( BaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6943 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6944 
operator =VULKAN_HPP_NAMESPACE::BaseInStructure6945     BaseInStructure & operator=( VkBaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT
6946     {
6947       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BaseInStructure const *>( &rhs );
6948       return *this;
6949     }
6950 
6951 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BaseInStructure6952     VULKAN_HPP_CONSTEXPR_14 BaseInStructure & setPNext( const struct VULKAN_HPP_NAMESPACE::BaseInStructure * pNext_ ) VULKAN_HPP_NOEXCEPT
6953     {
6954       pNext = pNext_;
6955       return *this;
6956     }
6957 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6958 
operator VkBaseInStructure const&VULKAN_HPP_NAMESPACE::BaseInStructure6959     operator VkBaseInStructure const &() const VULKAN_HPP_NOEXCEPT
6960     {
6961       return *reinterpret_cast<const VkBaseInStructure *>( this );
6962     }
6963 
operator VkBaseInStructure&VULKAN_HPP_NAMESPACE::BaseInStructure6964     operator VkBaseInStructure &() VULKAN_HPP_NOEXCEPT
6965     {
6966       return *reinterpret_cast<VkBaseInStructure *>( this );
6967     }
6968 
6969 #if defined( VULKAN_HPP_USE_REFLECT )
6970 #  if 14 <= VULKAN_HPP_CPP_VERSION
6971     auto
6972 #  else
6973     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const struct VULKAN_HPP_NAMESPACE::BaseInStructure * const &>
6974 #  endif
reflectVULKAN_HPP_NAMESPACE::BaseInStructure6975       reflect() const VULKAN_HPP_NOEXCEPT
6976     {
6977       return std::tie( sType, pNext );
6978     }
6979 #endif
6980 
6981 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
6982     auto operator<=>( BaseInStructure const & ) const = default;
6983 #else
operator ==VULKAN_HPP_NAMESPACE::BaseInStructure6984     bool operator==( BaseInStructure const & rhs ) const VULKAN_HPP_NOEXCEPT
6985     {
6986 #  if defined( VULKAN_HPP_USE_REFLECT )
6987       return this->reflect() == rhs.reflect();
6988 #  else
6989       return ( sType == rhs.sType ) && ( pNext == rhs.pNext );
6990 #  endif
6991     }
6992 
operator !=VULKAN_HPP_NAMESPACE::BaseInStructure6993     bool operator!=( BaseInStructure const & rhs ) const VULKAN_HPP_NOEXCEPT
6994     {
6995       return !operator==( rhs );
6996     }
6997 #endif
6998 
6999   public:
7000     VULKAN_HPP_NAMESPACE::StructureType                  sType = VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo;
7001     const struct VULKAN_HPP_NAMESPACE::BaseInStructure * pNext = {};
7002   };
7003 
7004   struct BaseOutStructure
7005   {
7006     using NativeType = VkBaseOutStructure;
7007 
7008 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BaseOutStructureVULKAN_HPP_NAMESPACE::BaseOutStructure7009     BaseOutStructure( VULKAN_HPP_NAMESPACE::StructureType             sType_ = VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo,
7010                       struct VULKAN_HPP_NAMESPACE::BaseOutStructure * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
7011       : sType{ sType_ }
7012       , pNext{ pNext_ }
7013     {
7014     }
7015 
7016     BaseOutStructure( BaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7017 
BaseOutStructureVULKAN_HPP_NAMESPACE::BaseOutStructure7018     BaseOutStructure( VkBaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT : BaseOutStructure( *reinterpret_cast<BaseOutStructure const *>( &rhs ) ) {}
7019 
7020     BaseOutStructure & operator=( BaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7021 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7022 
operator =VULKAN_HPP_NAMESPACE::BaseOutStructure7023     BaseOutStructure & operator=( VkBaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT
7024     {
7025       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BaseOutStructure const *>( &rhs );
7026       return *this;
7027     }
7028 
7029 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BaseOutStructure7030     VULKAN_HPP_CONSTEXPR_14 BaseOutStructure & setPNext( struct VULKAN_HPP_NAMESPACE::BaseOutStructure * pNext_ ) VULKAN_HPP_NOEXCEPT
7031     {
7032       pNext = pNext_;
7033       return *this;
7034     }
7035 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7036 
operator VkBaseOutStructure const&VULKAN_HPP_NAMESPACE::BaseOutStructure7037     operator VkBaseOutStructure const &() const VULKAN_HPP_NOEXCEPT
7038     {
7039       return *reinterpret_cast<const VkBaseOutStructure *>( this );
7040     }
7041 
operator VkBaseOutStructure&VULKAN_HPP_NAMESPACE::BaseOutStructure7042     operator VkBaseOutStructure &() VULKAN_HPP_NOEXCEPT
7043     {
7044       return *reinterpret_cast<VkBaseOutStructure *>( this );
7045     }
7046 
7047 #if defined( VULKAN_HPP_USE_REFLECT )
7048 #  if 14 <= VULKAN_HPP_CPP_VERSION
7049     auto
7050 #  else
7051     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, struct VULKAN_HPP_NAMESPACE::BaseOutStructure * const &>
7052 #  endif
reflectVULKAN_HPP_NAMESPACE::BaseOutStructure7053       reflect() const VULKAN_HPP_NOEXCEPT
7054     {
7055       return std::tie( sType, pNext );
7056     }
7057 #endif
7058 
7059 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7060     auto operator<=>( BaseOutStructure const & ) const = default;
7061 #else
operator ==VULKAN_HPP_NAMESPACE::BaseOutStructure7062     bool operator==( BaseOutStructure const & rhs ) const VULKAN_HPP_NOEXCEPT
7063     {
7064 #  if defined( VULKAN_HPP_USE_REFLECT )
7065       return this->reflect() == rhs.reflect();
7066 #  else
7067       return ( sType == rhs.sType ) && ( pNext == rhs.pNext );
7068 #  endif
7069     }
7070 
operator !=VULKAN_HPP_NAMESPACE::BaseOutStructure7071     bool operator!=( BaseOutStructure const & rhs ) const VULKAN_HPP_NOEXCEPT
7072     {
7073       return !operator==( rhs );
7074     }
7075 #endif
7076 
7077   public:
7078     VULKAN_HPP_NAMESPACE::StructureType             sType = VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo;
7079     struct VULKAN_HPP_NAMESPACE::BaseOutStructure * pNext = {};
7080   };
7081 
7082   struct BindAccelerationStructureMemoryInfoNV
7083   {
7084     using NativeType = VkBindAccelerationStructureMemoryInfoNV;
7085 
7086     static const bool                                  allowDuplicate = false;
7087     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindAccelerationStructureMemoryInfoNV;
7088 
7089 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindAccelerationStructureMemoryInfoNVVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7090     VULKAN_HPP_CONSTEXPR BindAccelerationStructureMemoryInfoNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure_ = {},
7091                                                                 VULKAN_HPP_NAMESPACE::DeviceMemory            memory_                = {},
7092                                                                 VULKAN_HPP_NAMESPACE::DeviceSize              memoryOffset_          = {},
7093                                                                 uint32_t                                      deviceIndexCount_      = {},
7094                                                                 const uint32_t *                              pDeviceIndices_        = {},
7095                                                                 const void *                                  pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
7096       : pNext{ pNext_ }
7097       , accelerationStructure{ accelerationStructure_ }
7098       , memory{ memory_ }
7099       , memoryOffset{ memoryOffset_ }
7100       , deviceIndexCount{ deviceIndexCount_ }
7101       , pDeviceIndices{ pDeviceIndices_ }
7102     {
7103     }
7104 
7105     VULKAN_HPP_CONSTEXPR BindAccelerationStructureMemoryInfoNV( BindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7106 
BindAccelerationStructureMemoryInfoNVVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7107     BindAccelerationStructureMemoryInfoNV( VkBindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
7108       : BindAccelerationStructureMemoryInfoNV( *reinterpret_cast<BindAccelerationStructureMemoryInfoNV const *>( &rhs ) )
7109     {
7110     }
7111 
7112 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BindAccelerationStructureMemoryInfoNVVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7113     BindAccelerationStructureMemoryInfoNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV                         accelerationStructure_,
7114                                            VULKAN_HPP_NAMESPACE::DeviceMemory                                    memory_,
7115                                            VULKAN_HPP_NAMESPACE::DeviceSize                                      memoryOffset_,
7116                                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_,
7117                                            const void *                                                          pNext_ = nullptr )
7118       : pNext( pNext_ )
7119       , accelerationStructure( accelerationStructure_ )
7120       , memory( memory_ )
7121       , memoryOffset( memoryOffset_ )
7122       , deviceIndexCount( static_cast<uint32_t>( deviceIndices_.size() ) )
7123       , pDeviceIndices( deviceIndices_.data() )
7124     {
7125     }
7126 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7127 
7128     BindAccelerationStructureMemoryInfoNV & operator=( BindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7129 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7130 
operator =VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7131     BindAccelerationStructureMemoryInfoNV & operator=( VkBindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
7132     {
7133       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV const *>( &rhs );
7134       return *this;
7135     }
7136 
7137 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7138     VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
7139     {
7140       pNext = pNext_;
7141       return *this;
7142     }
7143 
7144     VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV &
setAccelerationStructureVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7145       setAccelerationStructure( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure_ ) VULKAN_HPP_NOEXCEPT
7146     {
7147       accelerationStructure = accelerationStructure_;
7148       return *this;
7149     }
7150 
setMemoryVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7151     VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
7152     {
7153       memory = memory_;
7154       return *this;
7155     }
7156 
setMemoryOffsetVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7157     VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT
7158     {
7159       memoryOffset = memoryOffset_;
7160       return *this;
7161     }
7162 
setDeviceIndexCountVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7163     VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & setDeviceIndexCount( uint32_t deviceIndexCount_ ) VULKAN_HPP_NOEXCEPT
7164     {
7165       deviceIndexCount = deviceIndexCount_;
7166       return *this;
7167     }
7168 
setPDeviceIndicesVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7169     VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & setPDeviceIndices( const uint32_t * pDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
7170     {
7171       pDeviceIndices = pDeviceIndices_;
7172       return *this;
7173     }
7174 
7175 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
7176     BindAccelerationStructureMemoryInfoNV &
setDeviceIndicesVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7177       setDeviceIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_ ) VULKAN_HPP_NOEXCEPT
7178     {
7179       deviceIndexCount = static_cast<uint32_t>( deviceIndices_.size() );
7180       pDeviceIndices   = deviceIndices_.data();
7181       return *this;
7182     }
7183 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7184 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7185 
operator VkBindAccelerationStructureMemoryInfoNV const&VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7186     operator VkBindAccelerationStructureMemoryInfoNV const &() const VULKAN_HPP_NOEXCEPT
7187     {
7188       return *reinterpret_cast<const VkBindAccelerationStructureMemoryInfoNV *>( this );
7189     }
7190 
operator VkBindAccelerationStructureMemoryInfoNV&VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7191     operator VkBindAccelerationStructureMemoryInfoNV &() VULKAN_HPP_NOEXCEPT
7192     {
7193       return *reinterpret_cast<VkBindAccelerationStructureMemoryInfoNV *>( this );
7194     }
7195 
7196 #if defined( VULKAN_HPP_USE_REFLECT )
7197 #  if 14 <= VULKAN_HPP_CPP_VERSION
7198     auto
7199 #  else
7200     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
7201                const void * const &,
7202                VULKAN_HPP_NAMESPACE::AccelerationStructureNV const &,
7203                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
7204                VULKAN_HPP_NAMESPACE::DeviceSize const &,
7205                uint32_t const &,
7206                const uint32_t * const &>
7207 #  endif
reflectVULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7208       reflect() const VULKAN_HPP_NOEXCEPT
7209     {
7210       return std::tie( sType, pNext, accelerationStructure, memory, memoryOffset, deviceIndexCount, pDeviceIndices );
7211     }
7212 #endif
7213 
7214 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7215     auto operator<=>( BindAccelerationStructureMemoryInfoNV const & ) const = default;
7216 #else
operator ==VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7217     bool operator==( BindAccelerationStructureMemoryInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
7218     {
7219 #  if defined( VULKAN_HPP_USE_REFLECT )
7220       return this->reflect() == rhs.reflect();
7221 #  else
7222       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructure == rhs.accelerationStructure ) && ( memory == rhs.memory ) &&
7223              ( memoryOffset == rhs.memoryOffset ) && ( deviceIndexCount == rhs.deviceIndexCount ) && ( pDeviceIndices == rhs.pDeviceIndices );
7224 #  endif
7225     }
7226 
operator !=VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV7227     bool operator!=( BindAccelerationStructureMemoryInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
7228     {
7229       return !operator==( rhs );
7230     }
7231 #endif
7232 
7233   public:
7234     VULKAN_HPP_NAMESPACE::StructureType           sType                 = StructureType::eBindAccelerationStructureMemoryInfoNV;
7235     const void *                                  pNext                 = {};
7236     VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure = {};
7237     VULKAN_HPP_NAMESPACE::DeviceMemory            memory                = {};
7238     VULKAN_HPP_NAMESPACE::DeviceSize              memoryOffset          = {};
7239     uint32_t                                      deviceIndexCount      = {};
7240     const uint32_t *                              pDeviceIndices        = {};
7241   };
7242 
7243   template <>
7244   struct CppType<StructureType, StructureType::eBindAccelerationStructureMemoryInfoNV>
7245   {
7246     using Type = BindAccelerationStructureMemoryInfoNV;
7247   };
7248 
7249   struct BindBufferMemoryDeviceGroupInfo
7250   {
7251     using NativeType = VkBindBufferMemoryDeviceGroupInfo;
7252 
7253     static const bool                                  allowDuplicate = false;
7254     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindBufferMemoryDeviceGroupInfo;
7255 
7256 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindBufferMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7257     VULKAN_HPP_CONSTEXPR BindBufferMemoryDeviceGroupInfo( uint32_t         deviceIndexCount_ = {},
7258                                                           const uint32_t * pDeviceIndices_   = {},
7259                                                           const void *     pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
7260       : pNext{ pNext_ }
7261       , deviceIndexCount{ deviceIndexCount_ }
7262       , pDeviceIndices{ pDeviceIndices_ }
7263     {
7264     }
7265 
7266     VULKAN_HPP_CONSTEXPR BindBufferMemoryDeviceGroupInfo( BindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7267 
BindBufferMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7268     BindBufferMemoryDeviceGroupInfo( VkBindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
7269       : BindBufferMemoryDeviceGroupInfo( *reinterpret_cast<BindBufferMemoryDeviceGroupInfo const *>( &rhs ) )
7270     {
7271     }
7272 
7273 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BindBufferMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7274     BindBufferMemoryDeviceGroupInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_, const void * pNext_ = nullptr )
7275       : pNext( pNext_ ), deviceIndexCount( static_cast<uint32_t>( deviceIndices_.size() ) ), pDeviceIndices( deviceIndices_.data() )
7276     {
7277     }
7278 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7279 
7280     BindBufferMemoryDeviceGroupInfo & operator=( BindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7281 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7282 
operator =VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7283     BindBufferMemoryDeviceGroupInfo & operator=( VkBindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
7284     {
7285       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo const *>( &rhs );
7286       return *this;
7287     }
7288 
7289 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7290     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
7291     {
7292       pNext = pNext_;
7293       return *this;
7294     }
7295 
setDeviceIndexCountVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7296     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo & setDeviceIndexCount( uint32_t deviceIndexCount_ ) VULKAN_HPP_NOEXCEPT
7297     {
7298       deviceIndexCount = deviceIndexCount_;
7299       return *this;
7300     }
7301 
setPDeviceIndicesVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7302     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo & setPDeviceIndices( const uint32_t * pDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
7303     {
7304       pDeviceIndices = pDeviceIndices_;
7305       return *this;
7306     }
7307 
7308 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
7309     BindBufferMemoryDeviceGroupInfo &
setDeviceIndicesVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7310       setDeviceIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_ ) VULKAN_HPP_NOEXCEPT
7311     {
7312       deviceIndexCount = static_cast<uint32_t>( deviceIndices_.size() );
7313       pDeviceIndices   = deviceIndices_.data();
7314       return *this;
7315     }
7316 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7317 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7318 
operator VkBindBufferMemoryDeviceGroupInfo const&VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7319     operator VkBindBufferMemoryDeviceGroupInfo const &() const VULKAN_HPP_NOEXCEPT
7320     {
7321       return *reinterpret_cast<const VkBindBufferMemoryDeviceGroupInfo *>( this );
7322     }
7323 
operator VkBindBufferMemoryDeviceGroupInfo&VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7324     operator VkBindBufferMemoryDeviceGroupInfo &() VULKAN_HPP_NOEXCEPT
7325     {
7326       return *reinterpret_cast<VkBindBufferMemoryDeviceGroupInfo *>( this );
7327     }
7328 
7329 #if defined( VULKAN_HPP_USE_REFLECT )
7330 #  if 14 <= VULKAN_HPP_CPP_VERSION
7331     auto
7332 #  else
7333     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const uint32_t * const &>
7334 #  endif
reflectVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7335       reflect() const VULKAN_HPP_NOEXCEPT
7336     {
7337       return std::tie( sType, pNext, deviceIndexCount, pDeviceIndices );
7338     }
7339 #endif
7340 
7341 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7342     auto operator<=>( BindBufferMemoryDeviceGroupInfo const & ) const = default;
7343 #else
operator ==VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7344     bool operator==( BindBufferMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
7345     {
7346 #  if defined( VULKAN_HPP_USE_REFLECT )
7347       return this->reflect() == rhs.reflect();
7348 #  else
7349       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceIndexCount == rhs.deviceIndexCount ) && ( pDeviceIndices == rhs.pDeviceIndices );
7350 #  endif
7351     }
7352 
operator !=VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo7353     bool operator!=( BindBufferMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
7354     {
7355       return !operator==( rhs );
7356     }
7357 #endif
7358 
7359   public:
7360     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::eBindBufferMemoryDeviceGroupInfo;
7361     const void *                        pNext            = {};
7362     uint32_t                            deviceIndexCount = {};
7363     const uint32_t *                    pDeviceIndices   = {};
7364   };
7365 
7366   template <>
7367   struct CppType<StructureType, StructureType::eBindBufferMemoryDeviceGroupInfo>
7368   {
7369     using Type = BindBufferMemoryDeviceGroupInfo;
7370   };
7371 
7372   using BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo;
7373 
7374   struct BindBufferMemoryInfo
7375   {
7376     using NativeType = VkBindBufferMemoryInfo;
7377 
7378     static const bool                                  allowDuplicate = false;
7379     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindBufferMemoryInfo;
7380 
7381 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindBufferMemoryInfoVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7382     VULKAN_HPP_CONSTEXPR BindBufferMemoryInfo( VULKAN_HPP_NAMESPACE::Buffer       buffer_       = {},
7383                                                VULKAN_HPP_NAMESPACE::DeviceMemory memory_       = {},
7384                                                VULKAN_HPP_NAMESPACE::DeviceSize   memoryOffset_ = {},
7385                                                const void *                       pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
7386       : pNext{ pNext_ }
7387       , buffer{ buffer_ }
7388       , memory{ memory_ }
7389       , memoryOffset{ memoryOffset_ }
7390     {
7391     }
7392 
7393     VULKAN_HPP_CONSTEXPR BindBufferMemoryInfo( BindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7394 
BindBufferMemoryInfoVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7395     BindBufferMemoryInfo( VkBindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
7396       : BindBufferMemoryInfo( *reinterpret_cast<BindBufferMemoryInfo const *>( &rhs ) )
7397     {
7398     }
7399 
7400     BindBufferMemoryInfo & operator=( BindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7401 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7402 
operator =VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7403     BindBufferMemoryInfo & operator=( VkBindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
7404     {
7405       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo const *>( &rhs );
7406       return *this;
7407     }
7408 
7409 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7410     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
7411     {
7412       pNext = pNext_;
7413       return *this;
7414     }
7415 
setBufferVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7416     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
7417     {
7418       buffer = buffer_;
7419       return *this;
7420     }
7421 
setMemoryVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7422     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
7423     {
7424       memory = memory_;
7425       return *this;
7426     }
7427 
setMemoryOffsetVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7428     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT
7429     {
7430       memoryOffset = memoryOffset_;
7431       return *this;
7432     }
7433 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7434 
operator VkBindBufferMemoryInfo const&VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7435     operator VkBindBufferMemoryInfo const &() const VULKAN_HPP_NOEXCEPT
7436     {
7437       return *reinterpret_cast<const VkBindBufferMemoryInfo *>( this );
7438     }
7439 
operator VkBindBufferMemoryInfo&VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7440     operator VkBindBufferMemoryInfo &() VULKAN_HPP_NOEXCEPT
7441     {
7442       return *reinterpret_cast<VkBindBufferMemoryInfo *>( this );
7443     }
7444 
7445 #if defined( VULKAN_HPP_USE_REFLECT )
7446 #  if 14 <= VULKAN_HPP_CPP_VERSION
7447     auto
7448 #  else
7449     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
7450                const void * const &,
7451                VULKAN_HPP_NAMESPACE::Buffer const &,
7452                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
7453                VULKAN_HPP_NAMESPACE::DeviceSize const &>
7454 #  endif
reflectVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7455       reflect() const VULKAN_HPP_NOEXCEPT
7456     {
7457       return std::tie( sType, pNext, buffer, memory, memoryOffset );
7458     }
7459 #endif
7460 
7461 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7462     auto operator<=>( BindBufferMemoryInfo const & ) const = default;
7463 #else
operator ==VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7464     bool operator==( BindBufferMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
7465     {
7466 #  if defined( VULKAN_HPP_USE_REFLECT )
7467       return this->reflect() == rhs.reflect();
7468 #  else
7469       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer ) && ( memory == rhs.memory ) && ( memoryOffset == rhs.memoryOffset );
7470 #  endif
7471     }
7472 
operator !=VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo7473     bool operator!=( BindBufferMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
7474     {
7475       return !operator==( rhs );
7476     }
7477 #endif
7478 
7479   public:
7480     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eBindBufferMemoryInfo;
7481     const void *                        pNext        = {};
7482     VULKAN_HPP_NAMESPACE::Buffer        buffer       = {};
7483     VULKAN_HPP_NAMESPACE::DeviceMemory  memory       = {};
7484     VULKAN_HPP_NAMESPACE::DeviceSize    memoryOffset = {};
7485   };
7486 
7487   template <>
7488   struct CppType<StructureType, StructureType::eBindBufferMemoryInfo>
7489   {
7490     using Type = BindBufferMemoryInfo;
7491   };
7492 
7493   using BindBufferMemoryInfoKHR = BindBufferMemoryInfo;
7494 
7495   struct BindDescriptorBufferEmbeddedSamplersInfoEXT
7496   {
7497     using NativeType = VkBindDescriptorBufferEmbeddedSamplersInfoEXT;
7498 
7499     static const bool                                  allowDuplicate = false;
7500     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindDescriptorBufferEmbeddedSamplersInfoEXT;
7501 
7502 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindDescriptorBufferEmbeddedSamplersInfoEXTVULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7503     VULKAN_HPP_CONSTEXPR BindDescriptorBufferEmbeddedSamplersInfoEXT( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ = {},
7504                                                                       VULKAN_HPP_NAMESPACE::PipelineLayout   layout_     = {},
7505                                                                       uint32_t                               set_        = {},
7506                                                                       const void *                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
7507       : pNext{ pNext_ }
7508       , stageFlags{ stageFlags_ }
7509       , layout{ layout_ }
7510       , set{ set_ }
7511     {
7512     }
7513 
7514     VULKAN_HPP_CONSTEXPR BindDescriptorBufferEmbeddedSamplersInfoEXT( BindDescriptorBufferEmbeddedSamplersInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7515 
BindDescriptorBufferEmbeddedSamplersInfoEXTVULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7516     BindDescriptorBufferEmbeddedSamplersInfoEXT( VkBindDescriptorBufferEmbeddedSamplersInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
7517       : BindDescriptorBufferEmbeddedSamplersInfoEXT( *reinterpret_cast<BindDescriptorBufferEmbeddedSamplersInfoEXT const *>( &rhs ) )
7518     {
7519     }
7520 
7521     BindDescriptorBufferEmbeddedSamplersInfoEXT & operator=( BindDescriptorBufferEmbeddedSamplersInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7522 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7523 
operator =VULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7524     BindDescriptorBufferEmbeddedSamplersInfoEXT & operator=( VkBindDescriptorBufferEmbeddedSamplersInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
7525     {
7526       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT const *>( &rhs );
7527       return *this;
7528     }
7529 
7530 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7531     VULKAN_HPP_CONSTEXPR_14 BindDescriptorBufferEmbeddedSamplersInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
7532     {
7533       pNext = pNext_;
7534       return *this;
7535     }
7536 
7537     VULKAN_HPP_CONSTEXPR_14 BindDescriptorBufferEmbeddedSamplersInfoEXT &
setStageFlagsVULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7538       setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT
7539     {
7540       stageFlags = stageFlags_;
7541       return *this;
7542     }
7543 
setLayoutVULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7544     VULKAN_HPP_CONSTEXPR_14 BindDescriptorBufferEmbeddedSamplersInfoEXT & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
7545     {
7546       layout = layout_;
7547       return *this;
7548     }
7549 
setSetVULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7550     VULKAN_HPP_CONSTEXPR_14 BindDescriptorBufferEmbeddedSamplersInfoEXT & setSet( uint32_t set_ ) VULKAN_HPP_NOEXCEPT
7551     {
7552       set = set_;
7553       return *this;
7554     }
7555 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7556 
operator VkBindDescriptorBufferEmbeddedSamplersInfoEXT const&VULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7557     operator VkBindDescriptorBufferEmbeddedSamplersInfoEXT const &() const VULKAN_HPP_NOEXCEPT
7558     {
7559       return *reinterpret_cast<const VkBindDescriptorBufferEmbeddedSamplersInfoEXT *>( this );
7560     }
7561 
operator VkBindDescriptorBufferEmbeddedSamplersInfoEXT&VULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7562     operator VkBindDescriptorBufferEmbeddedSamplersInfoEXT &() VULKAN_HPP_NOEXCEPT
7563     {
7564       return *reinterpret_cast<VkBindDescriptorBufferEmbeddedSamplersInfoEXT *>( this );
7565     }
7566 
7567 #if defined( VULKAN_HPP_USE_REFLECT )
7568 #  if 14 <= VULKAN_HPP_CPP_VERSION
7569     auto
7570 #  else
7571     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
7572                const void * const &,
7573                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
7574                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
7575                uint32_t const &>
7576 #  endif
reflectVULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7577       reflect() const VULKAN_HPP_NOEXCEPT
7578     {
7579       return std::tie( sType, pNext, stageFlags, layout, set );
7580     }
7581 #endif
7582 
7583 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7584     auto operator<=>( BindDescriptorBufferEmbeddedSamplersInfoEXT const & ) const = default;
7585 #else
operator ==VULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7586     bool operator==( BindDescriptorBufferEmbeddedSamplersInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
7587     {
7588 #  if defined( VULKAN_HPP_USE_REFLECT )
7589       return this->reflect() == rhs.reflect();
7590 #  else
7591       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stageFlags == rhs.stageFlags ) && ( layout == rhs.layout ) && ( set == rhs.set );
7592 #  endif
7593     }
7594 
operator !=VULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT7595     bool operator!=( BindDescriptorBufferEmbeddedSamplersInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
7596     {
7597       return !operator==( rhs );
7598     }
7599 #endif
7600 
7601   public:
7602     VULKAN_HPP_NAMESPACE::StructureType    sType      = StructureType::eBindDescriptorBufferEmbeddedSamplersInfoEXT;
7603     const void *                           pNext      = {};
7604     VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags = {};
7605     VULKAN_HPP_NAMESPACE::PipelineLayout   layout     = {};
7606     uint32_t                               set        = {};
7607   };
7608 
7609   template <>
7610   struct CppType<StructureType, StructureType::eBindDescriptorBufferEmbeddedSamplersInfoEXT>
7611   {
7612     using Type = BindDescriptorBufferEmbeddedSamplersInfoEXT;
7613   };
7614 
7615   struct BindDescriptorSetsInfoKHR
7616   {
7617     using NativeType = VkBindDescriptorSetsInfoKHR;
7618 
7619     static const bool                                  allowDuplicate = false;
7620     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindDescriptorSetsInfoKHR;
7621 
7622 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindDescriptorSetsInfoKHRVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR7623     VULKAN_HPP_CONSTEXPR BindDescriptorSetsInfoKHR( VULKAN_HPP_NAMESPACE::ShaderStageFlags      stageFlags_         = {},
7624                                                     VULKAN_HPP_NAMESPACE::PipelineLayout        layout_             = {},
7625                                                     uint32_t                                    firstSet_           = {},
7626                                                     uint32_t                                    descriptorSetCount_ = {},
7627                                                     const VULKAN_HPP_NAMESPACE::DescriptorSet * pDescriptorSets_    = {},
7628                                                     uint32_t                                    dynamicOffsetCount_ = {},
7629                                                     const uint32_t *                            pDynamicOffsets_    = {},
7630                                                     const void *                                pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
7631       : pNext{ pNext_ }
7632       , stageFlags{ stageFlags_ }
7633       , layout{ layout_ }
7634       , firstSet{ firstSet_ }
7635       , descriptorSetCount{ descriptorSetCount_ }
7636       , pDescriptorSets{ pDescriptorSets_ }
7637       , dynamicOffsetCount{ dynamicOffsetCount_ }
7638       , pDynamicOffsets{ pDynamicOffsets_ }
7639     {
7640     }
7641 
7642     VULKAN_HPP_CONSTEXPR BindDescriptorSetsInfoKHR( BindDescriptorSetsInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7643 
BindDescriptorSetsInfoKHRVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR7644     BindDescriptorSetsInfoKHR( VkBindDescriptorSetsInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
7645       : BindDescriptorSetsInfoKHR( *reinterpret_cast<BindDescriptorSetsInfoKHR const *>( &rhs ) )
7646     {
7647     }
7648 
7649 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BindDescriptorSetsInfoKHRVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR7650     BindDescriptorSetsInfoKHR( VULKAN_HPP_NAMESPACE::ShaderStageFlags                                                           stageFlags_,
7651                                VULKAN_HPP_NAMESPACE::PipelineLayout                                                             layout_,
7652                                uint32_t                                                                                         firstSet_,
7653                                VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSet> const & descriptorSets_,
7654                                VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &                            dynamicOffsets_ = {},
7655                                const void *                                                                                     pNext_          = nullptr )
7656       : pNext( pNext_ )
7657       , stageFlags( stageFlags_ )
7658       , layout( layout_ )
7659       , firstSet( firstSet_ )
7660       , descriptorSetCount( static_cast<uint32_t>( descriptorSets_.size() ) )
7661       , pDescriptorSets( descriptorSets_.data() )
7662       , dynamicOffsetCount( static_cast<uint32_t>( dynamicOffsets_.size() ) )
7663       , pDynamicOffsets( dynamicOffsets_.data() )
7664     {
7665     }
7666 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7667 
7668     BindDescriptorSetsInfoKHR & operator=( BindDescriptorSetsInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7669 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7670 
operator =VULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR7671     BindDescriptorSetsInfoKHR & operator=( VkBindDescriptorSetsInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
7672     {
7673       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR const *>( &rhs );
7674       return *this;
7675     }
7676 
7677 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR7678     VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
7679     {
7680       pNext = pNext_;
7681       return *this;
7682     }
7683 
setStageFlagsVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR7684     VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfoKHR & setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT
7685     {
7686       stageFlags = stageFlags_;
7687       return *this;
7688     }
7689 
setLayoutVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR7690     VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfoKHR & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
7691     {
7692       layout = layout_;
7693       return *this;
7694     }
7695 
setFirstSetVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR7696     VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfoKHR & setFirstSet( uint32_t firstSet_ ) VULKAN_HPP_NOEXCEPT
7697     {
7698       firstSet = firstSet_;
7699       return *this;
7700     }
7701 
setDescriptorSetCountVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR7702     VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfoKHR & setDescriptorSetCount( uint32_t descriptorSetCount_ ) VULKAN_HPP_NOEXCEPT
7703     {
7704       descriptorSetCount = descriptorSetCount_;
7705       return *this;
7706     }
7707 
setPDescriptorSetsVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR7708     VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfoKHR & setPDescriptorSets( const VULKAN_HPP_NAMESPACE::DescriptorSet * pDescriptorSets_ ) VULKAN_HPP_NOEXCEPT
7709     {
7710       pDescriptorSets = pDescriptorSets_;
7711       return *this;
7712     }
7713 
7714 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
7715     BindDescriptorSetsInfoKHR &
setDescriptorSetsVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR7716       setDescriptorSets( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSet> const & descriptorSets_ ) VULKAN_HPP_NOEXCEPT
7717     {
7718       descriptorSetCount = static_cast<uint32_t>( descriptorSets_.size() );
7719       pDescriptorSets    = descriptorSets_.data();
7720       return *this;
7721     }
7722 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7723 
setDynamicOffsetCountVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR7724     VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfoKHR & setDynamicOffsetCount( uint32_t dynamicOffsetCount_ ) VULKAN_HPP_NOEXCEPT
7725     {
7726       dynamicOffsetCount = dynamicOffsetCount_;
7727       return *this;
7728     }
7729 
setPDynamicOffsetsVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR7730     VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfoKHR & setPDynamicOffsets( const uint32_t * pDynamicOffsets_ ) VULKAN_HPP_NOEXCEPT
7731     {
7732       pDynamicOffsets = pDynamicOffsets_;
7733       return *this;
7734     }
7735 
7736 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDynamicOffsetsVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR7737     BindDescriptorSetsInfoKHR & setDynamicOffsets( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & dynamicOffsets_ ) VULKAN_HPP_NOEXCEPT
7738     {
7739       dynamicOffsetCount = static_cast<uint32_t>( dynamicOffsets_.size() );
7740       pDynamicOffsets    = dynamicOffsets_.data();
7741       return *this;
7742     }
7743 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7744 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7745 
operator VkBindDescriptorSetsInfoKHR const&VULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR7746     operator VkBindDescriptorSetsInfoKHR const &() const VULKAN_HPP_NOEXCEPT
7747     {
7748       return *reinterpret_cast<const VkBindDescriptorSetsInfoKHR *>( this );
7749     }
7750 
operator VkBindDescriptorSetsInfoKHR&VULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR7751     operator VkBindDescriptorSetsInfoKHR &() VULKAN_HPP_NOEXCEPT
7752     {
7753       return *reinterpret_cast<VkBindDescriptorSetsInfoKHR *>( this );
7754     }
7755 
7756 #if defined( VULKAN_HPP_USE_REFLECT )
7757 #  if 14 <= VULKAN_HPP_CPP_VERSION
7758     auto
7759 #  else
7760     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
7761                const void * const &,
7762                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
7763                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
7764                uint32_t const &,
7765                uint32_t const &,
7766                const VULKAN_HPP_NAMESPACE::DescriptorSet * const &,
7767                uint32_t const &,
7768                const uint32_t * const &>
7769 #  endif
reflectVULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR7770       reflect() const VULKAN_HPP_NOEXCEPT
7771     {
7772       return std::tie( sType, pNext, stageFlags, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets );
7773     }
7774 #endif
7775 
7776 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7777     auto operator<=>( BindDescriptorSetsInfoKHR const & ) const = default;
7778 #else
operator ==VULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR7779     bool operator==( BindDescriptorSetsInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
7780     {
7781 #  if defined( VULKAN_HPP_USE_REFLECT )
7782       return this->reflect() == rhs.reflect();
7783 #  else
7784       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stageFlags == rhs.stageFlags ) && ( layout == rhs.layout ) && ( firstSet == rhs.firstSet ) &&
7785              ( descriptorSetCount == rhs.descriptorSetCount ) && ( pDescriptorSets == rhs.pDescriptorSets ) &&
7786              ( dynamicOffsetCount == rhs.dynamicOffsetCount ) && ( pDynamicOffsets == rhs.pDynamicOffsets );
7787 #  endif
7788     }
7789 
operator !=VULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR7790     bool operator!=( BindDescriptorSetsInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
7791     {
7792       return !operator==( rhs );
7793     }
7794 #endif
7795 
7796   public:
7797     VULKAN_HPP_NAMESPACE::StructureType         sType              = StructureType::eBindDescriptorSetsInfoKHR;
7798     const void *                                pNext              = {};
7799     VULKAN_HPP_NAMESPACE::ShaderStageFlags      stageFlags         = {};
7800     VULKAN_HPP_NAMESPACE::PipelineLayout        layout             = {};
7801     uint32_t                                    firstSet           = {};
7802     uint32_t                                    descriptorSetCount = {};
7803     const VULKAN_HPP_NAMESPACE::DescriptorSet * pDescriptorSets    = {};
7804     uint32_t                                    dynamicOffsetCount = {};
7805     const uint32_t *                            pDynamicOffsets    = {};
7806   };
7807 
7808   template <>
7809   struct CppType<StructureType, StructureType::eBindDescriptorSetsInfoKHR>
7810   {
7811     using Type = BindDescriptorSetsInfoKHR;
7812   };
7813 
7814   struct Offset2D
7815   {
7816     using NativeType = VkOffset2D;
7817 
7818 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Offset2DVULKAN_HPP_NAMESPACE::Offset2D7819     VULKAN_HPP_CONSTEXPR Offset2D( int32_t x_ = {}, int32_t y_ = {} ) VULKAN_HPP_NOEXCEPT
7820       : x{ x_ }
7821       , y{ y_ }
7822     {
7823     }
7824 
7825     VULKAN_HPP_CONSTEXPR Offset2D( Offset2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7826 
Offset2DVULKAN_HPP_NAMESPACE::Offset2D7827     Offset2D( VkOffset2D const & rhs ) VULKAN_HPP_NOEXCEPT : Offset2D( *reinterpret_cast<Offset2D const *>( &rhs ) ) {}
7828 
7829     Offset2D & operator=( Offset2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7830 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7831 
operator =VULKAN_HPP_NAMESPACE::Offset2D7832     Offset2D & operator=( VkOffset2D const & rhs ) VULKAN_HPP_NOEXCEPT
7833     {
7834       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Offset2D const *>( &rhs );
7835       return *this;
7836     }
7837 
7838 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::Offset2D7839     VULKAN_HPP_CONSTEXPR_14 Offset2D & setX( int32_t x_ ) VULKAN_HPP_NOEXCEPT
7840     {
7841       x = x_;
7842       return *this;
7843     }
7844 
setYVULKAN_HPP_NAMESPACE::Offset2D7845     VULKAN_HPP_CONSTEXPR_14 Offset2D & setY( int32_t y_ ) VULKAN_HPP_NOEXCEPT
7846     {
7847       y = y_;
7848       return *this;
7849     }
7850 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7851 
operator VkOffset2D const&VULKAN_HPP_NAMESPACE::Offset2D7852     operator VkOffset2D const &() const VULKAN_HPP_NOEXCEPT
7853     {
7854       return *reinterpret_cast<const VkOffset2D *>( this );
7855     }
7856 
operator VkOffset2D&VULKAN_HPP_NAMESPACE::Offset2D7857     operator VkOffset2D &() VULKAN_HPP_NOEXCEPT
7858     {
7859       return *reinterpret_cast<VkOffset2D *>( this );
7860     }
7861 
7862 #if defined( VULKAN_HPP_USE_REFLECT )
7863 #  if 14 <= VULKAN_HPP_CPP_VERSION
7864     auto
7865 #  else
7866     std::tuple<int32_t const &, int32_t const &>
7867 #  endif
reflectVULKAN_HPP_NAMESPACE::Offset2D7868       reflect() const VULKAN_HPP_NOEXCEPT
7869     {
7870       return std::tie( x, y );
7871     }
7872 #endif
7873 
7874 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7875     auto operator<=>( Offset2D const & ) const = default;
7876 #else
operator ==VULKAN_HPP_NAMESPACE::Offset2D7877     bool operator==( Offset2D const & rhs ) const VULKAN_HPP_NOEXCEPT
7878     {
7879 #  if defined( VULKAN_HPP_USE_REFLECT )
7880       return this->reflect() == rhs.reflect();
7881 #  else
7882       return ( x == rhs.x ) && ( y == rhs.y );
7883 #  endif
7884     }
7885 
operator !=VULKAN_HPP_NAMESPACE::Offset2D7886     bool operator!=( Offset2D const & rhs ) const VULKAN_HPP_NOEXCEPT
7887     {
7888       return !operator==( rhs );
7889     }
7890 #endif
7891 
7892   public:
7893     int32_t x = {};
7894     int32_t y = {};
7895   };
7896 
7897   struct Rect2D
7898   {
7899     using NativeType = VkRect2D;
7900 
7901 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Rect2DVULKAN_HPP_NAMESPACE::Rect2D7902     VULKAN_HPP_CONSTEXPR Rect2D( VULKAN_HPP_NAMESPACE::Offset2D offset_ = {}, VULKAN_HPP_NAMESPACE::Extent2D extent_ = {} ) VULKAN_HPP_NOEXCEPT
7903       : offset{ offset_ }
7904       , extent{ extent_ }
7905     {
7906     }
7907 
7908     VULKAN_HPP_CONSTEXPR Rect2D( Rect2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7909 
Rect2DVULKAN_HPP_NAMESPACE::Rect2D7910     Rect2D( VkRect2D const & rhs ) VULKAN_HPP_NOEXCEPT : Rect2D( *reinterpret_cast<Rect2D const *>( &rhs ) ) {}
7911 
7912     Rect2D & operator=( Rect2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7913 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7914 
operator =VULKAN_HPP_NAMESPACE::Rect2D7915     Rect2D & operator=( VkRect2D const & rhs ) VULKAN_HPP_NOEXCEPT
7916     {
7917       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Rect2D const *>( &rhs );
7918       return *this;
7919     }
7920 
7921 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setOffsetVULKAN_HPP_NAMESPACE::Rect2D7922     VULKAN_HPP_CONSTEXPR_14 Rect2D & setOffset( VULKAN_HPP_NAMESPACE::Offset2D const & offset_ ) VULKAN_HPP_NOEXCEPT
7923     {
7924       offset = offset_;
7925       return *this;
7926     }
7927 
setExtentVULKAN_HPP_NAMESPACE::Rect2D7928     VULKAN_HPP_CONSTEXPR_14 Rect2D & setExtent( VULKAN_HPP_NAMESPACE::Extent2D const & extent_ ) VULKAN_HPP_NOEXCEPT
7929     {
7930       extent = extent_;
7931       return *this;
7932     }
7933 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7934 
operator VkRect2D const&VULKAN_HPP_NAMESPACE::Rect2D7935     operator VkRect2D const &() const VULKAN_HPP_NOEXCEPT
7936     {
7937       return *reinterpret_cast<const VkRect2D *>( this );
7938     }
7939 
operator VkRect2D&VULKAN_HPP_NAMESPACE::Rect2D7940     operator VkRect2D &() VULKAN_HPP_NOEXCEPT
7941     {
7942       return *reinterpret_cast<VkRect2D *>( this );
7943     }
7944 
7945 #if defined( VULKAN_HPP_USE_REFLECT )
7946 #  if 14 <= VULKAN_HPP_CPP_VERSION
7947     auto
7948 #  else
7949     std::tuple<VULKAN_HPP_NAMESPACE::Offset2D const &, VULKAN_HPP_NAMESPACE::Extent2D const &>
7950 #  endif
reflectVULKAN_HPP_NAMESPACE::Rect2D7951       reflect() const VULKAN_HPP_NOEXCEPT
7952     {
7953       return std::tie( offset, extent );
7954     }
7955 #endif
7956 
7957 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
7958     auto operator<=>( Rect2D const & ) const = default;
7959 #else
operator ==VULKAN_HPP_NAMESPACE::Rect2D7960     bool operator==( Rect2D const & rhs ) const VULKAN_HPP_NOEXCEPT
7961     {
7962 #  if defined( VULKAN_HPP_USE_REFLECT )
7963       return this->reflect() == rhs.reflect();
7964 #  else
7965       return ( offset == rhs.offset ) && ( extent == rhs.extent );
7966 #  endif
7967     }
7968 
operator !=VULKAN_HPP_NAMESPACE::Rect2D7969     bool operator!=( Rect2D const & rhs ) const VULKAN_HPP_NOEXCEPT
7970     {
7971       return !operator==( rhs );
7972     }
7973 #endif
7974 
7975   public:
7976     VULKAN_HPP_NAMESPACE::Offset2D offset = {};
7977     VULKAN_HPP_NAMESPACE::Extent2D extent = {};
7978   };
7979 
7980   struct BindImageMemoryDeviceGroupInfo
7981   {
7982     using NativeType = VkBindImageMemoryDeviceGroupInfo;
7983 
7984     static const bool                                  allowDuplicate = false;
7985     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindImageMemoryDeviceGroupInfo;
7986 
7987 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindImageMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo7988     VULKAN_HPP_CONSTEXPR BindImageMemoryDeviceGroupInfo( uint32_t                             deviceIndexCount_             = {},
7989                                                          const uint32_t *                     pDeviceIndices_               = {},
7990                                                          uint32_t                             splitInstanceBindRegionCount_ = {},
7991                                                          const VULKAN_HPP_NAMESPACE::Rect2D * pSplitInstanceBindRegions_    = {},
7992                                                          const void *                         pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
7993       : pNext{ pNext_ }
7994       , deviceIndexCount{ deviceIndexCount_ }
7995       , pDeviceIndices{ pDeviceIndices_ }
7996       , splitInstanceBindRegionCount{ splitInstanceBindRegionCount_ }
7997       , pSplitInstanceBindRegions{ pSplitInstanceBindRegions_ }
7998     {
7999     }
8000 
8001     VULKAN_HPP_CONSTEXPR BindImageMemoryDeviceGroupInfo( BindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8002 
BindImageMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8003     BindImageMemoryDeviceGroupInfo( VkBindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
8004       : BindImageMemoryDeviceGroupInfo( *reinterpret_cast<BindImageMemoryDeviceGroupInfo const *>( &rhs ) )
8005     {
8006     }
8007 
8008 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BindImageMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8009     BindImageMemoryDeviceGroupInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &                     deviceIndices_,
8010                                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & splitInstanceBindRegions_ = {},
8011                                     const void *                                                                              pNext_ = nullptr )
8012       : pNext( pNext_ )
8013       , deviceIndexCount( static_cast<uint32_t>( deviceIndices_.size() ) )
8014       , pDeviceIndices( deviceIndices_.data() )
8015       , splitInstanceBindRegionCount( static_cast<uint32_t>( splitInstanceBindRegions_.size() ) )
8016       , pSplitInstanceBindRegions( splitInstanceBindRegions_.data() )
8017     {
8018     }
8019 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8020 
8021     BindImageMemoryDeviceGroupInfo & operator=( BindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8022 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8023 
operator =VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8024     BindImageMemoryDeviceGroupInfo & operator=( VkBindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
8025     {
8026       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo const *>( &rhs );
8027       return *this;
8028     }
8029 
8030 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8031     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
8032     {
8033       pNext = pNext_;
8034       return *this;
8035     }
8036 
setDeviceIndexCountVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8037     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setDeviceIndexCount( uint32_t deviceIndexCount_ ) VULKAN_HPP_NOEXCEPT
8038     {
8039       deviceIndexCount = deviceIndexCount_;
8040       return *this;
8041     }
8042 
setPDeviceIndicesVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8043     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setPDeviceIndices( const uint32_t * pDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
8044     {
8045       pDeviceIndices = pDeviceIndices_;
8046       return *this;
8047     }
8048 
8049 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
8050     BindImageMemoryDeviceGroupInfo &
setDeviceIndicesVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8051       setDeviceIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_ ) VULKAN_HPP_NOEXCEPT
8052     {
8053       deviceIndexCount = static_cast<uint32_t>( deviceIndices_.size() );
8054       pDeviceIndices   = deviceIndices_.data();
8055       return *this;
8056     }
8057 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8058 
setSplitInstanceBindRegionCountVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8059     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setSplitInstanceBindRegionCount( uint32_t splitInstanceBindRegionCount_ ) VULKAN_HPP_NOEXCEPT
8060     {
8061       splitInstanceBindRegionCount = splitInstanceBindRegionCount_;
8062       return *this;
8063     }
8064 
8065     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo &
setPSplitInstanceBindRegionsVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8066       setPSplitInstanceBindRegions( const VULKAN_HPP_NAMESPACE::Rect2D * pSplitInstanceBindRegions_ ) VULKAN_HPP_NOEXCEPT
8067     {
8068       pSplitInstanceBindRegions = pSplitInstanceBindRegions_;
8069       return *this;
8070     }
8071 
8072 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSplitInstanceBindRegionsVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8073     BindImageMemoryDeviceGroupInfo & setSplitInstanceBindRegions(
8074       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & splitInstanceBindRegions_ ) VULKAN_HPP_NOEXCEPT
8075     {
8076       splitInstanceBindRegionCount = static_cast<uint32_t>( splitInstanceBindRegions_.size() );
8077       pSplitInstanceBindRegions    = splitInstanceBindRegions_.data();
8078       return *this;
8079     }
8080 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8081 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8082 
operator VkBindImageMemoryDeviceGroupInfo const&VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8083     operator VkBindImageMemoryDeviceGroupInfo const &() const VULKAN_HPP_NOEXCEPT
8084     {
8085       return *reinterpret_cast<const VkBindImageMemoryDeviceGroupInfo *>( this );
8086     }
8087 
operator VkBindImageMemoryDeviceGroupInfo&VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8088     operator VkBindImageMemoryDeviceGroupInfo &() VULKAN_HPP_NOEXCEPT
8089     {
8090       return *reinterpret_cast<VkBindImageMemoryDeviceGroupInfo *>( this );
8091     }
8092 
8093 #if defined( VULKAN_HPP_USE_REFLECT )
8094 #  if 14 <= VULKAN_HPP_CPP_VERSION
8095     auto
8096 #  else
8097     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
8098                const void * const &,
8099                uint32_t const &,
8100                const uint32_t * const &,
8101                uint32_t const &,
8102                const VULKAN_HPP_NAMESPACE::Rect2D * const &>
8103 #  endif
reflectVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8104       reflect() const VULKAN_HPP_NOEXCEPT
8105     {
8106       return std::tie( sType, pNext, deviceIndexCount, pDeviceIndices, splitInstanceBindRegionCount, pSplitInstanceBindRegions );
8107     }
8108 #endif
8109 
8110 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8111     auto operator<=>( BindImageMemoryDeviceGroupInfo const & ) const = default;
8112 #else
operator ==VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8113     bool operator==( BindImageMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
8114     {
8115 #  if defined( VULKAN_HPP_USE_REFLECT )
8116       return this->reflect() == rhs.reflect();
8117 #  else
8118       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceIndexCount == rhs.deviceIndexCount ) && ( pDeviceIndices == rhs.pDeviceIndices ) &&
8119              ( splitInstanceBindRegionCount == rhs.splitInstanceBindRegionCount ) && ( pSplitInstanceBindRegions == rhs.pSplitInstanceBindRegions );
8120 #  endif
8121     }
8122 
operator !=VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo8123     bool operator!=( BindImageMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
8124     {
8125       return !operator==( rhs );
8126     }
8127 #endif
8128 
8129   public:
8130     VULKAN_HPP_NAMESPACE::StructureType  sType                        = StructureType::eBindImageMemoryDeviceGroupInfo;
8131     const void *                         pNext                        = {};
8132     uint32_t                             deviceIndexCount             = {};
8133     const uint32_t *                     pDeviceIndices               = {};
8134     uint32_t                             splitInstanceBindRegionCount = {};
8135     const VULKAN_HPP_NAMESPACE::Rect2D * pSplitInstanceBindRegions    = {};
8136   };
8137 
8138   template <>
8139   struct CppType<StructureType, StructureType::eBindImageMemoryDeviceGroupInfo>
8140   {
8141     using Type = BindImageMemoryDeviceGroupInfo;
8142   };
8143 
8144   using BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo;
8145 
8146   struct BindImageMemoryInfo
8147   {
8148     using NativeType = VkBindImageMemoryInfo;
8149 
8150     static const bool                                  allowDuplicate = false;
8151     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindImageMemoryInfo;
8152 
8153 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindImageMemoryInfoVULKAN_HPP_NAMESPACE::BindImageMemoryInfo8154     VULKAN_HPP_CONSTEXPR BindImageMemoryInfo( VULKAN_HPP_NAMESPACE::Image        image_        = {},
8155                                               VULKAN_HPP_NAMESPACE::DeviceMemory memory_       = {},
8156                                               VULKAN_HPP_NAMESPACE::DeviceSize   memoryOffset_ = {},
8157                                               const void *                       pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
8158       : pNext{ pNext_ }
8159       , image{ image_ }
8160       , memory{ memory_ }
8161       , memoryOffset{ memoryOffset_ }
8162     {
8163     }
8164 
8165     VULKAN_HPP_CONSTEXPR BindImageMemoryInfo( BindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8166 
BindImageMemoryInfoVULKAN_HPP_NAMESPACE::BindImageMemoryInfo8167     BindImageMemoryInfo( VkBindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT : BindImageMemoryInfo( *reinterpret_cast<BindImageMemoryInfo const *>( &rhs ) )
8168     {
8169     }
8170 
8171     BindImageMemoryInfo & operator=( BindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8172 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8173 
operator =VULKAN_HPP_NAMESPACE::BindImageMemoryInfo8174     BindImageMemoryInfo & operator=( VkBindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
8175     {
8176       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindImageMemoryInfo const *>( &rhs );
8177       return *this;
8178     }
8179 
8180 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindImageMemoryInfo8181     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
8182     {
8183       pNext = pNext_;
8184       return *this;
8185     }
8186 
setImageVULKAN_HPP_NAMESPACE::BindImageMemoryInfo8187     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
8188     {
8189       image = image_;
8190       return *this;
8191     }
8192 
setMemoryVULKAN_HPP_NAMESPACE::BindImageMemoryInfo8193     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
8194     {
8195       memory = memory_;
8196       return *this;
8197     }
8198 
setMemoryOffsetVULKAN_HPP_NAMESPACE::BindImageMemoryInfo8199     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT
8200     {
8201       memoryOffset = memoryOffset_;
8202       return *this;
8203     }
8204 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8205 
operator VkBindImageMemoryInfo const&VULKAN_HPP_NAMESPACE::BindImageMemoryInfo8206     operator VkBindImageMemoryInfo const &() const VULKAN_HPP_NOEXCEPT
8207     {
8208       return *reinterpret_cast<const VkBindImageMemoryInfo *>( this );
8209     }
8210 
operator VkBindImageMemoryInfo&VULKAN_HPP_NAMESPACE::BindImageMemoryInfo8211     operator VkBindImageMemoryInfo &() VULKAN_HPP_NOEXCEPT
8212     {
8213       return *reinterpret_cast<VkBindImageMemoryInfo *>( this );
8214     }
8215 
8216 #if defined( VULKAN_HPP_USE_REFLECT )
8217 #  if 14 <= VULKAN_HPP_CPP_VERSION
8218     auto
8219 #  else
8220     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
8221                const void * const &,
8222                VULKAN_HPP_NAMESPACE::Image const &,
8223                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
8224                VULKAN_HPP_NAMESPACE::DeviceSize const &>
8225 #  endif
reflectVULKAN_HPP_NAMESPACE::BindImageMemoryInfo8226       reflect() const VULKAN_HPP_NOEXCEPT
8227     {
8228       return std::tie( sType, pNext, image, memory, memoryOffset );
8229     }
8230 #endif
8231 
8232 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8233     auto operator<=>( BindImageMemoryInfo const & ) const = default;
8234 #else
operator ==VULKAN_HPP_NAMESPACE::BindImageMemoryInfo8235     bool operator==( BindImageMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
8236     {
8237 #  if defined( VULKAN_HPP_USE_REFLECT )
8238       return this->reflect() == rhs.reflect();
8239 #  else
8240       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( memory == rhs.memory ) && ( memoryOffset == rhs.memoryOffset );
8241 #  endif
8242     }
8243 
operator !=VULKAN_HPP_NAMESPACE::BindImageMemoryInfo8244     bool operator!=( BindImageMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
8245     {
8246       return !operator==( rhs );
8247     }
8248 #endif
8249 
8250   public:
8251     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eBindImageMemoryInfo;
8252     const void *                        pNext        = {};
8253     VULKAN_HPP_NAMESPACE::Image         image        = {};
8254     VULKAN_HPP_NAMESPACE::DeviceMemory  memory       = {};
8255     VULKAN_HPP_NAMESPACE::DeviceSize    memoryOffset = {};
8256   };
8257 
8258   template <>
8259   struct CppType<StructureType, StructureType::eBindImageMemoryInfo>
8260   {
8261     using Type = BindImageMemoryInfo;
8262   };
8263 
8264   using BindImageMemoryInfoKHR = BindImageMemoryInfo;
8265 
8266   struct BindImageMemorySwapchainInfoKHR
8267   {
8268     using NativeType = VkBindImageMemorySwapchainInfoKHR;
8269 
8270     static const bool                                  allowDuplicate = false;
8271     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindImageMemorySwapchainInfoKHR;
8272 
8273 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindImageMemorySwapchainInfoKHRVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8274     VULKAN_HPP_CONSTEXPR BindImageMemorySwapchainInfoKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_  = {},
8275                                                           uint32_t                           imageIndex_ = {},
8276                                                           const void *                       pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
8277       : pNext{ pNext_ }
8278       , swapchain{ swapchain_ }
8279       , imageIndex{ imageIndex_ }
8280     {
8281     }
8282 
8283     VULKAN_HPP_CONSTEXPR BindImageMemorySwapchainInfoKHR( BindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8284 
BindImageMemorySwapchainInfoKHRVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8285     BindImageMemorySwapchainInfoKHR( VkBindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
8286       : BindImageMemorySwapchainInfoKHR( *reinterpret_cast<BindImageMemorySwapchainInfoKHR const *>( &rhs ) )
8287     {
8288     }
8289 
8290     BindImageMemorySwapchainInfoKHR & operator=( BindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8291 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8292 
operator =VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8293     BindImageMemorySwapchainInfoKHR & operator=( VkBindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
8294     {
8295       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR const *>( &rhs );
8296       return *this;
8297     }
8298 
8299 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8300     VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
8301     {
8302       pNext = pNext_;
8303       return *this;
8304     }
8305 
setSwapchainVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8306     VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR & setSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ ) VULKAN_HPP_NOEXCEPT
8307     {
8308       swapchain = swapchain_;
8309       return *this;
8310     }
8311 
setImageIndexVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8312     VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR & setImageIndex( uint32_t imageIndex_ ) VULKAN_HPP_NOEXCEPT
8313     {
8314       imageIndex = imageIndex_;
8315       return *this;
8316     }
8317 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8318 
operator VkBindImageMemorySwapchainInfoKHR const&VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8319     operator VkBindImageMemorySwapchainInfoKHR const &() const VULKAN_HPP_NOEXCEPT
8320     {
8321       return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHR *>( this );
8322     }
8323 
operator VkBindImageMemorySwapchainInfoKHR&VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8324     operator VkBindImageMemorySwapchainInfoKHR &() VULKAN_HPP_NOEXCEPT
8325     {
8326       return *reinterpret_cast<VkBindImageMemorySwapchainInfoKHR *>( this );
8327     }
8328 
8329 #if defined( VULKAN_HPP_USE_REFLECT )
8330 #  if 14 <= VULKAN_HPP_CPP_VERSION
8331     auto
8332 #  else
8333     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SwapchainKHR const &, uint32_t const &>
8334 #  endif
reflectVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8335       reflect() const VULKAN_HPP_NOEXCEPT
8336     {
8337       return std::tie( sType, pNext, swapchain, imageIndex );
8338     }
8339 #endif
8340 
8341 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8342     auto operator<=>( BindImageMemorySwapchainInfoKHR const & ) const = default;
8343 #else
operator ==VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8344     bool operator==( BindImageMemorySwapchainInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
8345     {
8346 #  if defined( VULKAN_HPP_USE_REFLECT )
8347       return this->reflect() == rhs.reflect();
8348 #  else
8349       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchain == rhs.swapchain ) && ( imageIndex == rhs.imageIndex );
8350 #  endif
8351     }
8352 
operator !=VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR8353     bool operator!=( BindImageMemorySwapchainInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
8354     {
8355       return !operator==( rhs );
8356     }
8357 #endif
8358 
8359   public:
8360     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eBindImageMemorySwapchainInfoKHR;
8361     const void *                        pNext      = {};
8362     VULKAN_HPP_NAMESPACE::SwapchainKHR  swapchain  = {};
8363     uint32_t                            imageIndex = {};
8364   };
8365 
8366   template <>
8367   struct CppType<StructureType, StructureType::eBindImageMemorySwapchainInfoKHR>
8368   {
8369     using Type = BindImageMemorySwapchainInfoKHR;
8370   };
8371 
8372   struct BindImagePlaneMemoryInfo
8373   {
8374     using NativeType = VkBindImagePlaneMemoryInfo;
8375 
8376     static const bool                                  allowDuplicate = false;
8377     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindImagePlaneMemoryInfo;
8378 
8379 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindImagePlaneMemoryInfoVULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo8380     VULKAN_HPP_CONSTEXPR BindImagePlaneMemoryInfo( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor,
8381                                                    const void *                              pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
8382       : pNext{ pNext_ }
8383       , planeAspect{ planeAspect_ }
8384     {
8385     }
8386 
8387     VULKAN_HPP_CONSTEXPR BindImagePlaneMemoryInfo( BindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8388 
BindImagePlaneMemoryInfoVULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo8389     BindImagePlaneMemoryInfo( VkBindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
8390       : BindImagePlaneMemoryInfo( *reinterpret_cast<BindImagePlaneMemoryInfo const *>( &rhs ) )
8391     {
8392     }
8393 
8394     BindImagePlaneMemoryInfo & operator=( BindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8395 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8396 
operator =VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo8397     BindImagePlaneMemoryInfo & operator=( VkBindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
8398     {
8399       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo const *>( &rhs );
8400       return *this;
8401     }
8402 
8403 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo8404     VULKAN_HPP_CONSTEXPR_14 BindImagePlaneMemoryInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
8405     {
8406       pNext = pNext_;
8407       return *this;
8408     }
8409 
setPlaneAspectVULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo8410     VULKAN_HPP_CONSTEXPR_14 BindImagePlaneMemoryInfo & setPlaneAspect( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ ) VULKAN_HPP_NOEXCEPT
8411     {
8412       planeAspect = planeAspect_;
8413       return *this;
8414     }
8415 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8416 
operator VkBindImagePlaneMemoryInfo const&VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo8417     operator VkBindImagePlaneMemoryInfo const &() const VULKAN_HPP_NOEXCEPT
8418     {
8419       return *reinterpret_cast<const VkBindImagePlaneMemoryInfo *>( this );
8420     }
8421 
operator VkBindImagePlaneMemoryInfo&VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo8422     operator VkBindImagePlaneMemoryInfo &() VULKAN_HPP_NOEXCEPT
8423     {
8424       return *reinterpret_cast<VkBindImagePlaneMemoryInfo *>( this );
8425     }
8426 
8427 #if defined( VULKAN_HPP_USE_REFLECT )
8428 #  if 14 <= VULKAN_HPP_CPP_VERSION
8429     auto
8430 #  else
8431     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageAspectFlagBits const &>
8432 #  endif
reflectVULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo8433       reflect() const VULKAN_HPP_NOEXCEPT
8434     {
8435       return std::tie( sType, pNext, planeAspect );
8436     }
8437 #endif
8438 
8439 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8440     auto operator<=>( BindImagePlaneMemoryInfo const & ) const = default;
8441 #else
operator ==VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo8442     bool operator==( BindImagePlaneMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
8443     {
8444 #  if defined( VULKAN_HPP_USE_REFLECT )
8445       return this->reflect() == rhs.reflect();
8446 #  else
8447       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( planeAspect == rhs.planeAspect );
8448 #  endif
8449     }
8450 
operator !=VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo8451     bool operator!=( BindImagePlaneMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
8452     {
8453       return !operator==( rhs );
8454     }
8455 #endif
8456 
8457   public:
8458     VULKAN_HPP_NAMESPACE::StructureType       sType       = StructureType::eBindImagePlaneMemoryInfo;
8459     const void *                              pNext       = {};
8460     VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor;
8461   };
8462 
8463   template <>
8464   struct CppType<StructureType, StructureType::eBindImagePlaneMemoryInfo>
8465   {
8466     using Type = BindImagePlaneMemoryInfo;
8467   };
8468 
8469   using BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo;
8470 
8471   struct BindIndexBufferIndirectCommandNV
8472   {
8473     using NativeType = VkBindIndexBufferIndirectCommandNV;
8474 
8475 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
8476     VULKAN_HPP_CONSTEXPR
BindIndexBufferIndirectCommandNVVULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8477       BindIndexBufferIndirectCommandNV( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ = {},
8478                                         uint32_t                            size_          = {},
8479                                         VULKAN_HPP_NAMESPACE::IndexType     indexType_     = VULKAN_HPP_NAMESPACE::IndexType::eUint16 ) VULKAN_HPP_NOEXCEPT
8480       : bufferAddress{ bufferAddress_ }
8481       , size{ size_ }
8482       , indexType{ indexType_ }
8483     {
8484     }
8485 
8486     VULKAN_HPP_CONSTEXPR BindIndexBufferIndirectCommandNV( BindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8487 
BindIndexBufferIndirectCommandNVVULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8488     BindIndexBufferIndirectCommandNV( VkBindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
8489       : BindIndexBufferIndirectCommandNV( *reinterpret_cast<BindIndexBufferIndirectCommandNV const *>( &rhs ) )
8490     {
8491     }
8492 
8493     BindIndexBufferIndirectCommandNV & operator=( BindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8494 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8495 
operator =VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8496     BindIndexBufferIndirectCommandNV & operator=( VkBindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
8497     {
8498       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV const *>( &rhs );
8499       return *this;
8500     }
8501 
8502 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBufferAddressVULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8503     VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandNV & setBufferAddress( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ ) VULKAN_HPP_NOEXCEPT
8504     {
8505       bufferAddress = bufferAddress_;
8506       return *this;
8507     }
8508 
setSizeVULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8509     VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandNV & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT
8510     {
8511       size = size_;
8512       return *this;
8513     }
8514 
setIndexTypeVULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8515     VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandNV & setIndexType( VULKAN_HPP_NAMESPACE::IndexType indexType_ ) VULKAN_HPP_NOEXCEPT
8516     {
8517       indexType = indexType_;
8518       return *this;
8519     }
8520 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8521 
operator VkBindIndexBufferIndirectCommandNV const&VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8522     operator VkBindIndexBufferIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT
8523     {
8524       return *reinterpret_cast<const VkBindIndexBufferIndirectCommandNV *>( this );
8525     }
8526 
operator VkBindIndexBufferIndirectCommandNV&VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8527     operator VkBindIndexBufferIndirectCommandNV &() VULKAN_HPP_NOEXCEPT
8528     {
8529       return *reinterpret_cast<VkBindIndexBufferIndirectCommandNV *>( this );
8530     }
8531 
8532 #if defined( VULKAN_HPP_USE_REFLECT )
8533 #  if 14 <= VULKAN_HPP_CPP_VERSION
8534     auto
8535 #  else
8536     std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &, uint32_t const &, VULKAN_HPP_NAMESPACE::IndexType const &>
8537 #  endif
reflectVULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8538       reflect() const VULKAN_HPP_NOEXCEPT
8539     {
8540       return std::tie( bufferAddress, size, indexType );
8541     }
8542 #endif
8543 
8544 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8545     auto operator<=>( BindIndexBufferIndirectCommandNV const & ) const = default;
8546 #else
operator ==VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8547     bool operator==( BindIndexBufferIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
8548     {
8549 #  if defined( VULKAN_HPP_USE_REFLECT )
8550       return this->reflect() == rhs.reflect();
8551 #  else
8552       return ( bufferAddress == rhs.bufferAddress ) && ( size == rhs.size ) && ( indexType == rhs.indexType );
8553 #  endif
8554     }
8555 
operator !=VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV8556     bool operator!=( BindIndexBufferIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
8557     {
8558       return !operator==( rhs );
8559     }
8560 #endif
8561 
8562   public:
8563     VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress = {};
8564     uint32_t                            size          = {};
8565     VULKAN_HPP_NAMESPACE::IndexType     indexType     = VULKAN_HPP_NAMESPACE::IndexType::eUint16;
8566   };
8567 
8568   struct BindMemoryStatusKHR
8569   {
8570     using NativeType = VkBindMemoryStatusKHR;
8571 
8572     static const bool                                  allowDuplicate = false;
8573     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindMemoryStatusKHR;
8574 
8575 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindMemoryStatusKHRVULKAN_HPP_NAMESPACE::BindMemoryStatusKHR8576     VULKAN_HPP_CONSTEXPR BindMemoryStatusKHR( VULKAN_HPP_NAMESPACE::Result * pResult_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
8577       : pNext{ pNext_ }
8578       , pResult{ pResult_ }
8579     {
8580     }
8581 
8582     VULKAN_HPP_CONSTEXPR BindMemoryStatusKHR( BindMemoryStatusKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8583 
BindMemoryStatusKHRVULKAN_HPP_NAMESPACE::BindMemoryStatusKHR8584     BindMemoryStatusKHR( VkBindMemoryStatusKHR const & rhs ) VULKAN_HPP_NOEXCEPT : BindMemoryStatusKHR( *reinterpret_cast<BindMemoryStatusKHR const *>( &rhs ) )
8585     {
8586     }
8587 
8588     BindMemoryStatusKHR & operator=( BindMemoryStatusKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8589 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8590 
operator =VULKAN_HPP_NAMESPACE::BindMemoryStatusKHR8591     BindMemoryStatusKHR & operator=( VkBindMemoryStatusKHR const & rhs ) VULKAN_HPP_NOEXCEPT
8592     {
8593       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindMemoryStatusKHR const *>( &rhs );
8594       return *this;
8595     }
8596 
8597 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindMemoryStatusKHR8598     VULKAN_HPP_CONSTEXPR_14 BindMemoryStatusKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
8599     {
8600       pNext = pNext_;
8601       return *this;
8602     }
8603 
setPResultVULKAN_HPP_NAMESPACE::BindMemoryStatusKHR8604     VULKAN_HPP_CONSTEXPR_14 BindMemoryStatusKHR & setPResult( VULKAN_HPP_NAMESPACE::Result * pResult_ ) VULKAN_HPP_NOEXCEPT
8605     {
8606       pResult = pResult_;
8607       return *this;
8608     }
8609 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8610 
operator VkBindMemoryStatusKHR const&VULKAN_HPP_NAMESPACE::BindMemoryStatusKHR8611     operator VkBindMemoryStatusKHR const &() const VULKAN_HPP_NOEXCEPT
8612     {
8613       return *reinterpret_cast<const VkBindMemoryStatusKHR *>( this );
8614     }
8615 
operator VkBindMemoryStatusKHR&VULKAN_HPP_NAMESPACE::BindMemoryStatusKHR8616     operator VkBindMemoryStatusKHR &() VULKAN_HPP_NOEXCEPT
8617     {
8618       return *reinterpret_cast<VkBindMemoryStatusKHR *>( this );
8619     }
8620 
8621 #if defined( VULKAN_HPP_USE_REFLECT )
8622 #  if 14 <= VULKAN_HPP_CPP_VERSION
8623     auto
8624 #  else
8625     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Result * const &>
8626 #  endif
reflectVULKAN_HPP_NAMESPACE::BindMemoryStatusKHR8627       reflect() const VULKAN_HPP_NOEXCEPT
8628     {
8629       return std::tie( sType, pNext, pResult );
8630     }
8631 #endif
8632 
8633 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8634     auto operator<=>( BindMemoryStatusKHR const & ) const = default;
8635 #else
operator ==VULKAN_HPP_NAMESPACE::BindMemoryStatusKHR8636     bool operator==( BindMemoryStatusKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
8637     {
8638 #  if defined( VULKAN_HPP_USE_REFLECT )
8639       return this->reflect() == rhs.reflect();
8640 #  else
8641       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pResult == rhs.pResult );
8642 #  endif
8643     }
8644 
operator !=VULKAN_HPP_NAMESPACE::BindMemoryStatusKHR8645     bool operator!=( BindMemoryStatusKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
8646     {
8647       return !operator==( rhs );
8648     }
8649 #endif
8650 
8651   public:
8652     VULKAN_HPP_NAMESPACE::StructureType sType   = StructureType::eBindMemoryStatusKHR;
8653     const void *                        pNext   = {};
8654     VULKAN_HPP_NAMESPACE::Result *      pResult = {};
8655   };
8656 
8657   template <>
8658   struct CppType<StructureType, StructureType::eBindMemoryStatusKHR>
8659   {
8660     using Type = BindMemoryStatusKHR;
8661   };
8662 
8663   struct BindPipelineIndirectCommandNV
8664   {
8665     using NativeType = VkBindPipelineIndirectCommandNV;
8666 
8667 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindPipelineIndirectCommandNVVULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV8668     VULKAN_HPP_CONSTEXPR BindPipelineIndirectCommandNV( VULKAN_HPP_NAMESPACE::DeviceAddress pipelineAddress_ = {} ) VULKAN_HPP_NOEXCEPT
8669       : pipelineAddress{ pipelineAddress_ }
8670     {
8671     }
8672 
8673     VULKAN_HPP_CONSTEXPR BindPipelineIndirectCommandNV( BindPipelineIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8674 
BindPipelineIndirectCommandNVVULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV8675     BindPipelineIndirectCommandNV( VkBindPipelineIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
8676       : BindPipelineIndirectCommandNV( *reinterpret_cast<BindPipelineIndirectCommandNV const *>( &rhs ) )
8677     {
8678     }
8679 
8680     BindPipelineIndirectCommandNV & operator=( BindPipelineIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8681 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8682 
operator =VULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV8683     BindPipelineIndirectCommandNV & operator=( VkBindPipelineIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
8684     {
8685       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV const *>( &rhs );
8686       return *this;
8687     }
8688 
8689 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPipelineAddressVULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV8690     VULKAN_HPP_CONSTEXPR_14 BindPipelineIndirectCommandNV & setPipelineAddress( VULKAN_HPP_NAMESPACE::DeviceAddress pipelineAddress_ ) VULKAN_HPP_NOEXCEPT
8691     {
8692       pipelineAddress = pipelineAddress_;
8693       return *this;
8694     }
8695 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8696 
operator VkBindPipelineIndirectCommandNV const&VULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV8697     operator VkBindPipelineIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT
8698     {
8699       return *reinterpret_cast<const VkBindPipelineIndirectCommandNV *>( this );
8700     }
8701 
operator VkBindPipelineIndirectCommandNV&VULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV8702     operator VkBindPipelineIndirectCommandNV &() VULKAN_HPP_NOEXCEPT
8703     {
8704       return *reinterpret_cast<VkBindPipelineIndirectCommandNV *>( this );
8705     }
8706 
8707 #if defined( VULKAN_HPP_USE_REFLECT )
8708 #  if 14 <= VULKAN_HPP_CPP_VERSION
8709     auto
8710 #  else
8711     std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &>
8712 #  endif
reflectVULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV8713       reflect() const VULKAN_HPP_NOEXCEPT
8714     {
8715       return std::tie( pipelineAddress );
8716     }
8717 #endif
8718 
8719 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8720     auto operator<=>( BindPipelineIndirectCommandNV const & ) const = default;
8721 #else
operator ==VULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV8722     bool operator==( BindPipelineIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
8723     {
8724 #  if defined( VULKAN_HPP_USE_REFLECT )
8725       return this->reflect() == rhs.reflect();
8726 #  else
8727       return ( pipelineAddress == rhs.pipelineAddress );
8728 #  endif
8729     }
8730 
operator !=VULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV8731     bool operator!=( BindPipelineIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
8732     {
8733       return !operator==( rhs );
8734     }
8735 #endif
8736 
8737   public:
8738     VULKAN_HPP_NAMESPACE::DeviceAddress pipelineAddress = {};
8739   };
8740 
8741   struct BindShaderGroupIndirectCommandNV
8742   {
8743     using NativeType = VkBindShaderGroupIndirectCommandNV;
8744 
8745 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindShaderGroupIndirectCommandNVVULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV8746     VULKAN_HPP_CONSTEXPR BindShaderGroupIndirectCommandNV( uint32_t groupIndex_ = {} ) VULKAN_HPP_NOEXCEPT : groupIndex{ groupIndex_ } {}
8747 
8748     VULKAN_HPP_CONSTEXPR BindShaderGroupIndirectCommandNV( BindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8749 
BindShaderGroupIndirectCommandNVVULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV8750     BindShaderGroupIndirectCommandNV( VkBindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
8751       : BindShaderGroupIndirectCommandNV( *reinterpret_cast<BindShaderGroupIndirectCommandNV const *>( &rhs ) )
8752     {
8753     }
8754 
8755     BindShaderGroupIndirectCommandNV & operator=( BindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8756 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8757 
operator =VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV8758     BindShaderGroupIndirectCommandNV & operator=( VkBindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
8759     {
8760       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV const *>( &rhs );
8761       return *this;
8762     }
8763 
8764 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setGroupIndexVULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV8765     VULKAN_HPP_CONSTEXPR_14 BindShaderGroupIndirectCommandNV & setGroupIndex( uint32_t groupIndex_ ) VULKAN_HPP_NOEXCEPT
8766     {
8767       groupIndex = groupIndex_;
8768       return *this;
8769     }
8770 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8771 
operator VkBindShaderGroupIndirectCommandNV const&VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV8772     operator VkBindShaderGroupIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT
8773     {
8774       return *reinterpret_cast<const VkBindShaderGroupIndirectCommandNV *>( this );
8775     }
8776 
operator VkBindShaderGroupIndirectCommandNV&VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV8777     operator VkBindShaderGroupIndirectCommandNV &() VULKAN_HPP_NOEXCEPT
8778     {
8779       return *reinterpret_cast<VkBindShaderGroupIndirectCommandNV *>( this );
8780     }
8781 
8782 #if defined( VULKAN_HPP_USE_REFLECT )
8783 #  if 14 <= VULKAN_HPP_CPP_VERSION
8784     auto
8785 #  else
8786     std::tuple<uint32_t const &>
8787 #  endif
reflectVULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV8788       reflect() const VULKAN_HPP_NOEXCEPT
8789     {
8790       return std::tie( groupIndex );
8791     }
8792 #endif
8793 
8794 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8795     auto operator<=>( BindShaderGroupIndirectCommandNV const & ) const = default;
8796 #else
operator ==VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV8797     bool operator==( BindShaderGroupIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
8798     {
8799 #  if defined( VULKAN_HPP_USE_REFLECT )
8800       return this->reflect() == rhs.reflect();
8801 #  else
8802       return ( groupIndex == rhs.groupIndex );
8803 #  endif
8804     }
8805 
operator !=VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV8806     bool operator!=( BindShaderGroupIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
8807     {
8808       return !operator==( rhs );
8809     }
8810 #endif
8811 
8812   public:
8813     uint32_t groupIndex = {};
8814   };
8815 
8816   struct SparseMemoryBind
8817   {
8818     using NativeType = VkSparseMemoryBind;
8819 
8820 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SparseMemoryBindVULKAN_HPP_NAMESPACE::SparseMemoryBind8821     VULKAN_HPP_CONSTEXPR SparseMemoryBind( VULKAN_HPP_NAMESPACE::DeviceSize            resourceOffset_ = {},
8822                                            VULKAN_HPP_NAMESPACE::DeviceSize            size_           = {},
8823                                            VULKAN_HPP_NAMESPACE::DeviceMemory          memory_         = {},
8824                                            VULKAN_HPP_NAMESPACE::DeviceSize            memoryOffset_   = {},
8825                                            VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags_          = {} ) VULKAN_HPP_NOEXCEPT
8826       : resourceOffset{ resourceOffset_ }
8827       , size{ size_ }
8828       , memory{ memory_ }
8829       , memoryOffset{ memoryOffset_ }
8830       , flags{ flags_ }
8831     {
8832     }
8833 
8834     VULKAN_HPP_CONSTEXPR SparseMemoryBind( SparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8835 
SparseMemoryBindVULKAN_HPP_NAMESPACE::SparseMemoryBind8836     SparseMemoryBind( VkSparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT : SparseMemoryBind( *reinterpret_cast<SparseMemoryBind const *>( &rhs ) ) {}
8837 
8838     SparseMemoryBind & operator=( SparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8839 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8840 
operator =VULKAN_HPP_NAMESPACE::SparseMemoryBind8841     SparseMemoryBind & operator=( VkSparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT
8842     {
8843       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseMemoryBind const *>( &rhs );
8844       return *this;
8845     }
8846 
8847 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setResourceOffsetVULKAN_HPP_NAMESPACE::SparseMemoryBind8848     VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & setResourceOffset( VULKAN_HPP_NAMESPACE::DeviceSize resourceOffset_ ) VULKAN_HPP_NOEXCEPT
8849     {
8850       resourceOffset = resourceOffset_;
8851       return *this;
8852     }
8853 
setSizeVULKAN_HPP_NAMESPACE::SparseMemoryBind8854     VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
8855     {
8856       size = size_;
8857       return *this;
8858     }
8859 
setMemoryVULKAN_HPP_NAMESPACE::SparseMemoryBind8860     VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
8861     {
8862       memory = memory_;
8863       return *this;
8864     }
8865 
setMemoryOffsetVULKAN_HPP_NAMESPACE::SparseMemoryBind8866     VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT
8867     {
8868       memoryOffset = memoryOffset_;
8869       return *this;
8870     }
8871 
setFlagsVULKAN_HPP_NAMESPACE::SparseMemoryBind8872     VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & setFlags( VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags_ ) VULKAN_HPP_NOEXCEPT
8873     {
8874       flags = flags_;
8875       return *this;
8876     }
8877 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8878 
operator VkSparseMemoryBind const&VULKAN_HPP_NAMESPACE::SparseMemoryBind8879     operator VkSparseMemoryBind const &() const VULKAN_HPP_NOEXCEPT
8880     {
8881       return *reinterpret_cast<const VkSparseMemoryBind *>( this );
8882     }
8883 
operator VkSparseMemoryBind&VULKAN_HPP_NAMESPACE::SparseMemoryBind8884     operator VkSparseMemoryBind &() VULKAN_HPP_NOEXCEPT
8885     {
8886       return *reinterpret_cast<VkSparseMemoryBind *>( this );
8887     }
8888 
8889 #if defined( VULKAN_HPP_USE_REFLECT )
8890 #  if 14 <= VULKAN_HPP_CPP_VERSION
8891     auto
8892 #  else
8893     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &,
8894                VULKAN_HPP_NAMESPACE::DeviceSize const &,
8895                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
8896                VULKAN_HPP_NAMESPACE::DeviceSize const &,
8897                VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags const &>
8898 #  endif
reflectVULKAN_HPP_NAMESPACE::SparseMemoryBind8899       reflect() const VULKAN_HPP_NOEXCEPT
8900     {
8901       return std::tie( resourceOffset, size, memory, memoryOffset, flags );
8902     }
8903 #endif
8904 
8905 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
8906     auto operator<=>( SparseMemoryBind const & ) const = default;
8907 #else
operator ==VULKAN_HPP_NAMESPACE::SparseMemoryBind8908     bool operator==( SparseMemoryBind const & rhs ) const VULKAN_HPP_NOEXCEPT
8909     {
8910 #  if defined( VULKAN_HPP_USE_REFLECT )
8911       return this->reflect() == rhs.reflect();
8912 #  else
8913       return ( resourceOffset == rhs.resourceOffset ) && ( size == rhs.size ) && ( memory == rhs.memory ) && ( memoryOffset == rhs.memoryOffset ) &&
8914              ( flags == rhs.flags );
8915 #  endif
8916     }
8917 
operator !=VULKAN_HPP_NAMESPACE::SparseMemoryBind8918     bool operator!=( SparseMemoryBind const & rhs ) const VULKAN_HPP_NOEXCEPT
8919     {
8920       return !operator==( rhs );
8921     }
8922 #endif
8923 
8924   public:
8925     VULKAN_HPP_NAMESPACE::DeviceSize            resourceOffset = {};
8926     VULKAN_HPP_NAMESPACE::DeviceSize            size           = {};
8927     VULKAN_HPP_NAMESPACE::DeviceMemory          memory         = {};
8928     VULKAN_HPP_NAMESPACE::DeviceSize            memoryOffset   = {};
8929     VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags          = {};
8930   };
8931 
8932   struct SparseBufferMemoryBindInfo
8933   {
8934     using NativeType = VkSparseBufferMemoryBindInfo;
8935 
8936 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SparseBufferMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo8937     VULKAN_HPP_CONSTEXPR SparseBufferMemoryBindInfo( VULKAN_HPP_NAMESPACE::Buffer                   buffer_    = {},
8938                                                      uint32_t                                       bindCount_ = {},
8939                                                      const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds_    = {} ) VULKAN_HPP_NOEXCEPT
8940       : buffer{ buffer_ }
8941       , bindCount{ bindCount_ }
8942       , pBinds{ pBinds_ }
8943     {
8944     }
8945 
8946     VULKAN_HPP_CONSTEXPR SparseBufferMemoryBindInfo( SparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8947 
SparseBufferMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo8948     SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
8949       : SparseBufferMemoryBindInfo( *reinterpret_cast<SparseBufferMemoryBindInfo const *>( &rhs ) )
8950     {
8951     }
8952 
8953 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SparseBufferMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo8954     SparseBufferMemoryBindInfo( VULKAN_HPP_NAMESPACE::Buffer                                                                        buffer_,
8955                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseMemoryBind> const & binds_ )
8956       : buffer( buffer_ ), bindCount( static_cast<uint32_t>( binds_.size() ) ), pBinds( binds_.data() )
8957     {
8958     }
8959 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8960 
8961     SparseBufferMemoryBindInfo & operator=( SparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8962 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8963 
operator =VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo8964     SparseBufferMemoryBindInfo & operator=( VkSparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
8965     {
8966       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo const *>( &rhs );
8967       return *this;
8968     }
8969 
8970 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBufferVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo8971     VULKAN_HPP_CONSTEXPR_14 SparseBufferMemoryBindInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
8972     {
8973       buffer = buffer_;
8974       return *this;
8975     }
8976 
setBindCountVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo8977     VULKAN_HPP_CONSTEXPR_14 SparseBufferMemoryBindInfo & setBindCount( uint32_t bindCount_ ) VULKAN_HPP_NOEXCEPT
8978     {
8979       bindCount = bindCount_;
8980       return *this;
8981     }
8982 
setPBindsVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo8983     VULKAN_HPP_CONSTEXPR_14 SparseBufferMemoryBindInfo & setPBinds( const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds_ ) VULKAN_HPP_NOEXCEPT
8984     {
8985       pBinds = pBinds_;
8986       return *this;
8987     }
8988 
8989 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
8990     SparseBufferMemoryBindInfo &
setBindsVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo8991       setBinds( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseMemoryBind> const & binds_ ) VULKAN_HPP_NOEXCEPT
8992     {
8993       bindCount = static_cast<uint32_t>( binds_.size() );
8994       pBinds    = binds_.data();
8995       return *this;
8996     }
8997 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8998 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8999 
operator VkSparseBufferMemoryBindInfo const&VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo9000     operator VkSparseBufferMemoryBindInfo const &() const VULKAN_HPP_NOEXCEPT
9001     {
9002       return *reinterpret_cast<const VkSparseBufferMemoryBindInfo *>( this );
9003     }
9004 
operator VkSparseBufferMemoryBindInfo&VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo9005     operator VkSparseBufferMemoryBindInfo &() VULKAN_HPP_NOEXCEPT
9006     {
9007       return *reinterpret_cast<VkSparseBufferMemoryBindInfo *>( this );
9008     }
9009 
9010 #if defined( VULKAN_HPP_USE_REFLECT )
9011 #  if 14 <= VULKAN_HPP_CPP_VERSION
9012     auto
9013 #  else
9014     std::tuple<VULKAN_HPP_NAMESPACE::Buffer const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::SparseMemoryBind * const &>
9015 #  endif
reflectVULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo9016       reflect() const VULKAN_HPP_NOEXCEPT
9017     {
9018       return std::tie( buffer, bindCount, pBinds );
9019     }
9020 #endif
9021 
9022 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9023     auto operator<=>( SparseBufferMemoryBindInfo const & ) const = default;
9024 #else
operator ==VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo9025     bool operator==( SparseBufferMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9026     {
9027 #  if defined( VULKAN_HPP_USE_REFLECT )
9028       return this->reflect() == rhs.reflect();
9029 #  else
9030       return ( buffer == rhs.buffer ) && ( bindCount == rhs.bindCount ) && ( pBinds == rhs.pBinds );
9031 #  endif
9032     }
9033 
operator !=VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo9034     bool operator!=( SparseBufferMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9035     {
9036       return !operator==( rhs );
9037     }
9038 #endif
9039 
9040   public:
9041     VULKAN_HPP_NAMESPACE::Buffer                   buffer    = {};
9042     uint32_t                                       bindCount = {};
9043     const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds    = {};
9044   };
9045 
9046   struct SparseImageOpaqueMemoryBindInfo
9047   {
9048     using NativeType = VkSparseImageOpaqueMemoryBindInfo;
9049 
9050 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SparseImageOpaqueMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9051     VULKAN_HPP_CONSTEXPR SparseImageOpaqueMemoryBindInfo( VULKAN_HPP_NAMESPACE::Image                    image_     = {},
9052                                                           uint32_t                                       bindCount_ = {},
9053                                                           const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds_    = {} ) VULKAN_HPP_NOEXCEPT
9054       : image{ image_ }
9055       , bindCount{ bindCount_ }
9056       , pBinds{ pBinds_ }
9057     {
9058     }
9059 
9060     VULKAN_HPP_CONSTEXPR SparseImageOpaqueMemoryBindInfo( SparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9061 
SparseImageOpaqueMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9062     SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9063       : SparseImageOpaqueMemoryBindInfo( *reinterpret_cast<SparseImageOpaqueMemoryBindInfo const *>( &rhs ) )
9064     {
9065     }
9066 
9067 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SparseImageOpaqueMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9068     SparseImageOpaqueMemoryBindInfo( VULKAN_HPP_NAMESPACE::Image                                                                         image_,
9069                                      VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseMemoryBind> const & binds_ )
9070       : image( image_ ), bindCount( static_cast<uint32_t>( binds_.size() ) ), pBinds( binds_.data() )
9071     {
9072     }
9073 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9074 
9075     SparseImageOpaqueMemoryBindInfo & operator=( SparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9076 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9077 
operator =VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9078     SparseImageOpaqueMemoryBindInfo & operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9079     {
9080       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo const *>( &rhs );
9081       return *this;
9082     }
9083 
9084 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setImageVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9085     VULKAN_HPP_CONSTEXPR_14 SparseImageOpaqueMemoryBindInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
9086     {
9087       image = image_;
9088       return *this;
9089     }
9090 
setBindCountVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9091     VULKAN_HPP_CONSTEXPR_14 SparseImageOpaqueMemoryBindInfo & setBindCount( uint32_t bindCount_ ) VULKAN_HPP_NOEXCEPT
9092     {
9093       bindCount = bindCount_;
9094       return *this;
9095     }
9096 
setPBindsVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9097     VULKAN_HPP_CONSTEXPR_14 SparseImageOpaqueMemoryBindInfo & setPBinds( const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds_ ) VULKAN_HPP_NOEXCEPT
9098     {
9099       pBinds = pBinds_;
9100       return *this;
9101     }
9102 
9103 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
9104     SparseImageOpaqueMemoryBindInfo &
setBindsVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9105       setBinds( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseMemoryBind> const & binds_ ) VULKAN_HPP_NOEXCEPT
9106     {
9107       bindCount = static_cast<uint32_t>( binds_.size() );
9108       pBinds    = binds_.data();
9109       return *this;
9110     }
9111 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9112 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9113 
operator VkSparseImageOpaqueMemoryBindInfo const&VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9114     operator VkSparseImageOpaqueMemoryBindInfo const &() const VULKAN_HPP_NOEXCEPT
9115     {
9116       return *reinterpret_cast<const VkSparseImageOpaqueMemoryBindInfo *>( this );
9117     }
9118 
operator VkSparseImageOpaqueMemoryBindInfo&VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9119     operator VkSparseImageOpaqueMemoryBindInfo &() VULKAN_HPP_NOEXCEPT
9120     {
9121       return *reinterpret_cast<VkSparseImageOpaqueMemoryBindInfo *>( this );
9122     }
9123 
9124 #if defined( VULKAN_HPP_USE_REFLECT )
9125 #  if 14 <= VULKAN_HPP_CPP_VERSION
9126     auto
9127 #  else
9128     std::tuple<VULKAN_HPP_NAMESPACE::Image const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::SparseMemoryBind * const &>
9129 #  endif
reflectVULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9130       reflect() const VULKAN_HPP_NOEXCEPT
9131     {
9132       return std::tie( image, bindCount, pBinds );
9133     }
9134 #endif
9135 
9136 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9137     auto operator<=>( SparseImageOpaqueMemoryBindInfo const & ) const = default;
9138 #else
operator ==VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9139     bool operator==( SparseImageOpaqueMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9140     {
9141 #  if defined( VULKAN_HPP_USE_REFLECT )
9142       return this->reflect() == rhs.reflect();
9143 #  else
9144       return ( image == rhs.image ) && ( bindCount == rhs.bindCount ) && ( pBinds == rhs.pBinds );
9145 #  endif
9146     }
9147 
operator !=VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo9148     bool operator!=( SparseImageOpaqueMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9149     {
9150       return !operator==( rhs );
9151     }
9152 #endif
9153 
9154   public:
9155     VULKAN_HPP_NAMESPACE::Image                    image     = {};
9156     uint32_t                                       bindCount = {};
9157     const VULKAN_HPP_NAMESPACE::SparseMemoryBind * pBinds    = {};
9158   };
9159 
9160   struct ImageSubresource
9161   {
9162     using NativeType = VkImageSubresource;
9163 
9164 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
9165     VULKAN_HPP_CONSTEXPR
ImageSubresourceVULKAN_HPP_NAMESPACE::ImageSubresource9166       ImageSubresource( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {}, uint32_t mipLevel_ = {}, uint32_t arrayLayer_ = {} ) VULKAN_HPP_NOEXCEPT
9167       : aspectMask{ aspectMask_ }
9168       , mipLevel{ mipLevel_ }
9169       , arrayLayer{ arrayLayer_ }
9170     {
9171     }
9172 
9173     VULKAN_HPP_CONSTEXPR ImageSubresource( ImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9174 
ImageSubresourceVULKAN_HPP_NAMESPACE::ImageSubresource9175     ImageSubresource( VkImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT : ImageSubresource( *reinterpret_cast<ImageSubresource const *>( &rhs ) ) {}
9176 
9177     ImageSubresource & operator=( ImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9178 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9179 
operator =VULKAN_HPP_NAMESPACE::ImageSubresource9180     ImageSubresource & operator=( VkImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT
9181     {
9182       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSubresource const *>( &rhs );
9183       return *this;
9184     }
9185 
9186 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAspectMaskVULKAN_HPP_NAMESPACE::ImageSubresource9187     VULKAN_HPP_CONSTEXPR_14 ImageSubresource & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
9188     {
9189       aspectMask = aspectMask_;
9190       return *this;
9191     }
9192 
setMipLevelVULKAN_HPP_NAMESPACE::ImageSubresource9193     VULKAN_HPP_CONSTEXPR_14 ImageSubresource & setMipLevel( uint32_t mipLevel_ ) VULKAN_HPP_NOEXCEPT
9194     {
9195       mipLevel = mipLevel_;
9196       return *this;
9197     }
9198 
setArrayLayerVULKAN_HPP_NAMESPACE::ImageSubresource9199     VULKAN_HPP_CONSTEXPR_14 ImageSubresource & setArrayLayer( uint32_t arrayLayer_ ) VULKAN_HPP_NOEXCEPT
9200     {
9201       arrayLayer = arrayLayer_;
9202       return *this;
9203     }
9204 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9205 
operator VkImageSubresource const&VULKAN_HPP_NAMESPACE::ImageSubresource9206     operator VkImageSubresource const &() const VULKAN_HPP_NOEXCEPT
9207     {
9208       return *reinterpret_cast<const VkImageSubresource *>( this );
9209     }
9210 
operator VkImageSubresource&VULKAN_HPP_NAMESPACE::ImageSubresource9211     operator VkImageSubresource &() VULKAN_HPP_NOEXCEPT
9212     {
9213       return *reinterpret_cast<VkImageSubresource *>( this );
9214     }
9215 
9216 #if defined( VULKAN_HPP_USE_REFLECT )
9217 #  if 14 <= VULKAN_HPP_CPP_VERSION
9218     auto
9219 #  else
9220     std::tuple<VULKAN_HPP_NAMESPACE::ImageAspectFlags const &, uint32_t const &, uint32_t const &>
9221 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageSubresource9222       reflect() const VULKAN_HPP_NOEXCEPT
9223     {
9224       return std::tie( aspectMask, mipLevel, arrayLayer );
9225     }
9226 #endif
9227 
9228 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9229     auto operator<=>( ImageSubresource const & ) const = default;
9230 #else
operator ==VULKAN_HPP_NAMESPACE::ImageSubresource9231     bool operator==( ImageSubresource const & rhs ) const VULKAN_HPP_NOEXCEPT
9232     {
9233 #  if defined( VULKAN_HPP_USE_REFLECT )
9234       return this->reflect() == rhs.reflect();
9235 #  else
9236       return ( aspectMask == rhs.aspectMask ) && ( mipLevel == rhs.mipLevel ) && ( arrayLayer == rhs.arrayLayer );
9237 #  endif
9238     }
9239 
operator !=VULKAN_HPP_NAMESPACE::ImageSubresource9240     bool operator!=( ImageSubresource const & rhs ) const VULKAN_HPP_NOEXCEPT
9241     {
9242       return !operator==( rhs );
9243     }
9244 #endif
9245 
9246   public:
9247     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {};
9248     uint32_t                               mipLevel   = {};
9249     uint32_t                               arrayLayer = {};
9250   };
9251 
9252   struct Offset3D
9253   {
9254     using NativeType = VkOffset3D;
9255 
9256 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Offset3DVULKAN_HPP_NAMESPACE::Offset3D9257     VULKAN_HPP_CONSTEXPR Offset3D( int32_t x_ = {}, int32_t y_ = {}, int32_t z_ = {} ) VULKAN_HPP_NOEXCEPT
9258       : x{ x_ }
9259       , y{ y_ }
9260       , z{ z_ }
9261     {
9262     }
9263 
9264     VULKAN_HPP_CONSTEXPR Offset3D( Offset3D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9265 
Offset3DVULKAN_HPP_NAMESPACE::Offset3D9266     Offset3D( VkOffset3D const & rhs ) VULKAN_HPP_NOEXCEPT : Offset3D( *reinterpret_cast<Offset3D const *>( &rhs ) ) {}
9267 
Offset3DVULKAN_HPP_NAMESPACE::Offset3D9268     explicit Offset3D( Offset2D const & offset2D, int32_t z_ = {} ) : x( offset2D.x ), y( offset2D.y ), z( z_ ) {}
9269 
9270     Offset3D & operator=( Offset3D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9271 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9272 
operator =VULKAN_HPP_NAMESPACE::Offset3D9273     Offset3D & operator=( VkOffset3D const & rhs ) VULKAN_HPP_NOEXCEPT
9274     {
9275       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Offset3D const *>( &rhs );
9276       return *this;
9277     }
9278 
9279 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::Offset3D9280     VULKAN_HPP_CONSTEXPR_14 Offset3D & setX( int32_t x_ ) VULKAN_HPP_NOEXCEPT
9281     {
9282       x = x_;
9283       return *this;
9284     }
9285 
setYVULKAN_HPP_NAMESPACE::Offset3D9286     VULKAN_HPP_CONSTEXPR_14 Offset3D & setY( int32_t y_ ) VULKAN_HPP_NOEXCEPT
9287     {
9288       y = y_;
9289       return *this;
9290     }
9291 
setZVULKAN_HPP_NAMESPACE::Offset3D9292     VULKAN_HPP_CONSTEXPR_14 Offset3D & setZ( int32_t z_ ) VULKAN_HPP_NOEXCEPT
9293     {
9294       z = z_;
9295       return *this;
9296     }
9297 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9298 
operator VkOffset3D const&VULKAN_HPP_NAMESPACE::Offset3D9299     operator VkOffset3D const &() const VULKAN_HPP_NOEXCEPT
9300     {
9301       return *reinterpret_cast<const VkOffset3D *>( this );
9302     }
9303 
operator VkOffset3D&VULKAN_HPP_NAMESPACE::Offset3D9304     operator VkOffset3D &() VULKAN_HPP_NOEXCEPT
9305     {
9306       return *reinterpret_cast<VkOffset3D *>( this );
9307     }
9308 
9309 #if defined( VULKAN_HPP_USE_REFLECT )
9310 #  if 14 <= VULKAN_HPP_CPP_VERSION
9311     auto
9312 #  else
9313     std::tuple<int32_t const &, int32_t const &, int32_t const &>
9314 #  endif
reflectVULKAN_HPP_NAMESPACE::Offset3D9315       reflect() const VULKAN_HPP_NOEXCEPT
9316     {
9317       return std::tie( x, y, z );
9318     }
9319 #endif
9320 
9321 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9322     auto operator<=>( Offset3D const & ) const = default;
9323 #else
operator ==VULKAN_HPP_NAMESPACE::Offset3D9324     bool operator==( Offset3D const & rhs ) const VULKAN_HPP_NOEXCEPT
9325     {
9326 #  if defined( VULKAN_HPP_USE_REFLECT )
9327       return this->reflect() == rhs.reflect();
9328 #  else
9329       return ( x == rhs.x ) && ( y == rhs.y ) && ( z == rhs.z );
9330 #  endif
9331     }
9332 
operator !=VULKAN_HPP_NAMESPACE::Offset3D9333     bool operator!=( Offset3D const & rhs ) const VULKAN_HPP_NOEXCEPT
9334     {
9335       return !operator==( rhs );
9336     }
9337 #endif
9338 
9339   public:
9340     int32_t x = {};
9341     int32_t y = {};
9342     int32_t z = {};
9343   };
9344 
9345   struct Extent3D
9346   {
9347     using NativeType = VkExtent3D;
9348 
9349 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Extent3DVULKAN_HPP_NAMESPACE::Extent3D9350     VULKAN_HPP_CONSTEXPR Extent3D( uint32_t width_ = {}, uint32_t height_ = {}, uint32_t depth_ = {} ) VULKAN_HPP_NOEXCEPT
9351       : width{ width_ }
9352       , height{ height_ }
9353       , depth{ depth_ }
9354     {
9355     }
9356 
9357     VULKAN_HPP_CONSTEXPR Extent3D( Extent3D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9358 
Extent3DVULKAN_HPP_NAMESPACE::Extent3D9359     Extent3D( VkExtent3D const & rhs ) VULKAN_HPP_NOEXCEPT : Extent3D( *reinterpret_cast<Extent3D const *>( &rhs ) ) {}
9360 
Extent3DVULKAN_HPP_NAMESPACE::Extent3D9361     explicit Extent3D( Extent2D const & extent2D, uint32_t depth_ = {} ) : width( extent2D.width ), height( extent2D.height ), depth( depth_ ) {}
9362 
9363     Extent3D & operator=( Extent3D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9364 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9365 
operator =VULKAN_HPP_NAMESPACE::Extent3D9366     Extent3D & operator=( VkExtent3D const & rhs ) VULKAN_HPP_NOEXCEPT
9367     {
9368       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Extent3D const *>( &rhs );
9369       return *this;
9370     }
9371 
9372 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setWidthVULKAN_HPP_NAMESPACE::Extent3D9373     VULKAN_HPP_CONSTEXPR_14 Extent3D & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
9374     {
9375       width = width_;
9376       return *this;
9377     }
9378 
setHeightVULKAN_HPP_NAMESPACE::Extent3D9379     VULKAN_HPP_CONSTEXPR_14 Extent3D & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
9380     {
9381       height = height_;
9382       return *this;
9383     }
9384 
setDepthVULKAN_HPP_NAMESPACE::Extent3D9385     VULKAN_HPP_CONSTEXPR_14 Extent3D & setDepth( uint32_t depth_ ) VULKAN_HPP_NOEXCEPT
9386     {
9387       depth = depth_;
9388       return *this;
9389     }
9390 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9391 
operator VkExtent3D const&VULKAN_HPP_NAMESPACE::Extent3D9392     operator VkExtent3D const &() const VULKAN_HPP_NOEXCEPT
9393     {
9394       return *reinterpret_cast<const VkExtent3D *>( this );
9395     }
9396 
operator VkExtent3D&VULKAN_HPP_NAMESPACE::Extent3D9397     operator VkExtent3D &() VULKAN_HPP_NOEXCEPT
9398     {
9399       return *reinterpret_cast<VkExtent3D *>( this );
9400     }
9401 
9402 #if defined( VULKAN_HPP_USE_REFLECT )
9403 #  if 14 <= VULKAN_HPP_CPP_VERSION
9404     auto
9405 #  else
9406     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
9407 #  endif
reflectVULKAN_HPP_NAMESPACE::Extent3D9408       reflect() const VULKAN_HPP_NOEXCEPT
9409     {
9410       return std::tie( width, height, depth );
9411     }
9412 #endif
9413 
9414 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9415     auto operator<=>( Extent3D const & ) const = default;
9416 #else
operator ==VULKAN_HPP_NAMESPACE::Extent3D9417     bool operator==( Extent3D const & rhs ) const VULKAN_HPP_NOEXCEPT
9418     {
9419 #  if defined( VULKAN_HPP_USE_REFLECT )
9420       return this->reflect() == rhs.reflect();
9421 #  else
9422       return ( width == rhs.width ) && ( height == rhs.height ) && ( depth == rhs.depth );
9423 #  endif
9424     }
9425 
operator !=VULKAN_HPP_NAMESPACE::Extent3D9426     bool operator!=( Extent3D const & rhs ) const VULKAN_HPP_NOEXCEPT
9427     {
9428       return !operator==( rhs );
9429     }
9430 #endif
9431 
9432   public:
9433     uint32_t width  = {};
9434     uint32_t height = {};
9435     uint32_t depth  = {};
9436   };
9437 
9438   struct SparseImageMemoryBind
9439   {
9440     using NativeType = VkSparseImageMemoryBind;
9441 
9442 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SparseImageMemoryBindVULKAN_HPP_NAMESPACE::SparseImageMemoryBind9443     VULKAN_HPP_CONSTEXPR SparseImageMemoryBind( VULKAN_HPP_NAMESPACE::ImageSubresource      subresource_  = {},
9444                                                 VULKAN_HPP_NAMESPACE::Offset3D              offset_       = {},
9445                                                 VULKAN_HPP_NAMESPACE::Extent3D              extent_       = {},
9446                                                 VULKAN_HPP_NAMESPACE::DeviceMemory          memory_       = {},
9447                                                 VULKAN_HPP_NAMESPACE::DeviceSize            memoryOffset_ = {},
9448                                                 VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags_        = {} ) VULKAN_HPP_NOEXCEPT
9449       : subresource{ subresource_ }
9450       , offset{ offset_ }
9451       , extent{ extent_ }
9452       , memory{ memory_ }
9453       , memoryOffset{ memoryOffset_ }
9454       , flags{ flags_ }
9455     {
9456     }
9457 
9458     VULKAN_HPP_CONSTEXPR SparseImageMemoryBind( SparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9459 
SparseImageMemoryBindVULKAN_HPP_NAMESPACE::SparseImageMemoryBind9460     SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT
9461       : SparseImageMemoryBind( *reinterpret_cast<SparseImageMemoryBind const *>( &rhs ) )
9462     {
9463     }
9464 
9465     SparseImageMemoryBind & operator=( SparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9466 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9467 
operator =VULKAN_HPP_NAMESPACE::SparseImageMemoryBind9468     SparseImageMemoryBind & operator=( VkSparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT
9469     {
9470       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageMemoryBind const *>( &rhs );
9471       return *this;
9472     }
9473 
9474 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSubresourceVULKAN_HPP_NAMESPACE::SparseImageMemoryBind9475     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & setSubresource( VULKAN_HPP_NAMESPACE::ImageSubresource const & subresource_ ) VULKAN_HPP_NOEXCEPT
9476     {
9477       subresource = subresource_;
9478       return *this;
9479     }
9480 
setOffsetVULKAN_HPP_NAMESPACE::SparseImageMemoryBind9481     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & setOffset( VULKAN_HPP_NAMESPACE::Offset3D const & offset_ ) VULKAN_HPP_NOEXCEPT
9482     {
9483       offset = offset_;
9484       return *this;
9485     }
9486 
setExtentVULKAN_HPP_NAMESPACE::SparseImageMemoryBind9487     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
9488     {
9489       extent = extent_;
9490       return *this;
9491     }
9492 
setMemoryVULKAN_HPP_NAMESPACE::SparseImageMemoryBind9493     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
9494     {
9495       memory = memory_;
9496       return *this;
9497     }
9498 
setMemoryOffsetVULKAN_HPP_NAMESPACE::SparseImageMemoryBind9499     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT
9500     {
9501       memoryOffset = memoryOffset_;
9502       return *this;
9503     }
9504 
setFlagsVULKAN_HPP_NAMESPACE::SparseImageMemoryBind9505     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & setFlags( VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags_ ) VULKAN_HPP_NOEXCEPT
9506     {
9507       flags = flags_;
9508       return *this;
9509     }
9510 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9511 
operator VkSparseImageMemoryBind const&VULKAN_HPP_NAMESPACE::SparseImageMemoryBind9512     operator VkSparseImageMemoryBind const &() const VULKAN_HPP_NOEXCEPT
9513     {
9514       return *reinterpret_cast<const VkSparseImageMemoryBind *>( this );
9515     }
9516 
operator VkSparseImageMemoryBind&VULKAN_HPP_NAMESPACE::SparseImageMemoryBind9517     operator VkSparseImageMemoryBind &() VULKAN_HPP_NOEXCEPT
9518     {
9519       return *reinterpret_cast<VkSparseImageMemoryBind *>( this );
9520     }
9521 
9522 #if defined( VULKAN_HPP_USE_REFLECT )
9523 #  if 14 <= VULKAN_HPP_CPP_VERSION
9524     auto
9525 #  else
9526     std::tuple<VULKAN_HPP_NAMESPACE::ImageSubresource const &,
9527                VULKAN_HPP_NAMESPACE::Offset3D const &,
9528                VULKAN_HPP_NAMESPACE::Extent3D const &,
9529                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
9530                VULKAN_HPP_NAMESPACE::DeviceSize const &,
9531                VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags const &>
9532 #  endif
reflectVULKAN_HPP_NAMESPACE::SparseImageMemoryBind9533       reflect() const VULKAN_HPP_NOEXCEPT
9534     {
9535       return std::tie( subresource, offset, extent, memory, memoryOffset, flags );
9536     }
9537 #endif
9538 
9539 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9540     auto operator<=>( SparseImageMemoryBind const & ) const = default;
9541 #else
operator ==VULKAN_HPP_NAMESPACE::SparseImageMemoryBind9542     bool operator==( SparseImageMemoryBind const & rhs ) const VULKAN_HPP_NOEXCEPT
9543     {
9544 #  if defined( VULKAN_HPP_USE_REFLECT )
9545       return this->reflect() == rhs.reflect();
9546 #  else
9547       return ( subresource == rhs.subresource ) && ( offset == rhs.offset ) && ( extent == rhs.extent ) && ( memory == rhs.memory ) &&
9548              ( memoryOffset == rhs.memoryOffset ) && ( flags == rhs.flags );
9549 #  endif
9550     }
9551 
operator !=VULKAN_HPP_NAMESPACE::SparseImageMemoryBind9552     bool operator!=( SparseImageMemoryBind const & rhs ) const VULKAN_HPP_NOEXCEPT
9553     {
9554       return !operator==( rhs );
9555     }
9556 #endif
9557 
9558   public:
9559     VULKAN_HPP_NAMESPACE::ImageSubresource      subresource  = {};
9560     VULKAN_HPP_NAMESPACE::Offset3D              offset       = {};
9561     VULKAN_HPP_NAMESPACE::Extent3D              extent       = {};
9562     VULKAN_HPP_NAMESPACE::DeviceMemory          memory       = {};
9563     VULKAN_HPP_NAMESPACE::DeviceSize            memoryOffset = {};
9564     VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags        = {};
9565   };
9566 
9567   struct SparseImageMemoryBindInfo
9568   {
9569     using NativeType = VkSparseImageMemoryBindInfo;
9570 
9571 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SparseImageMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9572     VULKAN_HPP_CONSTEXPR SparseImageMemoryBindInfo( VULKAN_HPP_NAMESPACE::Image                         image_     = {},
9573                                                     uint32_t                                            bindCount_ = {},
9574                                                     const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind * pBinds_    = {} ) VULKAN_HPP_NOEXCEPT
9575       : image{ image_ }
9576       , bindCount{ bindCount_ }
9577       , pBinds{ pBinds_ }
9578     {
9579     }
9580 
9581     VULKAN_HPP_CONSTEXPR SparseImageMemoryBindInfo( SparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9582 
SparseImageMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9583     SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9584       : SparseImageMemoryBindInfo( *reinterpret_cast<SparseImageMemoryBindInfo const *>( &rhs ) )
9585     {
9586     }
9587 
9588 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SparseImageMemoryBindInfoVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9589     SparseImageMemoryBindInfo( VULKAN_HPP_NAMESPACE::Image                                                                              image_,
9590                                VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind> const & binds_ )
9591       : image( image_ ), bindCount( static_cast<uint32_t>( binds_.size() ) ), pBinds( binds_.data() )
9592     {
9593     }
9594 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9595 
9596     SparseImageMemoryBindInfo & operator=( SparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9597 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9598 
operator =VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9599     SparseImageMemoryBindInfo & operator=( VkSparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9600     {
9601       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo const *>( &rhs );
9602       return *this;
9603     }
9604 
9605 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setImageVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9606     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBindInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
9607     {
9608       image = image_;
9609       return *this;
9610     }
9611 
setBindCountVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9612     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBindInfo & setBindCount( uint32_t bindCount_ ) VULKAN_HPP_NOEXCEPT
9613     {
9614       bindCount = bindCount_;
9615       return *this;
9616     }
9617 
setPBindsVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9618     VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBindInfo & setPBinds( const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind * pBinds_ ) VULKAN_HPP_NOEXCEPT
9619     {
9620       pBinds = pBinds_;
9621       return *this;
9622     }
9623 
9624 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
9625     SparseImageMemoryBindInfo &
setBindsVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9626       setBinds( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind> const & binds_ ) VULKAN_HPP_NOEXCEPT
9627     {
9628       bindCount = static_cast<uint32_t>( binds_.size() );
9629       pBinds    = binds_.data();
9630       return *this;
9631     }
9632 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9633 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9634 
operator VkSparseImageMemoryBindInfo const&VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9635     operator VkSparseImageMemoryBindInfo const &() const VULKAN_HPP_NOEXCEPT
9636     {
9637       return *reinterpret_cast<const VkSparseImageMemoryBindInfo *>( this );
9638     }
9639 
operator VkSparseImageMemoryBindInfo&VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9640     operator VkSparseImageMemoryBindInfo &() VULKAN_HPP_NOEXCEPT
9641     {
9642       return *reinterpret_cast<VkSparseImageMemoryBindInfo *>( this );
9643     }
9644 
9645 #if defined( VULKAN_HPP_USE_REFLECT )
9646 #  if 14 <= VULKAN_HPP_CPP_VERSION
9647     auto
9648 #  else
9649     std::tuple<VULKAN_HPP_NAMESPACE::Image const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind * const &>
9650 #  endif
reflectVULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9651       reflect() const VULKAN_HPP_NOEXCEPT
9652     {
9653       return std::tie( image, bindCount, pBinds );
9654     }
9655 #endif
9656 
9657 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9658     auto operator<=>( SparseImageMemoryBindInfo const & ) const = default;
9659 #else
operator ==VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9660     bool operator==( SparseImageMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9661     {
9662 #  if defined( VULKAN_HPP_USE_REFLECT )
9663       return this->reflect() == rhs.reflect();
9664 #  else
9665       return ( image == rhs.image ) && ( bindCount == rhs.bindCount ) && ( pBinds == rhs.pBinds );
9666 #  endif
9667     }
9668 
operator !=VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo9669     bool operator!=( SparseImageMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9670     {
9671       return !operator==( rhs );
9672     }
9673 #endif
9674 
9675   public:
9676     VULKAN_HPP_NAMESPACE::Image                         image     = {};
9677     uint32_t                                            bindCount = {};
9678     const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind * pBinds    = {};
9679   };
9680 
9681   struct BindSparseInfo
9682   {
9683     using NativeType = VkBindSparseInfo;
9684 
9685     static const bool                                  allowDuplicate = false;
9686     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindSparseInfo;
9687 
9688 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindSparseInfoVULKAN_HPP_NAMESPACE::BindSparseInfo9689     VULKAN_HPP_CONSTEXPR BindSparseInfo( uint32_t                                                      waitSemaphoreCount_   = {},
9690                                          const VULKAN_HPP_NAMESPACE::Semaphore *                       pWaitSemaphores_      = {},
9691                                          uint32_t                                                      bufferBindCount_      = {},
9692                                          const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo *      pBufferBinds_         = {},
9693                                          uint32_t                                                      imageOpaqueBindCount_ = {},
9694                                          const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo * pImageOpaqueBinds_    = {},
9695                                          uint32_t                                                      imageBindCount_       = {},
9696                                          const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo *       pImageBinds_          = {},
9697                                          uint32_t                                                      signalSemaphoreCount_ = {},
9698                                          const VULKAN_HPP_NAMESPACE::Semaphore *                       pSignalSemaphores_    = {},
9699                                          const void *                                                  pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
9700       : pNext{ pNext_ }
9701       , waitSemaphoreCount{ waitSemaphoreCount_ }
9702       , pWaitSemaphores{ pWaitSemaphores_ }
9703       , bufferBindCount{ bufferBindCount_ }
9704       , pBufferBinds{ pBufferBinds_ }
9705       , imageOpaqueBindCount{ imageOpaqueBindCount_ }
9706       , pImageOpaqueBinds{ pImageOpaqueBinds_ }
9707       , imageBindCount{ imageBindCount_ }
9708       , pImageBinds{ pImageBinds_ }
9709       , signalSemaphoreCount{ signalSemaphoreCount_ }
9710       , pSignalSemaphores{ pSignalSemaphores_ }
9711     {
9712     }
9713 
9714     VULKAN_HPP_CONSTEXPR BindSparseInfo( BindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9715 
BindSparseInfoVULKAN_HPP_NAMESPACE::BindSparseInfo9716     BindSparseInfo( VkBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT : BindSparseInfo( *reinterpret_cast<BindSparseInfo const *>( &rhs ) ) {}
9717 
9718 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BindSparseInfoVULKAN_HPP_NAMESPACE::BindSparseInfo9719     BindSparseInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const &                       waitSemaphores_,
9720                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo> const &      bufferBinds_      = {},
9721                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo> const & imageOpaqueBinds_ = {},
9722                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo> const &       imageBinds_       = {},
9723                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const &                       signalSemaphores_ = {},
9724                     const void *                                                                                                       pNext_ = nullptr )
9725       : pNext( pNext_ )
9726       , waitSemaphoreCount( static_cast<uint32_t>( waitSemaphores_.size() ) )
9727       , pWaitSemaphores( waitSemaphores_.data() )
9728       , bufferBindCount( static_cast<uint32_t>( bufferBinds_.size() ) )
9729       , pBufferBinds( bufferBinds_.data() )
9730       , imageOpaqueBindCount( static_cast<uint32_t>( imageOpaqueBinds_.size() ) )
9731       , pImageOpaqueBinds( imageOpaqueBinds_.data() )
9732       , imageBindCount( static_cast<uint32_t>( imageBinds_.size() ) )
9733       , pImageBinds( imageBinds_.data() )
9734       , signalSemaphoreCount( static_cast<uint32_t>( signalSemaphores_.size() ) )
9735       , pSignalSemaphores( signalSemaphores_.data() )
9736     {
9737     }
9738 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9739 
9740     BindSparseInfo & operator=( BindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9741 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9742 
operator =VULKAN_HPP_NAMESPACE::BindSparseInfo9743     BindSparseInfo & operator=( VkBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9744     {
9745       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindSparseInfo const *>( &rhs );
9746       return *this;
9747     }
9748 
9749 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindSparseInfo9750     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
9751     {
9752       pNext = pNext_;
9753       return *this;
9754     }
9755 
setWaitSemaphoreCountVULKAN_HPP_NAMESPACE::BindSparseInfo9756     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
9757     {
9758       waitSemaphoreCount = waitSemaphoreCount_;
9759       return *this;
9760     }
9761 
setPWaitSemaphoresVULKAN_HPP_NAMESPACE::BindSparseInfo9762     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setPWaitSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores_ ) VULKAN_HPP_NOEXCEPT
9763     {
9764       pWaitSemaphores = pWaitSemaphores_;
9765       return *this;
9766     }
9767 
9768 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
9769     BindSparseInfo &
setWaitSemaphoresVULKAN_HPP_NAMESPACE::BindSparseInfo9770       setWaitSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & waitSemaphores_ ) VULKAN_HPP_NOEXCEPT
9771     {
9772       waitSemaphoreCount = static_cast<uint32_t>( waitSemaphores_.size() );
9773       pWaitSemaphores    = waitSemaphores_.data();
9774       return *this;
9775     }
9776 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9777 
setBufferBindCountVULKAN_HPP_NAMESPACE::BindSparseInfo9778     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setBufferBindCount( uint32_t bufferBindCount_ ) VULKAN_HPP_NOEXCEPT
9779     {
9780       bufferBindCount = bufferBindCount_;
9781       return *this;
9782     }
9783 
setPBufferBindsVULKAN_HPP_NAMESPACE::BindSparseInfo9784     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setPBufferBinds( const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo * pBufferBinds_ ) VULKAN_HPP_NOEXCEPT
9785     {
9786       pBufferBinds = pBufferBinds_;
9787       return *this;
9788     }
9789 
9790 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setBufferBindsVULKAN_HPP_NAMESPACE::BindSparseInfo9791     BindSparseInfo & setBufferBinds(
9792       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo> const & bufferBinds_ ) VULKAN_HPP_NOEXCEPT
9793     {
9794       bufferBindCount = static_cast<uint32_t>( bufferBinds_.size() );
9795       pBufferBinds    = bufferBinds_.data();
9796       return *this;
9797     }
9798 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9799 
setImageOpaqueBindCountVULKAN_HPP_NAMESPACE::BindSparseInfo9800     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ ) VULKAN_HPP_NOEXCEPT
9801     {
9802       imageOpaqueBindCount = imageOpaqueBindCount_;
9803       return *this;
9804     }
9805 
9806     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo &
setPImageOpaqueBindsVULKAN_HPP_NAMESPACE::BindSparseInfo9807       setPImageOpaqueBinds( const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo * pImageOpaqueBinds_ ) VULKAN_HPP_NOEXCEPT
9808     {
9809       pImageOpaqueBinds = pImageOpaqueBinds_;
9810       return *this;
9811     }
9812 
9813 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImageOpaqueBindsVULKAN_HPP_NAMESPACE::BindSparseInfo9814     BindSparseInfo & setImageOpaqueBinds(
9815       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo> const & imageOpaqueBinds_ ) VULKAN_HPP_NOEXCEPT
9816     {
9817       imageOpaqueBindCount = static_cast<uint32_t>( imageOpaqueBinds_.size() );
9818       pImageOpaqueBinds    = imageOpaqueBinds_.data();
9819       return *this;
9820     }
9821 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9822 
setImageBindCountVULKAN_HPP_NAMESPACE::BindSparseInfo9823     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setImageBindCount( uint32_t imageBindCount_ ) VULKAN_HPP_NOEXCEPT
9824     {
9825       imageBindCount = imageBindCount_;
9826       return *this;
9827     }
9828 
setPImageBindsVULKAN_HPP_NAMESPACE::BindSparseInfo9829     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setPImageBinds( const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo * pImageBinds_ ) VULKAN_HPP_NOEXCEPT
9830     {
9831       pImageBinds = pImageBinds_;
9832       return *this;
9833     }
9834 
9835 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImageBindsVULKAN_HPP_NAMESPACE::BindSparseInfo9836     BindSparseInfo & setImageBinds( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo> const & imageBinds_ )
9837       VULKAN_HPP_NOEXCEPT
9838     {
9839       imageBindCount = static_cast<uint32_t>( imageBinds_.size() );
9840       pImageBinds    = imageBinds_.data();
9841       return *this;
9842     }
9843 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9844 
setSignalSemaphoreCountVULKAN_HPP_NAMESPACE::BindSparseInfo9845     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
9846     {
9847       signalSemaphoreCount = signalSemaphoreCount_;
9848       return *this;
9849     }
9850 
setPSignalSemaphoresVULKAN_HPP_NAMESPACE::BindSparseInfo9851     VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setPSignalSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pSignalSemaphores_ ) VULKAN_HPP_NOEXCEPT
9852     {
9853       pSignalSemaphores = pSignalSemaphores_;
9854       return *this;
9855     }
9856 
9857 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
9858     BindSparseInfo &
setSignalSemaphoresVULKAN_HPP_NAMESPACE::BindSparseInfo9859       setSignalSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & signalSemaphores_ ) VULKAN_HPP_NOEXCEPT
9860     {
9861       signalSemaphoreCount = static_cast<uint32_t>( signalSemaphores_.size() );
9862       pSignalSemaphores    = signalSemaphores_.data();
9863       return *this;
9864     }
9865 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9866 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9867 
operator VkBindSparseInfo const&VULKAN_HPP_NAMESPACE::BindSparseInfo9868     operator VkBindSparseInfo const &() const VULKAN_HPP_NOEXCEPT
9869     {
9870       return *reinterpret_cast<const VkBindSparseInfo *>( this );
9871     }
9872 
operator VkBindSparseInfo&VULKAN_HPP_NAMESPACE::BindSparseInfo9873     operator VkBindSparseInfo &() VULKAN_HPP_NOEXCEPT
9874     {
9875       return *reinterpret_cast<VkBindSparseInfo *>( this );
9876     }
9877 
9878 #if defined( VULKAN_HPP_USE_REFLECT )
9879 #  if 14 <= VULKAN_HPP_CPP_VERSION
9880     auto
9881 #  else
9882     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
9883                const void * const &,
9884                uint32_t const &,
9885                const VULKAN_HPP_NAMESPACE::Semaphore * const &,
9886                uint32_t const &,
9887                const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo * const &,
9888                uint32_t const &,
9889                const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo * const &,
9890                uint32_t const &,
9891                const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo * const &,
9892                uint32_t const &,
9893                const VULKAN_HPP_NAMESPACE::Semaphore * const &>
9894 #  endif
reflectVULKAN_HPP_NAMESPACE::BindSparseInfo9895       reflect() const VULKAN_HPP_NOEXCEPT
9896     {
9897       return std::tie( sType,
9898                        pNext,
9899                        waitSemaphoreCount,
9900                        pWaitSemaphores,
9901                        bufferBindCount,
9902                        pBufferBinds,
9903                        imageOpaqueBindCount,
9904                        pImageOpaqueBinds,
9905                        imageBindCount,
9906                        pImageBinds,
9907                        signalSemaphoreCount,
9908                        pSignalSemaphores );
9909     }
9910 #endif
9911 
9912 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
9913     auto operator<=>( BindSparseInfo const & ) const = default;
9914 #else
operator ==VULKAN_HPP_NAMESPACE::BindSparseInfo9915     bool operator==( BindSparseInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9916     {
9917 #  if defined( VULKAN_HPP_USE_REFLECT )
9918       return this->reflect() == rhs.reflect();
9919 #  else
9920       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreCount == rhs.waitSemaphoreCount ) &&
9921              ( pWaitSemaphores == rhs.pWaitSemaphores ) && ( bufferBindCount == rhs.bufferBindCount ) && ( pBufferBinds == rhs.pBufferBinds ) &&
9922              ( imageOpaqueBindCount == rhs.imageOpaqueBindCount ) && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds ) &&
9923              ( imageBindCount == rhs.imageBindCount ) && ( pImageBinds == rhs.pImageBinds ) && ( signalSemaphoreCount == rhs.signalSemaphoreCount ) &&
9924              ( pSignalSemaphores == rhs.pSignalSemaphores );
9925 #  endif
9926     }
9927 
operator !=VULKAN_HPP_NAMESPACE::BindSparseInfo9928     bool operator!=( BindSparseInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9929     {
9930       return !operator==( rhs );
9931     }
9932 #endif
9933 
9934   public:
9935     VULKAN_HPP_NAMESPACE::StructureType                           sType                = StructureType::eBindSparseInfo;
9936     const void *                                                  pNext                = {};
9937     uint32_t                                                      waitSemaphoreCount   = {};
9938     const VULKAN_HPP_NAMESPACE::Semaphore *                       pWaitSemaphores      = {};
9939     uint32_t                                                      bufferBindCount      = {};
9940     const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo *      pBufferBinds         = {};
9941     uint32_t                                                      imageOpaqueBindCount = {};
9942     const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo * pImageOpaqueBinds    = {};
9943     uint32_t                                                      imageBindCount       = {};
9944     const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo *       pImageBinds          = {};
9945     uint32_t                                                      signalSemaphoreCount = {};
9946     const VULKAN_HPP_NAMESPACE::Semaphore *                       pSignalSemaphores    = {};
9947   };
9948 
9949   template <>
9950   struct CppType<StructureType, StructureType::eBindSparseInfo>
9951   {
9952     using Type = BindSparseInfo;
9953   };
9954 
9955   struct BindVertexBufferIndirectCommandNV
9956   {
9957     using NativeType = VkBindVertexBufferIndirectCommandNV;
9958 
9959 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindVertexBufferIndirectCommandNVVULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV9960     VULKAN_HPP_CONSTEXPR BindVertexBufferIndirectCommandNV( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ = {},
9961                                                             uint32_t                            size_          = {},
9962                                                             uint32_t                            stride_        = {} ) VULKAN_HPP_NOEXCEPT
9963       : bufferAddress{ bufferAddress_ }
9964       , size{ size_ }
9965       , stride{ stride_ }
9966     {
9967     }
9968 
9969     VULKAN_HPP_CONSTEXPR BindVertexBufferIndirectCommandNV( BindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9970 
BindVertexBufferIndirectCommandNVVULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV9971     BindVertexBufferIndirectCommandNV( VkBindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
9972       : BindVertexBufferIndirectCommandNV( *reinterpret_cast<BindVertexBufferIndirectCommandNV const *>( &rhs ) )
9973     {
9974     }
9975 
9976     BindVertexBufferIndirectCommandNV & operator=( BindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9977 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9978 
operator =VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV9979     BindVertexBufferIndirectCommandNV & operator=( VkBindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
9980     {
9981       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV const *>( &rhs );
9982       return *this;
9983     }
9984 
9985 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBufferAddressVULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV9986     VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandNV & setBufferAddress( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ ) VULKAN_HPP_NOEXCEPT
9987     {
9988       bufferAddress = bufferAddress_;
9989       return *this;
9990     }
9991 
setSizeVULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV9992     VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandNV & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT
9993     {
9994       size = size_;
9995       return *this;
9996     }
9997 
setStrideVULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV9998     VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandNV & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT
9999     {
10000       stride = stride_;
10001       return *this;
10002     }
10003 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10004 
operator VkBindVertexBufferIndirectCommandNV const&VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV10005     operator VkBindVertexBufferIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT
10006     {
10007       return *reinterpret_cast<const VkBindVertexBufferIndirectCommandNV *>( this );
10008     }
10009 
operator VkBindVertexBufferIndirectCommandNV&VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV10010     operator VkBindVertexBufferIndirectCommandNV &() VULKAN_HPP_NOEXCEPT
10011     {
10012       return *reinterpret_cast<VkBindVertexBufferIndirectCommandNV *>( this );
10013     }
10014 
10015 #if defined( VULKAN_HPP_USE_REFLECT )
10016 #  if 14 <= VULKAN_HPP_CPP_VERSION
10017     auto
10018 #  else
10019     std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &, uint32_t const &, uint32_t const &>
10020 #  endif
reflectVULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV10021       reflect() const VULKAN_HPP_NOEXCEPT
10022     {
10023       return std::tie( bufferAddress, size, stride );
10024     }
10025 #endif
10026 
10027 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10028     auto operator<=>( BindVertexBufferIndirectCommandNV const & ) const = default;
10029 #else
operator ==VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV10030     bool operator==( BindVertexBufferIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
10031     {
10032 #  if defined( VULKAN_HPP_USE_REFLECT )
10033       return this->reflect() == rhs.reflect();
10034 #  else
10035       return ( bufferAddress == rhs.bufferAddress ) && ( size == rhs.size ) && ( stride == rhs.stride );
10036 #  endif
10037     }
10038 
operator !=VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV10039     bool operator!=( BindVertexBufferIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
10040     {
10041       return !operator==( rhs );
10042     }
10043 #endif
10044 
10045   public:
10046     VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress = {};
10047     uint32_t                            size          = {};
10048     uint32_t                            stride        = {};
10049   };
10050 
10051   struct BindVideoSessionMemoryInfoKHR
10052   {
10053     using NativeType = VkBindVideoSessionMemoryInfoKHR;
10054 
10055     static const bool                                  allowDuplicate = false;
10056     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBindVideoSessionMemoryInfoKHR;
10057 
10058 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindVideoSessionMemoryInfoKHRVULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10059     VULKAN_HPP_CONSTEXPR BindVideoSessionMemoryInfoKHR( uint32_t                           memoryBindIndex_ = {},
10060                                                         VULKAN_HPP_NAMESPACE::DeviceMemory memory_          = {},
10061                                                         VULKAN_HPP_NAMESPACE::DeviceSize   memoryOffset_    = {},
10062                                                         VULKAN_HPP_NAMESPACE::DeviceSize   memorySize_      = {},
10063                                                         const void *                       pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
10064       : pNext{ pNext_ }
10065       , memoryBindIndex{ memoryBindIndex_ }
10066       , memory{ memory_ }
10067       , memoryOffset{ memoryOffset_ }
10068       , memorySize{ memorySize_ }
10069     {
10070     }
10071 
10072     VULKAN_HPP_CONSTEXPR BindVideoSessionMemoryInfoKHR( BindVideoSessionMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10073 
BindVideoSessionMemoryInfoKHRVULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10074     BindVideoSessionMemoryInfoKHR( VkBindVideoSessionMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
10075       : BindVideoSessionMemoryInfoKHR( *reinterpret_cast<BindVideoSessionMemoryInfoKHR const *>( &rhs ) )
10076     {
10077     }
10078 
10079     BindVideoSessionMemoryInfoKHR & operator=( BindVideoSessionMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10080 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10081 
operator =VULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10082     BindVideoSessionMemoryInfoKHR & operator=( VkBindVideoSessionMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
10083     {
10084       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR const *>( &rhs );
10085       return *this;
10086     }
10087 
10088 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10089     VULKAN_HPP_CONSTEXPR_14 BindVideoSessionMemoryInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10090     {
10091       pNext = pNext_;
10092       return *this;
10093     }
10094 
setMemoryBindIndexVULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10095     VULKAN_HPP_CONSTEXPR_14 BindVideoSessionMemoryInfoKHR & setMemoryBindIndex( uint32_t memoryBindIndex_ ) VULKAN_HPP_NOEXCEPT
10096     {
10097       memoryBindIndex = memoryBindIndex_;
10098       return *this;
10099     }
10100 
setMemoryVULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10101     VULKAN_HPP_CONSTEXPR_14 BindVideoSessionMemoryInfoKHR & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
10102     {
10103       memory = memory_;
10104       return *this;
10105     }
10106 
setMemoryOffsetVULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10107     VULKAN_HPP_CONSTEXPR_14 BindVideoSessionMemoryInfoKHR & setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT
10108     {
10109       memoryOffset = memoryOffset_;
10110       return *this;
10111     }
10112 
setMemorySizeVULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10113     VULKAN_HPP_CONSTEXPR_14 BindVideoSessionMemoryInfoKHR & setMemorySize( VULKAN_HPP_NAMESPACE::DeviceSize memorySize_ ) VULKAN_HPP_NOEXCEPT
10114     {
10115       memorySize = memorySize_;
10116       return *this;
10117     }
10118 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10119 
operator VkBindVideoSessionMemoryInfoKHR const&VULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10120     operator VkBindVideoSessionMemoryInfoKHR const &() const VULKAN_HPP_NOEXCEPT
10121     {
10122       return *reinterpret_cast<const VkBindVideoSessionMemoryInfoKHR *>( this );
10123     }
10124 
operator VkBindVideoSessionMemoryInfoKHR&VULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10125     operator VkBindVideoSessionMemoryInfoKHR &() VULKAN_HPP_NOEXCEPT
10126     {
10127       return *reinterpret_cast<VkBindVideoSessionMemoryInfoKHR *>( this );
10128     }
10129 
10130 #if defined( VULKAN_HPP_USE_REFLECT )
10131 #  if 14 <= VULKAN_HPP_CPP_VERSION
10132     auto
10133 #  else
10134     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
10135                const void * const &,
10136                uint32_t const &,
10137                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
10138                VULKAN_HPP_NAMESPACE::DeviceSize const &,
10139                VULKAN_HPP_NAMESPACE::DeviceSize const &>
10140 #  endif
reflectVULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10141       reflect() const VULKAN_HPP_NOEXCEPT
10142     {
10143       return std::tie( sType, pNext, memoryBindIndex, memory, memoryOffset, memorySize );
10144     }
10145 #endif
10146 
10147 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10148     auto operator<=>( BindVideoSessionMemoryInfoKHR const & ) const = default;
10149 #else
operator ==VULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10150     bool operator==( BindVideoSessionMemoryInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
10151     {
10152 #  if defined( VULKAN_HPP_USE_REFLECT )
10153       return this->reflect() == rhs.reflect();
10154 #  else
10155       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryBindIndex == rhs.memoryBindIndex ) && ( memory == rhs.memory ) &&
10156              ( memoryOffset == rhs.memoryOffset ) && ( memorySize == rhs.memorySize );
10157 #  endif
10158     }
10159 
operator !=VULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR10160     bool operator!=( BindVideoSessionMemoryInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
10161     {
10162       return !operator==( rhs );
10163     }
10164 #endif
10165 
10166   public:
10167     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eBindVideoSessionMemoryInfoKHR;
10168     const void *                        pNext           = {};
10169     uint32_t                            memoryBindIndex = {};
10170     VULKAN_HPP_NAMESPACE::DeviceMemory  memory          = {};
10171     VULKAN_HPP_NAMESPACE::DeviceSize    memoryOffset    = {};
10172     VULKAN_HPP_NAMESPACE::DeviceSize    memorySize      = {};
10173   };
10174 
10175   template <>
10176   struct CppType<StructureType, StructureType::eBindVideoSessionMemoryInfoKHR>
10177   {
10178     using Type = BindVideoSessionMemoryInfoKHR;
10179   };
10180 
10181   struct BlitImageCubicWeightsInfoQCOM
10182   {
10183     using NativeType = VkBlitImageCubicWeightsInfoQCOM;
10184 
10185     static const bool                                  allowDuplicate = false;
10186     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBlitImageCubicWeightsInfoQCOM;
10187 
10188 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
10189     VULKAN_HPP_CONSTEXPR
BlitImageCubicWeightsInfoQCOMVULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM10190       BlitImageCubicWeightsInfoQCOM( VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM cubicWeights_ = VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM::eCatmullRom,
10191                                      const void *                                 pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
10192       : pNext{ pNext_ }
10193       , cubicWeights{ cubicWeights_ }
10194     {
10195     }
10196 
10197     VULKAN_HPP_CONSTEXPR BlitImageCubicWeightsInfoQCOM( BlitImageCubicWeightsInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10198 
BlitImageCubicWeightsInfoQCOMVULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM10199     BlitImageCubicWeightsInfoQCOM( VkBlitImageCubicWeightsInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
10200       : BlitImageCubicWeightsInfoQCOM( *reinterpret_cast<BlitImageCubicWeightsInfoQCOM const *>( &rhs ) )
10201     {
10202     }
10203 
10204     BlitImageCubicWeightsInfoQCOM & operator=( BlitImageCubicWeightsInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10205 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10206 
operator =VULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM10207     BlitImageCubicWeightsInfoQCOM & operator=( VkBlitImageCubicWeightsInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
10208     {
10209       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM const *>( &rhs );
10210       return *this;
10211     }
10212 
10213 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM10214     VULKAN_HPP_CONSTEXPR_14 BlitImageCubicWeightsInfoQCOM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10215     {
10216       pNext = pNext_;
10217       return *this;
10218     }
10219 
setCubicWeightsVULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM10220     VULKAN_HPP_CONSTEXPR_14 BlitImageCubicWeightsInfoQCOM & setCubicWeights( VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM cubicWeights_ ) VULKAN_HPP_NOEXCEPT
10221     {
10222       cubicWeights = cubicWeights_;
10223       return *this;
10224     }
10225 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10226 
operator VkBlitImageCubicWeightsInfoQCOM const&VULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM10227     operator VkBlitImageCubicWeightsInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
10228     {
10229       return *reinterpret_cast<const VkBlitImageCubicWeightsInfoQCOM *>( this );
10230     }
10231 
operator VkBlitImageCubicWeightsInfoQCOM&VULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM10232     operator VkBlitImageCubicWeightsInfoQCOM &() VULKAN_HPP_NOEXCEPT
10233     {
10234       return *reinterpret_cast<VkBlitImageCubicWeightsInfoQCOM *>( this );
10235     }
10236 
10237 #if defined( VULKAN_HPP_USE_REFLECT )
10238 #  if 14 <= VULKAN_HPP_CPP_VERSION
10239     auto
10240 #  else
10241     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM const &>
10242 #  endif
reflectVULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM10243       reflect() const VULKAN_HPP_NOEXCEPT
10244     {
10245       return std::tie( sType, pNext, cubicWeights );
10246     }
10247 #endif
10248 
10249 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10250     auto operator<=>( BlitImageCubicWeightsInfoQCOM const & ) const = default;
10251 #else
operator ==VULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM10252     bool operator==( BlitImageCubicWeightsInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
10253     {
10254 #  if defined( VULKAN_HPP_USE_REFLECT )
10255       return this->reflect() == rhs.reflect();
10256 #  else
10257       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cubicWeights == rhs.cubicWeights );
10258 #  endif
10259     }
10260 
operator !=VULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM10261     bool operator!=( BlitImageCubicWeightsInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
10262     {
10263       return !operator==( rhs );
10264     }
10265 #endif
10266 
10267   public:
10268     VULKAN_HPP_NAMESPACE::StructureType          sType        = StructureType::eBlitImageCubicWeightsInfoQCOM;
10269     const void *                                 pNext        = {};
10270     VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM cubicWeights = VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM::eCatmullRom;
10271   };
10272 
10273   template <>
10274   struct CppType<StructureType, StructureType::eBlitImageCubicWeightsInfoQCOM>
10275   {
10276     using Type = BlitImageCubicWeightsInfoQCOM;
10277   };
10278 
10279   struct ImageSubresourceLayers
10280   {
10281     using NativeType = VkImageSubresourceLayers;
10282 
10283 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageSubresourceLayersVULKAN_HPP_NAMESPACE::ImageSubresourceLayers10284     VULKAN_HPP_CONSTEXPR ImageSubresourceLayers( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_     = {},
10285                                                  uint32_t                               mipLevel_       = {},
10286                                                  uint32_t                               baseArrayLayer_ = {},
10287                                                  uint32_t                               layerCount_     = {} ) VULKAN_HPP_NOEXCEPT
10288       : aspectMask{ aspectMask_ }
10289       , mipLevel{ mipLevel_ }
10290       , baseArrayLayer{ baseArrayLayer_ }
10291       , layerCount{ layerCount_ }
10292     {
10293     }
10294 
10295     VULKAN_HPP_CONSTEXPR ImageSubresourceLayers( ImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10296 
ImageSubresourceLayersVULKAN_HPP_NAMESPACE::ImageSubresourceLayers10297     ImageSubresourceLayers( VkImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT
10298       : ImageSubresourceLayers( *reinterpret_cast<ImageSubresourceLayers const *>( &rhs ) )
10299     {
10300     }
10301 
10302     ImageSubresourceLayers & operator=( ImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10303 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10304 
operator =VULKAN_HPP_NAMESPACE::ImageSubresourceLayers10305     ImageSubresourceLayers & operator=( VkImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT
10306     {
10307       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const *>( &rhs );
10308       return *this;
10309     }
10310 
10311 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAspectMaskVULKAN_HPP_NAMESPACE::ImageSubresourceLayers10312     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
10313     {
10314       aspectMask = aspectMask_;
10315       return *this;
10316     }
10317 
setMipLevelVULKAN_HPP_NAMESPACE::ImageSubresourceLayers10318     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setMipLevel( uint32_t mipLevel_ ) VULKAN_HPP_NOEXCEPT
10319     {
10320       mipLevel = mipLevel_;
10321       return *this;
10322     }
10323 
setBaseArrayLayerVULKAN_HPP_NAMESPACE::ImageSubresourceLayers10324     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT
10325     {
10326       baseArrayLayer = baseArrayLayer_;
10327       return *this;
10328     }
10329 
setLayerCountVULKAN_HPP_NAMESPACE::ImageSubresourceLayers10330     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
10331     {
10332       layerCount = layerCount_;
10333       return *this;
10334     }
10335 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10336 
operator VkImageSubresourceLayers const&VULKAN_HPP_NAMESPACE::ImageSubresourceLayers10337     operator VkImageSubresourceLayers const &() const VULKAN_HPP_NOEXCEPT
10338     {
10339       return *reinterpret_cast<const VkImageSubresourceLayers *>( this );
10340     }
10341 
operator VkImageSubresourceLayers&VULKAN_HPP_NAMESPACE::ImageSubresourceLayers10342     operator VkImageSubresourceLayers &() VULKAN_HPP_NOEXCEPT
10343     {
10344       return *reinterpret_cast<VkImageSubresourceLayers *>( this );
10345     }
10346 
10347 #if defined( VULKAN_HPP_USE_REFLECT )
10348 #  if 14 <= VULKAN_HPP_CPP_VERSION
10349     auto
10350 #  else
10351     std::tuple<VULKAN_HPP_NAMESPACE::ImageAspectFlags const &, uint32_t const &, uint32_t const &, uint32_t const &>
10352 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageSubresourceLayers10353       reflect() const VULKAN_HPP_NOEXCEPT
10354     {
10355       return std::tie( aspectMask, mipLevel, baseArrayLayer, layerCount );
10356     }
10357 #endif
10358 
10359 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10360     auto operator<=>( ImageSubresourceLayers const & ) const = default;
10361 #else
operator ==VULKAN_HPP_NAMESPACE::ImageSubresourceLayers10362     bool operator==( ImageSubresourceLayers const & rhs ) const VULKAN_HPP_NOEXCEPT
10363     {
10364 #  if defined( VULKAN_HPP_USE_REFLECT )
10365       return this->reflect() == rhs.reflect();
10366 #  else
10367       return ( aspectMask == rhs.aspectMask ) && ( mipLevel == rhs.mipLevel ) && ( baseArrayLayer == rhs.baseArrayLayer ) && ( layerCount == rhs.layerCount );
10368 #  endif
10369     }
10370 
operator !=VULKAN_HPP_NAMESPACE::ImageSubresourceLayers10371     bool operator!=( ImageSubresourceLayers const & rhs ) const VULKAN_HPP_NOEXCEPT
10372     {
10373       return !operator==( rhs );
10374     }
10375 #endif
10376 
10377   public:
10378     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask     = {};
10379     uint32_t                               mipLevel       = {};
10380     uint32_t                               baseArrayLayer = {};
10381     uint32_t                               layerCount     = {};
10382   };
10383 
10384   struct ImageBlit2
10385   {
10386     using NativeType = VkImageBlit2;
10387 
10388     static const bool                                  allowDuplicate = false;
10389     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageBlit2;
10390 
10391 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageBlit2VULKAN_HPP_NAMESPACE::ImageBlit210392     VULKAN_HPP_CONSTEXPR_14 ImageBlit2( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers          srcSubresource_ = {},
10393                                         std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & srcOffsets_     = {},
10394                                         VULKAN_HPP_NAMESPACE::ImageSubresourceLayers          dstSubresource_ = {},
10395                                         std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & dstOffsets_     = {},
10396                                         const void *                                          pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
10397       : pNext{ pNext_ }
10398       , srcSubresource{ srcSubresource_ }
10399       , srcOffsets{ srcOffsets_ }
10400       , dstSubresource{ dstSubresource_ }
10401       , dstOffsets{ dstOffsets_ }
10402     {
10403     }
10404 
10405     VULKAN_HPP_CONSTEXPR_14 ImageBlit2( ImageBlit2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10406 
ImageBlit2VULKAN_HPP_NAMESPACE::ImageBlit210407     ImageBlit2( VkImageBlit2 const & rhs ) VULKAN_HPP_NOEXCEPT : ImageBlit2( *reinterpret_cast<ImageBlit2 const *>( &rhs ) ) {}
10408 
10409     ImageBlit2 & operator=( ImageBlit2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10410 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10411 
operator =VULKAN_HPP_NAMESPACE::ImageBlit210412     ImageBlit2 & operator=( VkImageBlit2 const & rhs ) VULKAN_HPP_NOEXCEPT
10413     {
10414       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageBlit2 const *>( &rhs );
10415       return *this;
10416     }
10417 
10418 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageBlit210419     VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10420     {
10421       pNext = pNext_;
10422       return *this;
10423     }
10424 
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageBlit210425     VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
10426     {
10427       srcSubresource = srcSubresource_;
10428       return *this;
10429     }
10430 
setSrcOffsetsVULKAN_HPP_NAMESPACE::ImageBlit210431     VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & setSrcOffsets( std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & srcOffsets_ ) VULKAN_HPP_NOEXCEPT
10432     {
10433       srcOffsets = srcOffsets_;
10434       return *this;
10435     }
10436 
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageBlit210437     VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
10438     {
10439       dstSubresource = dstSubresource_;
10440       return *this;
10441     }
10442 
setDstOffsetsVULKAN_HPP_NAMESPACE::ImageBlit210443     VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & setDstOffsets( std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & dstOffsets_ ) VULKAN_HPP_NOEXCEPT
10444     {
10445       dstOffsets = dstOffsets_;
10446       return *this;
10447     }
10448 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10449 
operator VkImageBlit2 const&VULKAN_HPP_NAMESPACE::ImageBlit210450     operator VkImageBlit2 const &() const VULKAN_HPP_NOEXCEPT
10451     {
10452       return *reinterpret_cast<const VkImageBlit2 *>( this );
10453     }
10454 
operator VkImageBlit2&VULKAN_HPP_NAMESPACE::ImageBlit210455     operator VkImageBlit2 &() VULKAN_HPP_NOEXCEPT
10456     {
10457       return *reinterpret_cast<VkImageBlit2 *>( this );
10458     }
10459 
10460 #if defined( VULKAN_HPP_USE_REFLECT )
10461 #  if 14 <= VULKAN_HPP_CPP_VERSION
10462     auto
10463 #  else
10464     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
10465                const void * const &,
10466                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
10467                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> const &,
10468                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
10469                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> const &>
10470 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageBlit210471       reflect() const VULKAN_HPP_NOEXCEPT
10472     {
10473       return std::tie( sType, pNext, srcSubresource, srcOffsets, dstSubresource, dstOffsets );
10474     }
10475 #endif
10476 
10477 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10478     auto operator<=>( ImageBlit2 const & ) const = default;
10479 #else
operator ==VULKAN_HPP_NAMESPACE::ImageBlit210480     bool operator==( ImageBlit2 const & rhs ) const VULKAN_HPP_NOEXCEPT
10481     {
10482 #  if defined( VULKAN_HPP_USE_REFLECT )
10483       return this->reflect() == rhs.reflect();
10484 #  else
10485       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcSubresource == rhs.srcSubresource ) && ( srcOffsets == rhs.srcOffsets ) &&
10486              ( dstSubresource == rhs.dstSubresource ) && ( dstOffsets == rhs.dstOffsets );
10487 #  endif
10488     }
10489 
operator !=VULKAN_HPP_NAMESPACE::ImageBlit210490     bool operator!=( ImageBlit2 const & rhs ) const VULKAN_HPP_NOEXCEPT
10491     {
10492       return !operator==( rhs );
10493     }
10494 #endif
10495 
10496   public:
10497     VULKAN_HPP_NAMESPACE::StructureType                                     sType          = StructureType::eImageBlit2;
10498     const void *                                                            pNext          = {};
10499     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers                            srcSubresource = {};
10500     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> srcOffsets     = {};
10501     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers                            dstSubresource = {};
10502     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> dstOffsets     = {};
10503   };
10504 
10505   template <>
10506   struct CppType<StructureType, StructureType::eImageBlit2>
10507   {
10508     using Type = ImageBlit2;
10509   };
10510 
10511   using ImageBlit2KHR = ImageBlit2;
10512 
10513   struct BlitImageInfo2
10514   {
10515     using NativeType = VkBlitImageInfo2;
10516 
10517     static const bool                                  allowDuplicate = false;
10518     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBlitImageInfo2;
10519 
10520 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BlitImageInfo2VULKAN_HPP_NAMESPACE::BlitImageInfo210521     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2( VULKAN_HPP_NAMESPACE::Image              srcImage_       = {},
10522                                             VULKAN_HPP_NAMESPACE::ImageLayout        srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
10523                                             VULKAN_HPP_NAMESPACE::Image              dstImage_       = {},
10524                                             VULKAN_HPP_NAMESPACE::ImageLayout        dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
10525                                             uint32_t                                 regionCount_    = {},
10526                                             const VULKAN_HPP_NAMESPACE::ImageBlit2 * pRegions_       = {},
10527                                             VULKAN_HPP_NAMESPACE::Filter             filter_         = VULKAN_HPP_NAMESPACE::Filter::eNearest,
10528                                             const void *                             pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
10529       : pNext{ pNext_ }
10530       , srcImage{ srcImage_ }
10531       , srcImageLayout{ srcImageLayout_ }
10532       , dstImage{ dstImage_ }
10533       , dstImageLayout{ dstImageLayout_ }
10534       , regionCount{ regionCount_ }
10535       , pRegions{ pRegions_ }
10536       , filter{ filter_ }
10537     {
10538     }
10539 
10540     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2( BlitImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10541 
BlitImageInfo2VULKAN_HPP_NAMESPACE::BlitImageInfo210542     BlitImageInfo2( VkBlitImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT : BlitImageInfo2( *reinterpret_cast<BlitImageInfo2 const *>( &rhs ) ) {}
10543 
10544 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BlitImageInfo2VULKAN_HPP_NAMESPACE::BlitImageInfo210545     BlitImageInfo2( VULKAN_HPP_NAMESPACE::Image                                                                   srcImage_,
10546                     VULKAN_HPP_NAMESPACE::ImageLayout                                                             srcImageLayout_,
10547                     VULKAN_HPP_NAMESPACE::Image                                                                   dstImage_,
10548                     VULKAN_HPP_NAMESPACE::ImageLayout                                                             dstImageLayout_,
10549                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageBlit2> const & regions_,
10550                     VULKAN_HPP_NAMESPACE::Filter filter_ = VULKAN_HPP_NAMESPACE::Filter::eNearest,
10551                     const void *                 pNext_  = nullptr )
10552       : pNext( pNext_ )
10553       , srcImage( srcImage_ )
10554       , srcImageLayout( srcImageLayout_ )
10555       , dstImage( dstImage_ )
10556       , dstImageLayout( dstImageLayout_ )
10557       , regionCount( static_cast<uint32_t>( regions_.size() ) )
10558       , pRegions( regions_.data() )
10559       , filter( filter_ )
10560     {
10561     }
10562 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
10563 
10564     BlitImageInfo2 & operator=( BlitImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10565 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10566 
operator =VULKAN_HPP_NAMESPACE::BlitImageInfo210567     BlitImageInfo2 & operator=( VkBlitImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
10568     {
10569       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BlitImageInfo2 const *>( &rhs );
10570       return *this;
10571     }
10572 
10573 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BlitImageInfo210574     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10575     {
10576       pNext = pNext_;
10577       return *this;
10578     }
10579 
setSrcImageVULKAN_HPP_NAMESPACE::BlitImageInfo210580     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT
10581     {
10582       srcImage = srcImage_;
10583       return *this;
10584     }
10585 
setSrcImageLayoutVULKAN_HPP_NAMESPACE::BlitImageInfo210586     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT
10587     {
10588       srcImageLayout = srcImageLayout_;
10589       return *this;
10590     }
10591 
setDstImageVULKAN_HPP_NAMESPACE::BlitImageInfo210592     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT
10593     {
10594       dstImage = dstImage_;
10595       return *this;
10596     }
10597 
setDstImageLayoutVULKAN_HPP_NAMESPACE::BlitImageInfo210598     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT
10599     {
10600       dstImageLayout = dstImageLayout_;
10601       return *this;
10602     }
10603 
setRegionCountVULKAN_HPP_NAMESPACE::BlitImageInfo210604     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
10605     {
10606       regionCount = regionCount_;
10607       return *this;
10608     }
10609 
setPRegionsVULKAN_HPP_NAMESPACE::BlitImageInfo210610     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setPRegions( const VULKAN_HPP_NAMESPACE::ImageBlit2 * pRegions_ ) VULKAN_HPP_NOEXCEPT
10611     {
10612       pRegions = pRegions_;
10613       return *this;
10614     }
10615 
10616 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRegionsVULKAN_HPP_NAMESPACE::BlitImageInfo210617     BlitImageInfo2 & setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageBlit2> const & regions_ ) VULKAN_HPP_NOEXCEPT
10618     {
10619       regionCount = static_cast<uint32_t>( regions_.size() );
10620       pRegions    = regions_.data();
10621       return *this;
10622     }
10623 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
10624 
setFilterVULKAN_HPP_NAMESPACE::BlitImageInfo210625     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setFilter( VULKAN_HPP_NAMESPACE::Filter filter_ ) VULKAN_HPP_NOEXCEPT
10626     {
10627       filter = filter_;
10628       return *this;
10629     }
10630 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10631 
operator VkBlitImageInfo2 const&VULKAN_HPP_NAMESPACE::BlitImageInfo210632     operator VkBlitImageInfo2 const &() const VULKAN_HPP_NOEXCEPT
10633     {
10634       return *reinterpret_cast<const VkBlitImageInfo2 *>( this );
10635     }
10636 
operator VkBlitImageInfo2&VULKAN_HPP_NAMESPACE::BlitImageInfo210637     operator VkBlitImageInfo2 &() VULKAN_HPP_NOEXCEPT
10638     {
10639       return *reinterpret_cast<VkBlitImageInfo2 *>( this );
10640     }
10641 
10642 #if defined( VULKAN_HPP_USE_REFLECT )
10643 #  if 14 <= VULKAN_HPP_CPP_VERSION
10644     auto
10645 #  else
10646     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
10647                const void * const &,
10648                VULKAN_HPP_NAMESPACE::Image const &,
10649                VULKAN_HPP_NAMESPACE::ImageLayout const &,
10650                VULKAN_HPP_NAMESPACE::Image const &,
10651                VULKAN_HPP_NAMESPACE::ImageLayout const &,
10652                uint32_t const &,
10653                const VULKAN_HPP_NAMESPACE::ImageBlit2 * const &,
10654                VULKAN_HPP_NAMESPACE::Filter const &>
10655 #  endif
reflectVULKAN_HPP_NAMESPACE::BlitImageInfo210656       reflect() const VULKAN_HPP_NOEXCEPT
10657     {
10658       return std::tie( sType, pNext, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter );
10659     }
10660 #endif
10661 
10662 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10663     auto operator<=>( BlitImageInfo2 const & ) const = default;
10664 #else
operator ==VULKAN_HPP_NAMESPACE::BlitImageInfo210665     bool operator==( BlitImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
10666     {
10667 #  if defined( VULKAN_HPP_USE_REFLECT )
10668       return this->reflect() == rhs.reflect();
10669 #  else
10670       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcImage == rhs.srcImage ) && ( srcImageLayout == rhs.srcImageLayout ) &&
10671              ( dstImage == rhs.dstImage ) && ( dstImageLayout == rhs.dstImageLayout ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions ) &&
10672              ( filter == rhs.filter );
10673 #  endif
10674     }
10675 
operator !=VULKAN_HPP_NAMESPACE::BlitImageInfo210676     bool operator!=( BlitImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
10677     {
10678       return !operator==( rhs );
10679     }
10680 #endif
10681 
10682   public:
10683     VULKAN_HPP_NAMESPACE::StructureType      sType          = StructureType::eBlitImageInfo2;
10684     const void *                             pNext          = {};
10685     VULKAN_HPP_NAMESPACE::Image              srcImage       = {};
10686     VULKAN_HPP_NAMESPACE::ImageLayout        srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
10687     VULKAN_HPP_NAMESPACE::Image              dstImage       = {};
10688     VULKAN_HPP_NAMESPACE::ImageLayout        dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
10689     uint32_t                                 regionCount    = {};
10690     const VULKAN_HPP_NAMESPACE::ImageBlit2 * pRegions       = {};
10691     VULKAN_HPP_NAMESPACE::Filter             filter         = VULKAN_HPP_NAMESPACE::Filter::eNearest;
10692   };
10693 
10694   template <>
10695   struct CppType<StructureType, StructureType::eBlitImageInfo2>
10696   {
10697     using Type = BlitImageInfo2;
10698   };
10699 
10700   using BlitImageInfo2KHR = BlitImageInfo2;
10701 
10702   struct BufferCaptureDescriptorDataInfoEXT
10703   {
10704     using NativeType = VkBufferCaptureDescriptorDataInfoEXT;
10705 
10706     static const bool                                  allowDuplicate = false;
10707     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferCaptureDescriptorDataInfoEXT;
10708 
10709 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCaptureDescriptorDataInfoEXTVULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT10710     VULKAN_HPP_CONSTEXPR BufferCaptureDescriptorDataInfoEXT( VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
10711       : pNext{ pNext_ }
10712       , buffer{ buffer_ }
10713     {
10714     }
10715 
10716     VULKAN_HPP_CONSTEXPR BufferCaptureDescriptorDataInfoEXT( BufferCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10717 
BufferCaptureDescriptorDataInfoEXTVULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT10718     BufferCaptureDescriptorDataInfoEXT( VkBufferCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
10719       : BufferCaptureDescriptorDataInfoEXT( *reinterpret_cast<BufferCaptureDescriptorDataInfoEXT const *>( &rhs ) )
10720     {
10721     }
10722 
10723     BufferCaptureDescriptorDataInfoEXT & operator=( BufferCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10724 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10725 
operator =VULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT10726     BufferCaptureDescriptorDataInfoEXT & operator=( VkBufferCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
10727     {
10728       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT const *>( &rhs );
10729       return *this;
10730     }
10731 
10732 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT10733     VULKAN_HPP_CONSTEXPR_14 BufferCaptureDescriptorDataInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10734     {
10735       pNext = pNext_;
10736       return *this;
10737     }
10738 
setBufferVULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT10739     VULKAN_HPP_CONSTEXPR_14 BufferCaptureDescriptorDataInfoEXT & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
10740     {
10741       buffer = buffer_;
10742       return *this;
10743     }
10744 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10745 
operator VkBufferCaptureDescriptorDataInfoEXT const&VULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT10746     operator VkBufferCaptureDescriptorDataInfoEXT const &() const VULKAN_HPP_NOEXCEPT
10747     {
10748       return *reinterpret_cast<const VkBufferCaptureDescriptorDataInfoEXT *>( this );
10749     }
10750 
operator VkBufferCaptureDescriptorDataInfoEXT&VULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT10751     operator VkBufferCaptureDescriptorDataInfoEXT &() VULKAN_HPP_NOEXCEPT
10752     {
10753       return *reinterpret_cast<VkBufferCaptureDescriptorDataInfoEXT *>( this );
10754     }
10755 
10756 #if defined( VULKAN_HPP_USE_REFLECT )
10757 #  if 14 <= VULKAN_HPP_CPP_VERSION
10758     auto
10759 #  else
10760     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Buffer const &>
10761 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT10762       reflect() const VULKAN_HPP_NOEXCEPT
10763     {
10764       return std::tie( sType, pNext, buffer );
10765     }
10766 #endif
10767 
10768 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10769     auto operator<=>( BufferCaptureDescriptorDataInfoEXT const & ) const = default;
10770 #else
operator ==VULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT10771     bool operator==( BufferCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
10772     {
10773 #  if defined( VULKAN_HPP_USE_REFLECT )
10774       return this->reflect() == rhs.reflect();
10775 #  else
10776       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer );
10777 #  endif
10778     }
10779 
operator !=VULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT10780     bool operator!=( BufferCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
10781     {
10782       return !operator==( rhs );
10783     }
10784 #endif
10785 
10786   public:
10787     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eBufferCaptureDescriptorDataInfoEXT;
10788     const void *                        pNext  = {};
10789     VULKAN_HPP_NAMESPACE::Buffer        buffer = {};
10790   };
10791 
10792   template <>
10793   struct CppType<StructureType, StructureType::eBufferCaptureDescriptorDataInfoEXT>
10794   {
10795     using Type = BufferCaptureDescriptorDataInfoEXT;
10796   };
10797 
10798 #if defined( VK_USE_PLATFORM_FUCHSIA )
10799   struct BufferCollectionBufferCreateInfoFUCHSIA
10800   {
10801     using NativeType = VkBufferCollectionBufferCreateInfoFUCHSIA;
10802 
10803     static const bool                                  allowDuplicate = false;
10804     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferCollectionBufferCreateInfoFUCHSIA;
10805 
10806 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCollectionBufferCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA10807     VULKAN_HPP_CONSTEXPR BufferCollectionBufferCreateInfoFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ = {},
10808                                                                   uint32_t                                      index_      = {},
10809                                                                   const void *                                  pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
10810       : pNext{ pNext_ }
10811       , collection{ collection_ }
10812       , index{ index_ }
10813     {
10814     }
10815 
10816     VULKAN_HPP_CONSTEXPR BufferCollectionBufferCreateInfoFUCHSIA( BufferCollectionBufferCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10817 
BufferCollectionBufferCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA10818     BufferCollectionBufferCreateInfoFUCHSIA( VkBufferCollectionBufferCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
10819       : BufferCollectionBufferCreateInfoFUCHSIA( *reinterpret_cast<BufferCollectionBufferCreateInfoFUCHSIA const *>( &rhs ) )
10820     {
10821     }
10822 
10823     BufferCollectionBufferCreateInfoFUCHSIA & operator=( BufferCollectionBufferCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10824 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10825 
operator =VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA10826     BufferCollectionBufferCreateInfoFUCHSIA & operator=( VkBufferCollectionBufferCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
10827     {
10828       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA const *>( &rhs );
10829       return *this;
10830     }
10831 
10832 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA10833     VULKAN_HPP_CONSTEXPR_14 BufferCollectionBufferCreateInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10834     {
10835       pNext = pNext_;
10836       return *this;
10837     }
10838 
10839     VULKAN_HPP_CONSTEXPR_14 BufferCollectionBufferCreateInfoFUCHSIA &
setCollectionVULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA10840       setCollection( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ ) VULKAN_HPP_NOEXCEPT
10841     {
10842       collection = collection_;
10843       return *this;
10844     }
10845 
setIndexVULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA10846     VULKAN_HPP_CONSTEXPR_14 BufferCollectionBufferCreateInfoFUCHSIA & setIndex( uint32_t index_ ) VULKAN_HPP_NOEXCEPT
10847     {
10848       index = index_;
10849       return *this;
10850     }
10851 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10852 
operator VkBufferCollectionBufferCreateInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA10853     operator VkBufferCollectionBufferCreateInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
10854     {
10855       return *reinterpret_cast<const VkBufferCollectionBufferCreateInfoFUCHSIA *>( this );
10856     }
10857 
operator VkBufferCollectionBufferCreateInfoFUCHSIA&VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA10858     operator VkBufferCollectionBufferCreateInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
10859     {
10860       return *reinterpret_cast<VkBufferCollectionBufferCreateInfoFUCHSIA *>( this );
10861     }
10862 
10863 #  if defined( VULKAN_HPP_USE_REFLECT )
10864 #    if 14 <= VULKAN_HPP_CPP_VERSION
10865     auto
10866 #    else
10867     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA const &, uint32_t const &>
10868 #    endif
reflectVULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA10869       reflect() const VULKAN_HPP_NOEXCEPT
10870     {
10871       return std::tie( sType, pNext, collection, index );
10872     }
10873 #  endif
10874 
10875 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
10876     auto operator<=>( BufferCollectionBufferCreateInfoFUCHSIA const & ) const = default;
10877 #  else
operator ==VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA10878     bool operator==( BufferCollectionBufferCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
10879     {
10880 #    if defined( VULKAN_HPP_USE_REFLECT )
10881       return this->reflect() == rhs.reflect();
10882 #    else
10883       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( collection == rhs.collection ) && ( index == rhs.index );
10884 #    endif
10885     }
10886 
operator !=VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA10887     bool operator!=( BufferCollectionBufferCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
10888     {
10889       return !operator==( rhs );
10890     }
10891 #  endif
10892 
10893   public:
10894     VULKAN_HPP_NAMESPACE::StructureType           sType      = StructureType::eBufferCollectionBufferCreateInfoFUCHSIA;
10895     const void *                                  pNext      = {};
10896     VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection = {};
10897     uint32_t                                      index      = {};
10898   };
10899 
10900   template <>
10901   struct CppType<StructureType, StructureType::eBufferCollectionBufferCreateInfoFUCHSIA>
10902   {
10903     using Type = BufferCollectionBufferCreateInfoFUCHSIA;
10904   };
10905 #endif /*VK_USE_PLATFORM_FUCHSIA*/
10906 
10907 #if defined( VK_USE_PLATFORM_FUCHSIA )
10908   struct BufferCollectionConstraintsInfoFUCHSIA
10909   {
10910     using NativeType = VkBufferCollectionConstraintsInfoFUCHSIA;
10911 
10912     static const bool                                  allowDuplicate = false;
10913     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferCollectionConstraintsInfoFUCHSIA;
10914 
10915 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCollectionConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA10916     VULKAN_HPP_CONSTEXPR BufferCollectionConstraintsInfoFUCHSIA( uint32_t     minBufferCount_                  = {},
10917                                                                  uint32_t     maxBufferCount_                  = {},
10918                                                                  uint32_t     minBufferCountForCamping_        = {},
10919                                                                  uint32_t     minBufferCountForDedicatedSlack_ = {},
10920                                                                  uint32_t     minBufferCountForSharedSlack_    = {},
10921                                                                  const void * pNext_                           = nullptr ) VULKAN_HPP_NOEXCEPT
10922       : pNext{ pNext_ }
10923       , minBufferCount{ minBufferCount_ }
10924       , maxBufferCount{ maxBufferCount_ }
10925       , minBufferCountForCamping{ minBufferCountForCamping_ }
10926       , minBufferCountForDedicatedSlack{ minBufferCountForDedicatedSlack_ }
10927       , minBufferCountForSharedSlack{ minBufferCountForSharedSlack_ }
10928     {
10929     }
10930 
10931     VULKAN_HPP_CONSTEXPR BufferCollectionConstraintsInfoFUCHSIA( BufferCollectionConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10932 
BufferCollectionConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA10933     BufferCollectionConstraintsInfoFUCHSIA( VkBufferCollectionConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
10934       : BufferCollectionConstraintsInfoFUCHSIA( *reinterpret_cast<BufferCollectionConstraintsInfoFUCHSIA const *>( &rhs ) )
10935     {
10936     }
10937 
10938     BufferCollectionConstraintsInfoFUCHSIA & operator=( BufferCollectionConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10939 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10940 
operator =VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA10941     BufferCollectionConstraintsInfoFUCHSIA & operator=( VkBufferCollectionConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
10942     {
10943       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA const *>( &rhs );
10944       return *this;
10945     }
10946 
10947 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA10948     VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10949     {
10950       pNext = pNext_;
10951       return *this;
10952     }
10953 
setMinBufferCountVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA10954     VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA & setMinBufferCount( uint32_t minBufferCount_ ) VULKAN_HPP_NOEXCEPT
10955     {
10956       minBufferCount = minBufferCount_;
10957       return *this;
10958     }
10959 
setMaxBufferCountVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA10960     VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA & setMaxBufferCount( uint32_t maxBufferCount_ ) VULKAN_HPP_NOEXCEPT
10961     {
10962       maxBufferCount = maxBufferCount_;
10963       return *this;
10964     }
10965 
setMinBufferCountForCampingVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA10966     VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA & setMinBufferCountForCamping( uint32_t minBufferCountForCamping_ ) VULKAN_HPP_NOEXCEPT
10967     {
10968       minBufferCountForCamping = minBufferCountForCamping_;
10969       return *this;
10970     }
10971 
10972     VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA &
setMinBufferCountForDedicatedSlackVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA10973       setMinBufferCountForDedicatedSlack( uint32_t minBufferCountForDedicatedSlack_ ) VULKAN_HPP_NOEXCEPT
10974     {
10975       minBufferCountForDedicatedSlack = minBufferCountForDedicatedSlack_;
10976       return *this;
10977     }
10978 
10979     VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA &
setMinBufferCountForSharedSlackVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA10980       setMinBufferCountForSharedSlack( uint32_t minBufferCountForSharedSlack_ ) VULKAN_HPP_NOEXCEPT
10981     {
10982       minBufferCountForSharedSlack = minBufferCountForSharedSlack_;
10983       return *this;
10984     }
10985 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10986 
operator VkBufferCollectionConstraintsInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA10987     operator VkBufferCollectionConstraintsInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
10988     {
10989       return *reinterpret_cast<const VkBufferCollectionConstraintsInfoFUCHSIA *>( this );
10990     }
10991 
operator VkBufferCollectionConstraintsInfoFUCHSIA&VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA10992     operator VkBufferCollectionConstraintsInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
10993     {
10994       return *reinterpret_cast<VkBufferCollectionConstraintsInfoFUCHSIA *>( this );
10995     }
10996 
10997 #  if defined( VULKAN_HPP_USE_REFLECT )
10998 #    if 14 <= VULKAN_HPP_CPP_VERSION
10999     auto
11000 #    else
11001     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
11002                const void * const &,
11003                uint32_t const &,
11004                uint32_t const &,
11005                uint32_t const &,
11006                uint32_t const &,
11007                uint32_t const &>
11008 #    endif
reflectVULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA11009       reflect() const VULKAN_HPP_NOEXCEPT
11010     {
11011       return std::tie( sType, pNext, minBufferCount, maxBufferCount, minBufferCountForCamping, minBufferCountForDedicatedSlack, minBufferCountForSharedSlack );
11012     }
11013 #  endif
11014 
11015 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
11016     auto operator<=>( BufferCollectionConstraintsInfoFUCHSIA const & ) const = default;
11017 #  else
operator ==VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA11018     bool operator==( BufferCollectionConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11019     {
11020 #    if defined( VULKAN_HPP_USE_REFLECT )
11021       return this->reflect() == rhs.reflect();
11022 #    else
11023       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minBufferCount == rhs.minBufferCount ) && ( maxBufferCount == rhs.maxBufferCount ) &&
11024              ( minBufferCountForCamping == rhs.minBufferCountForCamping ) && ( minBufferCountForDedicatedSlack == rhs.minBufferCountForDedicatedSlack ) &&
11025              ( minBufferCountForSharedSlack == rhs.minBufferCountForSharedSlack );
11026 #    endif
11027     }
11028 
operator !=VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA11029     bool operator!=( BufferCollectionConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11030     {
11031       return !operator==( rhs );
11032     }
11033 #  endif
11034 
11035   public:
11036     VULKAN_HPP_NAMESPACE::StructureType sType                           = StructureType::eBufferCollectionConstraintsInfoFUCHSIA;
11037     const void *                        pNext                           = {};
11038     uint32_t                            minBufferCount                  = {};
11039     uint32_t                            maxBufferCount                  = {};
11040     uint32_t                            minBufferCountForCamping        = {};
11041     uint32_t                            minBufferCountForDedicatedSlack = {};
11042     uint32_t                            minBufferCountForSharedSlack    = {};
11043   };
11044 
11045   template <>
11046   struct CppType<StructureType, StructureType::eBufferCollectionConstraintsInfoFUCHSIA>
11047   {
11048     using Type = BufferCollectionConstraintsInfoFUCHSIA;
11049   };
11050 #endif /*VK_USE_PLATFORM_FUCHSIA*/
11051 
11052 #if defined( VK_USE_PLATFORM_FUCHSIA )
11053   struct BufferCollectionCreateInfoFUCHSIA
11054   {
11055     using NativeType = VkBufferCollectionCreateInfoFUCHSIA;
11056 
11057     static const bool                                  allowDuplicate = false;
11058     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferCollectionCreateInfoFUCHSIA;
11059 
11060 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCollectionCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11061     VULKAN_HPP_CONSTEXPR BufferCollectionCreateInfoFUCHSIA( zx_handle_t collectionToken_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
11062       : pNext{ pNext_ }
11063       , collectionToken{ collectionToken_ }
11064     {
11065     }
11066 
11067     VULKAN_HPP_CONSTEXPR BufferCollectionCreateInfoFUCHSIA( BufferCollectionCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11068 
BufferCollectionCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11069     BufferCollectionCreateInfoFUCHSIA( VkBufferCollectionCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11070       : BufferCollectionCreateInfoFUCHSIA( *reinterpret_cast<BufferCollectionCreateInfoFUCHSIA const *>( &rhs ) )
11071     {
11072     }
11073 
11074     BufferCollectionCreateInfoFUCHSIA & operator=( BufferCollectionCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11075 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11076 
operator =VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11077     BufferCollectionCreateInfoFUCHSIA & operator=( VkBufferCollectionCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11078     {
11079       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA const *>( &rhs );
11080       return *this;
11081     }
11082 
11083 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11084     VULKAN_HPP_CONSTEXPR_14 BufferCollectionCreateInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11085     {
11086       pNext = pNext_;
11087       return *this;
11088     }
11089 
setCollectionTokenVULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11090     VULKAN_HPP_CONSTEXPR_14 BufferCollectionCreateInfoFUCHSIA & setCollectionToken( zx_handle_t collectionToken_ ) VULKAN_HPP_NOEXCEPT
11091     {
11092       collectionToken = collectionToken_;
11093       return *this;
11094     }
11095 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11096 
operator VkBufferCollectionCreateInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11097     operator VkBufferCollectionCreateInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
11098     {
11099       return *reinterpret_cast<const VkBufferCollectionCreateInfoFUCHSIA *>( this );
11100     }
11101 
operator VkBufferCollectionCreateInfoFUCHSIA&VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11102     operator VkBufferCollectionCreateInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
11103     {
11104       return *reinterpret_cast<VkBufferCollectionCreateInfoFUCHSIA *>( this );
11105     }
11106 
11107 #  if defined( VULKAN_HPP_USE_REFLECT )
11108 #    if 14 <= VULKAN_HPP_CPP_VERSION
11109     auto
11110 #    else
11111     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, zx_handle_t const &>
11112 #    endif
reflectVULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11113       reflect() const VULKAN_HPP_NOEXCEPT
11114     {
11115       return std::tie( sType, pNext, collectionToken );
11116     }
11117 #  endif
11118 
11119 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11120     std::strong_ordering operator<=>( BufferCollectionCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11121     {
11122       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
11123         return cmp;
11124       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
11125         return cmp;
11126       if ( auto cmp = memcmp( &collectionToken, &rhs.collectionToken, sizeof( zx_handle_t ) ); cmp != 0 )
11127         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
11128 
11129       return std::strong_ordering::equivalent;
11130     }
11131 #  endif
11132 
operator ==VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11133     bool operator==( BufferCollectionCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11134     {
11135       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &collectionToken, &rhs.collectionToken, sizeof( zx_handle_t ) ) == 0 );
11136     }
11137 
operator !=VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA11138     bool operator!=( BufferCollectionCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11139     {
11140       return !operator==( rhs );
11141     }
11142 
11143   public:
11144     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eBufferCollectionCreateInfoFUCHSIA;
11145     const void *                        pNext           = {};
11146     zx_handle_t                         collectionToken = {};
11147   };
11148 
11149   template <>
11150   struct CppType<StructureType, StructureType::eBufferCollectionCreateInfoFUCHSIA>
11151   {
11152     using Type = BufferCollectionCreateInfoFUCHSIA;
11153   };
11154 #endif /*VK_USE_PLATFORM_FUCHSIA*/
11155 
11156 #if defined( VK_USE_PLATFORM_FUCHSIA )
11157   struct BufferCollectionImageCreateInfoFUCHSIA
11158   {
11159     using NativeType = VkBufferCollectionImageCreateInfoFUCHSIA;
11160 
11161     static const bool                                  allowDuplicate = false;
11162     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferCollectionImageCreateInfoFUCHSIA;
11163 
11164 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCollectionImageCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11165     VULKAN_HPP_CONSTEXPR BufferCollectionImageCreateInfoFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ = {},
11166                                                                  uint32_t                                      index_      = {},
11167                                                                  const void *                                  pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
11168       : pNext{ pNext_ }
11169       , collection{ collection_ }
11170       , index{ index_ }
11171     {
11172     }
11173 
11174     VULKAN_HPP_CONSTEXPR BufferCollectionImageCreateInfoFUCHSIA( BufferCollectionImageCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11175 
BufferCollectionImageCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11176     BufferCollectionImageCreateInfoFUCHSIA( VkBufferCollectionImageCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11177       : BufferCollectionImageCreateInfoFUCHSIA( *reinterpret_cast<BufferCollectionImageCreateInfoFUCHSIA const *>( &rhs ) )
11178     {
11179     }
11180 
11181     BufferCollectionImageCreateInfoFUCHSIA & operator=( BufferCollectionImageCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11182 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11183 
operator =VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11184     BufferCollectionImageCreateInfoFUCHSIA & operator=( VkBufferCollectionImageCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11185     {
11186       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA const *>( &rhs );
11187       return *this;
11188     }
11189 
11190 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11191     VULKAN_HPP_CONSTEXPR_14 BufferCollectionImageCreateInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11192     {
11193       pNext = pNext_;
11194       return *this;
11195     }
11196 
11197     VULKAN_HPP_CONSTEXPR_14 BufferCollectionImageCreateInfoFUCHSIA &
setCollectionVULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11198       setCollection( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ ) VULKAN_HPP_NOEXCEPT
11199     {
11200       collection = collection_;
11201       return *this;
11202     }
11203 
setIndexVULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11204     VULKAN_HPP_CONSTEXPR_14 BufferCollectionImageCreateInfoFUCHSIA & setIndex( uint32_t index_ ) VULKAN_HPP_NOEXCEPT
11205     {
11206       index = index_;
11207       return *this;
11208     }
11209 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11210 
operator VkBufferCollectionImageCreateInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11211     operator VkBufferCollectionImageCreateInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
11212     {
11213       return *reinterpret_cast<const VkBufferCollectionImageCreateInfoFUCHSIA *>( this );
11214     }
11215 
operator VkBufferCollectionImageCreateInfoFUCHSIA&VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11216     operator VkBufferCollectionImageCreateInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
11217     {
11218       return *reinterpret_cast<VkBufferCollectionImageCreateInfoFUCHSIA *>( this );
11219     }
11220 
11221 #  if defined( VULKAN_HPP_USE_REFLECT )
11222 #    if 14 <= VULKAN_HPP_CPP_VERSION
11223     auto
11224 #    else
11225     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA const &, uint32_t const &>
11226 #    endif
reflectVULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11227       reflect() const VULKAN_HPP_NOEXCEPT
11228     {
11229       return std::tie( sType, pNext, collection, index );
11230     }
11231 #  endif
11232 
11233 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
11234     auto operator<=>( BufferCollectionImageCreateInfoFUCHSIA const & ) const = default;
11235 #  else
operator ==VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11236     bool operator==( BufferCollectionImageCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11237     {
11238 #    if defined( VULKAN_HPP_USE_REFLECT )
11239       return this->reflect() == rhs.reflect();
11240 #    else
11241       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( collection == rhs.collection ) && ( index == rhs.index );
11242 #    endif
11243     }
11244 
operator !=VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA11245     bool operator!=( BufferCollectionImageCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11246     {
11247       return !operator==( rhs );
11248     }
11249 #  endif
11250 
11251   public:
11252     VULKAN_HPP_NAMESPACE::StructureType           sType      = StructureType::eBufferCollectionImageCreateInfoFUCHSIA;
11253     const void *                                  pNext      = {};
11254     VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection = {};
11255     uint32_t                                      index      = {};
11256   };
11257 
11258   template <>
11259   struct CppType<StructureType, StructureType::eBufferCollectionImageCreateInfoFUCHSIA>
11260   {
11261     using Type = BufferCollectionImageCreateInfoFUCHSIA;
11262   };
11263 #endif /*VK_USE_PLATFORM_FUCHSIA*/
11264 
11265 #if defined( VK_USE_PLATFORM_FUCHSIA )
11266   struct SysmemColorSpaceFUCHSIA
11267   {
11268     using NativeType = VkSysmemColorSpaceFUCHSIA;
11269 
11270     static const bool                                  allowDuplicate = false;
11271     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSysmemColorSpaceFUCHSIA;
11272 
11273 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SysmemColorSpaceFUCHSIAVULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA11274     VULKAN_HPP_CONSTEXPR SysmemColorSpaceFUCHSIA( uint32_t colorSpace_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
11275       : pNext{ pNext_ }
11276       , colorSpace{ colorSpace_ }
11277     {
11278     }
11279 
11280     VULKAN_HPP_CONSTEXPR SysmemColorSpaceFUCHSIA( SysmemColorSpaceFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11281 
SysmemColorSpaceFUCHSIAVULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA11282     SysmemColorSpaceFUCHSIA( VkSysmemColorSpaceFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11283       : SysmemColorSpaceFUCHSIA( *reinterpret_cast<SysmemColorSpaceFUCHSIA const *>( &rhs ) )
11284     {
11285     }
11286 
11287     SysmemColorSpaceFUCHSIA & operator=( SysmemColorSpaceFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11288 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11289 
operator =VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA11290     SysmemColorSpaceFUCHSIA & operator=( VkSysmemColorSpaceFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11291     {
11292       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA const *>( &rhs );
11293       return *this;
11294     }
11295 
11296 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA11297     VULKAN_HPP_CONSTEXPR_14 SysmemColorSpaceFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11298     {
11299       pNext = pNext_;
11300       return *this;
11301     }
11302 
setColorSpaceVULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA11303     VULKAN_HPP_CONSTEXPR_14 SysmemColorSpaceFUCHSIA & setColorSpace( uint32_t colorSpace_ ) VULKAN_HPP_NOEXCEPT
11304     {
11305       colorSpace = colorSpace_;
11306       return *this;
11307     }
11308 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11309 
operator VkSysmemColorSpaceFUCHSIA const&VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA11310     operator VkSysmemColorSpaceFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
11311     {
11312       return *reinterpret_cast<const VkSysmemColorSpaceFUCHSIA *>( this );
11313     }
11314 
operator VkSysmemColorSpaceFUCHSIA&VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA11315     operator VkSysmemColorSpaceFUCHSIA &() VULKAN_HPP_NOEXCEPT
11316     {
11317       return *reinterpret_cast<VkSysmemColorSpaceFUCHSIA *>( this );
11318     }
11319 
11320 #  if defined( VULKAN_HPP_USE_REFLECT )
11321 #    if 14 <= VULKAN_HPP_CPP_VERSION
11322     auto
11323 #    else
11324     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
11325 #    endif
reflectVULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA11326       reflect() const VULKAN_HPP_NOEXCEPT
11327     {
11328       return std::tie( sType, pNext, colorSpace );
11329     }
11330 #  endif
11331 
11332 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
11333     auto operator<=>( SysmemColorSpaceFUCHSIA const & ) const = default;
11334 #  else
operator ==VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA11335     bool operator==( SysmemColorSpaceFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11336     {
11337 #    if defined( VULKAN_HPP_USE_REFLECT )
11338       return this->reflect() == rhs.reflect();
11339 #    else
11340       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( colorSpace == rhs.colorSpace );
11341 #    endif
11342     }
11343 
operator !=VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA11344     bool operator!=( SysmemColorSpaceFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11345     {
11346       return !operator==( rhs );
11347     }
11348 #  endif
11349 
11350   public:
11351     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eSysmemColorSpaceFUCHSIA;
11352     const void *                        pNext      = {};
11353     uint32_t                            colorSpace = {};
11354   };
11355 
11356   template <>
11357   struct CppType<StructureType, StructureType::eSysmemColorSpaceFUCHSIA>
11358   {
11359     using Type = SysmemColorSpaceFUCHSIA;
11360   };
11361 #endif /*VK_USE_PLATFORM_FUCHSIA*/
11362 
11363 #if defined( VK_USE_PLATFORM_FUCHSIA )
11364   struct BufferCollectionPropertiesFUCHSIA
11365   {
11366     using NativeType = VkBufferCollectionPropertiesFUCHSIA;
11367 
11368     static const bool                                  allowDuplicate = false;
11369     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferCollectionPropertiesFUCHSIA;
11370 
11371 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCollectionPropertiesFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA11372     VULKAN_HPP_CONSTEXPR BufferCollectionPropertiesFUCHSIA(
11373       uint32_t                                          memoryTypeBits_                   = {},
11374       uint32_t                                          bufferCount_                      = {},
11375       uint32_t                                          createInfoIndex_                  = {},
11376       uint64_t                                          sysmemPixelFormat_                = {},
11377       VULKAN_HPP_NAMESPACE::FormatFeatureFlags          formatFeatures_                   = {},
11378       VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA     sysmemColorSpaceIndex_            = {},
11379       VULKAN_HPP_NAMESPACE::ComponentMapping            samplerYcbcrConversionComponents_ = {},
11380       VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel_              = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity,
11381       VULKAN_HPP_NAMESPACE::SamplerYcbcrRange           suggestedYcbcrRange_              = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull,
11382       VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedXChromaOffset_           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
11383       VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedYChromaOffset_           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
11384       void *                                            pNext_                            = nullptr ) VULKAN_HPP_NOEXCEPT
11385       : pNext{ pNext_ }
11386       , memoryTypeBits{ memoryTypeBits_ }
11387       , bufferCount{ bufferCount_ }
11388       , createInfoIndex{ createInfoIndex_ }
11389       , sysmemPixelFormat{ sysmemPixelFormat_ }
11390       , formatFeatures{ formatFeatures_ }
11391       , sysmemColorSpaceIndex{ sysmemColorSpaceIndex_ }
11392       , samplerYcbcrConversionComponents{ samplerYcbcrConversionComponents_ }
11393       , suggestedYcbcrModel{ suggestedYcbcrModel_ }
11394       , suggestedYcbcrRange{ suggestedYcbcrRange_ }
11395       , suggestedXChromaOffset{ suggestedXChromaOffset_ }
11396       , suggestedYChromaOffset{ suggestedYChromaOffset_ }
11397     {
11398     }
11399 
11400     VULKAN_HPP_CONSTEXPR BufferCollectionPropertiesFUCHSIA( BufferCollectionPropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11401 
BufferCollectionPropertiesFUCHSIAVULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA11402     BufferCollectionPropertiesFUCHSIA( VkBufferCollectionPropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11403       : BufferCollectionPropertiesFUCHSIA( *reinterpret_cast<BufferCollectionPropertiesFUCHSIA const *>( &rhs ) )
11404     {
11405     }
11406 
11407     BufferCollectionPropertiesFUCHSIA & operator=( BufferCollectionPropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11408 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11409 
operator =VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA11410     BufferCollectionPropertiesFUCHSIA & operator=( VkBufferCollectionPropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11411     {
11412       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA const *>( &rhs );
11413       return *this;
11414     }
11415 
operator VkBufferCollectionPropertiesFUCHSIA const&VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA11416     operator VkBufferCollectionPropertiesFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
11417     {
11418       return *reinterpret_cast<const VkBufferCollectionPropertiesFUCHSIA *>( this );
11419     }
11420 
operator VkBufferCollectionPropertiesFUCHSIA&VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA11421     operator VkBufferCollectionPropertiesFUCHSIA &() VULKAN_HPP_NOEXCEPT
11422     {
11423       return *reinterpret_cast<VkBufferCollectionPropertiesFUCHSIA *>( this );
11424     }
11425 
11426 #  if defined( VULKAN_HPP_USE_REFLECT )
11427 #    if 14 <= VULKAN_HPP_CPP_VERSION
11428     auto
11429 #    else
11430     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
11431                void * const &,
11432                uint32_t const &,
11433                uint32_t const &,
11434                uint32_t const &,
11435                uint64_t const &,
11436                VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &,
11437                VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA const &,
11438                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
11439                VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion const &,
11440                VULKAN_HPP_NAMESPACE::SamplerYcbcrRange const &,
11441                VULKAN_HPP_NAMESPACE::ChromaLocation const &,
11442                VULKAN_HPP_NAMESPACE::ChromaLocation const &>
11443 #    endif
reflectVULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA11444       reflect() const VULKAN_HPP_NOEXCEPT
11445     {
11446       return std::tie( sType,
11447                        pNext,
11448                        memoryTypeBits,
11449                        bufferCount,
11450                        createInfoIndex,
11451                        sysmemPixelFormat,
11452                        formatFeatures,
11453                        sysmemColorSpaceIndex,
11454                        samplerYcbcrConversionComponents,
11455                        suggestedYcbcrModel,
11456                        suggestedYcbcrRange,
11457                        suggestedXChromaOffset,
11458                        suggestedYChromaOffset );
11459     }
11460 #  endif
11461 
11462 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
11463     auto operator<=>( BufferCollectionPropertiesFUCHSIA const & ) const = default;
11464 #  else
operator ==VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA11465     bool operator==( BufferCollectionPropertiesFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11466     {
11467 #    if defined( VULKAN_HPP_USE_REFLECT )
11468       return this->reflect() == rhs.reflect();
11469 #    else
11470       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryTypeBits == rhs.memoryTypeBits ) && ( bufferCount == rhs.bufferCount ) &&
11471              ( createInfoIndex == rhs.createInfoIndex ) && ( sysmemPixelFormat == rhs.sysmemPixelFormat ) && ( formatFeatures == rhs.formatFeatures ) &&
11472              ( sysmemColorSpaceIndex == rhs.sysmemColorSpaceIndex ) && ( samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents ) &&
11473              ( suggestedYcbcrModel == rhs.suggestedYcbcrModel ) && ( suggestedYcbcrRange == rhs.suggestedYcbcrRange ) &&
11474              ( suggestedXChromaOffset == rhs.suggestedXChromaOffset ) && ( suggestedYChromaOffset == rhs.suggestedYChromaOffset );
11475 #    endif
11476     }
11477 
operator !=VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA11478     bool operator!=( BufferCollectionPropertiesFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11479     {
11480       return !operator==( rhs );
11481     }
11482 #  endif
11483 
11484   public:
11485     VULKAN_HPP_NAMESPACE::StructureType               sType                            = StructureType::eBufferCollectionPropertiesFUCHSIA;
11486     void *                                            pNext                            = {};
11487     uint32_t                                          memoryTypeBits                   = {};
11488     uint32_t                                          bufferCount                      = {};
11489     uint32_t                                          createInfoIndex                  = {};
11490     uint64_t                                          sysmemPixelFormat                = {};
11491     VULKAN_HPP_NAMESPACE::FormatFeatureFlags          formatFeatures                   = {};
11492     VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA     sysmemColorSpaceIndex            = {};
11493     VULKAN_HPP_NAMESPACE::ComponentMapping            samplerYcbcrConversionComponents = {};
11494     VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel              = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity;
11495     VULKAN_HPP_NAMESPACE::SamplerYcbcrRange           suggestedYcbcrRange              = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull;
11496     VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedXChromaOffset           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
11497     VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedYChromaOffset           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
11498   };
11499 
11500   template <>
11501   struct CppType<StructureType, StructureType::eBufferCollectionPropertiesFUCHSIA>
11502   {
11503     using Type = BufferCollectionPropertiesFUCHSIA;
11504   };
11505 #endif /*VK_USE_PLATFORM_FUCHSIA*/
11506 
11507   struct BufferCreateInfo
11508   {
11509     using NativeType = VkBufferCreateInfo;
11510 
11511     static const bool                                  allowDuplicate = false;
11512     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferCreateInfo;
11513 
11514 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCreateInfoVULKAN_HPP_NAMESPACE::BufferCreateInfo11515     VULKAN_HPP_CONSTEXPR BufferCreateInfo( VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_                 = {},
11516                                            VULKAN_HPP_NAMESPACE::DeviceSize        size_                  = {},
11517                                            VULKAN_HPP_NAMESPACE::BufferUsageFlags  usage_                 = {},
11518                                            VULKAN_HPP_NAMESPACE::SharingMode       sharingMode_           = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive,
11519                                            uint32_t                                queueFamilyIndexCount_ = {},
11520                                            const uint32_t *                        pQueueFamilyIndices_   = {},
11521                                            const void *                            pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
11522       : pNext{ pNext_ }
11523       , flags{ flags_ }
11524       , size{ size_ }
11525       , usage{ usage_ }
11526       , sharingMode{ sharingMode_ }
11527       , queueFamilyIndexCount{ queueFamilyIndexCount_ }
11528       , pQueueFamilyIndices{ pQueueFamilyIndices_ }
11529     {
11530     }
11531 
11532     VULKAN_HPP_CONSTEXPR BufferCreateInfo( BufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11533 
BufferCreateInfoVULKAN_HPP_NAMESPACE::BufferCreateInfo11534     BufferCreateInfo( VkBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : BufferCreateInfo( *reinterpret_cast<BufferCreateInfo const *>( &rhs ) ) {}
11535 
11536 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BufferCreateInfoVULKAN_HPP_NAMESPACE::BufferCreateInfo11537     BufferCreateInfo( VULKAN_HPP_NAMESPACE::BufferCreateFlags                               flags_,
11538                       VULKAN_HPP_NAMESPACE::DeviceSize                                      size_,
11539                       VULKAN_HPP_NAMESPACE::BufferUsageFlags                                usage_,
11540                       VULKAN_HPP_NAMESPACE::SharingMode                                     sharingMode_,
11541                       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_,
11542                       const void *                                                          pNext_ = nullptr )
11543       : pNext( pNext_ )
11544       , flags( flags_ )
11545       , size( size_ )
11546       , usage( usage_ )
11547       , sharingMode( sharingMode_ )
11548       , queueFamilyIndexCount( static_cast<uint32_t>( queueFamilyIndices_.size() ) )
11549       , pQueueFamilyIndices( queueFamilyIndices_.data() )
11550     {
11551     }
11552 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
11553 
11554     BufferCreateInfo & operator=( BufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11555 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11556 
operator =VULKAN_HPP_NAMESPACE::BufferCreateInfo11557     BufferCreateInfo & operator=( VkBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
11558     {
11559       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCreateInfo const *>( &rhs );
11560       return *this;
11561     }
11562 
11563 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCreateInfo11564     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11565     {
11566       pNext = pNext_;
11567       return *this;
11568     }
11569 
setFlagsVULKAN_HPP_NAMESPACE::BufferCreateInfo11570     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
11571     {
11572       flags = flags_;
11573       return *this;
11574     }
11575 
setSizeVULKAN_HPP_NAMESPACE::BufferCreateInfo11576     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
11577     {
11578       size = size_;
11579       return *this;
11580     }
11581 
setUsageVULKAN_HPP_NAMESPACE::BufferCreateInfo11582     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setUsage( VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
11583     {
11584       usage = usage_;
11585       return *this;
11586     }
11587 
setSharingModeVULKAN_HPP_NAMESPACE::BufferCreateInfo11588     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setSharingMode( VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ ) VULKAN_HPP_NOEXCEPT
11589     {
11590       sharingMode = sharingMode_;
11591       return *this;
11592     }
11593 
setQueueFamilyIndexCountVULKAN_HPP_NAMESPACE::BufferCreateInfo11594     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT
11595     {
11596       queueFamilyIndexCount = queueFamilyIndexCount_;
11597       return *this;
11598     }
11599 
setPQueueFamilyIndicesVULKAN_HPP_NAMESPACE::BufferCreateInfo11600     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setPQueueFamilyIndices( const uint32_t * pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
11601     {
11602       pQueueFamilyIndices = pQueueFamilyIndices_;
11603       return *this;
11604     }
11605 
11606 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueueFamilyIndicesVULKAN_HPP_NAMESPACE::BufferCreateInfo11607     BufferCreateInfo & setQueueFamilyIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
11608     {
11609       queueFamilyIndexCount = static_cast<uint32_t>( queueFamilyIndices_.size() );
11610       pQueueFamilyIndices   = queueFamilyIndices_.data();
11611       return *this;
11612     }
11613 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
11614 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11615 
operator VkBufferCreateInfo const&VULKAN_HPP_NAMESPACE::BufferCreateInfo11616     operator VkBufferCreateInfo const &() const VULKAN_HPP_NOEXCEPT
11617     {
11618       return *reinterpret_cast<const VkBufferCreateInfo *>( this );
11619     }
11620 
operator VkBufferCreateInfo&VULKAN_HPP_NAMESPACE::BufferCreateInfo11621     operator VkBufferCreateInfo &() VULKAN_HPP_NOEXCEPT
11622     {
11623       return *reinterpret_cast<VkBufferCreateInfo *>( this );
11624     }
11625 
11626 #if defined( VULKAN_HPP_USE_REFLECT )
11627 #  if 14 <= VULKAN_HPP_CPP_VERSION
11628     auto
11629 #  else
11630     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
11631                const void * const &,
11632                VULKAN_HPP_NAMESPACE::BufferCreateFlags const &,
11633                VULKAN_HPP_NAMESPACE::DeviceSize const &,
11634                VULKAN_HPP_NAMESPACE::BufferUsageFlags const &,
11635                VULKAN_HPP_NAMESPACE::SharingMode const &,
11636                uint32_t const &,
11637                const uint32_t * const &>
11638 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferCreateInfo11639       reflect() const VULKAN_HPP_NOEXCEPT
11640     {
11641       return std::tie( sType, pNext, flags, size, usage, sharingMode, queueFamilyIndexCount, pQueueFamilyIndices );
11642     }
11643 #endif
11644 
11645 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
11646     auto operator<=>( BufferCreateInfo const & ) const = default;
11647 #else
operator ==VULKAN_HPP_NAMESPACE::BufferCreateInfo11648     bool operator==( BufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
11649     {
11650 #  if defined( VULKAN_HPP_USE_REFLECT )
11651       return this->reflect() == rhs.reflect();
11652 #  else
11653       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( size == rhs.size ) && ( usage == rhs.usage ) &&
11654              ( sharingMode == rhs.sharingMode ) && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
11655 #  endif
11656     }
11657 
operator !=VULKAN_HPP_NAMESPACE::BufferCreateInfo11658     bool operator!=( BufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
11659     {
11660       return !operator==( rhs );
11661     }
11662 #endif
11663 
11664   public:
11665     VULKAN_HPP_NAMESPACE::StructureType     sType                 = StructureType::eBufferCreateInfo;
11666     const void *                            pNext                 = {};
11667     VULKAN_HPP_NAMESPACE::BufferCreateFlags flags                 = {};
11668     VULKAN_HPP_NAMESPACE::DeviceSize        size                  = {};
11669     VULKAN_HPP_NAMESPACE::BufferUsageFlags  usage                 = {};
11670     VULKAN_HPP_NAMESPACE::SharingMode       sharingMode           = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive;
11671     uint32_t                                queueFamilyIndexCount = {};
11672     const uint32_t *                        pQueueFamilyIndices   = {};
11673   };
11674 
11675   template <>
11676   struct CppType<StructureType, StructureType::eBufferCreateInfo>
11677   {
11678     using Type = BufferCreateInfo;
11679   };
11680 
11681 #if defined( VK_USE_PLATFORM_FUCHSIA )
11682   struct BufferConstraintsInfoFUCHSIA
11683   {
11684     using NativeType = VkBufferConstraintsInfoFUCHSIA;
11685 
11686     static const bool                                  allowDuplicate = false;
11687     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferConstraintsInfoFUCHSIA;
11688 
11689 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11690     VULKAN_HPP_CONSTEXPR BufferConstraintsInfoFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCreateInfo                       createInfo_                  = {},
11691                                                        VULKAN_HPP_NAMESPACE::FormatFeatureFlags                     requiredFormatFeatures_      = {},
11692                                                        VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints_ = {},
11693                                                        const void *                                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
11694       : pNext{ pNext_ }
11695       , createInfo{ createInfo_ }
11696       , requiredFormatFeatures{ requiredFormatFeatures_ }
11697       , bufferCollectionConstraints{ bufferCollectionConstraints_ }
11698     {
11699     }
11700 
11701     VULKAN_HPP_CONSTEXPR BufferConstraintsInfoFUCHSIA( BufferConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11702 
BufferConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11703     BufferConstraintsInfoFUCHSIA( VkBufferConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11704       : BufferConstraintsInfoFUCHSIA( *reinterpret_cast<BufferConstraintsInfoFUCHSIA const *>( &rhs ) )
11705     {
11706     }
11707 
11708     BufferConstraintsInfoFUCHSIA & operator=( BufferConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11709 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11710 
operator =VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11711     BufferConstraintsInfoFUCHSIA & operator=( VkBufferConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
11712     {
11713       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA const *>( &rhs );
11714       return *this;
11715     }
11716 
11717 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11718     VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11719     {
11720       pNext = pNext_;
11721       return *this;
11722     }
11723 
setCreateInfoVULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11724     VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA & setCreateInfo( VULKAN_HPP_NAMESPACE::BufferCreateInfo const & createInfo_ ) VULKAN_HPP_NOEXCEPT
11725     {
11726       createInfo = createInfo_;
11727       return *this;
11728     }
11729 
11730     VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA &
setRequiredFormatFeaturesVULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11731       setRequiredFormatFeatures( VULKAN_HPP_NAMESPACE::FormatFeatureFlags requiredFormatFeatures_ ) VULKAN_HPP_NOEXCEPT
11732     {
11733       requiredFormatFeatures = requiredFormatFeatures_;
11734       return *this;
11735     }
11736 
11737     VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA &
setBufferCollectionConstraintsVULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11738       setBufferCollectionConstraints( VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA const & bufferCollectionConstraints_ ) VULKAN_HPP_NOEXCEPT
11739     {
11740       bufferCollectionConstraints = bufferCollectionConstraints_;
11741       return *this;
11742     }
11743 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11744 
operator VkBufferConstraintsInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11745     operator VkBufferConstraintsInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
11746     {
11747       return *reinterpret_cast<const VkBufferConstraintsInfoFUCHSIA *>( this );
11748     }
11749 
operator VkBufferConstraintsInfoFUCHSIA&VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11750     operator VkBufferConstraintsInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
11751     {
11752       return *reinterpret_cast<VkBufferConstraintsInfoFUCHSIA *>( this );
11753     }
11754 
11755 #  if defined( VULKAN_HPP_USE_REFLECT )
11756 #    if 14 <= VULKAN_HPP_CPP_VERSION
11757     auto
11758 #    else
11759     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
11760                const void * const &,
11761                VULKAN_HPP_NAMESPACE::BufferCreateInfo const &,
11762                VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &,
11763                VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA const &>
11764 #    endif
reflectVULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11765       reflect() const VULKAN_HPP_NOEXCEPT
11766     {
11767       return std::tie( sType, pNext, createInfo, requiredFormatFeatures, bufferCollectionConstraints );
11768     }
11769 #  endif
11770 
11771 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
11772     auto operator<=>( BufferConstraintsInfoFUCHSIA const & ) const = default;
11773 #  else
operator ==VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11774     bool operator==( BufferConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11775     {
11776 #    if defined( VULKAN_HPP_USE_REFLECT )
11777       return this->reflect() == rhs.reflect();
11778 #    else
11779       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( createInfo == rhs.createInfo ) && ( requiredFormatFeatures == rhs.requiredFormatFeatures ) &&
11780              ( bufferCollectionConstraints == rhs.bufferCollectionConstraints );
11781 #    endif
11782     }
11783 
operator !=VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA11784     bool operator!=( BufferConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
11785     {
11786       return !operator==( rhs );
11787     }
11788 #  endif
11789 
11790   public:
11791     VULKAN_HPP_NAMESPACE::StructureType                          sType                       = StructureType::eBufferConstraintsInfoFUCHSIA;
11792     const void *                                                 pNext                       = {};
11793     VULKAN_HPP_NAMESPACE::BufferCreateInfo                       createInfo                  = {};
11794     VULKAN_HPP_NAMESPACE::FormatFeatureFlags                     requiredFormatFeatures      = {};
11795     VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints = {};
11796   };
11797 
11798   template <>
11799   struct CppType<StructureType, StructureType::eBufferConstraintsInfoFUCHSIA>
11800   {
11801     using Type = BufferConstraintsInfoFUCHSIA;
11802   };
11803 #endif /*VK_USE_PLATFORM_FUCHSIA*/
11804 
11805   struct BufferCopy
11806   {
11807     using NativeType = VkBufferCopy;
11808 
11809 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCopyVULKAN_HPP_NAMESPACE::BufferCopy11810     VULKAN_HPP_CONSTEXPR BufferCopy( VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ = {},
11811                                      VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ = {},
11812                                      VULKAN_HPP_NAMESPACE::DeviceSize size_      = {} ) VULKAN_HPP_NOEXCEPT
11813       : srcOffset{ srcOffset_ }
11814       , dstOffset{ dstOffset_ }
11815       , size{ size_ }
11816     {
11817     }
11818 
11819     VULKAN_HPP_CONSTEXPR BufferCopy( BufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11820 
BufferCopyVULKAN_HPP_NAMESPACE::BufferCopy11821     BufferCopy( VkBufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT : BufferCopy( *reinterpret_cast<BufferCopy const *>( &rhs ) ) {}
11822 
11823     BufferCopy & operator=( BufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11824 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11825 
operator =VULKAN_HPP_NAMESPACE::BufferCopy11826     BufferCopy & operator=( VkBufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT
11827     {
11828       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCopy const *>( &rhs );
11829       return *this;
11830     }
11831 
11832 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcOffsetVULKAN_HPP_NAMESPACE::BufferCopy11833     VULKAN_HPP_CONSTEXPR_14 BufferCopy & setSrcOffset( VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ ) VULKAN_HPP_NOEXCEPT
11834     {
11835       srcOffset = srcOffset_;
11836       return *this;
11837     }
11838 
setDstOffsetVULKAN_HPP_NAMESPACE::BufferCopy11839     VULKAN_HPP_CONSTEXPR_14 BufferCopy & setDstOffset( VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ ) VULKAN_HPP_NOEXCEPT
11840     {
11841       dstOffset = dstOffset_;
11842       return *this;
11843     }
11844 
setSizeVULKAN_HPP_NAMESPACE::BufferCopy11845     VULKAN_HPP_CONSTEXPR_14 BufferCopy & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
11846     {
11847       size = size_;
11848       return *this;
11849     }
11850 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11851 
operator VkBufferCopy const&VULKAN_HPP_NAMESPACE::BufferCopy11852     operator VkBufferCopy const &() const VULKAN_HPP_NOEXCEPT
11853     {
11854       return *reinterpret_cast<const VkBufferCopy *>( this );
11855     }
11856 
operator VkBufferCopy&VULKAN_HPP_NAMESPACE::BufferCopy11857     operator VkBufferCopy &() VULKAN_HPP_NOEXCEPT
11858     {
11859       return *reinterpret_cast<VkBufferCopy *>( this );
11860     }
11861 
11862 #if defined( VULKAN_HPP_USE_REFLECT )
11863 #  if 14 <= VULKAN_HPP_CPP_VERSION
11864     auto
11865 #  else
11866     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
11867 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferCopy11868       reflect() const VULKAN_HPP_NOEXCEPT
11869     {
11870       return std::tie( srcOffset, dstOffset, size );
11871     }
11872 #endif
11873 
11874 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
11875     auto operator<=>( BufferCopy const & ) const = default;
11876 #else
operator ==VULKAN_HPP_NAMESPACE::BufferCopy11877     bool operator==( BufferCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
11878     {
11879 #  if defined( VULKAN_HPP_USE_REFLECT )
11880       return this->reflect() == rhs.reflect();
11881 #  else
11882       return ( srcOffset == rhs.srcOffset ) && ( dstOffset == rhs.dstOffset ) && ( size == rhs.size );
11883 #  endif
11884     }
11885 
operator !=VULKAN_HPP_NAMESPACE::BufferCopy11886     bool operator!=( BufferCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
11887     {
11888       return !operator==( rhs );
11889     }
11890 #endif
11891 
11892   public:
11893     VULKAN_HPP_NAMESPACE::DeviceSize srcOffset = {};
11894     VULKAN_HPP_NAMESPACE::DeviceSize dstOffset = {};
11895     VULKAN_HPP_NAMESPACE::DeviceSize size      = {};
11896   };
11897 
11898   struct BufferCopy2
11899   {
11900     using NativeType = VkBufferCopy2;
11901 
11902     static const bool                                  allowDuplicate = false;
11903     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferCopy2;
11904 
11905 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCopy2VULKAN_HPP_NAMESPACE::BufferCopy211906     VULKAN_HPP_CONSTEXPR BufferCopy2( VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ = {},
11907                                       VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ = {},
11908                                       VULKAN_HPP_NAMESPACE::DeviceSize size_      = {},
11909                                       const void *                     pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
11910       : pNext{ pNext_ }
11911       , srcOffset{ srcOffset_ }
11912       , dstOffset{ dstOffset_ }
11913       , size{ size_ }
11914     {
11915     }
11916 
11917     VULKAN_HPP_CONSTEXPR BufferCopy2( BufferCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11918 
BufferCopy2VULKAN_HPP_NAMESPACE::BufferCopy211919     BufferCopy2( VkBufferCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT : BufferCopy2( *reinterpret_cast<BufferCopy2 const *>( &rhs ) ) {}
11920 
11921     BufferCopy2 & operator=( BufferCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11922 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11923 
operator =VULKAN_HPP_NAMESPACE::BufferCopy211924     BufferCopy2 & operator=( VkBufferCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT
11925     {
11926       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCopy2 const *>( &rhs );
11927       return *this;
11928     }
11929 
11930 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCopy211931     VULKAN_HPP_CONSTEXPR_14 BufferCopy2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11932     {
11933       pNext = pNext_;
11934       return *this;
11935     }
11936 
setSrcOffsetVULKAN_HPP_NAMESPACE::BufferCopy211937     VULKAN_HPP_CONSTEXPR_14 BufferCopy2 & setSrcOffset( VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ ) VULKAN_HPP_NOEXCEPT
11938     {
11939       srcOffset = srcOffset_;
11940       return *this;
11941     }
11942 
setDstOffsetVULKAN_HPP_NAMESPACE::BufferCopy211943     VULKAN_HPP_CONSTEXPR_14 BufferCopy2 & setDstOffset( VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ ) VULKAN_HPP_NOEXCEPT
11944     {
11945       dstOffset = dstOffset_;
11946       return *this;
11947     }
11948 
setSizeVULKAN_HPP_NAMESPACE::BufferCopy211949     VULKAN_HPP_CONSTEXPR_14 BufferCopy2 & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
11950     {
11951       size = size_;
11952       return *this;
11953     }
11954 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11955 
operator VkBufferCopy2 const&VULKAN_HPP_NAMESPACE::BufferCopy211956     operator VkBufferCopy2 const &() const VULKAN_HPP_NOEXCEPT
11957     {
11958       return *reinterpret_cast<const VkBufferCopy2 *>( this );
11959     }
11960 
operator VkBufferCopy2&VULKAN_HPP_NAMESPACE::BufferCopy211961     operator VkBufferCopy2 &() VULKAN_HPP_NOEXCEPT
11962     {
11963       return *reinterpret_cast<VkBufferCopy2 *>( this );
11964     }
11965 
11966 #if defined( VULKAN_HPP_USE_REFLECT )
11967 #  if 14 <= VULKAN_HPP_CPP_VERSION
11968     auto
11969 #  else
11970     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
11971                const void * const &,
11972                VULKAN_HPP_NAMESPACE::DeviceSize const &,
11973                VULKAN_HPP_NAMESPACE::DeviceSize const &,
11974                VULKAN_HPP_NAMESPACE::DeviceSize const &>
11975 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferCopy211976       reflect() const VULKAN_HPP_NOEXCEPT
11977     {
11978       return std::tie( sType, pNext, srcOffset, dstOffset, size );
11979     }
11980 #endif
11981 
11982 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
11983     auto operator<=>( BufferCopy2 const & ) const = default;
11984 #else
operator ==VULKAN_HPP_NAMESPACE::BufferCopy211985     bool operator==( BufferCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT
11986     {
11987 #  if defined( VULKAN_HPP_USE_REFLECT )
11988       return this->reflect() == rhs.reflect();
11989 #  else
11990       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcOffset == rhs.srcOffset ) && ( dstOffset == rhs.dstOffset ) && ( size == rhs.size );
11991 #  endif
11992     }
11993 
operator !=VULKAN_HPP_NAMESPACE::BufferCopy211994     bool operator!=( BufferCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT
11995     {
11996       return !operator==( rhs );
11997     }
11998 #endif
11999 
12000   public:
12001     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eBufferCopy2;
12002     const void *                        pNext     = {};
12003     VULKAN_HPP_NAMESPACE::DeviceSize    srcOffset = {};
12004     VULKAN_HPP_NAMESPACE::DeviceSize    dstOffset = {};
12005     VULKAN_HPP_NAMESPACE::DeviceSize    size      = {};
12006   };
12007 
12008   template <>
12009   struct CppType<StructureType, StructureType::eBufferCopy2>
12010   {
12011     using Type = BufferCopy2;
12012   };
12013 
12014   using BufferCopy2KHR = BufferCopy2;
12015 
12016   struct BufferDeviceAddressCreateInfoEXT
12017   {
12018     using NativeType = VkBufferDeviceAddressCreateInfoEXT;
12019 
12020     static const bool                                  allowDuplicate = false;
12021     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferDeviceAddressCreateInfoEXT;
12022 
12023 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferDeviceAddressCreateInfoEXTVULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT12024     VULKAN_HPP_CONSTEXPR BufferDeviceAddressCreateInfoEXT( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {},
12025                                                            const void *                        pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
12026       : pNext{ pNext_ }
12027       , deviceAddress{ deviceAddress_ }
12028     {
12029     }
12030 
12031     VULKAN_HPP_CONSTEXPR BufferDeviceAddressCreateInfoEXT( BufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12032 
BufferDeviceAddressCreateInfoEXTVULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT12033     BufferDeviceAddressCreateInfoEXT( VkBufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
12034       : BufferDeviceAddressCreateInfoEXT( *reinterpret_cast<BufferDeviceAddressCreateInfoEXT const *>( &rhs ) )
12035     {
12036     }
12037 
12038     BufferDeviceAddressCreateInfoEXT & operator=( BufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12039 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12040 
operator =VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT12041     BufferDeviceAddressCreateInfoEXT & operator=( VkBufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
12042     {
12043       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT const *>( &rhs );
12044       return *this;
12045     }
12046 
12047 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT12048     VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12049     {
12050       pNext = pNext_;
12051       return *this;
12052     }
12053 
setDeviceAddressVULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT12054     VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressCreateInfoEXT & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
12055     {
12056       deviceAddress = deviceAddress_;
12057       return *this;
12058     }
12059 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12060 
operator VkBufferDeviceAddressCreateInfoEXT const&VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT12061     operator VkBufferDeviceAddressCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
12062     {
12063       return *reinterpret_cast<const VkBufferDeviceAddressCreateInfoEXT *>( this );
12064     }
12065 
operator VkBufferDeviceAddressCreateInfoEXT&VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT12066     operator VkBufferDeviceAddressCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
12067     {
12068       return *reinterpret_cast<VkBufferDeviceAddressCreateInfoEXT *>( this );
12069     }
12070 
12071 #if defined( VULKAN_HPP_USE_REFLECT )
12072 #  if 14 <= VULKAN_HPP_CPP_VERSION
12073     auto
12074 #  else
12075     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceAddress const &>
12076 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT12077       reflect() const VULKAN_HPP_NOEXCEPT
12078     {
12079       return std::tie( sType, pNext, deviceAddress );
12080     }
12081 #endif
12082 
12083 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12084     auto operator<=>( BufferDeviceAddressCreateInfoEXT const & ) const = default;
12085 #else
operator ==VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT12086     bool operator==( BufferDeviceAddressCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
12087     {
12088 #  if defined( VULKAN_HPP_USE_REFLECT )
12089       return this->reflect() == rhs.reflect();
12090 #  else
12091       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceAddress == rhs.deviceAddress );
12092 #  endif
12093     }
12094 
operator !=VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT12095     bool operator!=( BufferDeviceAddressCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
12096     {
12097       return !operator==( rhs );
12098     }
12099 #endif
12100 
12101   public:
12102     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eBufferDeviceAddressCreateInfoEXT;
12103     const void *                        pNext         = {};
12104     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress = {};
12105   };
12106 
12107   template <>
12108   struct CppType<StructureType, StructureType::eBufferDeviceAddressCreateInfoEXT>
12109   {
12110     using Type = BufferDeviceAddressCreateInfoEXT;
12111   };
12112 
12113   struct BufferDeviceAddressInfo
12114   {
12115     using NativeType = VkBufferDeviceAddressInfo;
12116 
12117     static const bool                                  allowDuplicate = false;
12118     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferDeviceAddressInfo;
12119 
12120 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferDeviceAddressInfoVULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo12121     VULKAN_HPP_CONSTEXPR BufferDeviceAddressInfo( VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
12122       : pNext{ pNext_ }
12123       , buffer{ buffer_ }
12124     {
12125     }
12126 
12127     VULKAN_HPP_CONSTEXPR BufferDeviceAddressInfo( BufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12128 
BufferDeviceAddressInfoVULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo12129     BufferDeviceAddressInfo( VkBufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
12130       : BufferDeviceAddressInfo( *reinterpret_cast<BufferDeviceAddressInfo const *>( &rhs ) )
12131     {
12132     }
12133 
12134     BufferDeviceAddressInfo & operator=( BufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12135 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12136 
operator =VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo12137     BufferDeviceAddressInfo & operator=( VkBufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
12138     {
12139       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo const *>( &rhs );
12140       return *this;
12141     }
12142 
12143 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo12144     VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12145     {
12146       pNext = pNext_;
12147       return *this;
12148     }
12149 
setBufferVULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo12150     VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
12151     {
12152       buffer = buffer_;
12153       return *this;
12154     }
12155 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12156 
operator VkBufferDeviceAddressInfo const&VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo12157     operator VkBufferDeviceAddressInfo const &() const VULKAN_HPP_NOEXCEPT
12158     {
12159       return *reinterpret_cast<const VkBufferDeviceAddressInfo *>( this );
12160     }
12161 
operator VkBufferDeviceAddressInfo&VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo12162     operator VkBufferDeviceAddressInfo &() VULKAN_HPP_NOEXCEPT
12163     {
12164       return *reinterpret_cast<VkBufferDeviceAddressInfo *>( this );
12165     }
12166 
12167 #if defined( VULKAN_HPP_USE_REFLECT )
12168 #  if 14 <= VULKAN_HPP_CPP_VERSION
12169     auto
12170 #  else
12171     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Buffer const &>
12172 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo12173       reflect() const VULKAN_HPP_NOEXCEPT
12174     {
12175       return std::tie( sType, pNext, buffer );
12176     }
12177 #endif
12178 
12179 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12180     auto operator<=>( BufferDeviceAddressInfo const & ) const = default;
12181 #else
operator ==VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo12182     bool operator==( BufferDeviceAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
12183     {
12184 #  if defined( VULKAN_HPP_USE_REFLECT )
12185       return this->reflect() == rhs.reflect();
12186 #  else
12187       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer );
12188 #  endif
12189     }
12190 
operator !=VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo12191     bool operator!=( BufferDeviceAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
12192     {
12193       return !operator==( rhs );
12194     }
12195 #endif
12196 
12197   public:
12198     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eBufferDeviceAddressInfo;
12199     const void *                        pNext  = {};
12200     VULKAN_HPP_NAMESPACE::Buffer        buffer = {};
12201   };
12202 
12203   template <>
12204   struct CppType<StructureType, StructureType::eBufferDeviceAddressInfo>
12205   {
12206     using Type = BufferDeviceAddressInfo;
12207   };
12208 
12209   using BufferDeviceAddressInfoEXT = BufferDeviceAddressInfo;
12210   using BufferDeviceAddressInfoKHR = BufferDeviceAddressInfo;
12211 
12212   struct BufferImageCopy
12213   {
12214     using NativeType = VkBufferImageCopy;
12215 
12216 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferImageCopyVULKAN_HPP_NAMESPACE::BufferImageCopy12217     VULKAN_HPP_CONSTEXPR BufferImageCopy( VULKAN_HPP_NAMESPACE::DeviceSize             bufferOffset_      = {},
12218                                           uint32_t                                     bufferRowLength_   = {},
12219                                           uint32_t                                     bufferImageHeight_ = {},
12220                                           VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource_  = {},
12221                                           VULKAN_HPP_NAMESPACE::Offset3D               imageOffset_       = {},
12222                                           VULKAN_HPP_NAMESPACE::Extent3D               imageExtent_       = {} ) VULKAN_HPP_NOEXCEPT
12223       : bufferOffset{ bufferOffset_ }
12224       , bufferRowLength{ bufferRowLength_ }
12225       , bufferImageHeight{ bufferImageHeight_ }
12226       , imageSubresource{ imageSubresource_ }
12227       , imageOffset{ imageOffset_ }
12228       , imageExtent{ imageExtent_ }
12229     {
12230     }
12231 
12232     VULKAN_HPP_CONSTEXPR BufferImageCopy( BufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12233 
BufferImageCopyVULKAN_HPP_NAMESPACE::BufferImageCopy12234     BufferImageCopy( VkBufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT : BufferImageCopy( *reinterpret_cast<BufferImageCopy const *>( &rhs ) ) {}
12235 
12236     BufferImageCopy & operator=( BufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12237 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12238 
operator =VULKAN_HPP_NAMESPACE::BufferImageCopy12239     BufferImageCopy & operator=( VkBufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT
12240     {
12241       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferImageCopy const *>( &rhs );
12242       return *this;
12243     }
12244 
12245 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBufferOffsetVULKAN_HPP_NAMESPACE::BufferImageCopy12246     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setBufferOffset( VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset_ ) VULKAN_HPP_NOEXCEPT
12247     {
12248       bufferOffset = bufferOffset_;
12249       return *this;
12250     }
12251 
setBufferRowLengthVULKAN_HPP_NAMESPACE::BufferImageCopy12252     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setBufferRowLength( uint32_t bufferRowLength_ ) VULKAN_HPP_NOEXCEPT
12253     {
12254       bufferRowLength = bufferRowLength_;
12255       return *this;
12256     }
12257 
setBufferImageHeightVULKAN_HPP_NAMESPACE::BufferImageCopy12258     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setBufferImageHeight( uint32_t bufferImageHeight_ ) VULKAN_HPP_NOEXCEPT
12259     {
12260       bufferImageHeight = bufferImageHeight_;
12261       return *this;
12262     }
12263 
setImageSubresourceVULKAN_HPP_NAMESPACE::BufferImageCopy12264     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setImageSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & imageSubresource_ ) VULKAN_HPP_NOEXCEPT
12265     {
12266       imageSubresource = imageSubresource_;
12267       return *this;
12268     }
12269 
setImageOffsetVULKAN_HPP_NAMESPACE::BufferImageCopy12270     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setImageOffset( VULKAN_HPP_NAMESPACE::Offset3D const & imageOffset_ ) VULKAN_HPP_NOEXCEPT
12271     {
12272       imageOffset = imageOffset_;
12273       return *this;
12274     }
12275 
setImageExtentVULKAN_HPP_NAMESPACE::BufferImageCopy12276     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setImageExtent( VULKAN_HPP_NAMESPACE::Extent3D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
12277     {
12278       imageExtent = imageExtent_;
12279       return *this;
12280     }
12281 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12282 
operator VkBufferImageCopy const&VULKAN_HPP_NAMESPACE::BufferImageCopy12283     operator VkBufferImageCopy const &() const VULKAN_HPP_NOEXCEPT
12284     {
12285       return *reinterpret_cast<const VkBufferImageCopy *>( this );
12286     }
12287 
operator VkBufferImageCopy&VULKAN_HPP_NAMESPACE::BufferImageCopy12288     operator VkBufferImageCopy &() VULKAN_HPP_NOEXCEPT
12289     {
12290       return *reinterpret_cast<VkBufferImageCopy *>( this );
12291     }
12292 
12293 #if defined( VULKAN_HPP_USE_REFLECT )
12294 #  if 14 <= VULKAN_HPP_CPP_VERSION
12295     auto
12296 #  else
12297     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &,
12298                uint32_t const &,
12299                uint32_t const &,
12300                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
12301                VULKAN_HPP_NAMESPACE::Offset3D const &,
12302                VULKAN_HPP_NAMESPACE::Extent3D const &>
12303 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferImageCopy12304       reflect() const VULKAN_HPP_NOEXCEPT
12305     {
12306       return std::tie( bufferOffset, bufferRowLength, bufferImageHeight, imageSubresource, imageOffset, imageExtent );
12307     }
12308 #endif
12309 
12310 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12311     auto operator<=>( BufferImageCopy const & ) const = default;
12312 #else
operator ==VULKAN_HPP_NAMESPACE::BufferImageCopy12313     bool operator==( BufferImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
12314     {
12315 #  if defined( VULKAN_HPP_USE_REFLECT )
12316       return this->reflect() == rhs.reflect();
12317 #  else
12318       return ( bufferOffset == rhs.bufferOffset ) && ( bufferRowLength == rhs.bufferRowLength ) && ( bufferImageHeight == rhs.bufferImageHeight ) &&
12319              ( imageSubresource == rhs.imageSubresource ) && ( imageOffset == rhs.imageOffset ) && ( imageExtent == rhs.imageExtent );
12320 #  endif
12321     }
12322 
operator !=VULKAN_HPP_NAMESPACE::BufferImageCopy12323     bool operator!=( BufferImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
12324     {
12325       return !operator==( rhs );
12326     }
12327 #endif
12328 
12329   public:
12330     VULKAN_HPP_NAMESPACE::DeviceSize             bufferOffset      = {};
12331     uint32_t                                     bufferRowLength   = {};
12332     uint32_t                                     bufferImageHeight = {};
12333     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource  = {};
12334     VULKAN_HPP_NAMESPACE::Offset3D               imageOffset       = {};
12335     VULKAN_HPP_NAMESPACE::Extent3D               imageExtent       = {};
12336   };
12337 
12338   struct BufferImageCopy2
12339   {
12340     using NativeType = VkBufferImageCopy2;
12341 
12342     static const bool                                  allowDuplicate = false;
12343     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferImageCopy2;
12344 
12345 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferImageCopy2VULKAN_HPP_NAMESPACE::BufferImageCopy212346     VULKAN_HPP_CONSTEXPR BufferImageCopy2( VULKAN_HPP_NAMESPACE::DeviceSize             bufferOffset_      = {},
12347                                            uint32_t                                     bufferRowLength_   = {},
12348                                            uint32_t                                     bufferImageHeight_ = {},
12349                                            VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource_  = {},
12350                                            VULKAN_HPP_NAMESPACE::Offset3D               imageOffset_       = {},
12351                                            VULKAN_HPP_NAMESPACE::Extent3D               imageExtent_       = {},
12352                                            const void *                                 pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
12353       : pNext{ pNext_ }
12354       , bufferOffset{ bufferOffset_ }
12355       , bufferRowLength{ bufferRowLength_ }
12356       , bufferImageHeight{ bufferImageHeight_ }
12357       , imageSubresource{ imageSubresource_ }
12358       , imageOffset{ imageOffset_ }
12359       , imageExtent{ imageExtent_ }
12360     {
12361     }
12362 
12363     VULKAN_HPP_CONSTEXPR BufferImageCopy2( BufferImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12364 
BufferImageCopy2VULKAN_HPP_NAMESPACE::BufferImageCopy212365     BufferImageCopy2( VkBufferImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT : BufferImageCopy2( *reinterpret_cast<BufferImageCopy2 const *>( &rhs ) ) {}
12366 
12367     BufferImageCopy2 & operator=( BufferImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12368 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12369 
operator =VULKAN_HPP_NAMESPACE::BufferImageCopy212370     BufferImageCopy2 & operator=( VkBufferImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT
12371     {
12372       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferImageCopy2 const *>( &rhs );
12373       return *this;
12374     }
12375 
12376 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferImageCopy212377     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12378     {
12379       pNext = pNext_;
12380       return *this;
12381     }
12382 
setBufferOffsetVULKAN_HPP_NAMESPACE::BufferImageCopy212383     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setBufferOffset( VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset_ ) VULKAN_HPP_NOEXCEPT
12384     {
12385       bufferOffset = bufferOffset_;
12386       return *this;
12387     }
12388 
setBufferRowLengthVULKAN_HPP_NAMESPACE::BufferImageCopy212389     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setBufferRowLength( uint32_t bufferRowLength_ ) VULKAN_HPP_NOEXCEPT
12390     {
12391       bufferRowLength = bufferRowLength_;
12392       return *this;
12393     }
12394 
setBufferImageHeightVULKAN_HPP_NAMESPACE::BufferImageCopy212395     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setBufferImageHeight( uint32_t bufferImageHeight_ ) VULKAN_HPP_NOEXCEPT
12396     {
12397       bufferImageHeight = bufferImageHeight_;
12398       return *this;
12399     }
12400 
setImageSubresourceVULKAN_HPP_NAMESPACE::BufferImageCopy212401     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setImageSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & imageSubresource_ ) VULKAN_HPP_NOEXCEPT
12402     {
12403       imageSubresource = imageSubresource_;
12404       return *this;
12405     }
12406 
setImageOffsetVULKAN_HPP_NAMESPACE::BufferImageCopy212407     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setImageOffset( VULKAN_HPP_NAMESPACE::Offset3D const & imageOffset_ ) VULKAN_HPP_NOEXCEPT
12408     {
12409       imageOffset = imageOffset_;
12410       return *this;
12411     }
12412 
setImageExtentVULKAN_HPP_NAMESPACE::BufferImageCopy212413     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setImageExtent( VULKAN_HPP_NAMESPACE::Extent3D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
12414     {
12415       imageExtent = imageExtent_;
12416       return *this;
12417     }
12418 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12419 
operator VkBufferImageCopy2 const&VULKAN_HPP_NAMESPACE::BufferImageCopy212420     operator VkBufferImageCopy2 const &() const VULKAN_HPP_NOEXCEPT
12421     {
12422       return *reinterpret_cast<const VkBufferImageCopy2 *>( this );
12423     }
12424 
operator VkBufferImageCopy2&VULKAN_HPP_NAMESPACE::BufferImageCopy212425     operator VkBufferImageCopy2 &() VULKAN_HPP_NOEXCEPT
12426     {
12427       return *reinterpret_cast<VkBufferImageCopy2 *>( this );
12428     }
12429 
12430 #if defined( VULKAN_HPP_USE_REFLECT )
12431 #  if 14 <= VULKAN_HPP_CPP_VERSION
12432     auto
12433 #  else
12434     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
12435                const void * const &,
12436                VULKAN_HPP_NAMESPACE::DeviceSize const &,
12437                uint32_t const &,
12438                uint32_t const &,
12439                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
12440                VULKAN_HPP_NAMESPACE::Offset3D const &,
12441                VULKAN_HPP_NAMESPACE::Extent3D const &>
12442 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferImageCopy212443       reflect() const VULKAN_HPP_NOEXCEPT
12444     {
12445       return std::tie( sType, pNext, bufferOffset, bufferRowLength, bufferImageHeight, imageSubresource, imageOffset, imageExtent );
12446     }
12447 #endif
12448 
12449 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12450     auto operator<=>( BufferImageCopy2 const & ) const = default;
12451 #else
operator ==VULKAN_HPP_NAMESPACE::BufferImageCopy212452     bool operator==( BufferImageCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT
12453     {
12454 #  if defined( VULKAN_HPP_USE_REFLECT )
12455       return this->reflect() == rhs.reflect();
12456 #  else
12457       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( bufferOffset == rhs.bufferOffset ) && ( bufferRowLength == rhs.bufferRowLength ) &&
12458              ( bufferImageHeight == rhs.bufferImageHeight ) && ( imageSubresource == rhs.imageSubresource ) && ( imageOffset == rhs.imageOffset ) &&
12459              ( imageExtent == rhs.imageExtent );
12460 #  endif
12461     }
12462 
operator !=VULKAN_HPP_NAMESPACE::BufferImageCopy212463     bool operator!=( BufferImageCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT
12464     {
12465       return !operator==( rhs );
12466     }
12467 #endif
12468 
12469   public:
12470     VULKAN_HPP_NAMESPACE::StructureType          sType             = StructureType::eBufferImageCopy2;
12471     const void *                                 pNext             = {};
12472     VULKAN_HPP_NAMESPACE::DeviceSize             bufferOffset      = {};
12473     uint32_t                                     bufferRowLength   = {};
12474     uint32_t                                     bufferImageHeight = {};
12475     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource  = {};
12476     VULKAN_HPP_NAMESPACE::Offset3D               imageOffset       = {};
12477     VULKAN_HPP_NAMESPACE::Extent3D               imageExtent       = {};
12478   };
12479 
12480   template <>
12481   struct CppType<StructureType, StructureType::eBufferImageCopy2>
12482   {
12483     using Type = BufferImageCopy2;
12484   };
12485 
12486   using BufferImageCopy2KHR = BufferImageCopy2;
12487 
12488   struct BufferMemoryBarrier
12489   {
12490     using NativeType = VkBufferMemoryBarrier;
12491 
12492     static const bool                                  allowDuplicate = false;
12493     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferMemoryBarrier;
12494 
12495 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferMemoryBarrierVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12496     VULKAN_HPP_CONSTEXPR BufferMemoryBarrier( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_       = {},
12497                                               VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_       = {},
12498                                               uint32_t                          srcQueueFamilyIndex_ = {},
12499                                               uint32_t                          dstQueueFamilyIndex_ = {},
12500                                               VULKAN_HPP_NAMESPACE::Buffer      buffer_              = {},
12501                                               VULKAN_HPP_NAMESPACE::DeviceSize  offset_              = {},
12502                                               VULKAN_HPP_NAMESPACE::DeviceSize  size_                = {},
12503                                               const void *                      pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
12504       : pNext{ pNext_ }
12505       , srcAccessMask{ srcAccessMask_ }
12506       , dstAccessMask{ dstAccessMask_ }
12507       , srcQueueFamilyIndex{ srcQueueFamilyIndex_ }
12508       , dstQueueFamilyIndex{ dstQueueFamilyIndex_ }
12509       , buffer{ buffer_ }
12510       , offset{ offset_ }
12511       , size{ size_ }
12512     {
12513     }
12514 
12515     VULKAN_HPP_CONSTEXPR BufferMemoryBarrier( BufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12516 
BufferMemoryBarrierVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12517     BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT : BufferMemoryBarrier( *reinterpret_cast<BufferMemoryBarrier const *>( &rhs ) )
12518     {
12519     }
12520 
12521     BufferMemoryBarrier & operator=( BufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12522 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12523 
operator =VULKAN_HPP_NAMESPACE::BufferMemoryBarrier12524     BufferMemoryBarrier & operator=( VkBufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
12525     {
12526       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferMemoryBarrier const *>( &rhs );
12527       return *this;
12528     }
12529 
12530 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12531     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12532     {
12533       pNext = pNext_;
12534       return *this;
12535     }
12536 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12537     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
12538     {
12539       srcAccessMask = srcAccessMask_;
12540       return *this;
12541     }
12542 
setDstAccessMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12543     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
12544     {
12545       dstAccessMask = dstAccessMask_;
12546       return *this;
12547     }
12548 
setSrcQueueFamilyIndexVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12549     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
12550     {
12551       srcQueueFamilyIndex = srcQueueFamilyIndex_;
12552       return *this;
12553     }
12554 
setDstQueueFamilyIndexVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12555     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
12556     {
12557       dstQueueFamilyIndex = dstQueueFamilyIndex_;
12558       return *this;
12559     }
12560 
setBufferVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12561     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
12562     {
12563       buffer = buffer_;
12564       return *this;
12565     }
12566 
setOffsetVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12567     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
12568     {
12569       offset = offset_;
12570       return *this;
12571     }
12572 
setSizeVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12573     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
12574     {
12575       size = size_;
12576       return *this;
12577     }
12578 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12579 
operator VkBufferMemoryBarrier const&VULKAN_HPP_NAMESPACE::BufferMemoryBarrier12580     operator VkBufferMemoryBarrier const &() const VULKAN_HPP_NOEXCEPT
12581     {
12582       return *reinterpret_cast<const VkBufferMemoryBarrier *>( this );
12583     }
12584 
operator VkBufferMemoryBarrier&VULKAN_HPP_NAMESPACE::BufferMemoryBarrier12585     operator VkBufferMemoryBarrier &() VULKAN_HPP_NOEXCEPT
12586     {
12587       return *reinterpret_cast<VkBufferMemoryBarrier *>( this );
12588     }
12589 
12590 #if defined( VULKAN_HPP_USE_REFLECT )
12591 #  if 14 <= VULKAN_HPP_CPP_VERSION
12592     auto
12593 #  else
12594     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
12595                const void * const &,
12596                VULKAN_HPP_NAMESPACE::AccessFlags const &,
12597                VULKAN_HPP_NAMESPACE::AccessFlags const &,
12598                uint32_t const &,
12599                uint32_t const &,
12600                VULKAN_HPP_NAMESPACE::Buffer const &,
12601                VULKAN_HPP_NAMESPACE::DeviceSize const &,
12602                VULKAN_HPP_NAMESPACE::DeviceSize const &>
12603 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferMemoryBarrier12604       reflect() const VULKAN_HPP_NOEXCEPT
12605     {
12606       return std::tie( sType, pNext, srcAccessMask, dstAccessMask, srcQueueFamilyIndex, dstQueueFamilyIndex, buffer, offset, size );
12607     }
12608 #endif
12609 
12610 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12611     auto operator<=>( BufferMemoryBarrier const & ) const = default;
12612 #else
operator ==VULKAN_HPP_NAMESPACE::BufferMemoryBarrier12613     bool operator==( BufferMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
12614     {
12615 #  if defined( VULKAN_HPP_USE_REFLECT )
12616       return this->reflect() == rhs.reflect();
12617 #  else
12618       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcAccessMask == rhs.srcAccessMask ) && ( dstAccessMask == rhs.dstAccessMask ) &&
12619              ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex ) && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex ) && ( buffer == rhs.buffer ) &&
12620              ( offset == rhs.offset ) && ( size == rhs.size );
12621 #  endif
12622     }
12623 
operator !=VULKAN_HPP_NAMESPACE::BufferMemoryBarrier12624     bool operator!=( BufferMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
12625     {
12626       return !operator==( rhs );
12627     }
12628 #endif
12629 
12630   public:
12631     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::eBufferMemoryBarrier;
12632     const void *                        pNext               = {};
12633     VULKAN_HPP_NAMESPACE::AccessFlags   srcAccessMask       = {};
12634     VULKAN_HPP_NAMESPACE::AccessFlags   dstAccessMask       = {};
12635     uint32_t                            srcQueueFamilyIndex = {};
12636     uint32_t                            dstQueueFamilyIndex = {};
12637     VULKAN_HPP_NAMESPACE::Buffer        buffer              = {};
12638     VULKAN_HPP_NAMESPACE::DeviceSize    offset              = {};
12639     VULKAN_HPP_NAMESPACE::DeviceSize    size                = {};
12640   };
12641 
12642   template <>
12643   struct CppType<StructureType, StructureType::eBufferMemoryBarrier>
12644   {
12645     using Type = BufferMemoryBarrier;
12646   };
12647 
12648   struct BufferMemoryBarrier2
12649   {
12650     using NativeType = VkBufferMemoryBarrier2;
12651 
12652     static const bool                                  allowDuplicate = false;
12653     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferMemoryBarrier2;
12654 
12655 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferMemoryBarrier2VULKAN_HPP_NAMESPACE::BufferMemoryBarrier212656     VULKAN_HPP_CONSTEXPR BufferMemoryBarrier2( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_        = {},
12657                                                VULKAN_HPP_NAMESPACE::AccessFlags2        srcAccessMask_       = {},
12658                                                VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_        = {},
12659                                                VULKAN_HPP_NAMESPACE::AccessFlags2        dstAccessMask_       = {},
12660                                                uint32_t                                  srcQueueFamilyIndex_ = {},
12661                                                uint32_t                                  dstQueueFamilyIndex_ = {},
12662                                                VULKAN_HPP_NAMESPACE::Buffer              buffer_              = {},
12663                                                VULKAN_HPP_NAMESPACE::DeviceSize          offset_              = {},
12664                                                VULKAN_HPP_NAMESPACE::DeviceSize          size_                = {},
12665                                                const void *                              pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
12666       : pNext{ pNext_ }
12667       , srcStageMask{ srcStageMask_ }
12668       , srcAccessMask{ srcAccessMask_ }
12669       , dstStageMask{ dstStageMask_ }
12670       , dstAccessMask{ dstAccessMask_ }
12671       , srcQueueFamilyIndex{ srcQueueFamilyIndex_ }
12672       , dstQueueFamilyIndex{ dstQueueFamilyIndex_ }
12673       , buffer{ buffer_ }
12674       , offset{ offset_ }
12675       , size{ size_ }
12676     {
12677     }
12678 
12679     VULKAN_HPP_CONSTEXPR BufferMemoryBarrier2( BufferMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12680 
BufferMemoryBarrier2VULKAN_HPP_NAMESPACE::BufferMemoryBarrier212681     BufferMemoryBarrier2( VkBufferMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT
12682       : BufferMemoryBarrier2( *reinterpret_cast<BufferMemoryBarrier2 const *>( &rhs ) )
12683     {
12684     }
12685 
12686     BufferMemoryBarrier2 & operator=( BufferMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12687 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12688 
operator =VULKAN_HPP_NAMESPACE::BufferMemoryBarrier212689     BufferMemoryBarrier2 & operator=( VkBufferMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT
12690     {
12691       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 const *>( &rhs );
12692       return *this;
12693     }
12694 
12695 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferMemoryBarrier212696     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12697     {
12698       pNext = pNext_;
12699       return *this;
12700     }
12701 
setSrcStageMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier212702     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_ ) VULKAN_HPP_NOEXCEPT
12703     {
12704       srcStageMask = srcStageMask_;
12705       return *this;
12706     }
12707 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier212708     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
12709     {
12710       srcAccessMask = srcAccessMask_;
12711       return *this;
12712     }
12713 
setDstStageMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier212714     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_ ) VULKAN_HPP_NOEXCEPT
12715     {
12716       dstStageMask = dstStageMask_;
12717       return *this;
12718     }
12719 
setDstAccessMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier212720     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
12721     {
12722       dstAccessMask = dstAccessMask_;
12723       return *this;
12724     }
12725 
setSrcQueueFamilyIndexVULKAN_HPP_NAMESPACE::BufferMemoryBarrier212726     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
12727     {
12728       srcQueueFamilyIndex = srcQueueFamilyIndex_;
12729       return *this;
12730     }
12731 
setDstQueueFamilyIndexVULKAN_HPP_NAMESPACE::BufferMemoryBarrier212732     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
12733     {
12734       dstQueueFamilyIndex = dstQueueFamilyIndex_;
12735       return *this;
12736     }
12737 
setBufferVULKAN_HPP_NAMESPACE::BufferMemoryBarrier212738     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
12739     {
12740       buffer = buffer_;
12741       return *this;
12742     }
12743 
setOffsetVULKAN_HPP_NAMESPACE::BufferMemoryBarrier212744     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
12745     {
12746       offset = offset_;
12747       return *this;
12748     }
12749 
setSizeVULKAN_HPP_NAMESPACE::BufferMemoryBarrier212750     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
12751     {
12752       size = size_;
12753       return *this;
12754     }
12755 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12756 
operator VkBufferMemoryBarrier2 const&VULKAN_HPP_NAMESPACE::BufferMemoryBarrier212757     operator VkBufferMemoryBarrier2 const &() const VULKAN_HPP_NOEXCEPT
12758     {
12759       return *reinterpret_cast<const VkBufferMemoryBarrier2 *>( this );
12760     }
12761 
operator VkBufferMemoryBarrier2&VULKAN_HPP_NAMESPACE::BufferMemoryBarrier212762     operator VkBufferMemoryBarrier2 &() VULKAN_HPP_NOEXCEPT
12763     {
12764       return *reinterpret_cast<VkBufferMemoryBarrier2 *>( this );
12765     }
12766 
12767 #if defined( VULKAN_HPP_USE_REFLECT )
12768 #  if 14 <= VULKAN_HPP_CPP_VERSION
12769     auto
12770 #  else
12771     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
12772                const void * const &,
12773                VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &,
12774                VULKAN_HPP_NAMESPACE::AccessFlags2 const &,
12775                VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &,
12776                VULKAN_HPP_NAMESPACE::AccessFlags2 const &,
12777                uint32_t const &,
12778                uint32_t const &,
12779                VULKAN_HPP_NAMESPACE::Buffer const &,
12780                VULKAN_HPP_NAMESPACE::DeviceSize const &,
12781                VULKAN_HPP_NAMESPACE::DeviceSize const &>
12782 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferMemoryBarrier212783       reflect() const VULKAN_HPP_NOEXCEPT
12784     {
12785       return std::tie( sType, pNext, srcStageMask, srcAccessMask, dstStageMask, dstAccessMask, srcQueueFamilyIndex, dstQueueFamilyIndex, buffer, offset, size );
12786     }
12787 #endif
12788 
12789 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12790     auto operator<=>( BufferMemoryBarrier2 const & ) const = default;
12791 #else
operator ==VULKAN_HPP_NAMESPACE::BufferMemoryBarrier212792     bool operator==( BufferMemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT
12793     {
12794 #  if defined( VULKAN_HPP_USE_REFLECT )
12795       return this->reflect() == rhs.reflect();
12796 #  else
12797       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcStageMask == rhs.srcStageMask ) && ( srcAccessMask == rhs.srcAccessMask ) &&
12798              ( dstStageMask == rhs.dstStageMask ) && ( dstAccessMask == rhs.dstAccessMask ) && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex ) &&
12799              ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex ) && ( buffer == rhs.buffer ) && ( offset == rhs.offset ) && ( size == rhs.size );
12800 #  endif
12801     }
12802 
operator !=VULKAN_HPP_NAMESPACE::BufferMemoryBarrier212803     bool operator!=( BufferMemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT
12804     {
12805       return !operator==( rhs );
12806     }
12807 #endif
12808 
12809   public:
12810     VULKAN_HPP_NAMESPACE::StructureType       sType               = StructureType::eBufferMemoryBarrier2;
12811     const void *                              pNext               = {};
12812     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask        = {};
12813     VULKAN_HPP_NAMESPACE::AccessFlags2        srcAccessMask       = {};
12814     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask        = {};
12815     VULKAN_HPP_NAMESPACE::AccessFlags2        dstAccessMask       = {};
12816     uint32_t                                  srcQueueFamilyIndex = {};
12817     uint32_t                                  dstQueueFamilyIndex = {};
12818     VULKAN_HPP_NAMESPACE::Buffer              buffer              = {};
12819     VULKAN_HPP_NAMESPACE::DeviceSize          offset              = {};
12820     VULKAN_HPP_NAMESPACE::DeviceSize          size                = {};
12821   };
12822 
12823   template <>
12824   struct CppType<StructureType, StructureType::eBufferMemoryBarrier2>
12825   {
12826     using Type = BufferMemoryBarrier2;
12827   };
12828 
12829   using BufferMemoryBarrier2KHR = BufferMemoryBarrier2;
12830 
12831   struct BufferMemoryRequirementsInfo2
12832   {
12833     using NativeType = VkBufferMemoryRequirementsInfo2;
12834 
12835     static const bool                                  allowDuplicate = false;
12836     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferMemoryRequirementsInfo2;
12837 
12838 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo212839     VULKAN_HPP_CONSTEXPR BufferMemoryRequirementsInfo2( VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
12840       : pNext{ pNext_ }
12841       , buffer{ buffer_ }
12842     {
12843     }
12844 
12845     VULKAN_HPP_CONSTEXPR BufferMemoryRequirementsInfo2( BufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12846 
BufferMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo212847     BufferMemoryRequirementsInfo2( VkBufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
12848       : BufferMemoryRequirementsInfo2( *reinterpret_cast<BufferMemoryRequirementsInfo2 const *>( &rhs ) )
12849     {
12850     }
12851 
12852     BufferMemoryRequirementsInfo2 & operator=( BufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12853 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12854 
operator =VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo212855     BufferMemoryRequirementsInfo2 & operator=( VkBufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
12856     {
12857       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 const *>( &rhs );
12858       return *this;
12859     }
12860 
12861 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo212862     VULKAN_HPP_CONSTEXPR_14 BufferMemoryRequirementsInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12863     {
12864       pNext = pNext_;
12865       return *this;
12866     }
12867 
setBufferVULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo212868     VULKAN_HPP_CONSTEXPR_14 BufferMemoryRequirementsInfo2 & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
12869     {
12870       buffer = buffer_;
12871       return *this;
12872     }
12873 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12874 
operator VkBufferMemoryRequirementsInfo2 const&VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo212875     operator VkBufferMemoryRequirementsInfo2 const &() const VULKAN_HPP_NOEXCEPT
12876     {
12877       return *reinterpret_cast<const VkBufferMemoryRequirementsInfo2 *>( this );
12878     }
12879 
operator VkBufferMemoryRequirementsInfo2&VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo212880     operator VkBufferMemoryRequirementsInfo2 &() VULKAN_HPP_NOEXCEPT
12881     {
12882       return *reinterpret_cast<VkBufferMemoryRequirementsInfo2 *>( this );
12883     }
12884 
12885 #if defined( VULKAN_HPP_USE_REFLECT )
12886 #  if 14 <= VULKAN_HPP_CPP_VERSION
12887     auto
12888 #  else
12889     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Buffer const &>
12890 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo212891       reflect() const VULKAN_HPP_NOEXCEPT
12892     {
12893       return std::tie( sType, pNext, buffer );
12894     }
12895 #endif
12896 
12897 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12898     auto operator<=>( BufferMemoryRequirementsInfo2 const & ) const = default;
12899 #else
operator ==VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo212900     bool operator==( BufferMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
12901     {
12902 #  if defined( VULKAN_HPP_USE_REFLECT )
12903       return this->reflect() == rhs.reflect();
12904 #  else
12905       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer );
12906 #  endif
12907     }
12908 
operator !=VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo212909     bool operator!=( BufferMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
12910     {
12911       return !operator==( rhs );
12912     }
12913 #endif
12914 
12915   public:
12916     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eBufferMemoryRequirementsInfo2;
12917     const void *                        pNext  = {};
12918     VULKAN_HPP_NAMESPACE::Buffer        buffer = {};
12919   };
12920 
12921   template <>
12922   struct CppType<StructureType, StructureType::eBufferMemoryRequirementsInfo2>
12923   {
12924     using Type = BufferMemoryRequirementsInfo2;
12925   };
12926 
12927   using BufferMemoryRequirementsInfo2KHR = BufferMemoryRequirementsInfo2;
12928 
12929   struct BufferOpaqueCaptureAddressCreateInfo
12930   {
12931     using NativeType = VkBufferOpaqueCaptureAddressCreateInfo;
12932 
12933     static const bool                                  allowDuplicate = false;
12934     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferOpaqueCaptureAddressCreateInfo;
12935 
12936 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferOpaqueCaptureAddressCreateInfoVULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo12937     VULKAN_HPP_CONSTEXPR BufferOpaqueCaptureAddressCreateInfo( uint64_t opaqueCaptureAddress_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
12938       : pNext{ pNext_ }
12939       , opaqueCaptureAddress{ opaqueCaptureAddress_ }
12940     {
12941     }
12942 
12943     VULKAN_HPP_CONSTEXPR BufferOpaqueCaptureAddressCreateInfo( BufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12944 
BufferOpaqueCaptureAddressCreateInfoVULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo12945     BufferOpaqueCaptureAddressCreateInfo( VkBufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
12946       : BufferOpaqueCaptureAddressCreateInfo( *reinterpret_cast<BufferOpaqueCaptureAddressCreateInfo const *>( &rhs ) )
12947     {
12948     }
12949 
12950     BufferOpaqueCaptureAddressCreateInfo & operator=( BufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12951 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12952 
operator =VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo12953     BufferOpaqueCaptureAddressCreateInfo & operator=( VkBufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
12954     {
12955       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo const *>( &rhs );
12956       return *this;
12957     }
12958 
12959 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo12960     VULKAN_HPP_CONSTEXPR_14 BufferOpaqueCaptureAddressCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12961     {
12962       pNext = pNext_;
12963       return *this;
12964     }
12965 
setOpaqueCaptureAddressVULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo12966     VULKAN_HPP_CONSTEXPR_14 BufferOpaqueCaptureAddressCreateInfo & setOpaqueCaptureAddress( uint64_t opaqueCaptureAddress_ ) VULKAN_HPP_NOEXCEPT
12967     {
12968       opaqueCaptureAddress = opaqueCaptureAddress_;
12969       return *this;
12970     }
12971 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12972 
operator VkBufferOpaqueCaptureAddressCreateInfo const&VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo12973     operator VkBufferOpaqueCaptureAddressCreateInfo const &() const VULKAN_HPP_NOEXCEPT
12974     {
12975       return *reinterpret_cast<const VkBufferOpaqueCaptureAddressCreateInfo *>( this );
12976     }
12977 
operator VkBufferOpaqueCaptureAddressCreateInfo&VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo12978     operator VkBufferOpaqueCaptureAddressCreateInfo &() VULKAN_HPP_NOEXCEPT
12979     {
12980       return *reinterpret_cast<VkBufferOpaqueCaptureAddressCreateInfo *>( this );
12981     }
12982 
12983 #if defined( VULKAN_HPP_USE_REFLECT )
12984 #  if 14 <= VULKAN_HPP_CPP_VERSION
12985     auto
12986 #  else
12987     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint64_t const &>
12988 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo12989       reflect() const VULKAN_HPP_NOEXCEPT
12990     {
12991       return std::tie( sType, pNext, opaqueCaptureAddress );
12992     }
12993 #endif
12994 
12995 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
12996     auto operator<=>( BufferOpaqueCaptureAddressCreateInfo const & ) const = default;
12997 #else
operator ==VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo12998     bool operator==( BufferOpaqueCaptureAddressCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
12999     {
13000 #  if defined( VULKAN_HPP_USE_REFLECT )
13001       return this->reflect() == rhs.reflect();
13002 #  else
13003       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( opaqueCaptureAddress == rhs.opaqueCaptureAddress );
13004 #  endif
13005     }
13006 
operator !=VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo13007     bool operator!=( BufferOpaqueCaptureAddressCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
13008     {
13009       return !operator==( rhs );
13010     }
13011 #endif
13012 
13013   public:
13014     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::eBufferOpaqueCaptureAddressCreateInfo;
13015     const void *                        pNext                = {};
13016     uint64_t                            opaqueCaptureAddress = {};
13017   };
13018 
13019   template <>
13020   struct CppType<StructureType, StructureType::eBufferOpaqueCaptureAddressCreateInfo>
13021   {
13022     using Type = BufferOpaqueCaptureAddressCreateInfo;
13023   };
13024 
13025   using BufferOpaqueCaptureAddressCreateInfoKHR = BufferOpaqueCaptureAddressCreateInfo;
13026 
13027   struct BufferUsageFlags2CreateInfoKHR
13028   {
13029     using NativeType = VkBufferUsageFlags2CreateInfoKHR;
13030 
13031     static const bool                                  allowDuplicate = false;
13032     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferUsageFlags2CreateInfoKHR;
13033 
13034 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferUsageFlags2CreateInfoKHRVULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfoKHR13035     VULKAN_HPP_CONSTEXPR BufferUsageFlags2CreateInfoKHR( VULKAN_HPP_NAMESPACE::BufferUsageFlags2KHR usage_ = {},
13036                                                          const void *                               pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
13037       : pNext{ pNext_ }
13038       , usage{ usage_ }
13039     {
13040     }
13041 
13042     VULKAN_HPP_CONSTEXPR BufferUsageFlags2CreateInfoKHR( BufferUsageFlags2CreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13043 
BufferUsageFlags2CreateInfoKHRVULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfoKHR13044     BufferUsageFlags2CreateInfoKHR( VkBufferUsageFlags2CreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
13045       : BufferUsageFlags2CreateInfoKHR( *reinterpret_cast<BufferUsageFlags2CreateInfoKHR const *>( &rhs ) )
13046     {
13047     }
13048 
13049     BufferUsageFlags2CreateInfoKHR & operator=( BufferUsageFlags2CreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13050 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13051 
operator =VULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfoKHR13052     BufferUsageFlags2CreateInfoKHR & operator=( VkBufferUsageFlags2CreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
13053     {
13054       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfoKHR const *>( &rhs );
13055       return *this;
13056     }
13057 
13058 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfoKHR13059     VULKAN_HPP_CONSTEXPR_14 BufferUsageFlags2CreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
13060     {
13061       pNext = pNext_;
13062       return *this;
13063     }
13064 
setUsageVULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfoKHR13065     VULKAN_HPP_CONSTEXPR_14 BufferUsageFlags2CreateInfoKHR & setUsage( VULKAN_HPP_NAMESPACE::BufferUsageFlags2KHR usage_ ) VULKAN_HPP_NOEXCEPT
13066     {
13067       usage = usage_;
13068       return *this;
13069     }
13070 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13071 
operator VkBufferUsageFlags2CreateInfoKHR const&VULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfoKHR13072     operator VkBufferUsageFlags2CreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
13073     {
13074       return *reinterpret_cast<const VkBufferUsageFlags2CreateInfoKHR *>( this );
13075     }
13076 
operator VkBufferUsageFlags2CreateInfoKHR&VULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfoKHR13077     operator VkBufferUsageFlags2CreateInfoKHR &() VULKAN_HPP_NOEXCEPT
13078     {
13079       return *reinterpret_cast<VkBufferUsageFlags2CreateInfoKHR *>( this );
13080     }
13081 
13082 #if defined( VULKAN_HPP_USE_REFLECT )
13083 #  if 14 <= VULKAN_HPP_CPP_VERSION
13084     auto
13085 #  else
13086     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::BufferUsageFlags2KHR const &>
13087 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfoKHR13088       reflect() const VULKAN_HPP_NOEXCEPT
13089     {
13090       return std::tie( sType, pNext, usage );
13091     }
13092 #endif
13093 
13094 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13095     auto operator<=>( BufferUsageFlags2CreateInfoKHR const & ) const = default;
13096 #else
operator ==VULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfoKHR13097     bool operator==( BufferUsageFlags2CreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
13098     {
13099 #  if defined( VULKAN_HPP_USE_REFLECT )
13100       return this->reflect() == rhs.reflect();
13101 #  else
13102       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( usage == rhs.usage );
13103 #  endif
13104     }
13105 
operator !=VULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfoKHR13106     bool operator!=( BufferUsageFlags2CreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
13107     {
13108       return !operator==( rhs );
13109     }
13110 #endif
13111 
13112   public:
13113     VULKAN_HPP_NAMESPACE::StructureType        sType = StructureType::eBufferUsageFlags2CreateInfoKHR;
13114     const void *                               pNext = {};
13115     VULKAN_HPP_NAMESPACE::BufferUsageFlags2KHR usage = {};
13116   };
13117 
13118   template <>
13119   struct CppType<StructureType, StructureType::eBufferUsageFlags2CreateInfoKHR>
13120   {
13121     using Type = BufferUsageFlags2CreateInfoKHR;
13122   };
13123 
13124   struct BufferViewCreateInfo
13125   {
13126     using NativeType = VkBufferViewCreateInfo;
13127 
13128     static const bool                                  allowDuplicate = false;
13129     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eBufferViewCreateInfo;
13130 
13131 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferViewCreateInfoVULKAN_HPP_NAMESPACE::BufferViewCreateInfo13132     VULKAN_HPP_CONSTEXPR BufferViewCreateInfo( VULKAN_HPP_NAMESPACE::BufferViewCreateFlags flags_  = {},
13133                                                VULKAN_HPP_NAMESPACE::Buffer                buffer_ = {},
13134                                                VULKAN_HPP_NAMESPACE::Format                format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
13135                                                VULKAN_HPP_NAMESPACE::DeviceSize            offset_ = {},
13136                                                VULKAN_HPP_NAMESPACE::DeviceSize            range_  = {},
13137                                                const void *                                pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
13138       : pNext{ pNext_ }
13139       , flags{ flags_ }
13140       , buffer{ buffer_ }
13141       , format{ format_ }
13142       , offset{ offset_ }
13143       , range{ range_ }
13144     {
13145     }
13146 
13147     VULKAN_HPP_CONSTEXPR BufferViewCreateInfo( BufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13148 
BufferViewCreateInfoVULKAN_HPP_NAMESPACE::BufferViewCreateInfo13149     BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
13150       : BufferViewCreateInfo( *reinterpret_cast<BufferViewCreateInfo const *>( &rhs ) )
13151     {
13152     }
13153 
13154     BufferViewCreateInfo & operator=( BufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13155 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13156 
operator =VULKAN_HPP_NAMESPACE::BufferViewCreateInfo13157     BufferViewCreateInfo & operator=( VkBufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
13158     {
13159       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferViewCreateInfo const *>( &rhs );
13160       return *this;
13161     }
13162 
13163 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferViewCreateInfo13164     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
13165     {
13166       pNext = pNext_;
13167       return *this;
13168     }
13169 
setFlagsVULKAN_HPP_NAMESPACE::BufferViewCreateInfo13170     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::BufferViewCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
13171     {
13172       flags = flags_;
13173       return *this;
13174     }
13175 
setBufferVULKAN_HPP_NAMESPACE::BufferViewCreateInfo13176     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
13177     {
13178       buffer = buffer_;
13179       return *this;
13180     }
13181 
setFormatVULKAN_HPP_NAMESPACE::BufferViewCreateInfo13182     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
13183     {
13184       format = format_;
13185       return *this;
13186     }
13187 
setOffsetVULKAN_HPP_NAMESPACE::BufferViewCreateInfo13188     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
13189     {
13190       offset = offset_;
13191       return *this;
13192     }
13193 
setRangeVULKAN_HPP_NAMESPACE::BufferViewCreateInfo13194     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setRange( VULKAN_HPP_NAMESPACE::DeviceSize range_ ) VULKAN_HPP_NOEXCEPT
13195     {
13196       range = range_;
13197       return *this;
13198     }
13199 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13200 
operator VkBufferViewCreateInfo const&VULKAN_HPP_NAMESPACE::BufferViewCreateInfo13201     operator VkBufferViewCreateInfo const &() const VULKAN_HPP_NOEXCEPT
13202     {
13203       return *reinterpret_cast<const VkBufferViewCreateInfo *>( this );
13204     }
13205 
operator VkBufferViewCreateInfo&VULKAN_HPP_NAMESPACE::BufferViewCreateInfo13206     operator VkBufferViewCreateInfo &() VULKAN_HPP_NOEXCEPT
13207     {
13208       return *reinterpret_cast<VkBufferViewCreateInfo *>( this );
13209     }
13210 
13211 #if defined( VULKAN_HPP_USE_REFLECT )
13212 #  if 14 <= VULKAN_HPP_CPP_VERSION
13213     auto
13214 #  else
13215     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
13216                const void * const &,
13217                VULKAN_HPP_NAMESPACE::BufferViewCreateFlags const &,
13218                VULKAN_HPP_NAMESPACE::Buffer const &,
13219                VULKAN_HPP_NAMESPACE::Format const &,
13220                VULKAN_HPP_NAMESPACE::DeviceSize const &,
13221                VULKAN_HPP_NAMESPACE::DeviceSize const &>
13222 #  endif
reflectVULKAN_HPP_NAMESPACE::BufferViewCreateInfo13223       reflect() const VULKAN_HPP_NOEXCEPT
13224     {
13225       return std::tie( sType, pNext, flags, buffer, format, offset, range );
13226     }
13227 #endif
13228 
13229 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13230     auto operator<=>( BufferViewCreateInfo const & ) const = default;
13231 #else
operator ==VULKAN_HPP_NAMESPACE::BufferViewCreateInfo13232     bool operator==( BufferViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
13233     {
13234 #  if defined( VULKAN_HPP_USE_REFLECT )
13235       return this->reflect() == rhs.reflect();
13236 #  else
13237       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( buffer == rhs.buffer ) && ( format == rhs.format ) &&
13238              ( offset == rhs.offset ) && ( range == rhs.range );
13239 #  endif
13240     }
13241 
operator !=VULKAN_HPP_NAMESPACE::BufferViewCreateInfo13242     bool operator!=( BufferViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
13243     {
13244       return !operator==( rhs );
13245     }
13246 #endif
13247 
13248   public:
13249     VULKAN_HPP_NAMESPACE::StructureType         sType  = StructureType::eBufferViewCreateInfo;
13250     const void *                                pNext  = {};
13251     VULKAN_HPP_NAMESPACE::BufferViewCreateFlags flags  = {};
13252     VULKAN_HPP_NAMESPACE::Buffer                buffer = {};
13253     VULKAN_HPP_NAMESPACE::Format                format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
13254     VULKAN_HPP_NAMESPACE::DeviceSize            offset = {};
13255     VULKAN_HPP_NAMESPACE::DeviceSize            range  = {};
13256   };
13257 
13258   template <>
13259   struct CppType<StructureType, StructureType::eBufferViewCreateInfo>
13260   {
13261     using Type = BufferViewCreateInfo;
13262   };
13263 
13264   struct CalibratedTimestampInfoKHR
13265   {
13266     using NativeType = VkCalibratedTimestampInfoKHR;
13267 
13268     static const bool                                  allowDuplicate = false;
13269     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCalibratedTimestampInfoKHR;
13270 
13271 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CalibratedTimestampInfoKHRVULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR13272     VULKAN_HPP_CONSTEXPR CalibratedTimestampInfoKHR( VULKAN_HPP_NAMESPACE::TimeDomainKHR timeDomain_ = VULKAN_HPP_NAMESPACE::TimeDomainKHR::eDevice,
13273                                                      const void *                        pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
13274       : pNext{ pNext_ }
13275       , timeDomain{ timeDomain_ }
13276     {
13277     }
13278 
13279     VULKAN_HPP_CONSTEXPR CalibratedTimestampInfoKHR( CalibratedTimestampInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13280 
CalibratedTimestampInfoKHRVULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR13281     CalibratedTimestampInfoKHR( VkCalibratedTimestampInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
13282       : CalibratedTimestampInfoKHR( *reinterpret_cast<CalibratedTimestampInfoKHR const *>( &rhs ) )
13283     {
13284     }
13285 
13286     CalibratedTimestampInfoKHR & operator=( CalibratedTimestampInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13287 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13288 
operator =VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR13289     CalibratedTimestampInfoKHR & operator=( VkCalibratedTimestampInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
13290     {
13291       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR const *>( &rhs );
13292       return *this;
13293     }
13294 
13295 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR13296     VULKAN_HPP_CONSTEXPR_14 CalibratedTimestampInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
13297     {
13298       pNext = pNext_;
13299       return *this;
13300     }
13301 
setTimeDomainVULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR13302     VULKAN_HPP_CONSTEXPR_14 CalibratedTimestampInfoKHR & setTimeDomain( VULKAN_HPP_NAMESPACE::TimeDomainKHR timeDomain_ ) VULKAN_HPP_NOEXCEPT
13303     {
13304       timeDomain = timeDomain_;
13305       return *this;
13306     }
13307 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13308 
operator VkCalibratedTimestampInfoKHR const&VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR13309     operator VkCalibratedTimestampInfoKHR const &() const VULKAN_HPP_NOEXCEPT
13310     {
13311       return *reinterpret_cast<const VkCalibratedTimestampInfoKHR *>( this );
13312     }
13313 
operator VkCalibratedTimestampInfoKHR&VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR13314     operator VkCalibratedTimestampInfoKHR &() VULKAN_HPP_NOEXCEPT
13315     {
13316       return *reinterpret_cast<VkCalibratedTimestampInfoKHR *>( this );
13317     }
13318 
13319 #if defined( VULKAN_HPP_USE_REFLECT )
13320 #  if 14 <= VULKAN_HPP_CPP_VERSION
13321     auto
13322 #  else
13323     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::TimeDomainKHR const &>
13324 #  endif
reflectVULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR13325       reflect() const VULKAN_HPP_NOEXCEPT
13326     {
13327       return std::tie( sType, pNext, timeDomain );
13328     }
13329 #endif
13330 
13331 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13332     auto operator<=>( CalibratedTimestampInfoKHR const & ) const = default;
13333 #else
operator ==VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR13334     bool operator==( CalibratedTimestampInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
13335     {
13336 #  if defined( VULKAN_HPP_USE_REFLECT )
13337       return this->reflect() == rhs.reflect();
13338 #  else
13339       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( timeDomain == rhs.timeDomain );
13340 #  endif
13341     }
13342 
operator !=VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR13343     bool operator!=( CalibratedTimestampInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
13344     {
13345       return !operator==( rhs );
13346     }
13347 #endif
13348 
13349   public:
13350     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eCalibratedTimestampInfoKHR;
13351     const void *                        pNext      = {};
13352     VULKAN_HPP_NAMESPACE::TimeDomainKHR timeDomain = VULKAN_HPP_NAMESPACE::TimeDomainKHR::eDevice;
13353   };
13354 
13355   template <>
13356   struct CppType<StructureType, StructureType::eCalibratedTimestampInfoKHR>
13357   {
13358     using Type = CalibratedTimestampInfoKHR;
13359   };
13360 
13361   using CalibratedTimestampInfoEXT = CalibratedTimestampInfoKHR;
13362 
13363   struct CheckpointData2NV
13364   {
13365     using NativeType = VkCheckpointData2NV;
13366 
13367     static const bool                                  allowDuplicate = false;
13368     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCheckpointData2NV;
13369 
13370 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
13371     VULKAN_HPP_CONSTEXPR
CheckpointData2NVVULKAN_HPP_NAMESPACE::CheckpointData2NV13372       CheckpointData2NV( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage_ = {}, void * pCheckpointMarker_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
13373       : pNext{ pNext_ }
13374       , stage{ stage_ }
13375       , pCheckpointMarker{ pCheckpointMarker_ }
13376     {
13377     }
13378 
13379     VULKAN_HPP_CONSTEXPR CheckpointData2NV( CheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13380 
CheckpointData2NVVULKAN_HPP_NAMESPACE::CheckpointData2NV13381     CheckpointData2NV( VkCheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT : CheckpointData2NV( *reinterpret_cast<CheckpointData2NV const *>( &rhs ) ) {}
13382 
13383     CheckpointData2NV & operator=( CheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13384 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13385 
operator =VULKAN_HPP_NAMESPACE::CheckpointData2NV13386     CheckpointData2NV & operator=( VkCheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT
13387     {
13388       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CheckpointData2NV const *>( &rhs );
13389       return *this;
13390     }
13391 
operator VkCheckpointData2NV const&VULKAN_HPP_NAMESPACE::CheckpointData2NV13392     operator VkCheckpointData2NV const &() const VULKAN_HPP_NOEXCEPT
13393     {
13394       return *reinterpret_cast<const VkCheckpointData2NV *>( this );
13395     }
13396 
operator VkCheckpointData2NV&VULKAN_HPP_NAMESPACE::CheckpointData2NV13397     operator VkCheckpointData2NV &() VULKAN_HPP_NOEXCEPT
13398     {
13399       return *reinterpret_cast<VkCheckpointData2NV *>( this );
13400     }
13401 
13402 #if defined( VULKAN_HPP_USE_REFLECT )
13403 #  if 14 <= VULKAN_HPP_CPP_VERSION
13404     auto
13405 #  else
13406     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &, void * const &>
13407 #  endif
reflectVULKAN_HPP_NAMESPACE::CheckpointData2NV13408       reflect() const VULKAN_HPP_NOEXCEPT
13409     {
13410       return std::tie( sType, pNext, stage, pCheckpointMarker );
13411     }
13412 #endif
13413 
13414 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13415     auto operator<=>( CheckpointData2NV const & ) const = default;
13416 #else
operator ==VULKAN_HPP_NAMESPACE::CheckpointData2NV13417     bool operator==( CheckpointData2NV const & rhs ) const VULKAN_HPP_NOEXCEPT
13418     {
13419 #  if defined( VULKAN_HPP_USE_REFLECT )
13420       return this->reflect() == rhs.reflect();
13421 #  else
13422       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stage == rhs.stage ) && ( pCheckpointMarker == rhs.pCheckpointMarker );
13423 #  endif
13424     }
13425 
operator !=VULKAN_HPP_NAMESPACE::CheckpointData2NV13426     bool operator!=( CheckpointData2NV const & rhs ) const VULKAN_HPP_NOEXCEPT
13427     {
13428       return !operator==( rhs );
13429     }
13430 #endif
13431 
13432   public:
13433     VULKAN_HPP_NAMESPACE::StructureType       sType             = StructureType::eCheckpointData2NV;
13434     void *                                    pNext             = {};
13435     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage             = {};
13436     void *                                    pCheckpointMarker = {};
13437   };
13438 
13439   template <>
13440   struct CppType<StructureType, StructureType::eCheckpointData2NV>
13441   {
13442     using Type = CheckpointData2NV;
13443   };
13444 
13445   struct CheckpointDataNV
13446   {
13447     using NativeType = VkCheckpointDataNV;
13448 
13449     static const bool                                  allowDuplicate = false;
13450     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCheckpointDataNV;
13451 
13452 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CheckpointDataNVVULKAN_HPP_NAMESPACE::CheckpointDataNV13453     VULKAN_HPP_CONSTEXPR CheckpointDataNV( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits stage_ = VULKAN_HPP_NAMESPACE::PipelineStageFlagBits::eTopOfPipe,
13454                                            void *                                      pCheckpointMarker_ = {},
13455                                            void *                                      pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
13456       : pNext{ pNext_ }
13457       , stage{ stage_ }
13458       , pCheckpointMarker{ pCheckpointMarker_ }
13459     {
13460     }
13461 
13462     VULKAN_HPP_CONSTEXPR CheckpointDataNV( CheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13463 
CheckpointDataNVVULKAN_HPP_NAMESPACE::CheckpointDataNV13464     CheckpointDataNV( VkCheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT : CheckpointDataNV( *reinterpret_cast<CheckpointDataNV const *>( &rhs ) ) {}
13465 
13466     CheckpointDataNV & operator=( CheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13467 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13468 
operator =VULKAN_HPP_NAMESPACE::CheckpointDataNV13469     CheckpointDataNV & operator=( VkCheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
13470     {
13471       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CheckpointDataNV const *>( &rhs );
13472       return *this;
13473     }
13474 
operator VkCheckpointDataNV const&VULKAN_HPP_NAMESPACE::CheckpointDataNV13475     operator VkCheckpointDataNV const &() const VULKAN_HPP_NOEXCEPT
13476     {
13477       return *reinterpret_cast<const VkCheckpointDataNV *>( this );
13478     }
13479 
operator VkCheckpointDataNV&VULKAN_HPP_NAMESPACE::CheckpointDataNV13480     operator VkCheckpointDataNV &() VULKAN_HPP_NOEXCEPT
13481     {
13482       return *reinterpret_cast<VkCheckpointDataNV *>( this );
13483     }
13484 
13485 #if defined( VULKAN_HPP_USE_REFLECT )
13486 #  if 14 <= VULKAN_HPP_CPP_VERSION
13487     auto
13488 #  else
13489     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PipelineStageFlagBits const &, void * const &>
13490 #  endif
reflectVULKAN_HPP_NAMESPACE::CheckpointDataNV13491       reflect() const VULKAN_HPP_NOEXCEPT
13492     {
13493       return std::tie( sType, pNext, stage, pCheckpointMarker );
13494     }
13495 #endif
13496 
13497 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13498     auto operator<=>( CheckpointDataNV const & ) const = default;
13499 #else
operator ==VULKAN_HPP_NAMESPACE::CheckpointDataNV13500     bool operator==( CheckpointDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT
13501     {
13502 #  if defined( VULKAN_HPP_USE_REFLECT )
13503       return this->reflect() == rhs.reflect();
13504 #  else
13505       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stage == rhs.stage ) && ( pCheckpointMarker == rhs.pCheckpointMarker );
13506 #  endif
13507     }
13508 
operator !=VULKAN_HPP_NAMESPACE::CheckpointDataNV13509     bool operator!=( CheckpointDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT
13510     {
13511       return !operator==( rhs );
13512     }
13513 #endif
13514 
13515   public:
13516     VULKAN_HPP_NAMESPACE::StructureType         sType             = StructureType::eCheckpointDataNV;
13517     void *                                      pNext             = {};
13518     VULKAN_HPP_NAMESPACE::PipelineStageFlagBits stage             = VULKAN_HPP_NAMESPACE::PipelineStageFlagBits::eTopOfPipe;
13519     void *                                      pCheckpointMarker = {};
13520   };
13521 
13522   template <>
13523   struct CppType<StructureType, StructureType::eCheckpointDataNV>
13524   {
13525     using Type = CheckpointDataNV;
13526   };
13527 
13528   union ClearColorValue
13529   {
13530     using NativeType = VkClearColorValue;
13531 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
13532 
ClearColorValue(const std::array<float,4> & float32_={} )13533     VULKAN_HPP_CONSTEXPR_14 ClearColorValue( const std::array<float, 4> & float32_ = {} ) : float32( float32_ ) {}
13534 
ClearColorValue(float float32_0,float float32_1,float float32_2,float float32_3)13535     VULKAN_HPP_CONSTEXPR ClearColorValue( float float32_0, float float32_1, float float32_2, float float32_3 )
13536       : float32{ { { float32_0, float32_1, float32_2, float32_3 } } }
13537     {
13538     }
13539 
ClearColorValue(const std::array<int32_t,4> & int32_)13540     VULKAN_HPP_CONSTEXPR_14 ClearColorValue( const std::array<int32_t, 4> & int32_ ) : int32( int32_ ) {}
13541 
ClearColorValue(int32_t int32_0,int32_t int32_1,int32_t int32_2,int32_t int32_3)13542     VULKAN_HPP_CONSTEXPR ClearColorValue( int32_t int32_0, int32_t int32_1, int32_t int32_2, int32_t int32_3 )
13543       : int32{ { { int32_0, int32_1, int32_2, int32_3 } } }
13544     {
13545     }
13546 
ClearColorValue(const std::array<uint32_t,4> & uint32_)13547     VULKAN_HPP_CONSTEXPR_14 ClearColorValue( const std::array<uint32_t, 4> & uint32_ ) : uint32( uint32_ ) {}
13548 
ClearColorValue(uint32_t uint32_0,uint32_t uint32_1,uint32_t uint32_2,uint32_t uint32_3)13549     VULKAN_HPP_CONSTEXPR ClearColorValue( uint32_t uint32_0, uint32_t uint32_1, uint32_t uint32_2, uint32_t uint32_3 )
13550       : uint32{ { { uint32_0, uint32_1, uint32_2, uint32_3 } } }
13551     {
13552     }
13553 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
13554 
13555 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setFloat32(std::array<float,4> float32_)13556     VULKAN_HPP_CONSTEXPR_14 ClearColorValue & setFloat32( std::array<float, 4> float32_ ) VULKAN_HPP_NOEXCEPT
13557     {
13558       float32 = float32_;
13559       return *this;
13560     }
13561 
setInt32(std::array<int32_t,4> int32_)13562     VULKAN_HPP_CONSTEXPR_14 ClearColorValue & setInt32( std::array<int32_t, 4> int32_ ) VULKAN_HPP_NOEXCEPT
13563     {
13564       int32 = int32_;
13565       return *this;
13566     }
13567 
setUint32(std::array<uint32_t,4> uint32_)13568     VULKAN_HPP_CONSTEXPR_14 ClearColorValue & setUint32( std::array<uint32_t, 4> uint32_ ) VULKAN_HPP_NOEXCEPT
13569     {
13570       uint32 = uint32_;
13571       return *this;
13572     }
13573 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
13574 
operator VkClearColorValue const&() const13575     operator VkClearColorValue const &() const
13576     {
13577       return *reinterpret_cast<const VkClearColorValue *>( this );
13578     }
13579 
operator VkClearColorValue&()13580     operator VkClearColorValue &()
13581     {
13582       return *reinterpret_cast<VkClearColorValue *>( this );
13583     }
13584 
13585     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4>    float32;
13586     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<int32_t, 4>  int32;
13587     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 4> uint32;
13588   };
13589 
13590   struct ClearDepthStencilValue
13591   {
13592     using NativeType = VkClearDepthStencilValue;
13593 
13594 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ClearDepthStencilValueVULKAN_HPP_NAMESPACE::ClearDepthStencilValue13595     VULKAN_HPP_CONSTEXPR ClearDepthStencilValue( float depth_ = {}, uint32_t stencil_ = {} ) VULKAN_HPP_NOEXCEPT
13596       : depth{ depth_ }
13597       , stencil{ stencil_ }
13598     {
13599     }
13600 
13601     VULKAN_HPP_CONSTEXPR ClearDepthStencilValue( ClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13602 
ClearDepthStencilValueVULKAN_HPP_NAMESPACE::ClearDepthStencilValue13603     ClearDepthStencilValue( VkClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT
13604       : ClearDepthStencilValue( *reinterpret_cast<ClearDepthStencilValue const *>( &rhs ) )
13605     {
13606     }
13607 
13608     ClearDepthStencilValue & operator=( ClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13609 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13610 
operator =VULKAN_HPP_NAMESPACE::ClearDepthStencilValue13611     ClearDepthStencilValue & operator=( VkClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT
13612     {
13613       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ClearDepthStencilValue const *>( &rhs );
13614       return *this;
13615     }
13616 
13617 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setDepthVULKAN_HPP_NAMESPACE::ClearDepthStencilValue13618     VULKAN_HPP_CONSTEXPR_14 ClearDepthStencilValue & setDepth( float depth_ ) VULKAN_HPP_NOEXCEPT
13619     {
13620       depth = depth_;
13621       return *this;
13622     }
13623 
setStencilVULKAN_HPP_NAMESPACE::ClearDepthStencilValue13624     VULKAN_HPP_CONSTEXPR_14 ClearDepthStencilValue & setStencil( uint32_t stencil_ ) VULKAN_HPP_NOEXCEPT
13625     {
13626       stencil = stencil_;
13627       return *this;
13628     }
13629 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13630 
operator VkClearDepthStencilValue const&VULKAN_HPP_NAMESPACE::ClearDepthStencilValue13631     operator VkClearDepthStencilValue const &() const VULKAN_HPP_NOEXCEPT
13632     {
13633       return *reinterpret_cast<const VkClearDepthStencilValue *>( this );
13634     }
13635 
operator VkClearDepthStencilValue&VULKAN_HPP_NAMESPACE::ClearDepthStencilValue13636     operator VkClearDepthStencilValue &() VULKAN_HPP_NOEXCEPT
13637     {
13638       return *reinterpret_cast<VkClearDepthStencilValue *>( this );
13639     }
13640 
13641 #if defined( VULKAN_HPP_USE_REFLECT )
13642 #  if 14 <= VULKAN_HPP_CPP_VERSION
13643     auto
13644 #  else
13645     std::tuple<float const &, uint32_t const &>
13646 #  endif
reflectVULKAN_HPP_NAMESPACE::ClearDepthStencilValue13647       reflect() const VULKAN_HPP_NOEXCEPT
13648     {
13649       return std::tie( depth, stencil );
13650     }
13651 #endif
13652 
13653 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13654     auto operator<=>( ClearDepthStencilValue const & ) const = default;
13655 #else
operator ==VULKAN_HPP_NAMESPACE::ClearDepthStencilValue13656     bool operator==( ClearDepthStencilValue const & rhs ) const VULKAN_HPP_NOEXCEPT
13657     {
13658 #  if defined( VULKAN_HPP_USE_REFLECT )
13659       return this->reflect() == rhs.reflect();
13660 #  else
13661       return ( depth == rhs.depth ) && ( stencil == rhs.stencil );
13662 #  endif
13663     }
13664 
operator !=VULKAN_HPP_NAMESPACE::ClearDepthStencilValue13665     bool operator!=( ClearDepthStencilValue const & rhs ) const VULKAN_HPP_NOEXCEPT
13666     {
13667       return !operator==( rhs );
13668     }
13669 #endif
13670 
13671   public:
13672     float    depth   = {};
13673     uint32_t stencil = {};
13674   };
13675 
13676   union ClearValue
13677   {
13678     using NativeType = VkClearValue;
13679 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
13680 
ClearValue(VULKAN_HPP_NAMESPACE::ClearColorValue color_={} )13681     VULKAN_HPP_CONSTEXPR_14 ClearValue( VULKAN_HPP_NAMESPACE::ClearColorValue color_ = {} ) : color( color_ ) {}
13682 
ClearValue(VULKAN_HPP_NAMESPACE::ClearDepthStencilValue depthStencil_)13683     VULKAN_HPP_CONSTEXPR_14 ClearValue( VULKAN_HPP_NAMESPACE::ClearDepthStencilValue depthStencil_ ) : depthStencil( depthStencil_ ) {}
13684 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
13685 
13686 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setColor(VULKAN_HPP_NAMESPACE::ClearColorValue const & color_)13687     VULKAN_HPP_CONSTEXPR_14 ClearValue & setColor( VULKAN_HPP_NAMESPACE::ClearColorValue const & color_ ) VULKAN_HPP_NOEXCEPT
13688     {
13689       color = color_;
13690       return *this;
13691     }
13692 
setDepthStencil(VULKAN_HPP_NAMESPACE::ClearDepthStencilValue const & depthStencil_)13693     VULKAN_HPP_CONSTEXPR_14 ClearValue & setDepthStencil( VULKAN_HPP_NAMESPACE::ClearDepthStencilValue const & depthStencil_ ) VULKAN_HPP_NOEXCEPT
13694     {
13695       depthStencil = depthStencil_;
13696       return *this;
13697     }
13698 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
13699 
operator VkClearValue const&() const13700     operator VkClearValue const &() const
13701     {
13702       return *reinterpret_cast<const VkClearValue *>( this );
13703     }
13704 
operator VkClearValue&()13705     operator VkClearValue &()
13706     {
13707       return *reinterpret_cast<VkClearValue *>( this );
13708     }
13709 
13710 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
13711     VULKAN_HPP_NAMESPACE::ClearColorValue        color;
13712     VULKAN_HPP_NAMESPACE::ClearDepthStencilValue depthStencil;
13713 #else
13714     VkClearColorValue        color;
13715     VkClearDepthStencilValue depthStencil;
13716 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
13717   };
13718 
13719   struct ClearAttachment
13720   {
13721     using NativeType = VkClearAttachment;
13722 
13723 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ClearAttachmentVULKAN_HPP_NAMESPACE::ClearAttachment13724     VULKAN_HPP_CONSTEXPR_14 ClearAttachment( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_      = {},
13725                                              uint32_t                               colorAttachment_ = {},
13726                                              VULKAN_HPP_NAMESPACE::ClearValue       clearValue_      = {} ) VULKAN_HPP_NOEXCEPT
13727       : aspectMask{ aspectMask_ }
13728       , colorAttachment{ colorAttachment_ }
13729       , clearValue{ clearValue_ }
13730     {
13731     }
13732 
13733     VULKAN_HPP_CONSTEXPR_14 ClearAttachment( ClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13734 
ClearAttachmentVULKAN_HPP_NAMESPACE::ClearAttachment13735     ClearAttachment( VkClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT : ClearAttachment( *reinterpret_cast<ClearAttachment const *>( &rhs ) ) {}
13736 
13737     ClearAttachment & operator=( ClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13738 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13739 
operator =VULKAN_HPP_NAMESPACE::ClearAttachment13740     ClearAttachment & operator=( VkClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT
13741     {
13742       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ClearAttachment const *>( &rhs );
13743       return *this;
13744     }
13745 
13746 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAspectMaskVULKAN_HPP_NAMESPACE::ClearAttachment13747     VULKAN_HPP_CONSTEXPR_14 ClearAttachment & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
13748     {
13749       aspectMask = aspectMask_;
13750       return *this;
13751     }
13752 
setColorAttachmentVULKAN_HPP_NAMESPACE::ClearAttachment13753     VULKAN_HPP_CONSTEXPR_14 ClearAttachment & setColorAttachment( uint32_t colorAttachment_ ) VULKAN_HPP_NOEXCEPT
13754     {
13755       colorAttachment = colorAttachment_;
13756       return *this;
13757     }
13758 
setClearValueVULKAN_HPP_NAMESPACE::ClearAttachment13759     VULKAN_HPP_CONSTEXPR_14 ClearAttachment & setClearValue( VULKAN_HPP_NAMESPACE::ClearValue const & clearValue_ ) VULKAN_HPP_NOEXCEPT
13760     {
13761       clearValue = clearValue_;
13762       return *this;
13763     }
13764 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13765 
operator VkClearAttachment const&VULKAN_HPP_NAMESPACE::ClearAttachment13766     operator VkClearAttachment const &() const VULKAN_HPP_NOEXCEPT
13767     {
13768       return *reinterpret_cast<const VkClearAttachment *>( this );
13769     }
13770 
operator VkClearAttachment&VULKAN_HPP_NAMESPACE::ClearAttachment13771     operator VkClearAttachment &() VULKAN_HPP_NOEXCEPT
13772     {
13773       return *reinterpret_cast<VkClearAttachment *>( this );
13774     }
13775 
13776 #if defined( VULKAN_HPP_USE_REFLECT )
13777 #  if 14 <= VULKAN_HPP_CPP_VERSION
13778     auto
13779 #  else
13780     std::tuple<VULKAN_HPP_NAMESPACE::ImageAspectFlags const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ClearValue const &>
13781 #  endif
reflectVULKAN_HPP_NAMESPACE::ClearAttachment13782       reflect() const VULKAN_HPP_NOEXCEPT
13783     {
13784       return std::tie( aspectMask, colorAttachment, clearValue );
13785     }
13786 #endif
13787 
13788   public:
13789     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask      = {};
13790     uint32_t                               colorAttachment = {};
13791     VULKAN_HPP_NAMESPACE::ClearValue       clearValue      = {};
13792   };
13793 
13794   struct ClearRect
13795   {
13796     using NativeType = VkClearRect;
13797 
13798 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ClearRectVULKAN_HPP_NAMESPACE::ClearRect13799     VULKAN_HPP_CONSTEXPR ClearRect( VULKAN_HPP_NAMESPACE::Rect2D rect_ = {}, uint32_t baseArrayLayer_ = {}, uint32_t layerCount_ = {} ) VULKAN_HPP_NOEXCEPT
13800       : rect{ rect_ }
13801       , baseArrayLayer{ baseArrayLayer_ }
13802       , layerCount{ layerCount_ }
13803     {
13804     }
13805 
13806     VULKAN_HPP_CONSTEXPR ClearRect( ClearRect const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13807 
ClearRectVULKAN_HPP_NAMESPACE::ClearRect13808     ClearRect( VkClearRect const & rhs ) VULKAN_HPP_NOEXCEPT : ClearRect( *reinterpret_cast<ClearRect const *>( &rhs ) ) {}
13809 
13810     ClearRect & operator=( ClearRect const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13811 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13812 
operator =VULKAN_HPP_NAMESPACE::ClearRect13813     ClearRect & operator=( VkClearRect const & rhs ) VULKAN_HPP_NOEXCEPT
13814     {
13815       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ClearRect const *>( &rhs );
13816       return *this;
13817     }
13818 
13819 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setRectVULKAN_HPP_NAMESPACE::ClearRect13820     VULKAN_HPP_CONSTEXPR_14 ClearRect & setRect( VULKAN_HPP_NAMESPACE::Rect2D const & rect_ ) VULKAN_HPP_NOEXCEPT
13821     {
13822       rect = rect_;
13823       return *this;
13824     }
13825 
setBaseArrayLayerVULKAN_HPP_NAMESPACE::ClearRect13826     VULKAN_HPP_CONSTEXPR_14 ClearRect & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT
13827     {
13828       baseArrayLayer = baseArrayLayer_;
13829       return *this;
13830     }
13831 
setLayerCountVULKAN_HPP_NAMESPACE::ClearRect13832     VULKAN_HPP_CONSTEXPR_14 ClearRect & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
13833     {
13834       layerCount = layerCount_;
13835       return *this;
13836     }
13837 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13838 
operator VkClearRect const&VULKAN_HPP_NAMESPACE::ClearRect13839     operator VkClearRect const &() const VULKAN_HPP_NOEXCEPT
13840     {
13841       return *reinterpret_cast<const VkClearRect *>( this );
13842     }
13843 
operator VkClearRect&VULKAN_HPP_NAMESPACE::ClearRect13844     operator VkClearRect &() VULKAN_HPP_NOEXCEPT
13845     {
13846       return *reinterpret_cast<VkClearRect *>( this );
13847     }
13848 
13849 #if defined( VULKAN_HPP_USE_REFLECT )
13850 #  if 14 <= VULKAN_HPP_CPP_VERSION
13851     auto
13852 #  else
13853     std::tuple<VULKAN_HPP_NAMESPACE::Rect2D const &, uint32_t const &, uint32_t const &>
13854 #  endif
reflectVULKAN_HPP_NAMESPACE::ClearRect13855       reflect() const VULKAN_HPP_NOEXCEPT
13856     {
13857       return std::tie( rect, baseArrayLayer, layerCount );
13858     }
13859 #endif
13860 
13861 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13862     auto operator<=>( ClearRect const & ) const = default;
13863 #else
operator ==VULKAN_HPP_NAMESPACE::ClearRect13864     bool                     operator==( ClearRect const & rhs ) const VULKAN_HPP_NOEXCEPT
13865     {
13866 #  if defined( VULKAN_HPP_USE_REFLECT )
13867       return this->reflect() == rhs.reflect();
13868 #  else
13869       return ( rect == rhs.rect ) && ( baseArrayLayer == rhs.baseArrayLayer ) && ( layerCount == rhs.layerCount );
13870 #  endif
13871     }
13872 
operator !=VULKAN_HPP_NAMESPACE::ClearRect13873     bool operator!=( ClearRect const & rhs ) const VULKAN_HPP_NOEXCEPT
13874     {
13875       return !operator==( rhs );
13876     }
13877 #endif
13878 
13879   public:
13880     VULKAN_HPP_NAMESPACE::Rect2D rect           = {};
13881     uint32_t                     baseArrayLayer = {};
13882     uint32_t                     layerCount     = {};
13883   };
13884 
13885   struct CoarseSampleLocationNV
13886   {
13887     using NativeType = VkCoarseSampleLocationNV;
13888 
13889 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CoarseSampleLocationNVVULKAN_HPP_NAMESPACE::CoarseSampleLocationNV13890     VULKAN_HPP_CONSTEXPR CoarseSampleLocationNV( uint32_t pixelX_ = {}, uint32_t pixelY_ = {}, uint32_t sample_ = {} ) VULKAN_HPP_NOEXCEPT
13891       : pixelX{ pixelX_ }
13892       , pixelY{ pixelY_ }
13893       , sample{ sample_ }
13894     {
13895     }
13896 
13897     VULKAN_HPP_CONSTEXPR CoarseSampleLocationNV( CoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13898 
CoarseSampleLocationNVVULKAN_HPP_NAMESPACE::CoarseSampleLocationNV13899     CoarseSampleLocationNV( VkCoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT
13900       : CoarseSampleLocationNV( *reinterpret_cast<CoarseSampleLocationNV const *>( &rhs ) )
13901     {
13902     }
13903 
13904     CoarseSampleLocationNV & operator=( CoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13905 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13906 
operator =VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV13907     CoarseSampleLocationNV & operator=( VkCoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT
13908     {
13909       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV const *>( &rhs );
13910       return *this;
13911     }
13912 
13913 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPixelXVULKAN_HPP_NAMESPACE::CoarseSampleLocationNV13914     VULKAN_HPP_CONSTEXPR_14 CoarseSampleLocationNV & setPixelX( uint32_t pixelX_ ) VULKAN_HPP_NOEXCEPT
13915     {
13916       pixelX = pixelX_;
13917       return *this;
13918     }
13919 
setPixelYVULKAN_HPP_NAMESPACE::CoarseSampleLocationNV13920     VULKAN_HPP_CONSTEXPR_14 CoarseSampleLocationNV & setPixelY( uint32_t pixelY_ ) VULKAN_HPP_NOEXCEPT
13921     {
13922       pixelY = pixelY_;
13923       return *this;
13924     }
13925 
setSampleVULKAN_HPP_NAMESPACE::CoarseSampleLocationNV13926     VULKAN_HPP_CONSTEXPR_14 CoarseSampleLocationNV & setSample( uint32_t sample_ ) VULKAN_HPP_NOEXCEPT
13927     {
13928       sample = sample_;
13929       return *this;
13930     }
13931 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13932 
operator VkCoarseSampleLocationNV const&VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV13933     operator VkCoarseSampleLocationNV const &() const VULKAN_HPP_NOEXCEPT
13934     {
13935       return *reinterpret_cast<const VkCoarseSampleLocationNV *>( this );
13936     }
13937 
operator VkCoarseSampleLocationNV&VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV13938     operator VkCoarseSampleLocationNV &() VULKAN_HPP_NOEXCEPT
13939     {
13940       return *reinterpret_cast<VkCoarseSampleLocationNV *>( this );
13941     }
13942 
13943 #if defined( VULKAN_HPP_USE_REFLECT )
13944 #  if 14 <= VULKAN_HPP_CPP_VERSION
13945     auto
13946 #  else
13947     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
13948 #  endif
reflectVULKAN_HPP_NAMESPACE::CoarseSampleLocationNV13949       reflect() const VULKAN_HPP_NOEXCEPT
13950     {
13951       return std::tie( pixelX, pixelY, sample );
13952     }
13953 #endif
13954 
13955 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
13956     auto operator<=>( CoarseSampleLocationNV const & ) const = default;
13957 #else
operator ==VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV13958     bool operator==( CoarseSampleLocationNV const & rhs ) const VULKAN_HPP_NOEXCEPT
13959     {
13960 #  if defined( VULKAN_HPP_USE_REFLECT )
13961       return this->reflect() == rhs.reflect();
13962 #  else
13963       return ( pixelX == rhs.pixelX ) && ( pixelY == rhs.pixelY ) && ( sample == rhs.sample );
13964 #  endif
13965     }
13966 
operator !=VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV13967     bool operator!=( CoarseSampleLocationNV const & rhs ) const VULKAN_HPP_NOEXCEPT
13968     {
13969       return !operator==( rhs );
13970     }
13971 #endif
13972 
13973   public:
13974     uint32_t pixelX = {};
13975     uint32_t pixelY = {};
13976     uint32_t sample = {};
13977   };
13978 
13979   struct CoarseSampleOrderCustomNV
13980   {
13981     using NativeType = VkCoarseSampleOrderCustomNV;
13982 
13983 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
13984     VULKAN_HPP_CONSTEXPR
CoarseSampleOrderCustomNVVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV13985       CoarseSampleOrderCustomNV( VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV shadingRate_ = VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV::eNoInvocations,
13986                                  uint32_t                                        sampleCount_ = {},
13987                                  uint32_t                                        sampleLocationCount_   = {},
13988                                  const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV * pSampleLocations_ = {} ) VULKAN_HPP_NOEXCEPT
13989       : shadingRate{ shadingRate_ }
13990       , sampleCount{ sampleCount_ }
13991       , sampleLocationCount{ sampleLocationCount_ }
13992       , pSampleLocations{ pSampleLocations_ }
13993     {
13994     }
13995 
13996     VULKAN_HPP_CONSTEXPR CoarseSampleOrderCustomNV( CoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13997 
CoarseSampleOrderCustomNVVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV13998     CoarseSampleOrderCustomNV( VkCoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT
13999       : CoarseSampleOrderCustomNV( *reinterpret_cast<CoarseSampleOrderCustomNV const *>( &rhs ) )
14000     {
14001     }
14002 
14003 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CoarseSampleOrderCustomNVVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14004     CoarseSampleOrderCustomNV( VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV                                                           shadingRate_,
14005                                uint32_t                                                                                                  sampleCount_,
14006                                VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV> const & sampleLocations_ )
14007       : shadingRate( shadingRate_ )
14008       , sampleCount( sampleCount_ )
14009       , sampleLocationCount( static_cast<uint32_t>( sampleLocations_.size() ) )
14010       , pSampleLocations( sampleLocations_.data() )
14011     {
14012     }
14013 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
14014 
14015     CoarseSampleOrderCustomNV & operator=( CoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14016 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14017 
operator =VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14018     CoarseSampleOrderCustomNV & operator=( VkCoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT
14019     {
14020       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV const *>( &rhs );
14021       return *this;
14022     }
14023 
14024 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setShadingRateVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14025     VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV & setShadingRate( VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV shadingRate_ ) VULKAN_HPP_NOEXCEPT
14026     {
14027       shadingRate = shadingRate_;
14028       return *this;
14029     }
14030 
setSampleCountVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14031     VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV & setSampleCount( uint32_t sampleCount_ ) VULKAN_HPP_NOEXCEPT
14032     {
14033       sampleCount = sampleCount_;
14034       return *this;
14035     }
14036 
setSampleLocationCountVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14037     VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV & setSampleLocationCount( uint32_t sampleLocationCount_ ) VULKAN_HPP_NOEXCEPT
14038     {
14039       sampleLocationCount = sampleLocationCount_;
14040       return *this;
14041     }
14042 
14043     VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV &
setPSampleLocationsVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14044       setPSampleLocations( const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV * pSampleLocations_ ) VULKAN_HPP_NOEXCEPT
14045     {
14046       pSampleLocations = pSampleLocations_;
14047       return *this;
14048     }
14049 
14050 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSampleLocationsVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14051     CoarseSampleOrderCustomNV & setSampleLocations(
14052       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV> const & sampleLocations_ ) VULKAN_HPP_NOEXCEPT
14053     {
14054       sampleLocationCount = static_cast<uint32_t>( sampleLocations_.size() );
14055       pSampleLocations    = sampleLocations_.data();
14056       return *this;
14057     }
14058 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
14059 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14060 
operator VkCoarseSampleOrderCustomNV const&VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14061     operator VkCoarseSampleOrderCustomNV const &() const VULKAN_HPP_NOEXCEPT
14062     {
14063       return *reinterpret_cast<const VkCoarseSampleOrderCustomNV *>( this );
14064     }
14065 
operator VkCoarseSampleOrderCustomNV&VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14066     operator VkCoarseSampleOrderCustomNV &() VULKAN_HPP_NOEXCEPT
14067     {
14068       return *reinterpret_cast<VkCoarseSampleOrderCustomNV *>( this );
14069     }
14070 
14071 #if defined( VULKAN_HPP_USE_REFLECT )
14072 #  if 14 <= VULKAN_HPP_CPP_VERSION
14073     auto
14074 #  else
14075     std::tuple<VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV const &,
14076                uint32_t const &,
14077                uint32_t const &,
14078                const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV * const &>
14079 #  endif
reflectVULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14080       reflect() const VULKAN_HPP_NOEXCEPT
14081     {
14082       return std::tie( shadingRate, sampleCount, sampleLocationCount, pSampleLocations );
14083     }
14084 #endif
14085 
14086 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14087     auto operator<=>( CoarseSampleOrderCustomNV const & ) const = default;
14088 #else
operator ==VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14089     bool operator==( CoarseSampleOrderCustomNV const & rhs ) const VULKAN_HPP_NOEXCEPT
14090     {
14091 #  if defined( VULKAN_HPP_USE_REFLECT )
14092       return this->reflect() == rhs.reflect();
14093 #  else
14094       return ( shadingRate == rhs.shadingRate ) && ( sampleCount == rhs.sampleCount ) && ( sampleLocationCount == rhs.sampleLocationCount ) &&
14095              ( pSampleLocations == rhs.pSampleLocations );
14096 #  endif
14097     }
14098 
operator !=VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV14099     bool operator!=( CoarseSampleOrderCustomNV const & rhs ) const VULKAN_HPP_NOEXCEPT
14100     {
14101       return !operator==( rhs );
14102     }
14103 #endif
14104 
14105   public:
14106     VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV      shadingRate         = VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV::eNoInvocations;
14107     uint32_t                                             sampleCount         = {};
14108     uint32_t                                             sampleLocationCount = {};
14109     const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV * pSampleLocations    = {};
14110   };
14111 
14112   struct ColorBlendAdvancedEXT
14113   {
14114     using NativeType = VkColorBlendAdvancedEXT;
14115 
14116 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ColorBlendAdvancedEXTVULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14117     VULKAN_HPP_CONSTEXPR ColorBlendAdvancedEXT( VULKAN_HPP_NAMESPACE::BlendOp         advancedBlendOp_  = VULKAN_HPP_NAMESPACE::BlendOp::eAdd,
14118                                                 VULKAN_HPP_NAMESPACE::Bool32          srcPremultiplied_ = {},
14119                                                 VULKAN_HPP_NAMESPACE::Bool32          dstPremultiplied_ = {},
14120                                                 VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap_     = VULKAN_HPP_NAMESPACE::BlendOverlapEXT::eUncorrelated,
14121                                                 VULKAN_HPP_NAMESPACE::Bool32          clampResults_     = {} ) VULKAN_HPP_NOEXCEPT
14122       : advancedBlendOp{ advancedBlendOp_ }
14123       , srcPremultiplied{ srcPremultiplied_ }
14124       , dstPremultiplied{ dstPremultiplied_ }
14125       , blendOverlap{ blendOverlap_ }
14126       , clampResults{ clampResults_ }
14127     {
14128     }
14129 
14130     VULKAN_HPP_CONSTEXPR ColorBlendAdvancedEXT( ColorBlendAdvancedEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14131 
ColorBlendAdvancedEXTVULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14132     ColorBlendAdvancedEXT( VkColorBlendAdvancedEXT const & rhs ) VULKAN_HPP_NOEXCEPT
14133       : ColorBlendAdvancedEXT( *reinterpret_cast<ColorBlendAdvancedEXT const *>( &rhs ) )
14134     {
14135     }
14136 
14137     ColorBlendAdvancedEXT & operator=( ColorBlendAdvancedEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14138 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14139 
operator =VULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14140     ColorBlendAdvancedEXT & operator=( VkColorBlendAdvancedEXT const & rhs ) VULKAN_HPP_NOEXCEPT
14141     {
14142       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT const *>( &rhs );
14143       return *this;
14144     }
14145 
14146 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAdvancedBlendOpVULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14147     VULKAN_HPP_CONSTEXPR_14 ColorBlendAdvancedEXT & setAdvancedBlendOp( VULKAN_HPP_NAMESPACE::BlendOp advancedBlendOp_ ) VULKAN_HPP_NOEXCEPT
14148     {
14149       advancedBlendOp = advancedBlendOp_;
14150       return *this;
14151     }
14152 
setSrcPremultipliedVULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14153     VULKAN_HPP_CONSTEXPR_14 ColorBlendAdvancedEXT & setSrcPremultiplied( VULKAN_HPP_NAMESPACE::Bool32 srcPremultiplied_ ) VULKAN_HPP_NOEXCEPT
14154     {
14155       srcPremultiplied = srcPremultiplied_;
14156       return *this;
14157     }
14158 
setDstPremultipliedVULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14159     VULKAN_HPP_CONSTEXPR_14 ColorBlendAdvancedEXT & setDstPremultiplied( VULKAN_HPP_NAMESPACE::Bool32 dstPremultiplied_ ) VULKAN_HPP_NOEXCEPT
14160     {
14161       dstPremultiplied = dstPremultiplied_;
14162       return *this;
14163     }
14164 
setBlendOverlapVULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14165     VULKAN_HPP_CONSTEXPR_14 ColorBlendAdvancedEXT & setBlendOverlap( VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap_ ) VULKAN_HPP_NOEXCEPT
14166     {
14167       blendOverlap = blendOverlap_;
14168       return *this;
14169     }
14170 
setClampResultsVULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14171     VULKAN_HPP_CONSTEXPR_14 ColorBlendAdvancedEXT & setClampResults( VULKAN_HPP_NAMESPACE::Bool32 clampResults_ ) VULKAN_HPP_NOEXCEPT
14172     {
14173       clampResults = clampResults_;
14174       return *this;
14175     }
14176 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14177 
operator VkColorBlendAdvancedEXT const&VULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14178     operator VkColorBlendAdvancedEXT const &() const VULKAN_HPP_NOEXCEPT
14179     {
14180       return *reinterpret_cast<const VkColorBlendAdvancedEXT *>( this );
14181     }
14182 
operator VkColorBlendAdvancedEXT&VULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14183     operator VkColorBlendAdvancedEXT &() VULKAN_HPP_NOEXCEPT
14184     {
14185       return *reinterpret_cast<VkColorBlendAdvancedEXT *>( this );
14186     }
14187 
14188 #if defined( VULKAN_HPP_USE_REFLECT )
14189 #  if 14 <= VULKAN_HPP_CPP_VERSION
14190     auto
14191 #  else
14192     std::tuple<VULKAN_HPP_NAMESPACE::BlendOp const &,
14193                VULKAN_HPP_NAMESPACE::Bool32 const &,
14194                VULKAN_HPP_NAMESPACE::Bool32 const &,
14195                VULKAN_HPP_NAMESPACE::BlendOverlapEXT const &,
14196                VULKAN_HPP_NAMESPACE::Bool32 const &>
14197 #  endif
reflectVULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14198       reflect() const VULKAN_HPP_NOEXCEPT
14199     {
14200       return std::tie( advancedBlendOp, srcPremultiplied, dstPremultiplied, blendOverlap, clampResults );
14201     }
14202 #endif
14203 
14204 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14205     auto operator<=>( ColorBlendAdvancedEXT const & ) const = default;
14206 #else
operator ==VULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14207     bool operator==( ColorBlendAdvancedEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
14208     {
14209 #  if defined( VULKAN_HPP_USE_REFLECT )
14210       return this->reflect() == rhs.reflect();
14211 #  else
14212       return ( advancedBlendOp == rhs.advancedBlendOp ) && ( srcPremultiplied == rhs.srcPremultiplied ) && ( dstPremultiplied == rhs.dstPremultiplied ) &&
14213              ( blendOverlap == rhs.blendOverlap ) && ( clampResults == rhs.clampResults );
14214 #  endif
14215     }
14216 
operator !=VULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT14217     bool operator!=( ColorBlendAdvancedEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
14218     {
14219       return !operator==( rhs );
14220     }
14221 #endif
14222 
14223   public:
14224     VULKAN_HPP_NAMESPACE::BlendOp         advancedBlendOp  = VULKAN_HPP_NAMESPACE::BlendOp::eAdd;
14225     VULKAN_HPP_NAMESPACE::Bool32          srcPremultiplied = {};
14226     VULKAN_HPP_NAMESPACE::Bool32          dstPremultiplied = {};
14227     VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap     = VULKAN_HPP_NAMESPACE::BlendOverlapEXT::eUncorrelated;
14228     VULKAN_HPP_NAMESPACE::Bool32          clampResults     = {};
14229   };
14230 
14231   struct ColorBlendEquationEXT
14232   {
14233     using NativeType = VkColorBlendEquationEXT;
14234 
14235 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ColorBlendEquationEXTVULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14236     VULKAN_HPP_CONSTEXPR ColorBlendEquationEXT( VULKAN_HPP_NAMESPACE::BlendFactor srcColorBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero,
14237                                                 VULKAN_HPP_NAMESPACE::BlendFactor dstColorBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero,
14238                                                 VULKAN_HPP_NAMESPACE::BlendOp     colorBlendOp_        = VULKAN_HPP_NAMESPACE::BlendOp::eAdd,
14239                                                 VULKAN_HPP_NAMESPACE::BlendFactor srcAlphaBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero,
14240                                                 VULKAN_HPP_NAMESPACE::BlendFactor dstAlphaBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero,
14241                                                 VULKAN_HPP_NAMESPACE::BlendOp     alphaBlendOp_ = VULKAN_HPP_NAMESPACE::BlendOp::eAdd ) VULKAN_HPP_NOEXCEPT
14242       : srcColorBlendFactor{ srcColorBlendFactor_ }
14243       , dstColorBlendFactor{ dstColorBlendFactor_ }
14244       , colorBlendOp{ colorBlendOp_ }
14245       , srcAlphaBlendFactor{ srcAlphaBlendFactor_ }
14246       , dstAlphaBlendFactor{ dstAlphaBlendFactor_ }
14247       , alphaBlendOp{ alphaBlendOp_ }
14248     {
14249     }
14250 
14251     VULKAN_HPP_CONSTEXPR ColorBlendEquationEXT( ColorBlendEquationEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14252 
ColorBlendEquationEXTVULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14253     ColorBlendEquationEXT( VkColorBlendEquationEXT const & rhs ) VULKAN_HPP_NOEXCEPT
14254       : ColorBlendEquationEXT( *reinterpret_cast<ColorBlendEquationEXT const *>( &rhs ) )
14255     {
14256     }
14257 
14258     ColorBlendEquationEXT & operator=( ColorBlendEquationEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14259 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14260 
operator =VULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14261     ColorBlendEquationEXT & operator=( VkColorBlendEquationEXT const & rhs ) VULKAN_HPP_NOEXCEPT
14262     {
14263       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ColorBlendEquationEXT const *>( &rhs );
14264       return *this;
14265     }
14266 
14267 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcColorBlendFactorVULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14268     VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT & setSrcColorBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor srcColorBlendFactor_ ) VULKAN_HPP_NOEXCEPT
14269     {
14270       srcColorBlendFactor = srcColorBlendFactor_;
14271       return *this;
14272     }
14273 
setDstColorBlendFactorVULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14274     VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT & setDstColorBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor dstColorBlendFactor_ ) VULKAN_HPP_NOEXCEPT
14275     {
14276       dstColorBlendFactor = dstColorBlendFactor_;
14277       return *this;
14278     }
14279 
setColorBlendOpVULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14280     VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT & setColorBlendOp( VULKAN_HPP_NAMESPACE::BlendOp colorBlendOp_ ) VULKAN_HPP_NOEXCEPT
14281     {
14282       colorBlendOp = colorBlendOp_;
14283       return *this;
14284     }
14285 
setSrcAlphaBlendFactorVULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14286     VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT & setSrcAlphaBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor srcAlphaBlendFactor_ ) VULKAN_HPP_NOEXCEPT
14287     {
14288       srcAlphaBlendFactor = srcAlphaBlendFactor_;
14289       return *this;
14290     }
14291 
setDstAlphaBlendFactorVULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14292     VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT & setDstAlphaBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor dstAlphaBlendFactor_ ) VULKAN_HPP_NOEXCEPT
14293     {
14294       dstAlphaBlendFactor = dstAlphaBlendFactor_;
14295       return *this;
14296     }
14297 
setAlphaBlendOpVULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14298     VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT & setAlphaBlendOp( VULKAN_HPP_NAMESPACE::BlendOp alphaBlendOp_ ) VULKAN_HPP_NOEXCEPT
14299     {
14300       alphaBlendOp = alphaBlendOp_;
14301       return *this;
14302     }
14303 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14304 
operator VkColorBlendEquationEXT const&VULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14305     operator VkColorBlendEquationEXT const &() const VULKAN_HPP_NOEXCEPT
14306     {
14307       return *reinterpret_cast<const VkColorBlendEquationEXT *>( this );
14308     }
14309 
operator VkColorBlendEquationEXT&VULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14310     operator VkColorBlendEquationEXT &() VULKAN_HPP_NOEXCEPT
14311     {
14312       return *reinterpret_cast<VkColorBlendEquationEXT *>( this );
14313     }
14314 
14315 #if defined( VULKAN_HPP_USE_REFLECT )
14316 #  if 14 <= VULKAN_HPP_CPP_VERSION
14317     auto
14318 #  else
14319     std::tuple<VULKAN_HPP_NAMESPACE::BlendFactor const &,
14320                VULKAN_HPP_NAMESPACE::BlendFactor const &,
14321                VULKAN_HPP_NAMESPACE::BlendOp const &,
14322                VULKAN_HPP_NAMESPACE::BlendFactor const &,
14323                VULKAN_HPP_NAMESPACE::BlendFactor const &,
14324                VULKAN_HPP_NAMESPACE::BlendOp const &>
14325 #  endif
reflectVULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14326       reflect() const VULKAN_HPP_NOEXCEPT
14327     {
14328       return std::tie( srcColorBlendFactor, dstColorBlendFactor, colorBlendOp, srcAlphaBlendFactor, dstAlphaBlendFactor, alphaBlendOp );
14329     }
14330 #endif
14331 
14332 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14333     auto operator<=>( ColorBlendEquationEXT const & ) const = default;
14334 #else
operator ==VULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14335     bool operator==( ColorBlendEquationEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
14336     {
14337 #  if defined( VULKAN_HPP_USE_REFLECT )
14338       return this->reflect() == rhs.reflect();
14339 #  else
14340       return ( srcColorBlendFactor == rhs.srcColorBlendFactor ) && ( dstColorBlendFactor == rhs.dstColorBlendFactor ) && ( colorBlendOp == rhs.colorBlendOp ) &&
14341              ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor ) && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor ) && ( alphaBlendOp == rhs.alphaBlendOp );
14342 #  endif
14343     }
14344 
operator !=VULKAN_HPP_NAMESPACE::ColorBlendEquationEXT14345     bool operator!=( ColorBlendEquationEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
14346     {
14347       return !operator==( rhs );
14348     }
14349 #endif
14350 
14351   public:
14352     VULKAN_HPP_NAMESPACE::BlendFactor srcColorBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
14353     VULKAN_HPP_NAMESPACE::BlendFactor dstColorBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
14354     VULKAN_HPP_NAMESPACE::BlendOp     colorBlendOp        = VULKAN_HPP_NAMESPACE::BlendOp::eAdd;
14355     VULKAN_HPP_NAMESPACE::BlendFactor srcAlphaBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
14356     VULKAN_HPP_NAMESPACE::BlendFactor dstAlphaBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
14357     VULKAN_HPP_NAMESPACE::BlendOp     alphaBlendOp        = VULKAN_HPP_NAMESPACE::BlendOp::eAdd;
14358   };
14359 
14360   struct CommandBufferAllocateInfo
14361   {
14362     using NativeType = VkCommandBufferAllocateInfo;
14363 
14364     static const bool                                  allowDuplicate = false;
14365     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandBufferAllocateInfo;
14366 
14367 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferAllocateInfoVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14368     VULKAN_HPP_CONSTEXPR CommandBufferAllocateInfo( VULKAN_HPP_NAMESPACE::CommandPool        commandPool_ = {},
14369                                                     VULKAN_HPP_NAMESPACE::CommandBufferLevel level_       = VULKAN_HPP_NAMESPACE::CommandBufferLevel::ePrimary,
14370                                                     uint32_t                                 commandBufferCount_ = {},
14371                                                     const void *                             pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
14372       : pNext{ pNext_ }
14373       , commandPool{ commandPool_ }
14374       , level{ level_ }
14375       , commandBufferCount{ commandBufferCount_ }
14376     {
14377     }
14378 
14379     VULKAN_HPP_CONSTEXPR CommandBufferAllocateInfo( CommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14380 
CommandBufferAllocateInfoVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14381     CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
14382       : CommandBufferAllocateInfo( *reinterpret_cast<CommandBufferAllocateInfo const *>( &rhs ) )
14383     {
14384     }
14385 
14386     CommandBufferAllocateInfo & operator=( CommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14387 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14388 
operator =VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14389     CommandBufferAllocateInfo & operator=( VkCommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
14390     {
14391       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo const *>( &rhs );
14392       return *this;
14393     }
14394 
14395 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14396     VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
14397     {
14398       pNext = pNext_;
14399       return *this;
14400     }
14401 
setCommandPoolVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14402     VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & setCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool_ ) VULKAN_HPP_NOEXCEPT
14403     {
14404       commandPool = commandPool_;
14405       return *this;
14406     }
14407 
setLevelVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14408     VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & setLevel( VULKAN_HPP_NAMESPACE::CommandBufferLevel level_ ) VULKAN_HPP_NOEXCEPT
14409     {
14410       level = level_;
14411       return *this;
14412     }
14413 
setCommandBufferCountVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14414     VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & setCommandBufferCount( uint32_t commandBufferCount_ ) VULKAN_HPP_NOEXCEPT
14415     {
14416       commandBufferCount = commandBufferCount_;
14417       return *this;
14418     }
14419 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14420 
operator VkCommandBufferAllocateInfo const&VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14421     operator VkCommandBufferAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
14422     {
14423       return *reinterpret_cast<const VkCommandBufferAllocateInfo *>( this );
14424     }
14425 
operator VkCommandBufferAllocateInfo&VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14426     operator VkCommandBufferAllocateInfo &() VULKAN_HPP_NOEXCEPT
14427     {
14428       return *reinterpret_cast<VkCommandBufferAllocateInfo *>( this );
14429     }
14430 
14431 #if defined( VULKAN_HPP_USE_REFLECT )
14432 #  if 14 <= VULKAN_HPP_CPP_VERSION
14433     auto
14434 #  else
14435     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
14436                const void * const &,
14437                VULKAN_HPP_NAMESPACE::CommandPool const &,
14438                VULKAN_HPP_NAMESPACE::CommandBufferLevel const &,
14439                uint32_t const &>
14440 #  endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14441       reflect() const VULKAN_HPP_NOEXCEPT
14442     {
14443       return std::tie( sType, pNext, commandPool, level, commandBufferCount );
14444     }
14445 #endif
14446 
14447 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14448     auto operator<=>( CommandBufferAllocateInfo const & ) const = default;
14449 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14450     bool operator==( CommandBufferAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
14451     {
14452 #  if defined( VULKAN_HPP_USE_REFLECT )
14453       return this->reflect() == rhs.reflect();
14454 #  else
14455       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( commandPool == rhs.commandPool ) && ( level == rhs.level ) &&
14456              ( commandBufferCount == rhs.commandBufferCount );
14457 #  endif
14458     }
14459 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo14460     bool operator!=( CommandBufferAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
14461     {
14462       return !operator==( rhs );
14463     }
14464 #endif
14465 
14466   public:
14467     VULKAN_HPP_NAMESPACE::StructureType      sType              = StructureType::eCommandBufferAllocateInfo;
14468     const void *                             pNext              = {};
14469     VULKAN_HPP_NAMESPACE::CommandPool        commandPool        = {};
14470     VULKAN_HPP_NAMESPACE::CommandBufferLevel level              = VULKAN_HPP_NAMESPACE::CommandBufferLevel::ePrimary;
14471     uint32_t                                 commandBufferCount = {};
14472   };
14473 
14474   template <>
14475   struct CppType<StructureType, StructureType::eCommandBufferAllocateInfo>
14476   {
14477     using Type = CommandBufferAllocateInfo;
14478   };
14479 
14480   struct CommandBufferInheritanceInfo
14481   {
14482     using NativeType = VkCommandBufferInheritanceInfo;
14483 
14484     static const bool                                  allowDuplicate = false;
14485     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandBufferInheritanceInfo;
14486 
14487 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferInheritanceInfoVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14488     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceInfo( VULKAN_HPP_NAMESPACE::RenderPass                  renderPass_           = {},
14489                                                        uint32_t                                          subpass_              = {},
14490                                                        VULKAN_HPP_NAMESPACE::Framebuffer                 framebuffer_          = {},
14491                                                        VULKAN_HPP_NAMESPACE::Bool32                      occlusionQueryEnable_ = {},
14492                                                        VULKAN_HPP_NAMESPACE::QueryControlFlags           queryFlags_           = {},
14493                                                        VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_   = {},
14494                                                        const void *                                      pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
14495       : pNext{ pNext_ }
14496       , renderPass{ renderPass_ }
14497       , subpass{ subpass_ }
14498       , framebuffer{ framebuffer_ }
14499       , occlusionQueryEnable{ occlusionQueryEnable_ }
14500       , queryFlags{ queryFlags_ }
14501       , pipelineStatistics{ pipelineStatistics_ }
14502     {
14503     }
14504 
14505     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceInfo( CommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14506 
CommandBufferInheritanceInfoVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14507     CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
14508       : CommandBufferInheritanceInfo( *reinterpret_cast<CommandBufferInheritanceInfo const *>( &rhs ) )
14509     {
14510     }
14511 
14512     CommandBufferInheritanceInfo & operator=( CommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14513 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14514 
operator =VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14515     CommandBufferInheritanceInfo & operator=( VkCommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
14516     {
14517       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo const *>( &rhs );
14518       return *this;
14519     }
14520 
14521 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14522     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
14523     {
14524       pNext = pNext_;
14525       return *this;
14526     }
14527 
setRenderPassVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14528     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT
14529     {
14530       renderPass = renderPass_;
14531       return *this;
14532     }
14533 
setSubpassVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14534     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setSubpass( uint32_t subpass_ ) VULKAN_HPP_NOEXCEPT
14535     {
14536       subpass = subpass_;
14537       return *this;
14538     }
14539 
setFramebufferVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14540     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setFramebuffer( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_ ) VULKAN_HPP_NOEXCEPT
14541     {
14542       framebuffer = framebuffer_;
14543       return *this;
14544     }
14545 
setOcclusionQueryEnableVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14546     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setOcclusionQueryEnable( VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryEnable_ ) VULKAN_HPP_NOEXCEPT
14547     {
14548       occlusionQueryEnable = occlusionQueryEnable_;
14549       return *this;
14550     }
14551 
setQueryFlagsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14552     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setQueryFlags( VULKAN_HPP_NAMESPACE::QueryControlFlags queryFlags_ ) VULKAN_HPP_NOEXCEPT
14553     {
14554       queryFlags = queryFlags_;
14555       return *this;
14556     }
14557 
14558     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo &
setPipelineStatisticsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14559       setPipelineStatistics( VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_ ) VULKAN_HPP_NOEXCEPT
14560     {
14561       pipelineStatistics = pipelineStatistics_;
14562       return *this;
14563     }
14564 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14565 
operator VkCommandBufferInheritanceInfo const&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14566     operator VkCommandBufferInheritanceInfo const &() const VULKAN_HPP_NOEXCEPT
14567     {
14568       return *reinterpret_cast<const VkCommandBufferInheritanceInfo *>( this );
14569     }
14570 
operator VkCommandBufferInheritanceInfo&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14571     operator VkCommandBufferInheritanceInfo &() VULKAN_HPP_NOEXCEPT
14572     {
14573       return *reinterpret_cast<VkCommandBufferInheritanceInfo *>( this );
14574     }
14575 
14576 #if defined( VULKAN_HPP_USE_REFLECT )
14577 #  if 14 <= VULKAN_HPP_CPP_VERSION
14578     auto
14579 #  else
14580     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
14581                const void * const &,
14582                VULKAN_HPP_NAMESPACE::RenderPass const &,
14583                uint32_t const &,
14584                VULKAN_HPP_NAMESPACE::Framebuffer const &,
14585                VULKAN_HPP_NAMESPACE::Bool32 const &,
14586                VULKAN_HPP_NAMESPACE::QueryControlFlags const &,
14587                VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags const &>
14588 #  endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14589       reflect() const VULKAN_HPP_NOEXCEPT
14590     {
14591       return std::tie( sType, pNext, renderPass, subpass, framebuffer, occlusionQueryEnable, queryFlags, pipelineStatistics );
14592     }
14593 #endif
14594 
14595 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14596     auto operator<=>( CommandBufferInheritanceInfo const & ) const = default;
14597 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14598     bool operator==( CommandBufferInheritanceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
14599     {
14600 #  if defined( VULKAN_HPP_USE_REFLECT )
14601       return this->reflect() == rhs.reflect();
14602 #  else
14603       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( renderPass == rhs.renderPass ) && ( subpass == rhs.subpass ) &&
14604              ( framebuffer == rhs.framebuffer ) && ( occlusionQueryEnable == rhs.occlusionQueryEnable ) && ( queryFlags == rhs.queryFlags ) &&
14605              ( pipelineStatistics == rhs.pipelineStatistics );
14606 #  endif
14607     }
14608 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo14609     bool operator!=( CommandBufferInheritanceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
14610     {
14611       return !operator==( rhs );
14612     }
14613 #endif
14614 
14615   public:
14616     VULKAN_HPP_NAMESPACE::StructureType               sType                = StructureType::eCommandBufferInheritanceInfo;
14617     const void *                                      pNext                = {};
14618     VULKAN_HPP_NAMESPACE::RenderPass                  renderPass           = {};
14619     uint32_t                                          subpass              = {};
14620     VULKAN_HPP_NAMESPACE::Framebuffer                 framebuffer          = {};
14621     VULKAN_HPP_NAMESPACE::Bool32                      occlusionQueryEnable = {};
14622     VULKAN_HPP_NAMESPACE::QueryControlFlags           queryFlags           = {};
14623     VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics   = {};
14624   };
14625 
14626   template <>
14627   struct CppType<StructureType, StructureType::eCommandBufferInheritanceInfo>
14628   {
14629     using Type = CommandBufferInheritanceInfo;
14630   };
14631 
14632   struct CommandBufferBeginInfo
14633   {
14634     using NativeType = VkCommandBufferBeginInfo;
14635 
14636     static const bool                                  allowDuplicate = false;
14637     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandBufferBeginInfo;
14638 
14639 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferBeginInfoVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14640     VULKAN_HPP_CONSTEXPR CommandBufferBeginInfo( VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags              flags_            = {},
14641                                                  const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo * pInheritanceInfo_ = {},
14642                                                  const void *                                               pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
14643       : pNext{ pNext_ }
14644       , flags{ flags_ }
14645       , pInheritanceInfo{ pInheritanceInfo_ }
14646     {
14647     }
14648 
14649     VULKAN_HPP_CONSTEXPR CommandBufferBeginInfo( CommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14650 
CommandBufferBeginInfoVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14651     CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
14652       : CommandBufferBeginInfo( *reinterpret_cast<CommandBufferBeginInfo const *>( &rhs ) )
14653     {
14654     }
14655 
14656     CommandBufferBeginInfo & operator=( CommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14657 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14658 
operator =VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14659     CommandBufferBeginInfo & operator=( VkCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
14660     {
14661       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo const *>( &rhs );
14662       return *this;
14663     }
14664 
14665 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14666     VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
14667     {
14668       pNext = pNext_;
14669       return *this;
14670     }
14671 
setFlagsVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14672     VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo & setFlags( VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags flags_ ) VULKAN_HPP_NOEXCEPT
14673     {
14674       flags = flags_;
14675       return *this;
14676     }
14677 
14678     VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo &
setPInheritanceInfoVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14679       setPInheritanceInfo( const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo * pInheritanceInfo_ ) VULKAN_HPP_NOEXCEPT
14680     {
14681       pInheritanceInfo = pInheritanceInfo_;
14682       return *this;
14683     }
14684 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14685 
operator VkCommandBufferBeginInfo const&VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14686     operator VkCommandBufferBeginInfo const &() const VULKAN_HPP_NOEXCEPT
14687     {
14688       return *reinterpret_cast<const VkCommandBufferBeginInfo *>( this );
14689     }
14690 
operator VkCommandBufferBeginInfo&VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14691     operator VkCommandBufferBeginInfo &() VULKAN_HPP_NOEXCEPT
14692     {
14693       return *reinterpret_cast<VkCommandBufferBeginInfo *>( this );
14694     }
14695 
14696 #if defined( VULKAN_HPP_USE_REFLECT )
14697 #  if 14 <= VULKAN_HPP_CPP_VERSION
14698     auto
14699 #  else
14700     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
14701                const void * const &,
14702                VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags const &,
14703                const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo * const &>
14704 #  endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14705       reflect() const VULKAN_HPP_NOEXCEPT
14706     {
14707       return std::tie( sType, pNext, flags, pInheritanceInfo );
14708     }
14709 #endif
14710 
14711 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14712     auto operator<=>( CommandBufferBeginInfo const & ) const = default;
14713 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14714     bool operator==( CommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
14715     {
14716 #  if defined( VULKAN_HPP_USE_REFLECT )
14717       return this->reflect() == rhs.reflect();
14718 #  else
14719       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pInheritanceInfo == rhs.pInheritanceInfo );
14720 #  endif
14721     }
14722 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo14723     bool operator!=( CommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
14724     {
14725       return !operator==( rhs );
14726     }
14727 #endif
14728 
14729   public:
14730     VULKAN_HPP_NAMESPACE::StructureType                        sType            = StructureType::eCommandBufferBeginInfo;
14731     const void *                                               pNext            = {};
14732     VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags              flags            = {};
14733     const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo * pInheritanceInfo = {};
14734   };
14735 
14736   template <>
14737   struct CppType<StructureType, StructureType::eCommandBufferBeginInfo>
14738   {
14739     using Type = CommandBufferBeginInfo;
14740   };
14741 
14742   struct CommandBufferInheritanceConditionalRenderingInfoEXT
14743   {
14744     using NativeType = VkCommandBufferInheritanceConditionalRenderingInfoEXT;
14745 
14746     static const bool                                  allowDuplicate = false;
14747     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT;
14748 
14749 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferInheritanceConditionalRenderingInfoEXTVULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT14750     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceConditionalRenderingInfoEXT( VULKAN_HPP_NAMESPACE::Bool32 conditionalRenderingEnable_ = {},
14751                                                                               const void *                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
14752       : pNext{ pNext_ }
14753       , conditionalRenderingEnable{ conditionalRenderingEnable_ }
14754     {
14755     }
14756 
14757     VULKAN_HPP_CONSTEXPR
14758       CommandBufferInheritanceConditionalRenderingInfoEXT( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14759 
CommandBufferInheritanceConditionalRenderingInfoEXTVULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT14760     CommandBufferInheritanceConditionalRenderingInfoEXT( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
14761       : CommandBufferInheritanceConditionalRenderingInfoEXT( *reinterpret_cast<CommandBufferInheritanceConditionalRenderingInfoEXT const *>( &rhs ) )
14762     {
14763     }
14764 
14765     CommandBufferInheritanceConditionalRenderingInfoEXT &
14766       operator=( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14767 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14768 
operator =VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT14769     CommandBufferInheritanceConditionalRenderingInfoEXT & operator=( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
14770     {
14771       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT const *>( &rhs );
14772       return *this;
14773     }
14774 
14775 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT14776     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceConditionalRenderingInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
14777     {
14778       pNext = pNext_;
14779       return *this;
14780     }
14781 
14782     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceConditionalRenderingInfoEXT &
setConditionalRenderingEnableVULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT14783       setConditionalRenderingEnable( VULKAN_HPP_NAMESPACE::Bool32 conditionalRenderingEnable_ ) VULKAN_HPP_NOEXCEPT
14784     {
14785       conditionalRenderingEnable = conditionalRenderingEnable_;
14786       return *this;
14787     }
14788 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14789 
operator VkCommandBufferInheritanceConditionalRenderingInfoEXT const&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT14790     operator VkCommandBufferInheritanceConditionalRenderingInfoEXT const &() const VULKAN_HPP_NOEXCEPT
14791     {
14792       return *reinterpret_cast<const VkCommandBufferInheritanceConditionalRenderingInfoEXT *>( this );
14793     }
14794 
operator VkCommandBufferInheritanceConditionalRenderingInfoEXT&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT14795     operator VkCommandBufferInheritanceConditionalRenderingInfoEXT &() VULKAN_HPP_NOEXCEPT
14796     {
14797       return *reinterpret_cast<VkCommandBufferInheritanceConditionalRenderingInfoEXT *>( this );
14798     }
14799 
14800 #if defined( VULKAN_HPP_USE_REFLECT )
14801 #  if 14 <= VULKAN_HPP_CPP_VERSION
14802     auto
14803 #  else
14804     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
14805 #  endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT14806       reflect() const VULKAN_HPP_NOEXCEPT
14807     {
14808       return std::tie( sType, pNext, conditionalRenderingEnable );
14809     }
14810 #endif
14811 
14812 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14813     auto operator<=>( CommandBufferInheritanceConditionalRenderingInfoEXT const & ) const = default;
14814 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT14815     bool operator==( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
14816     {
14817 #  if defined( VULKAN_HPP_USE_REFLECT )
14818       return this->reflect() == rhs.reflect();
14819 #  else
14820       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( conditionalRenderingEnable == rhs.conditionalRenderingEnable );
14821 #  endif
14822     }
14823 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT14824     bool operator!=( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
14825     {
14826       return !operator==( rhs );
14827     }
14828 #endif
14829 
14830   public:
14831     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT;
14832     const void *                        pNext                      = {};
14833     VULKAN_HPP_NAMESPACE::Bool32        conditionalRenderingEnable = {};
14834   };
14835 
14836   template <>
14837   struct CppType<StructureType, StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT>
14838   {
14839     using Type = CommandBufferInheritanceConditionalRenderingInfoEXT;
14840   };
14841 
14842   struct CommandBufferInheritanceRenderPassTransformInfoQCOM
14843   {
14844     using NativeType = VkCommandBufferInheritanceRenderPassTransformInfoQCOM;
14845 
14846     static const bool                                  allowDuplicate = false;
14847     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandBufferInheritanceRenderPassTransformInfoQCOM;
14848 
14849 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferInheritanceRenderPassTransformInfoQCOMVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM14850     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceRenderPassTransformInfoQCOM(
14851       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_  = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
14852       VULKAN_HPP_NAMESPACE::Rect2D                      renderArea_ = {},
14853       void *                                            pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
14854       : pNext{ pNext_ }
14855       , transform{ transform_ }
14856       , renderArea{ renderArea_ }
14857     {
14858     }
14859 
14860     VULKAN_HPP_CONSTEXPR
14861       CommandBufferInheritanceRenderPassTransformInfoQCOM( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14862 
CommandBufferInheritanceRenderPassTransformInfoQCOMVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM14863     CommandBufferInheritanceRenderPassTransformInfoQCOM( VkCommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
14864       : CommandBufferInheritanceRenderPassTransformInfoQCOM( *reinterpret_cast<CommandBufferInheritanceRenderPassTransformInfoQCOM const *>( &rhs ) )
14865     {
14866     }
14867 
14868     CommandBufferInheritanceRenderPassTransformInfoQCOM &
14869       operator=( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14870 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14871 
operator =VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM14872     CommandBufferInheritanceRenderPassTransformInfoQCOM & operator=( VkCommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
14873     {
14874       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM const *>( &rhs );
14875       return *this;
14876     }
14877 
14878 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM14879     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderPassTransformInfoQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
14880     {
14881       pNext = pNext_;
14882       return *this;
14883     }
14884 
14885     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderPassTransformInfoQCOM &
setTransformVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM14886       setTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ ) VULKAN_HPP_NOEXCEPT
14887     {
14888       transform = transform_;
14889       return *this;
14890     }
14891 
14892     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderPassTransformInfoQCOM &
setRenderAreaVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM14893       setRenderArea( VULKAN_HPP_NAMESPACE::Rect2D const & renderArea_ ) VULKAN_HPP_NOEXCEPT
14894     {
14895       renderArea = renderArea_;
14896       return *this;
14897     }
14898 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14899 
operator VkCommandBufferInheritanceRenderPassTransformInfoQCOM const&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM14900     operator VkCommandBufferInheritanceRenderPassTransformInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
14901     {
14902       return *reinterpret_cast<const VkCommandBufferInheritanceRenderPassTransformInfoQCOM *>( this );
14903     }
14904 
operator VkCommandBufferInheritanceRenderPassTransformInfoQCOM&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM14905     operator VkCommandBufferInheritanceRenderPassTransformInfoQCOM &() VULKAN_HPP_NOEXCEPT
14906     {
14907       return *reinterpret_cast<VkCommandBufferInheritanceRenderPassTransformInfoQCOM *>( this );
14908     }
14909 
14910 #if defined( VULKAN_HPP_USE_REFLECT )
14911 #  if 14 <= VULKAN_HPP_CPP_VERSION
14912     auto
14913 #  else
14914     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
14915                void * const &,
14916                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &,
14917                VULKAN_HPP_NAMESPACE::Rect2D const &>
14918 #  endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM14919       reflect() const VULKAN_HPP_NOEXCEPT
14920     {
14921       return std::tie( sType, pNext, transform, renderArea );
14922     }
14923 #endif
14924 
14925 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
14926     auto operator<=>( CommandBufferInheritanceRenderPassTransformInfoQCOM const & ) const = default;
14927 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM14928     bool operator==( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
14929     {
14930 #  if defined( VULKAN_HPP_USE_REFLECT )
14931       return this->reflect() == rhs.reflect();
14932 #  else
14933       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( transform == rhs.transform ) && ( renderArea == rhs.renderArea );
14934 #  endif
14935     }
14936 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM14937     bool operator!=( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
14938     {
14939       return !operator==( rhs );
14940     }
14941 #endif
14942 
14943   public:
14944     VULKAN_HPP_NAMESPACE::StructureType               sType      = StructureType::eCommandBufferInheritanceRenderPassTransformInfoQCOM;
14945     void *                                            pNext      = {};
14946     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform  = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
14947     VULKAN_HPP_NAMESPACE::Rect2D                      renderArea = {};
14948   };
14949 
14950   template <>
14951   struct CppType<StructureType, StructureType::eCommandBufferInheritanceRenderPassTransformInfoQCOM>
14952   {
14953     using Type = CommandBufferInheritanceRenderPassTransformInfoQCOM;
14954   };
14955 
14956   struct CommandBufferInheritanceRenderingInfo
14957   {
14958     using NativeType = VkCommandBufferInheritanceRenderingInfo;
14959 
14960     static const bool                                  allowDuplicate = false;
14961     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandBufferInheritanceRenderingInfo;
14962 
14963 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
14964     VULKAN_HPP_CONSTEXPR
CommandBufferInheritanceRenderingInfoVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo14965       CommandBufferInheritanceRenderingInfo( VULKAN_HPP_NAMESPACE::RenderingFlags      flags_                   = {},
14966                                              uint32_t                                  viewMask_                = {},
14967                                              uint32_t                                  colorAttachmentCount_    = {},
14968                                              const VULKAN_HPP_NAMESPACE::Format *      pColorAttachmentFormats_ = {},
14969                                              VULKAN_HPP_NAMESPACE::Format              depthAttachmentFormat_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
14970                                              VULKAN_HPP_NAMESPACE::Format              stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
14971                                              VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_    = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
14972                                              const void *                              pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
14973       : pNext{ pNext_ }
14974       , flags{ flags_ }
14975       , viewMask{ viewMask_ }
14976       , colorAttachmentCount{ colorAttachmentCount_ }
14977       , pColorAttachmentFormats{ pColorAttachmentFormats_ }
14978       , depthAttachmentFormat{ depthAttachmentFormat_ }
14979       , stencilAttachmentFormat{ stencilAttachmentFormat_ }
14980       , rasterizationSamples{ rasterizationSamples_ }
14981     {
14982     }
14983 
14984     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceRenderingInfo( CommandBufferInheritanceRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14985 
CommandBufferInheritanceRenderingInfoVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo14986     CommandBufferInheritanceRenderingInfo( VkCommandBufferInheritanceRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT
14987       : CommandBufferInheritanceRenderingInfo( *reinterpret_cast<CommandBufferInheritanceRenderingInfo const *>( &rhs ) )
14988     {
14989     }
14990 
14991 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CommandBufferInheritanceRenderingInfoVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo14992     CommandBufferInheritanceRenderingInfo( VULKAN_HPP_NAMESPACE::RenderingFlags                                                      flags_,
14993                                            uint32_t                                                                                  viewMask_,
14994                                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & colorAttachmentFormats_,
14995                                            VULKAN_HPP_NAMESPACE::Format              depthAttachmentFormat_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
14996                                            VULKAN_HPP_NAMESPACE::Format              stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
14997                                            VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_    = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
14998                                            const void *                              pNext_                   = nullptr )
14999       : pNext( pNext_ )
15000       , flags( flags_ )
15001       , viewMask( viewMask_ )
15002       , colorAttachmentCount( static_cast<uint32_t>( colorAttachmentFormats_.size() ) )
15003       , pColorAttachmentFormats( colorAttachmentFormats_.data() )
15004       , depthAttachmentFormat( depthAttachmentFormat_ )
15005       , stencilAttachmentFormat( stencilAttachmentFormat_ )
15006       , rasterizationSamples( rasterizationSamples_ )
15007     {
15008     }
15009 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
15010 
15011     CommandBufferInheritanceRenderingInfo & operator=( CommandBufferInheritanceRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15012 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15013 
operator =VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15014     CommandBufferInheritanceRenderingInfo & operator=( VkCommandBufferInheritanceRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT
15015     {
15016       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo const *>( &rhs );
15017       return *this;
15018     }
15019 
15020 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15021     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
15022     {
15023       pNext = pNext_;
15024       return *this;
15025     }
15026 
setFlagsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15027     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setFlags( VULKAN_HPP_NAMESPACE::RenderingFlags flags_ ) VULKAN_HPP_NOEXCEPT
15028     {
15029       flags = flags_;
15030       return *this;
15031     }
15032 
setViewMaskVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15033     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT
15034     {
15035       viewMask = viewMask_;
15036       return *this;
15037     }
15038 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15039     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
15040     {
15041       colorAttachmentCount = colorAttachmentCount_;
15042       return *this;
15043     }
15044 
15045     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo &
setPColorAttachmentFormatsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15046       setPColorAttachmentFormats( const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT
15047     {
15048       pColorAttachmentFormats = pColorAttachmentFormats_;
15049       return *this;
15050     }
15051 
15052 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentFormatsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15053     CommandBufferInheritanceRenderingInfo & setColorAttachmentFormats(
15054       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & colorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT
15055     {
15056       colorAttachmentCount    = static_cast<uint32_t>( colorAttachmentFormats_.size() );
15057       pColorAttachmentFormats = colorAttachmentFormats_.data();
15058       return *this;
15059     }
15060 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
15061 
15062     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo &
setDepthAttachmentFormatVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15063       setDepthAttachmentFormat( VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT
15064     {
15065       depthAttachmentFormat = depthAttachmentFormat_;
15066       return *this;
15067     }
15068 
15069     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo &
setStencilAttachmentFormatVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15070       setStencilAttachmentFormat( VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT
15071     {
15072       stencilAttachmentFormat = stencilAttachmentFormat_;
15073       return *this;
15074     }
15075 
15076     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo &
setRasterizationSamplesVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15077       setRasterizationSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ ) VULKAN_HPP_NOEXCEPT
15078     {
15079       rasterizationSamples = rasterizationSamples_;
15080       return *this;
15081     }
15082 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15083 
operator VkCommandBufferInheritanceRenderingInfo const&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15084     operator VkCommandBufferInheritanceRenderingInfo const &() const VULKAN_HPP_NOEXCEPT
15085     {
15086       return *reinterpret_cast<const VkCommandBufferInheritanceRenderingInfo *>( this );
15087     }
15088 
operator VkCommandBufferInheritanceRenderingInfo&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15089     operator VkCommandBufferInheritanceRenderingInfo &() VULKAN_HPP_NOEXCEPT
15090     {
15091       return *reinterpret_cast<VkCommandBufferInheritanceRenderingInfo *>( this );
15092     }
15093 
15094 #if defined( VULKAN_HPP_USE_REFLECT )
15095 #  if 14 <= VULKAN_HPP_CPP_VERSION
15096     auto
15097 #  else
15098     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
15099                const void * const &,
15100                VULKAN_HPP_NAMESPACE::RenderingFlags const &,
15101                uint32_t const &,
15102                uint32_t const &,
15103                const VULKAN_HPP_NAMESPACE::Format * const &,
15104                VULKAN_HPP_NAMESPACE::Format const &,
15105                VULKAN_HPP_NAMESPACE::Format const &,
15106                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &>
15107 #  endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15108       reflect() const VULKAN_HPP_NOEXCEPT
15109     {
15110       return std::tie(
15111         sType, pNext, flags, viewMask, colorAttachmentCount, pColorAttachmentFormats, depthAttachmentFormat, stencilAttachmentFormat, rasterizationSamples );
15112     }
15113 #endif
15114 
15115 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15116     auto operator<=>( CommandBufferInheritanceRenderingInfo const & ) const = default;
15117 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15118     bool operator==( CommandBufferInheritanceRenderingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
15119     {
15120 #  if defined( VULKAN_HPP_USE_REFLECT )
15121       return this->reflect() == rhs.reflect();
15122 #  else
15123       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( viewMask == rhs.viewMask ) &&
15124              ( colorAttachmentCount == rhs.colorAttachmentCount ) && ( pColorAttachmentFormats == rhs.pColorAttachmentFormats ) &&
15125              ( depthAttachmentFormat == rhs.depthAttachmentFormat ) && ( stencilAttachmentFormat == rhs.stencilAttachmentFormat ) &&
15126              ( rasterizationSamples == rhs.rasterizationSamples );
15127 #  endif
15128     }
15129 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo15130     bool operator!=( CommandBufferInheritanceRenderingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
15131     {
15132       return !operator==( rhs );
15133     }
15134 #endif
15135 
15136   public:
15137     VULKAN_HPP_NAMESPACE::StructureType       sType                   = StructureType::eCommandBufferInheritanceRenderingInfo;
15138     const void *                              pNext                   = {};
15139     VULKAN_HPP_NAMESPACE::RenderingFlags      flags                   = {};
15140     uint32_t                                  viewMask                = {};
15141     uint32_t                                  colorAttachmentCount    = {};
15142     const VULKAN_HPP_NAMESPACE::Format *      pColorAttachmentFormats = {};
15143     VULKAN_HPP_NAMESPACE::Format              depthAttachmentFormat   = VULKAN_HPP_NAMESPACE::Format::eUndefined;
15144     VULKAN_HPP_NAMESPACE::Format              stencilAttachmentFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined;
15145     VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples    = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
15146   };
15147 
15148   template <>
15149   struct CppType<StructureType, StructureType::eCommandBufferInheritanceRenderingInfo>
15150   {
15151     using Type = CommandBufferInheritanceRenderingInfo;
15152   };
15153 
15154   using CommandBufferInheritanceRenderingInfoKHR = CommandBufferInheritanceRenderingInfo;
15155 
15156   struct Viewport
15157   {
15158     using NativeType = VkViewport;
15159 
15160 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
15161     VULKAN_HPP_CONSTEXPR
ViewportVULKAN_HPP_NAMESPACE::Viewport15162       Viewport( float x_ = {}, float y_ = {}, float width_ = {}, float height_ = {}, float minDepth_ = {}, float maxDepth_ = {} ) VULKAN_HPP_NOEXCEPT
15163       : x{ x_ }
15164       , y{ y_ }
15165       , width{ width_ }
15166       , height{ height_ }
15167       , minDepth{ minDepth_ }
15168       , maxDepth{ maxDepth_ }
15169     {
15170     }
15171 
15172     VULKAN_HPP_CONSTEXPR Viewport( Viewport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15173 
ViewportVULKAN_HPP_NAMESPACE::Viewport15174     Viewport( VkViewport const & rhs ) VULKAN_HPP_NOEXCEPT : Viewport( *reinterpret_cast<Viewport const *>( &rhs ) ) {}
15175 
15176     Viewport & operator=( Viewport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15177 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15178 
operator =VULKAN_HPP_NAMESPACE::Viewport15179     Viewport & operator=( VkViewport const & rhs ) VULKAN_HPP_NOEXCEPT
15180     {
15181       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Viewport const *>( &rhs );
15182       return *this;
15183     }
15184 
15185 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::Viewport15186     VULKAN_HPP_CONSTEXPR_14 Viewport & setX( float x_ ) VULKAN_HPP_NOEXCEPT
15187     {
15188       x = x_;
15189       return *this;
15190     }
15191 
setYVULKAN_HPP_NAMESPACE::Viewport15192     VULKAN_HPP_CONSTEXPR_14 Viewport & setY( float y_ ) VULKAN_HPP_NOEXCEPT
15193     {
15194       y = y_;
15195       return *this;
15196     }
15197 
setWidthVULKAN_HPP_NAMESPACE::Viewport15198     VULKAN_HPP_CONSTEXPR_14 Viewport & setWidth( float width_ ) VULKAN_HPP_NOEXCEPT
15199     {
15200       width = width_;
15201       return *this;
15202     }
15203 
setHeightVULKAN_HPP_NAMESPACE::Viewport15204     VULKAN_HPP_CONSTEXPR_14 Viewport & setHeight( float height_ ) VULKAN_HPP_NOEXCEPT
15205     {
15206       height = height_;
15207       return *this;
15208     }
15209 
setMinDepthVULKAN_HPP_NAMESPACE::Viewport15210     VULKAN_HPP_CONSTEXPR_14 Viewport & setMinDepth( float minDepth_ ) VULKAN_HPP_NOEXCEPT
15211     {
15212       minDepth = minDepth_;
15213       return *this;
15214     }
15215 
setMaxDepthVULKAN_HPP_NAMESPACE::Viewport15216     VULKAN_HPP_CONSTEXPR_14 Viewport & setMaxDepth( float maxDepth_ ) VULKAN_HPP_NOEXCEPT
15217     {
15218       maxDepth = maxDepth_;
15219       return *this;
15220     }
15221 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15222 
operator VkViewport const&VULKAN_HPP_NAMESPACE::Viewport15223     operator VkViewport const &() const VULKAN_HPP_NOEXCEPT
15224     {
15225       return *reinterpret_cast<const VkViewport *>( this );
15226     }
15227 
operator VkViewport&VULKAN_HPP_NAMESPACE::Viewport15228     operator VkViewport &() VULKAN_HPP_NOEXCEPT
15229     {
15230       return *reinterpret_cast<VkViewport *>( this );
15231     }
15232 
15233 #if defined( VULKAN_HPP_USE_REFLECT )
15234 #  if 14 <= VULKAN_HPP_CPP_VERSION
15235     auto
15236 #  else
15237     std::tuple<float const &, float const &, float const &, float const &, float const &, float const &>
15238 #  endif
reflectVULKAN_HPP_NAMESPACE::Viewport15239       reflect() const VULKAN_HPP_NOEXCEPT
15240     {
15241       return std::tie( x, y, width, height, minDepth, maxDepth );
15242     }
15243 #endif
15244 
15245 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15246     auto operator<=>( Viewport const & ) const = default;
15247 #else
operator ==VULKAN_HPP_NAMESPACE::Viewport15248     bool operator==( Viewport const & rhs ) const VULKAN_HPP_NOEXCEPT
15249     {
15250 #  if defined( VULKAN_HPP_USE_REFLECT )
15251       return this->reflect() == rhs.reflect();
15252 #  else
15253       return ( x == rhs.x ) && ( y == rhs.y ) && ( width == rhs.width ) && ( height == rhs.height ) && ( minDepth == rhs.minDepth ) &&
15254              ( maxDepth == rhs.maxDepth );
15255 #  endif
15256     }
15257 
operator !=VULKAN_HPP_NAMESPACE::Viewport15258     bool operator!=( Viewport const & rhs ) const VULKAN_HPP_NOEXCEPT
15259     {
15260       return !operator==( rhs );
15261     }
15262 #endif
15263 
15264   public:
15265     float x        = {};
15266     float y        = {};
15267     float width    = {};
15268     float height   = {};
15269     float minDepth = {};
15270     float maxDepth = {};
15271   };
15272 
15273   struct CommandBufferInheritanceViewportScissorInfoNV
15274   {
15275     using NativeType = VkCommandBufferInheritanceViewportScissorInfoNV;
15276 
15277     static const bool                                  allowDuplicate = false;
15278     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandBufferInheritanceViewportScissorInfoNV;
15279 
15280 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferInheritanceViewportScissorInfoNVVULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15281     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceViewportScissorInfoNV( VULKAN_HPP_NAMESPACE::Bool32           viewportScissor2D_  = {},
15282                                                                         uint32_t                               viewportDepthCount_ = {},
15283                                                                         const VULKAN_HPP_NAMESPACE::Viewport * pViewportDepths_    = {},
15284                                                                         const void *                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
15285       : pNext{ pNext_ }
15286       , viewportScissor2D{ viewportScissor2D_ }
15287       , viewportDepthCount{ viewportDepthCount_ }
15288       , pViewportDepths{ pViewportDepths_ }
15289     {
15290     }
15291 
15292     VULKAN_HPP_CONSTEXPR
15293       CommandBufferInheritanceViewportScissorInfoNV( CommandBufferInheritanceViewportScissorInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15294 
CommandBufferInheritanceViewportScissorInfoNVVULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15295     CommandBufferInheritanceViewportScissorInfoNV( VkCommandBufferInheritanceViewportScissorInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
15296       : CommandBufferInheritanceViewportScissorInfoNV( *reinterpret_cast<CommandBufferInheritanceViewportScissorInfoNV const *>( &rhs ) )
15297     {
15298     }
15299 
15300     CommandBufferInheritanceViewportScissorInfoNV & operator=( CommandBufferInheritanceViewportScissorInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15301 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15302 
operator =VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15303     CommandBufferInheritanceViewportScissorInfoNV & operator=( VkCommandBufferInheritanceViewportScissorInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
15304     {
15305       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV const *>( &rhs );
15306       return *this;
15307     }
15308 
15309 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15310     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
15311     {
15312       pNext = pNext_;
15313       return *this;
15314     }
15315 
15316     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV &
setViewportScissor2DVULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15317       setViewportScissor2D( VULKAN_HPP_NAMESPACE::Bool32 viewportScissor2D_ ) VULKAN_HPP_NOEXCEPT
15318     {
15319       viewportScissor2D = viewportScissor2D_;
15320       return *this;
15321     }
15322 
setViewportDepthCountVULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15323     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV & setViewportDepthCount( uint32_t viewportDepthCount_ ) VULKAN_HPP_NOEXCEPT
15324     {
15325       viewportDepthCount = viewportDepthCount_;
15326       return *this;
15327     }
15328 
15329     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV &
setPViewportDepthsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15330       setPViewportDepths( const VULKAN_HPP_NAMESPACE::Viewport * pViewportDepths_ ) VULKAN_HPP_NOEXCEPT
15331     {
15332       pViewportDepths = pViewportDepths_;
15333       return *this;
15334     }
15335 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15336 
operator VkCommandBufferInheritanceViewportScissorInfoNV const&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15337     operator VkCommandBufferInheritanceViewportScissorInfoNV const &() const VULKAN_HPP_NOEXCEPT
15338     {
15339       return *reinterpret_cast<const VkCommandBufferInheritanceViewportScissorInfoNV *>( this );
15340     }
15341 
operator VkCommandBufferInheritanceViewportScissorInfoNV&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15342     operator VkCommandBufferInheritanceViewportScissorInfoNV &() VULKAN_HPP_NOEXCEPT
15343     {
15344       return *reinterpret_cast<VkCommandBufferInheritanceViewportScissorInfoNV *>( this );
15345     }
15346 
15347 #if defined( VULKAN_HPP_USE_REFLECT )
15348 #  if 14 <= VULKAN_HPP_CPP_VERSION
15349     auto
15350 #  else
15351     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
15352                const void * const &,
15353                VULKAN_HPP_NAMESPACE::Bool32 const &,
15354                uint32_t const &,
15355                const VULKAN_HPP_NAMESPACE::Viewport * const &>
15356 #  endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15357       reflect() const VULKAN_HPP_NOEXCEPT
15358     {
15359       return std::tie( sType, pNext, viewportScissor2D, viewportDepthCount, pViewportDepths );
15360     }
15361 #endif
15362 
15363 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15364     auto operator<=>( CommandBufferInheritanceViewportScissorInfoNV const & ) const = default;
15365 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15366     bool operator==( CommandBufferInheritanceViewportScissorInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
15367     {
15368 #  if defined( VULKAN_HPP_USE_REFLECT )
15369       return this->reflect() == rhs.reflect();
15370 #  else
15371       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( viewportScissor2D == rhs.viewportScissor2D ) &&
15372              ( viewportDepthCount == rhs.viewportDepthCount ) && ( pViewportDepths == rhs.pViewportDepths );
15373 #  endif
15374     }
15375 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV15376     bool operator!=( CommandBufferInheritanceViewportScissorInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
15377     {
15378       return !operator==( rhs );
15379     }
15380 #endif
15381 
15382   public:
15383     VULKAN_HPP_NAMESPACE::StructureType    sType              = StructureType::eCommandBufferInheritanceViewportScissorInfoNV;
15384     const void *                           pNext              = {};
15385     VULKAN_HPP_NAMESPACE::Bool32           viewportScissor2D  = {};
15386     uint32_t                               viewportDepthCount = {};
15387     const VULKAN_HPP_NAMESPACE::Viewport * pViewportDepths    = {};
15388   };
15389 
15390   template <>
15391   struct CppType<StructureType, StructureType::eCommandBufferInheritanceViewportScissorInfoNV>
15392   {
15393     using Type = CommandBufferInheritanceViewportScissorInfoNV;
15394   };
15395 
15396   struct CommandBufferSubmitInfo
15397   {
15398     using NativeType = VkCommandBufferSubmitInfo;
15399 
15400     static const bool                                  allowDuplicate = false;
15401     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandBufferSubmitInfo;
15402 
15403 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferSubmitInfoVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15404     VULKAN_HPP_CONSTEXPR CommandBufferSubmitInfo( VULKAN_HPP_NAMESPACE::CommandBuffer commandBuffer_ = {},
15405                                                   uint32_t                            deviceMask_    = {},
15406                                                   const void *                        pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
15407       : pNext{ pNext_ }
15408       , commandBuffer{ commandBuffer_ }
15409       , deviceMask{ deviceMask_ }
15410     {
15411     }
15412 
15413     VULKAN_HPP_CONSTEXPR CommandBufferSubmitInfo( CommandBufferSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15414 
CommandBufferSubmitInfoVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15415     CommandBufferSubmitInfo( VkCommandBufferSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
15416       : CommandBufferSubmitInfo( *reinterpret_cast<CommandBufferSubmitInfo const *>( &rhs ) )
15417     {
15418     }
15419 
15420     CommandBufferSubmitInfo & operator=( CommandBufferSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15421 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15422 
operator =VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15423     CommandBufferSubmitInfo & operator=( VkCommandBufferSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
15424     {
15425       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo const *>( &rhs );
15426       return *this;
15427     }
15428 
15429 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15430     VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
15431     {
15432       pNext = pNext_;
15433       return *this;
15434     }
15435 
setCommandBufferVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15436     VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfo & setCommandBuffer( VULKAN_HPP_NAMESPACE::CommandBuffer commandBuffer_ ) VULKAN_HPP_NOEXCEPT
15437     {
15438       commandBuffer = commandBuffer_;
15439       return *this;
15440     }
15441 
setDeviceMaskVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15442     VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfo & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT
15443     {
15444       deviceMask = deviceMask_;
15445       return *this;
15446     }
15447 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15448 
operator VkCommandBufferSubmitInfo const&VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15449     operator VkCommandBufferSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
15450     {
15451       return *reinterpret_cast<const VkCommandBufferSubmitInfo *>( this );
15452     }
15453 
operator VkCommandBufferSubmitInfo&VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15454     operator VkCommandBufferSubmitInfo &() VULKAN_HPP_NOEXCEPT
15455     {
15456       return *reinterpret_cast<VkCommandBufferSubmitInfo *>( this );
15457     }
15458 
15459 #if defined( VULKAN_HPP_USE_REFLECT )
15460 #  if 14 <= VULKAN_HPP_CPP_VERSION
15461     auto
15462 #  else
15463     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::CommandBuffer const &, uint32_t const &>
15464 #  endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15465       reflect() const VULKAN_HPP_NOEXCEPT
15466     {
15467       return std::tie( sType, pNext, commandBuffer, deviceMask );
15468     }
15469 #endif
15470 
15471 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15472     auto operator<=>( CommandBufferSubmitInfo const & ) const = default;
15473 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15474     bool operator==( CommandBufferSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
15475     {
15476 #  if defined( VULKAN_HPP_USE_REFLECT )
15477       return this->reflect() == rhs.reflect();
15478 #  else
15479       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( commandBuffer == rhs.commandBuffer ) && ( deviceMask == rhs.deviceMask );
15480 #  endif
15481     }
15482 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo15483     bool operator!=( CommandBufferSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
15484     {
15485       return !operator==( rhs );
15486     }
15487 #endif
15488 
15489   public:
15490     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eCommandBufferSubmitInfo;
15491     const void *                        pNext         = {};
15492     VULKAN_HPP_NAMESPACE::CommandBuffer commandBuffer = {};
15493     uint32_t                            deviceMask    = {};
15494   };
15495 
15496   template <>
15497   struct CppType<StructureType, StructureType::eCommandBufferSubmitInfo>
15498   {
15499     using Type = CommandBufferSubmitInfo;
15500   };
15501 
15502   using CommandBufferSubmitInfoKHR = CommandBufferSubmitInfo;
15503 
15504   struct CommandPoolCreateInfo
15505   {
15506     using NativeType = VkCommandPoolCreateInfo;
15507 
15508     static const bool                                  allowDuplicate = false;
15509     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCommandPoolCreateInfo;
15510 
15511 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandPoolCreateInfoVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15512     VULKAN_HPP_CONSTEXPR CommandPoolCreateInfo( VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags flags_            = {},
15513                                                 uint32_t                                     queueFamilyIndex_ = {},
15514                                                 const void *                                 pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
15515       : pNext{ pNext_ }
15516       , flags{ flags_ }
15517       , queueFamilyIndex{ queueFamilyIndex_ }
15518     {
15519     }
15520 
15521     VULKAN_HPP_CONSTEXPR CommandPoolCreateInfo( CommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15522 
CommandPoolCreateInfoVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15523     CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
15524       : CommandPoolCreateInfo( *reinterpret_cast<CommandPoolCreateInfo const *>( &rhs ) )
15525     {
15526     }
15527 
15528     CommandPoolCreateInfo & operator=( CommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15529 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15530 
operator =VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15531     CommandPoolCreateInfo & operator=( VkCommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
15532     {
15533       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo const *>( &rhs );
15534       return *this;
15535     }
15536 
15537 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15538     VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
15539     {
15540       pNext = pNext_;
15541       return *this;
15542     }
15543 
setFlagsVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15544     VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
15545     {
15546       flags = flags_;
15547       return *this;
15548     }
15549 
setQueueFamilyIndexVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15550     VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
15551     {
15552       queueFamilyIndex = queueFamilyIndex_;
15553       return *this;
15554     }
15555 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15556 
operator VkCommandPoolCreateInfo const&VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15557     operator VkCommandPoolCreateInfo const &() const VULKAN_HPP_NOEXCEPT
15558     {
15559       return *reinterpret_cast<const VkCommandPoolCreateInfo *>( this );
15560     }
15561 
operator VkCommandPoolCreateInfo&VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15562     operator VkCommandPoolCreateInfo &() VULKAN_HPP_NOEXCEPT
15563     {
15564       return *reinterpret_cast<VkCommandPoolCreateInfo *>( this );
15565     }
15566 
15567 #if defined( VULKAN_HPP_USE_REFLECT )
15568 #  if 14 <= VULKAN_HPP_CPP_VERSION
15569     auto
15570 #  else
15571     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags const &, uint32_t const &>
15572 #  endif
reflectVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15573       reflect() const VULKAN_HPP_NOEXCEPT
15574     {
15575       return std::tie( sType, pNext, flags, queueFamilyIndex );
15576     }
15577 #endif
15578 
15579 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15580     auto operator<=>( CommandPoolCreateInfo const & ) const = default;
15581 #else
operator ==VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15582     bool operator==( CommandPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
15583     {
15584 #  if defined( VULKAN_HPP_USE_REFLECT )
15585       return this->reflect() == rhs.reflect();
15586 #  else
15587       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( queueFamilyIndex == rhs.queueFamilyIndex );
15588 #  endif
15589     }
15590 
operator !=VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo15591     bool operator!=( CommandPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
15592     {
15593       return !operator==( rhs );
15594     }
15595 #endif
15596 
15597   public:
15598     VULKAN_HPP_NAMESPACE::StructureType          sType            = StructureType::eCommandPoolCreateInfo;
15599     const void *                                 pNext            = {};
15600     VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags flags            = {};
15601     uint32_t                                     queueFamilyIndex = {};
15602   };
15603 
15604   template <>
15605   struct CppType<StructureType, StructureType::eCommandPoolCreateInfo>
15606   {
15607     using Type = CommandPoolCreateInfo;
15608   };
15609 
15610   struct SpecializationMapEntry
15611   {
15612     using NativeType = VkSpecializationMapEntry;
15613 
15614 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SpecializationMapEntryVULKAN_HPP_NAMESPACE::SpecializationMapEntry15615     VULKAN_HPP_CONSTEXPR SpecializationMapEntry( uint32_t constantID_ = {}, uint32_t offset_ = {}, size_t size_ = {} ) VULKAN_HPP_NOEXCEPT
15616       : constantID{ constantID_ }
15617       , offset{ offset_ }
15618       , size{ size_ }
15619     {
15620     }
15621 
15622     VULKAN_HPP_CONSTEXPR SpecializationMapEntry( SpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15623 
SpecializationMapEntryVULKAN_HPP_NAMESPACE::SpecializationMapEntry15624     SpecializationMapEntry( VkSpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT
15625       : SpecializationMapEntry( *reinterpret_cast<SpecializationMapEntry const *>( &rhs ) )
15626     {
15627     }
15628 
15629     SpecializationMapEntry & operator=( SpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15630 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15631 
operator =VULKAN_HPP_NAMESPACE::SpecializationMapEntry15632     SpecializationMapEntry & operator=( VkSpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT
15633     {
15634       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SpecializationMapEntry const *>( &rhs );
15635       return *this;
15636     }
15637 
15638 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setConstantIDVULKAN_HPP_NAMESPACE::SpecializationMapEntry15639     VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry & setConstantID( uint32_t constantID_ ) VULKAN_HPP_NOEXCEPT
15640     {
15641       constantID = constantID_;
15642       return *this;
15643     }
15644 
setOffsetVULKAN_HPP_NAMESPACE::SpecializationMapEntry15645     VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT
15646     {
15647       offset = offset_;
15648       return *this;
15649     }
15650 
setSizeVULKAN_HPP_NAMESPACE::SpecializationMapEntry15651     VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry & setSize( size_t size_ ) VULKAN_HPP_NOEXCEPT
15652     {
15653       size = size_;
15654       return *this;
15655     }
15656 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15657 
operator VkSpecializationMapEntry const&VULKAN_HPP_NAMESPACE::SpecializationMapEntry15658     operator VkSpecializationMapEntry const &() const VULKAN_HPP_NOEXCEPT
15659     {
15660       return *reinterpret_cast<const VkSpecializationMapEntry *>( this );
15661     }
15662 
operator VkSpecializationMapEntry&VULKAN_HPP_NAMESPACE::SpecializationMapEntry15663     operator VkSpecializationMapEntry &() VULKAN_HPP_NOEXCEPT
15664     {
15665       return *reinterpret_cast<VkSpecializationMapEntry *>( this );
15666     }
15667 
15668 #if defined( VULKAN_HPP_USE_REFLECT )
15669 #  if 14 <= VULKAN_HPP_CPP_VERSION
15670     auto
15671 #  else
15672     std::tuple<uint32_t const &, uint32_t const &, size_t const &>
15673 #  endif
reflectVULKAN_HPP_NAMESPACE::SpecializationMapEntry15674       reflect() const VULKAN_HPP_NOEXCEPT
15675     {
15676       return std::tie( constantID, offset, size );
15677     }
15678 #endif
15679 
15680 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15681     auto operator<=>( SpecializationMapEntry const & ) const = default;
15682 #else
operator ==VULKAN_HPP_NAMESPACE::SpecializationMapEntry15683     bool operator==( SpecializationMapEntry const & rhs ) const VULKAN_HPP_NOEXCEPT
15684     {
15685 #  if defined( VULKAN_HPP_USE_REFLECT )
15686       return this->reflect() == rhs.reflect();
15687 #  else
15688       return ( constantID == rhs.constantID ) && ( offset == rhs.offset ) && ( size == rhs.size );
15689 #  endif
15690     }
15691 
operator !=VULKAN_HPP_NAMESPACE::SpecializationMapEntry15692     bool operator!=( SpecializationMapEntry const & rhs ) const VULKAN_HPP_NOEXCEPT
15693     {
15694       return !operator==( rhs );
15695     }
15696 #endif
15697 
15698   public:
15699     uint32_t constantID = {};
15700     uint32_t offset     = {};
15701     size_t   size       = {};
15702   };
15703 
15704   struct SpecializationInfo
15705   {
15706     using NativeType = VkSpecializationInfo;
15707 
15708 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SpecializationInfoVULKAN_HPP_NAMESPACE::SpecializationInfo15709     VULKAN_HPP_CONSTEXPR SpecializationInfo( uint32_t                                             mapEntryCount_ = {},
15710                                              const VULKAN_HPP_NAMESPACE::SpecializationMapEntry * pMapEntries_   = {},
15711                                              size_t                                               dataSize_      = {},
15712                                              const void *                                         pData_         = {} ) VULKAN_HPP_NOEXCEPT
15713       : mapEntryCount{ mapEntryCount_ }
15714       , pMapEntries{ pMapEntries_ }
15715       , dataSize{ dataSize_ }
15716       , pData{ pData_ }
15717     {
15718     }
15719 
15720     VULKAN_HPP_CONSTEXPR SpecializationInfo( SpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15721 
SpecializationInfoVULKAN_HPP_NAMESPACE::SpecializationInfo15722     SpecializationInfo( VkSpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SpecializationInfo( *reinterpret_cast<SpecializationInfo const *>( &rhs ) ) {}
15723 
15724 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
15725     template <typename T>
SpecializationInfoVULKAN_HPP_NAMESPACE::SpecializationInfo15726     SpecializationInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SpecializationMapEntry> const & mapEntries_,
15727                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const &                                            data_ = {} )
15728       : mapEntryCount( static_cast<uint32_t>( mapEntries_.size() ) )
15729       , pMapEntries( mapEntries_.data() )
15730       , dataSize( data_.size() * sizeof( T ) )
15731       , pData( data_.data() )
15732     {
15733     }
15734 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
15735 
15736     SpecializationInfo & operator=( SpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15737 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15738 
operator =VULKAN_HPP_NAMESPACE::SpecializationInfo15739     SpecializationInfo & operator=( VkSpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT
15740     {
15741       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SpecializationInfo const *>( &rhs );
15742       return *this;
15743     }
15744 
15745 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setMapEntryCountVULKAN_HPP_NAMESPACE::SpecializationInfo15746     VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setMapEntryCount( uint32_t mapEntryCount_ ) VULKAN_HPP_NOEXCEPT
15747     {
15748       mapEntryCount = mapEntryCount_;
15749       return *this;
15750     }
15751 
setPMapEntriesVULKAN_HPP_NAMESPACE::SpecializationInfo15752     VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setPMapEntries( const VULKAN_HPP_NAMESPACE::SpecializationMapEntry * pMapEntries_ ) VULKAN_HPP_NOEXCEPT
15753     {
15754       pMapEntries = pMapEntries_;
15755       return *this;
15756     }
15757 
15758 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
15759     SpecializationInfo &
setMapEntriesVULKAN_HPP_NAMESPACE::SpecializationInfo15760       setMapEntries( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SpecializationMapEntry> const & mapEntries_ ) VULKAN_HPP_NOEXCEPT
15761     {
15762       mapEntryCount = static_cast<uint32_t>( mapEntries_.size() );
15763       pMapEntries   = mapEntries_.data();
15764       return *this;
15765     }
15766 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
15767 
setDataSizeVULKAN_HPP_NAMESPACE::SpecializationInfo15768     VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setDataSize( size_t dataSize_ ) VULKAN_HPP_NOEXCEPT
15769     {
15770       dataSize = dataSize_;
15771       return *this;
15772     }
15773 
setPDataVULKAN_HPP_NAMESPACE::SpecializationInfo15774     VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setPData( const void * pData_ ) VULKAN_HPP_NOEXCEPT
15775     {
15776       pData = pData_;
15777       return *this;
15778     }
15779 
15780 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
15781     template <typename T>
setDataVULKAN_HPP_NAMESPACE::SpecializationInfo15782     SpecializationInfo & setData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_ ) VULKAN_HPP_NOEXCEPT
15783     {
15784       dataSize = data_.size() * sizeof( T );
15785       pData    = data_.data();
15786       return *this;
15787     }
15788 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
15789 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15790 
operator VkSpecializationInfo const&VULKAN_HPP_NAMESPACE::SpecializationInfo15791     operator VkSpecializationInfo const &() const VULKAN_HPP_NOEXCEPT
15792     {
15793       return *reinterpret_cast<const VkSpecializationInfo *>( this );
15794     }
15795 
operator VkSpecializationInfo&VULKAN_HPP_NAMESPACE::SpecializationInfo15796     operator VkSpecializationInfo &() VULKAN_HPP_NOEXCEPT
15797     {
15798       return *reinterpret_cast<VkSpecializationInfo *>( this );
15799     }
15800 
15801 #if defined( VULKAN_HPP_USE_REFLECT )
15802 #  if 14 <= VULKAN_HPP_CPP_VERSION
15803     auto
15804 #  else
15805     std::tuple<uint32_t const &, const VULKAN_HPP_NAMESPACE::SpecializationMapEntry * const &, size_t const &, const void * const &>
15806 #  endif
reflectVULKAN_HPP_NAMESPACE::SpecializationInfo15807       reflect() const VULKAN_HPP_NOEXCEPT
15808     {
15809       return std::tie( mapEntryCount, pMapEntries, dataSize, pData );
15810     }
15811 #endif
15812 
15813 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
15814     auto operator<=>( SpecializationInfo const & ) const = default;
15815 #else
operator ==VULKAN_HPP_NAMESPACE::SpecializationInfo15816     bool operator==( SpecializationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
15817     {
15818 #  if defined( VULKAN_HPP_USE_REFLECT )
15819       return this->reflect() == rhs.reflect();
15820 #  else
15821       return ( mapEntryCount == rhs.mapEntryCount ) && ( pMapEntries == rhs.pMapEntries ) && ( dataSize == rhs.dataSize ) && ( pData == rhs.pData );
15822 #  endif
15823     }
15824 
operator !=VULKAN_HPP_NAMESPACE::SpecializationInfo15825     bool operator!=( SpecializationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
15826     {
15827       return !operator==( rhs );
15828     }
15829 #endif
15830 
15831   public:
15832     uint32_t                                             mapEntryCount = {};
15833     const VULKAN_HPP_NAMESPACE::SpecializationMapEntry * pMapEntries   = {};
15834     size_t                                               dataSize      = {};
15835     const void *                                         pData         = {};
15836   };
15837 
15838   struct PipelineShaderStageCreateInfo
15839   {
15840     using NativeType = VkPipelineShaderStageCreateInfo;
15841 
15842     static const bool                                  allowDuplicate = false;
15843     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineShaderStageCreateInfo;
15844 
15845 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineShaderStageCreateInfoVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo15846     VULKAN_HPP_CONSTEXPR PipelineShaderStageCreateInfo( VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags flags_ = {},
15847                                                         VULKAN_HPP_NAMESPACE::ShaderStageFlagBits stage_  = VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eVertex,
15848                                                         VULKAN_HPP_NAMESPACE::ShaderModule        module_ = {},
15849                                                         const char *                              pName_  = {},
15850                                                         const VULKAN_HPP_NAMESPACE::SpecializationInfo * pSpecializationInfo_ = {},
15851                                                         const void *                                     pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
15852       : pNext{ pNext_ }
15853       , flags{ flags_ }
15854       , stage{ stage_ }
15855       , module{ module_ }
15856       , pName{ pName_ }
15857       , pSpecializationInfo{ pSpecializationInfo_ }
15858     {
15859     }
15860 
15861     VULKAN_HPP_CONSTEXPR PipelineShaderStageCreateInfo( PipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15862 
PipelineShaderStageCreateInfoVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo15863     PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
15864       : PipelineShaderStageCreateInfo( *reinterpret_cast<PipelineShaderStageCreateInfo const *>( &rhs ) )
15865     {
15866     }
15867 
15868     PipelineShaderStageCreateInfo & operator=( PipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15869 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15870 
operator =VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo15871     PipelineShaderStageCreateInfo & operator=( VkPipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
15872     {
15873       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo const *>( &rhs );
15874       return *this;
15875     }
15876 
15877 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo15878     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
15879     {
15880       pNext = pNext_;
15881       return *this;
15882     }
15883 
setFlagsVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo15884     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
15885     {
15886       flags = flags_;
15887       return *this;
15888     }
15889 
setStageVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo15890     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setStage( VULKAN_HPP_NAMESPACE::ShaderStageFlagBits stage_ ) VULKAN_HPP_NOEXCEPT
15891     {
15892       stage = stage_;
15893       return *this;
15894     }
15895 
setModuleVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo15896     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setModule( VULKAN_HPP_NAMESPACE::ShaderModule module_ ) VULKAN_HPP_NOEXCEPT
15897     {
15898       module = module_;
15899       return *this;
15900     }
15901 
setPNameVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo15902     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setPName( const char * pName_ ) VULKAN_HPP_NOEXCEPT
15903     {
15904       pName = pName_;
15905       return *this;
15906     }
15907 
15908     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo &
setPSpecializationInfoVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo15909       setPSpecializationInfo( const VULKAN_HPP_NAMESPACE::SpecializationInfo * pSpecializationInfo_ ) VULKAN_HPP_NOEXCEPT
15910     {
15911       pSpecializationInfo = pSpecializationInfo_;
15912       return *this;
15913     }
15914 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15915 
operator VkPipelineShaderStageCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo15916     operator VkPipelineShaderStageCreateInfo const &() const VULKAN_HPP_NOEXCEPT
15917     {
15918       return *reinterpret_cast<const VkPipelineShaderStageCreateInfo *>( this );
15919     }
15920 
operator VkPipelineShaderStageCreateInfo&VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo15921     operator VkPipelineShaderStageCreateInfo &() VULKAN_HPP_NOEXCEPT
15922     {
15923       return *reinterpret_cast<VkPipelineShaderStageCreateInfo *>( this );
15924     }
15925 
15926 #if defined( VULKAN_HPP_USE_REFLECT )
15927 #  if 14 <= VULKAN_HPP_CPP_VERSION
15928     auto
15929 #  else
15930     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
15931                const void * const &,
15932                VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags const &,
15933                VULKAN_HPP_NAMESPACE::ShaderStageFlagBits const &,
15934                VULKAN_HPP_NAMESPACE::ShaderModule const &,
15935                const char * const &,
15936                const VULKAN_HPP_NAMESPACE::SpecializationInfo * const &>
15937 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo15938       reflect() const VULKAN_HPP_NOEXCEPT
15939     {
15940       return std::tie( sType, pNext, flags, stage, module, pName, pSpecializationInfo );
15941     }
15942 #endif
15943 
15944 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo15945     std::strong_ordering operator<=>( PipelineShaderStageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
15946     {
15947       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
15948         return cmp;
15949       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
15950         return cmp;
15951       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
15952         return cmp;
15953       if ( auto cmp = stage <=> rhs.stage; cmp != 0 )
15954         return cmp;
15955       if ( auto cmp = module <=> rhs.module; cmp != 0 )
15956         return cmp;
15957       if ( pName != rhs.pName )
15958         if ( auto cmp = strcmp( pName, rhs.pName ); cmp != 0 )
15959           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
15960       if ( auto cmp = pSpecializationInfo <=> rhs.pSpecializationInfo; cmp != 0 )
15961         return cmp;
15962 
15963       return std::strong_ordering::equivalent;
15964     }
15965 #endif
15966 
operator ==VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo15967     bool operator==( PipelineShaderStageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
15968     {
15969       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stage == rhs.stage ) && ( module == rhs.module ) &&
15970              ( ( pName == rhs.pName ) || ( strcmp( pName, rhs.pName ) == 0 ) ) && ( pSpecializationInfo == rhs.pSpecializationInfo );
15971     }
15972 
operator !=VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo15973     bool operator!=( PipelineShaderStageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
15974     {
15975       return !operator==( rhs );
15976     }
15977 
15978   public:
15979     VULKAN_HPP_NAMESPACE::StructureType                  sType               = StructureType::ePipelineShaderStageCreateInfo;
15980     const void *                                         pNext               = {};
15981     VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags flags               = {};
15982     VULKAN_HPP_NAMESPACE::ShaderStageFlagBits            stage               = VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eVertex;
15983     VULKAN_HPP_NAMESPACE::ShaderModule                   module              = {};
15984     const char *                                         pName               = {};
15985     const VULKAN_HPP_NAMESPACE::SpecializationInfo *     pSpecializationInfo = {};
15986   };
15987 
15988   template <>
15989   struct CppType<StructureType, StructureType::ePipelineShaderStageCreateInfo>
15990   {
15991     using Type = PipelineShaderStageCreateInfo;
15992   };
15993 
15994   struct ComputePipelineCreateInfo
15995   {
15996     using NativeType = VkComputePipelineCreateInfo;
15997 
15998     static const bool                                  allowDuplicate = false;
15999     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eComputePipelineCreateInfo;
16000 
16001 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ComputePipelineCreateInfoVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16002     VULKAN_HPP_CONSTEXPR ComputePipelineCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCreateFlags           flags_              = {},
16003                                                     VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo stage_              = {},
16004                                                     VULKAN_HPP_NAMESPACE::PipelineLayout                layout_             = {},
16005                                                     VULKAN_HPP_NAMESPACE::Pipeline                      basePipelineHandle_ = {},
16006                                                     int32_t                                             basePipelineIndex_  = {},
16007                                                     const void *                                        pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
16008       : pNext{ pNext_ }
16009       , flags{ flags_ }
16010       , stage{ stage_ }
16011       , layout{ layout_ }
16012       , basePipelineHandle{ basePipelineHandle_ }
16013       , basePipelineIndex{ basePipelineIndex_ }
16014     {
16015     }
16016 
16017     VULKAN_HPP_CONSTEXPR ComputePipelineCreateInfo( ComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16018 
ComputePipelineCreateInfoVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16019     ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
16020       : ComputePipelineCreateInfo( *reinterpret_cast<ComputePipelineCreateInfo const *>( &rhs ) )
16021     {
16022     }
16023 
16024     ComputePipelineCreateInfo & operator=( ComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16025 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16026 
operator =VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16027     ComputePipelineCreateInfo & operator=( VkComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
16028     {
16029       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo const *>( &rhs );
16030       return *this;
16031     }
16032 
16033 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16034     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16035     {
16036       pNext = pNext_;
16037       return *this;
16038     }
16039 
setFlagsVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16040     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
16041     {
16042       flags = flags_;
16043       return *this;
16044     }
16045 
setStageVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16046     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setStage( VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo const & stage_ ) VULKAN_HPP_NOEXCEPT
16047     {
16048       stage = stage_;
16049       return *this;
16050     }
16051 
setLayoutVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16052     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
16053     {
16054       layout = layout_;
16055       return *this;
16056     }
16057 
setBasePipelineHandleVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16058     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT
16059     {
16060       basePipelineHandle = basePipelineHandle_;
16061       return *this;
16062     }
16063 
setBasePipelineIndexVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16064     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT
16065     {
16066       basePipelineIndex = basePipelineIndex_;
16067       return *this;
16068     }
16069 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16070 
operator VkComputePipelineCreateInfo const&VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16071     operator VkComputePipelineCreateInfo const &() const VULKAN_HPP_NOEXCEPT
16072     {
16073       return *reinterpret_cast<const VkComputePipelineCreateInfo *>( this );
16074     }
16075 
operator VkComputePipelineCreateInfo&VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16076     operator VkComputePipelineCreateInfo &() VULKAN_HPP_NOEXCEPT
16077     {
16078       return *reinterpret_cast<VkComputePipelineCreateInfo *>( this );
16079     }
16080 
16081 #if defined( VULKAN_HPP_USE_REFLECT )
16082 #  if 14 <= VULKAN_HPP_CPP_VERSION
16083     auto
16084 #  else
16085     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
16086                const void * const &,
16087                VULKAN_HPP_NAMESPACE::PipelineCreateFlags const &,
16088                VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo const &,
16089                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
16090                VULKAN_HPP_NAMESPACE::Pipeline const &,
16091                int32_t const &>
16092 #  endif
reflectVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16093       reflect() const VULKAN_HPP_NOEXCEPT
16094     {
16095       return std::tie( sType, pNext, flags, stage, layout, basePipelineHandle, basePipelineIndex );
16096     }
16097 #endif
16098 
16099 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
16100     auto operator<=>( ComputePipelineCreateInfo const & ) const = default;
16101 #else
operator ==VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16102     bool operator==( ComputePipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
16103     {
16104 #  if defined( VULKAN_HPP_USE_REFLECT )
16105       return this->reflect() == rhs.reflect();
16106 #  else
16107       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stage == rhs.stage ) && ( layout == rhs.layout ) &&
16108              ( basePipelineHandle == rhs.basePipelineHandle ) && ( basePipelineIndex == rhs.basePipelineIndex );
16109 #  endif
16110     }
16111 
operator !=VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo16112     bool operator!=( ComputePipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
16113     {
16114       return !operator==( rhs );
16115     }
16116 #endif
16117 
16118   public:
16119     VULKAN_HPP_NAMESPACE::StructureType                 sType              = StructureType::eComputePipelineCreateInfo;
16120     const void *                                        pNext              = {};
16121     VULKAN_HPP_NAMESPACE::PipelineCreateFlags           flags              = {};
16122     VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo stage              = {};
16123     VULKAN_HPP_NAMESPACE::PipelineLayout                layout             = {};
16124     VULKAN_HPP_NAMESPACE::Pipeline                      basePipelineHandle = {};
16125     int32_t                                             basePipelineIndex  = {};
16126   };
16127 
16128   template <>
16129   struct CppType<StructureType, StructureType::eComputePipelineCreateInfo>
16130   {
16131     using Type = ComputePipelineCreateInfo;
16132   };
16133 
16134   struct ComputePipelineIndirectBufferInfoNV
16135   {
16136     using NativeType = VkComputePipelineIndirectBufferInfoNV;
16137 
16138     static const bool                                  allowDuplicate = false;
16139     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eComputePipelineIndirectBufferInfoNV;
16140 
16141 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ComputePipelineIndirectBufferInfoNVVULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16142     VULKAN_HPP_CONSTEXPR ComputePipelineIndirectBufferInfoNV( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_                      = {},
16143                                                               VULKAN_HPP_NAMESPACE::DeviceSize    size_                               = {},
16144                                                               VULKAN_HPP_NAMESPACE::DeviceAddress pipelineDeviceAddressCaptureReplay_ = {},
16145                                                               const void *                        pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
16146       : pNext{ pNext_ }
16147       , deviceAddress{ deviceAddress_ }
16148       , size{ size_ }
16149       , pipelineDeviceAddressCaptureReplay{ pipelineDeviceAddressCaptureReplay_ }
16150     {
16151     }
16152 
16153     VULKAN_HPP_CONSTEXPR ComputePipelineIndirectBufferInfoNV( ComputePipelineIndirectBufferInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16154 
ComputePipelineIndirectBufferInfoNVVULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16155     ComputePipelineIndirectBufferInfoNV( VkComputePipelineIndirectBufferInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
16156       : ComputePipelineIndirectBufferInfoNV( *reinterpret_cast<ComputePipelineIndirectBufferInfoNV const *>( &rhs ) )
16157     {
16158     }
16159 
16160     ComputePipelineIndirectBufferInfoNV & operator=( ComputePipelineIndirectBufferInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16161 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16162 
operator =VULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16163     ComputePipelineIndirectBufferInfoNV & operator=( VkComputePipelineIndirectBufferInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
16164     {
16165       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV const *>( &rhs );
16166       return *this;
16167     }
16168 
16169 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16170     VULKAN_HPP_CONSTEXPR_14 ComputePipelineIndirectBufferInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16171     {
16172       pNext = pNext_;
16173       return *this;
16174     }
16175 
setDeviceAddressVULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16176     VULKAN_HPP_CONSTEXPR_14 ComputePipelineIndirectBufferInfoNV & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
16177     {
16178       deviceAddress = deviceAddress_;
16179       return *this;
16180     }
16181 
setSizeVULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16182     VULKAN_HPP_CONSTEXPR_14 ComputePipelineIndirectBufferInfoNV & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
16183     {
16184       size = size_;
16185       return *this;
16186     }
16187 
16188     VULKAN_HPP_CONSTEXPR_14 ComputePipelineIndirectBufferInfoNV &
setPipelineDeviceAddressCaptureReplayVULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16189       setPipelineDeviceAddressCaptureReplay( VULKAN_HPP_NAMESPACE::DeviceAddress pipelineDeviceAddressCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
16190     {
16191       pipelineDeviceAddressCaptureReplay = pipelineDeviceAddressCaptureReplay_;
16192       return *this;
16193     }
16194 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16195 
operator VkComputePipelineIndirectBufferInfoNV const&VULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16196     operator VkComputePipelineIndirectBufferInfoNV const &() const VULKAN_HPP_NOEXCEPT
16197     {
16198       return *reinterpret_cast<const VkComputePipelineIndirectBufferInfoNV *>( this );
16199     }
16200 
operator VkComputePipelineIndirectBufferInfoNV&VULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16201     operator VkComputePipelineIndirectBufferInfoNV &() VULKAN_HPP_NOEXCEPT
16202     {
16203       return *reinterpret_cast<VkComputePipelineIndirectBufferInfoNV *>( this );
16204     }
16205 
16206 #if defined( VULKAN_HPP_USE_REFLECT )
16207 #  if 14 <= VULKAN_HPP_CPP_VERSION
16208     auto
16209 #  else
16210     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
16211                const void * const &,
16212                VULKAN_HPP_NAMESPACE::DeviceAddress const &,
16213                VULKAN_HPP_NAMESPACE::DeviceSize const &,
16214                VULKAN_HPP_NAMESPACE::DeviceAddress const &>
16215 #  endif
reflectVULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16216       reflect() const VULKAN_HPP_NOEXCEPT
16217     {
16218       return std::tie( sType, pNext, deviceAddress, size, pipelineDeviceAddressCaptureReplay );
16219     }
16220 #endif
16221 
16222 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
16223     auto operator<=>( ComputePipelineIndirectBufferInfoNV const & ) const = default;
16224 #else
operator ==VULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16225     bool operator==( ComputePipelineIndirectBufferInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
16226     {
16227 #  if defined( VULKAN_HPP_USE_REFLECT )
16228       return this->reflect() == rhs.reflect();
16229 #  else
16230       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceAddress == rhs.deviceAddress ) && ( size == rhs.size ) &&
16231              ( pipelineDeviceAddressCaptureReplay == rhs.pipelineDeviceAddressCaptureReplay );
16232 #  endif
16233     }
16234 
operator !=VULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV16235     bool operator!=( ComputePipelineIndirectBufferInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
16236     {
16237       return !operator==( rhs );
16238     }
16239 #endif
16240 
16241   public:
16242     VULKAN_HPP_NAMESPACE::StructureType sType                              = StructureType::eComputePipelineIndirectBufferInfoNV;
16243     const void *                        pNext                              = {};
16244     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress                      = {};
16245     VULKAN_HPP_NAMESPACE::DeviceSize    size                               = {};
16246     VULKAN_HPP_NAMESPACE::DeviceAddress pipelineDeviceAddressCaptureReplay = {};
16247   };
16248 
16249   template <>
16250   struct CppType<StructureType, StructureType::eComputePipelineIndirectBufferInfoNV>
16251   {
16252     using Type = ComputePipelineIndirectBufferInfoNV;
16253   };
16254 
16255   struct ConditionalRenderingBeginInfoEXT
16256   {
16257     using NativeType = VkConditionalRenderingBeginInfoEXT;
16258 
16259     static const bool                                  allowDuplicate = false;
16260     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eConditionalRenderingBeginInfoEXT;
16261 
16262 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ConditionalRenderingBeginInfoEXTVULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16263     VULKAN_HPP_CONSTEXPR ConditionalRenderingBeginInfoEXT( VULKAN_HPP_NAMESPACE::Buffer                       buffer_ = {},
16264                                                            VULKAN_HPP_NAMESPACE::DeviceSize                   offset_ = {},
16265                                                            VULKAN_HPP_NAMESPACE::ConditionalRenderingFlagsEXT flags_  = {},
16266                                                            const void *                                       pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
16267       : pNext{ pNext_ }
16268       , buffer{ buffer_ }
16269       , offset{ offset_ }
16270       , flags{ flags_ }
16271     {
16272     }
16273 
16274     VULKAN_HPP_CONSTEXPR ConditionalRenderingBeginInfoEXT( ConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16275 
ConditionalRenderingBeginInfoEXTVULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16276     ConditionalRenderingBeginInfoEXT( VkConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
16277       : ConditionalRenderingBeginInfoEXT( *reinterpret_cast<ConditionalRenderingBeginInfoEXT const *>( &rhs ) )
16278     {
16279     }
16280 
16281     ConditionalRenderingBeginInfoEXT & operator=( ConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16282 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16283 
operator =VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16284     ConditionalRenderingBeginInfoEXT & operator=( VkConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
16285     {
16286       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT const *>( &rhs );
16287       return *this;
16288     }
16289 
16290 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16291     VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16292     {
16293       pNext = pNext_;
16294       return *this;
16295     }
16296 
setBufferVULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16297     VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
16298     {
16299       buffer = buffer_;
16300       return *this;
16301     }
16302 
setOffsetVULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16303     VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
16304     {
16305       offset = offset_;
16306       return *this;
16307     }
16308 
setFlagsVULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16309     VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::ConditionalRenderingFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
16310     {
16311       flags = flags_;
16312       return *this;
16313     }
16314 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16315 
operator VkConditionalRenderingBeginInfoEXT const&VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16316     operator VkConditionalRenderingBeginInfoEXT const &() const VULKAN_HPP_NOEXCEPT
16317     {
16318       return *reinterpret_cast<const VkConditionalRenderingBeginInfoEXT *>( this );
16319     }
16320 
operator VkConditionalRenderingBeginInfoEXT&VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16321     operator VkConditionalRenderingBeginInfoEXT &() VULKAN_HPP_NOEXCEPT
16322     {
16323       return *reinterpret_cast<VkConditionalRenderingBeginInfoEXT *>( this );
16324     }
16325 
16326 #if defined( VULKAN_HPP_USE_REFLECT )
16327 #  if 14 <= VULKAN_HPP_CPP_VERSION
16328     auto
16329 #  else
16330     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
16331                const void * const &,
16332                VULKAN_HPP_NAMESPACE::Buffer const &,
16333                VULKAN_HPP_NAMESPACE::DeviceSize const &,
16334                VULKAN_HPP_NAMESPACE::ConditionalRenderingFlagsEXT const &>
16335 #  endif
reflectVULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16336       reflect() const VULKAN_HPP_NOEXCEPT
16337     {
16338       return std::tie( sType, pNext, buffer, offset, flags );
16339     }
16340 #endif
16341 
16342 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
16343     auto operator<=>( ConditionalRenderingBeginInfoEXT const & ) const = default;
16344 #else
operator ==VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16345     bool operator==( ConditionalRenderingBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
16346     {
16347 #  if defined( VULKAN_HPP_USE_REFLECT )
16348       return this->reflect() == rhs.reflect();
16349 #  else
16350       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer ) && ( offset == rhs.offset ) && ( flags == rhs.flags );
16351 #  endif
16352     }
16353 
operator !=VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT16354     bool operator!=( ConditionalRenderingBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
16355     {
16356       return !operator==( rhs );
16357     }
16358 #endif
16359 
16360   public:
16361     VULKAN_HPP_NAMESPACE::StructureType                sType  = StructureType::eConditionalRenderingBeginInfoEXT;
16362     const void *                                       pNext  = {};
16363     VULKAN_HPP_NAMESPACE::Buffer                       buffer = {};
16364     VULKAN_HPP_NAMESPACE::DeviceSize                   offset = {};
16365     VULKAN_HPP_NAMESPACE::ConditionalRenderingFlagsEXT flags  = {};
16366   };
16367 
16368   template <>
16369   struct CppType<StructureType, StructureType::eConditionalRenderingBeginInfoEXT>
16370   {
16371     using Type = ConditionalRenderingBeginInfoEXT;
16372   };
16373 
16374   struct ConformanceVersion
16375   {
16376     using NativeType = VkConformanceVersion;
16377 
16378 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ConformanceVersionVULKAN_HPP_NAMESPACE::ConformanceVersion16379     VULKAN_HPP_CONSTEXPR ConformanceVersion( uint8_t major_ = {}, uint8_t minor_ = {}, uint8_t subminor_ = {}, uint8_t patch_ = {} ) VULKAN_HPP_NOEXCEPT
16380       : major{ major_ }
16381       , minor{ minor_ }
16382       , subminor{ subminor_ }
16383       , patch{ patch_ }
16384     {
16385     }
16386 
16387     VULKAN_HPP_CONSTEXPR ConformanceVersion( ConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16388 
ConformanceVersionVULKAN_HPP_NAMESPACE::ConformanceVersion16389     ConformanceVersion( VkConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT : ConformanceVersion( *reinterpret_cast<ConformanceVersion const *>( &rhs ) ) {}
16390 
16391     ConformanceVersion & operator=( ConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16392 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16393 
operator =VULKAN_HPP_NAMESPACE::ConformanceVersion16394     ConformanceVersion & operator=( VkConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT
16395     {
16396       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ConformanceVersion const *>( &rhs );
16397       return *this;
16398     }
16399 
16400 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setMajorVULKAN_HPP_NAMESPACE::ConformanceVersion16401     VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setMajor( uint8_t major_ ) VULKAN_HPP_NOEXCEPT
16402     {
16403       major = major_;
16404       return *this;
16405     }
16406 
setMinorVULKAN_HPP_NAMESPACE::ConformanceVersion16407     VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setMinor( uint8_t minor_ ) VULKAN_HPP_NOEXCEPT
16408     {
16409       minor = minor_;
16410       return *this;
16411     }
16412 
setSubminorVULKAN_HPP_NAMESPACE::ConformanceVersion16413     VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setSubminor( uint8_t subminor_ ) VULKAN_HPP_NOEXCEPT
16414     {
16415       subminor = subminor_;
16416       return *this;
16417     }
16418 
setPatchVULKAN_HPP_NAMESPACE::ConformanceVersion16419     VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setPatch( uint8_t patch_ ) VULKAN_HPP_NOEXCEPT
16420     {
16421       patch = patch_;
16422       return *this;
16423     }
16424 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16425 
operator VkConformanceVersion const&VULKAN_HPP_NAMESPACE::ConformanceVersion16426     operator VkConformanceVersion const &() const VULKAN_HPP_NOEXCEPT
16427     {
16428       return *reinterpret_cast<const VkConformanceVersion *>( this );
16429     }
16430 
operator VkConformanceVersion&VULKAN_HPP_NAMESPACE::ConformanceVersion16431     operator VkConformanceVersion &() VULKAN_HPP_NOEXCEPT
16432     {
16433       return *reinterpret_cast<VkConformanceVersion *>( this );
16434     }
16435 
16436 #if defined( VULKAN_HPP_USE_REFLECT )
16437 #  if 14 <= VULKAN_HPP_CPP_VERSION
16438     auto
16439 #  else
16440     std::tuple<uint8_t const &, uint8_t const &, uint8_t const &, uint8_t const &>
16441 #  endif
reflectVULKAN_HPP_NAMESPACE::ConformanceVersion16442       reflect() const VULKAN_HPP_NOEXCEPT
16443     {
16444       return std::tie( major, minor, subminor, patch );
16445     }
16446 #endif
16447 
16448 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
16449     auto operator<=>( ConformanceVersion const & ) const = default;
16450 #else
operator ==VULKAN_HPP_NAMESPACE::ConformanceVersion16451     bool operator==( ConformanceVersion const & rhs ) const VULKAN_HPP_NOEXCEPT
16452     {
16453 #  if defined( VULKAN_HPP_USE_REFLECT )
16454       return this->reflect() == rhs.reflect();
16455 #  else
16456       return ( major == rhs.major ) && ( minor == rhs.minor ) && ( subminor == rhs.subminor ) && ( patch == rhs.patch );
16457 #  endif
16458     }
16459 
operator !=VULKAN_HPP_NAMESPACE::ConformanceVersion16460     bool operator!=( ConformanceVersion const & rhs ) const VULKAN_HPP_NOEXCEPT
16461     {
16462       return !operator==( rhs );
16463     }
16464 #endif
16465 
16466   public:
16467     uint8_t major    = {};
16468     uint8_t minor    = {};
16469     uint8_t subminor = {};
16470     uint8_t patch    = {};
16471   };
16472 
16473   using ConformanceVersionKHR = ConformanceVersion;
16474 
16475   struct CooperativeMatrixPropertiesKHR
16476   {
16477     using NativeType = VkCooperativeMatrixPropertiesKHR;
16478 
16479     static const bool                                  allowDuplicate = false;
16480     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCooperativeMatrixPropertiesKHR;
16481 
16482 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CooperativeMatrixPropertiesKHRVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR16483     VULKAN_HPP_CONSTEXPR CooperativeMatrixPropertiesKHR( uint32_t                               MSize_      = {},
16484                                                          uint32_t                               NSize_      = {},
16485                                                          uint32_t                               KSize_      = {},
16486                                                          VULKAN_HPP_NAMESPACE::ComponentTypeKHR AType_      = VULKAN_HPP_NAMESPACE::ComponentTypeKHR::eFloat16,
16487                                                          VULKAN_HPP_NAMESPACE::ComponentTypeKHR BType_      = VULKAN_HPP_NAMESPACE::ComponentTypeKHR::eFloat16,
16488                                                          VULKAN_HPP_NAMESPACE::ComponentTypeKHR CType_      = VULKAN_HPP_NAMESPACE::ComponentTypeKHR::eFloat16,
16489                                                          VULKAN_HPP_NAMESPACE::ComponentTypeKHR ResultType_ = VULKAN_HPP_NAMESPACE::ComponentTypeKHR::eFloat16,
16490                                                          VULKAN_HPP_NAMESPACE::Bool32           saturatingAccumulation_ = {},
16491                                                          VULKAN_HPP_NAMESPACE::ScopeKHR         scope_ = VULKAN_HPP_NAMESPACE::ScopeKHR::eDevice,
16492                                                          void *                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
16493       : pNext{ pNext_ }
16494       , MSize{ MSize_ }
16495       , NSize{ NSize_ }
16496       , KSize{ KSize_ }
16497       , AType{ AType_ }
16498       , BType{ BType_ }
16499       , CType{ CType_ }
16500       , ResultType{ ResultType_ }
16501       , saturatingAccumulation{ saturatingAccumulation_ }
16502       , scope{ scope_ }
16503     {
16504     }
16505 
16506     VULKAN_HPP_CONSTEXPR CooperativeMatrixPropertiesKHR( CooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16507 
CooperativeMatrixPropertiesKHRVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR16508     CooperativeMatrixPropertiesKHR( VkCooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
16509       : CooperativeMatrixPropertiesKHR( *reinterpret_cast<CooperativeMatrixPropertiesKHR const *>( &rhs ) )
16510     {
16511     }
16512 
16513     CooperativeMatrixPropertiesKHR & operator=( CooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16514 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16515 
operator =VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR16516     CooperativeMatrixPropertiesKHR & operator=( VkCooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
16517     {
16518       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR const *>( &rhs );
16519       return *this;
16520     }
16521 
operator VkCooperativeMatrixPropertiesKHR const&VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR16522     operator VkCooperativeMatrixPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
16523     {
16524       return *reinterpret_cast<const VkCooperativeMatrixPropertiesKHR *>( this );
16525     }
16526 
operator VkCooperativeMatrixPropertiesKHR&VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR16527     operator VkCooperativeMatrixPropertiesKHR &() VULKAN_HPP_NOEXCEPT
16528     {
16529       return *reinterpret_cast<VkCooperativeMatrixPropertiesKHR *>( this );
16530     }
16531 
16532 #if defined( VULKAN_HPP_USE_REFLECT )
16533 #  if 14 <= VULKAN_HPP_CPP_VERSION
16534     auto
16535 #  else
16536     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
16537                void * const &,
16538                uint32_t const &,
16539                uint32_t const &,
16540                uint32_t const &,
16541                VULKAN_HPP_NAMESPACE::ComponentTypeKHR const &,
16542                VULKAN_HPP_NAMESPACE::ComponentTypeKHR const &,
16543                VULKAN_HPP_NAMESPACE::ComponentTypeKHR const &,
16544                VULKAN_HPP_NAMESPACE::ComponentTypeKHR const &,
16545                VULKAN_HPP_NAMESPACE::Bool32 const &,
16546                VULKAN_HPP_NAMESPACE::ScopeKHR const &>
16547 #  endif
reflectVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR16548       reflect() const VULKAN_HPP_NOEXCEPT
16549     {
16550       return std::tie( sType, pNext, MSize, NSize, KSize, AType, BType, CType, ResultType, saturatingAccumulation, scope );
16551     }
16552 #endif
16553 
16554 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
16555     auto operator<=>( CooperativeMatrixPropertiesKHR const & ) const = default;
16556 #else
operator ==VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR16557     bool operator==( CooperativeMatrixPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
16558     {
16559 #  if defined( VULKAN_HPP_USE_REFLECT )
16560       return this->reflect() == rhs.reflect();
16561 #  else
16562       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( MSize == rhs.MSize ) && ( NSize == rhs.NSize ) && ( KSize == rhs.KSize ) &&
16563              ( AType == rhs.AType ) && ( BType == rhs.BType ) && ( CType == rhs.CType ) && ( ResultType == rhs.ResultType ) &&
16564              ( saturatingAccumulation == rhs.saturatingAccumulation ) && ( scope == rhs.scope );
16565 #  endif
16566     }
16567 
operator !=VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR16568     bool operator!=( CooperativeMatrixPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
16569     {
16570       return !operator==( rhs );
16571     }
16572 #endif
16573 
16574   public:
16575     VULKAN_HPP_NAMESPACE::StructureType    sType                  = StructureType::eCooperativeMatrixPropertiesKHR;
16576     void *                                 pNext                  = {};
16577     uint32_t                               MSize                  = {};
16578     uint32_t                               NSize                  = {};
16579     uint32_t                               KSize                  = {};
16580     VULKAN_HPP_NAMESPACE::ComponentTypeKHR AType                  = VULKAN_HPP_NAMESPACE::ComponentTypeKHR::eFloat16;
16581     VULKAN_HPP_NAMESPACE::ComponentTypeKHR BType                  = VULKAN_HPP_NAMESPACE::ComponentTypeKHR::eFloat16;
16582     VULKAN_HPP_NAMESPACE::ComponentTypeKHR CType                  = VULKAN_HPP_NAMESPACE::ComponentTypeKHR::eFloat16;
16583     VULKAN_HPP_NAMESPACE::ComponentTypeKHR ResultType             = VULKAN_HPP_NAMESPACE::ComponentTypeKHR::eFloat16;
16584     VULKAN_HPP_NAMESPACE::Bool32           saturatingAccumulation = {};
16585     VULKAN_HPP_NAMESPACE::ScopeKHR         scope                  = VULKAN_HPP_NAMESPACE::ScopeKHR::eDevice;
16586   };
16587 
16588   template <>
16589   struct CppType<StructureType, StructureType::eCooperativeMatrixPropertiesKHR>
16590   {
16591     using Type = CooperativeMatrixPropertiesKHR;
16592   };
16593 
16594   struct CooperativeMatrixPropertiesNV
16595   {
16596     using NativeType = VkCooperativeMatrixPropertiesNV;
16597 
16598     static const bool                                  allowDuplicate = false;
16599     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCooperativeMatrixPropertiesNV;
16600 
16601 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CooperativeMatrixPropertiesNVVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV16602     VULKAN_HPP_CONSTEXPR CooperativeMatrixPropertiesNV( uint32_t                              MSize_ = {},
16603                                                         uint32_t                              NSize_ = {},
16604                                                         uint32_t                              KSize_ = {},
16605                                                         VULKAN_HPP_NAMESPACE::ComponentTypeNV AType_ = {},
16606                                                         VULKAN_HPP_NAMESPACE::ComponentTypeNV BType_ = {},
16607                                                         VULKAN_HPP_NAMESPACE::ComponentTypeNV CType_ = {},
16608                                                         VULKAN_HPP_NAMESPACE::ComponentTypeNV DType_ = {},
16609                                                         VULKAN_HPP_NAMESPACE::ScopeNV         scope_ = {},
16610                                                         void *                                pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
16611       : pNext{ pNext_ }
16612       , MSize{ MSize_ }
16613       , NSize{ NSize_ }
16614       , KSize{ KSize_ }
16615       , AType{ AType_ }
16616       , BType{ BType_ }
16617       , CType{ CType_ }
16618       , DType{ DType_ }
16619       , scope{ scope_ }
16620     {
16621     }
16622 
16623     VULKAN_HPP_CONSTEXPR CooperativeMatrixPropertiesNV( CooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16624 
CooperativeMatrixPropertiesNVVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV16625     CooperativeMatrixPropertiesNV( VkCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
16626       : CooperativeMatrixPropertiesNV( *reinterpret_cast<CooperativeMatrixPropertiesNV const *>( &rhs ) )
16627     {
16628     }
16629 
16630     CooperativeMatrixPropertiesNV & operator=( CooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16631 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16632 
operator =VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV16633     CooperativeMatrixPropertiesNV & operator=( VkCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
16634     {
16635       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV const *>( &rhs );
16636       return *this;
16637     }
16638 
operator VkCooperativeMatrixPropertiesNV const&VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV16639     operator VkCooperativeMatrixPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
16640     {
16641       return *reinterpret_cast<const VkCooperativeMatrixPropertiesNV *>( this );
16642     }
16643 
operator VkCooperativeMatrixPropertiesNV&VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV16644     operator VkCooperativeMatrixPropertiesNV &() VULKAN_HPP_NOEXCEPT
16645     {
16646       return *reinterpret_cast<VkCooperativeMatrixPropertiesNV *>( this );
16647     }
16648 
16649 #if defined( VULKAN_HPP_USE_REFLECT )
16650 #  if 14 <= VULKAN_HPP_CPP_VERSION
16651     auto
16652 #  else
16653     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
16654                void * const &,
16655                uint32_t const &,
16656                uint32_t const &,
16657                uint32_t const &,
16658                VULKAN_HPP_NAMESPACE::ComponentTypeNV const &,
16659                VULKAN_HPP_NAMESPACE::ComponentTypeNV const &,
16660                VULKAN_HPP_NAMESPACE::ComponentTypeNV const &,
16661                VULKAN_HPP_NAMESPACE::ComponentTypeNV const &,
16662                VULKAN_HPP_NAMESPACE::ScopeNV const &>
16663 #  endif
reflectVULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV16664       reflect() const VULKAN_HPP_NOEXCEPT
16665     {
16666       return std::tie( sType, pNext, MSize, NSize, KSize, AType, BType, CType, DType, scope );
16667     }
16668 #endif
16669 
16670 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
16671     auto operator<=>( CooperativeMatrixPropertiesNV const & ) const = default;
16672 #else
operator ==VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV16673     bool operator==( CooperativeMatrixPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
16674     {
16675 #  if defined( VULKAN_HPP_USE_REFLECT )
16676       return this->reflect() == rhs.reflect();
16677 #  else
16678       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( MSize == rhs.MSize ) && ( NSize == rhs.NSize ) && ( KSize == rhs.KSize ) &&
16679              ( AType == rhs.AType ) && ( BType == rhs.BType ) && ( CType == rhs.CType ) && ( DType == rhs.DType ) && ( scope == rhs.scope );
16680 #  endif
16681     }
16682 
operator !=VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV16683     bool operator!=( CooperativeMatrixPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
16684     {
16685       return !operator==( rhs );
16686     }
16687 #endif
16688 
16689   public:
16690     VULKAN_HPP_NAMESPACE::StructureType   sType = StructureType::eCooperativeMatrixPropertiesNV;
16691     void *                                pNext = {};
16692     uint32_t                              MSize = {};
16693     uint32_t                              NSize = {};
16694     uint32_t                              KSize = {};
16695     VULKAN_HPP_NAMESPACE::ComponentTypeNV AType = {};
16696     VULKAN_HPP_NAMESPACE::ComponentTypeNV BType = {};
16697     VULKAN_HPP_NAMESPACE::ComponentTypeNV CType = {};
16698     VULKAN_HPP_NAMESPACE::ComponentTypeNV DType = {};
16699     VULKAN_HPP_NAMESPACE::ScopeNV         scope = {};
16700   };
16701 
16702   template <>
16703   struct CppType<StructureType, StructureType::eCooperativeMatrixPropertiesNV>
16704   {
16705     using Type = CooperativeMatrixPropertiesNV;
16706   };
16707 
16708   struct CopyAccelerationStructureInfoKHR
16709   {
16710     using NativeType = VkCopyAccelerationStructureInfoKHR;
16711 
16712     static const bool                                  allowDuplicate = false;
16713     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyAccelerationStructureInfoKHR;
16714 
16715 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyAccelerationStructureInfoKHRVULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR16716     VULKAN_HPP_CONSTEXPR CopyAccelerationStructureInfoKHR(
16717       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         src_   = {},
16718       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         dst_   = {},
16719       VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_  = VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone,
16720       const void *                                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
16721       : pNext{ pNext_ }
16722       , src{ src_ }
16723       , dst{ dst_ }
16724       , mode{ mode_ }
16725     {
16726     }
16727 
16728     VULKAN_HPP_CONSTEXPR CopyAccelerationStructureInfoKHR( CopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16729 
CopyAccelerationStructureInfoKHRVULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR16730     CopyAccelerationStructureInfoKHR( VkCopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
16731       : CopyAccelerationStructureInfoKHR( *reinterpret_cast<CopyAccelerationStructureInfoKHR const *>( &rhs ) )
16732     {
16733     }
16734 
16735     CopyAccelerationStructureInfoKHR & operator=( CopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16736 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16737 
operator =VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR16738     CopyAccelerationStructureInfoKHR & operator=( VkCopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
16739     {
16740       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR const *>( &rhs );
16741       return *this;
16742     }
16743 
16744 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR16745     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16746     {
16747       pNext = pNext_;
16748       return *this;
16749     }
16750 
setSrcVULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR16751     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR & setSrc( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR src_ ) VULKAN_HPP_NOEXCEPT
16752     {
16753       src = src_;
16754       return *this;
16755     }
16756 
setDstVULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR16757     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR & setDst( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dst_ ) VULKAN_HPP_NOEXCEPT
16758     {
16759       dst = dst_;
16760       return *this;
16761     }
16762 
setModeVULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR16763     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR & setMode( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ ) VULKAN_HPP_NOEXCEPT
16764     {
16765       mode = mode_;
16766       return *this;
16767     }
16768 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16769 
operator VkCopyAccelerationStructureInfoKHR const&VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR16770     operator VkCopyAccelerationStructureInfoKHR const &() const VULKAN_HPP_NOEXCEPT
16771     {
16772       return *reinterpret_cast<const VkCopyAccelerationStructureInfoKHR *>( this );
16773     }
16774 
operator VkCopyAccelerationStructureInfoKHR&VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR16775     operator VkCopyAccelerationStructureInfoKHR &() VULKAN_HPP_NOEXCEPT
16776     {
16777       return *reinterpret_cast<VkCopyAccelerationStructureInfoKHR *>( this );
16778     }
16779 
16780 #if defined( VULKAN_HPP_USE_REFLECT )
16781 #  if 14 <= VULKAN_HPP_CPP_VERSION
16782     auto
16783 #  else
16784     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
16785                const void * const &,
16786                VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &,
16787                VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &,
16788                VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR const &>
16789 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR16790       reflect() const VULKAN_HPP_NOEXCEPT
16791     {
16792       return std::tie( sType, pNext, src, dst, mode );
16793     }
16794 #endif
16795 
16796 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
16797     auto operator<=>( CopyAccelerationStructureInfoKHR const & ) const = default;
16798 #else
operator ==VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR16799     bool operator==( CopyAccelerationStructureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
16800     {
16801 #  if defined( VULKAN_HPP_USE_REFLECT )
16802       return this->reflect() == rhs.reflect();
16803 #  else
16804       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( src == rhs.src ) && ( dst == rhs.dst ) && ( mode == rhs.mode );
16805 #  endif
16806     }
16807 
operator !=VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR16808     bool operator!=( CopyAccelerationStructureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
16809     {
16810       return !operator==( rhs );
16811     }
16812 #endif
16813 
16814   public:
16815     VULKAN_HPP_NAMESPACE::StructureType                    sType = StructureType::eCopyAccelerationStructureInfoKHR;
16816     const void *                                           pNext = {};
16817     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         src   = {};
16818     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         dst   = {};
16819     VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode  = VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone;
16820   };
16821 
16822   template <>
16823   struct CppType<StructureType, StructureType::eCopyAccelerationStructureInfoKHR>
16824   {
16825     using Type = CopyAccelerationStructureInfoKHR;
16826   };
16827 
16828   struct CopyAccelerationStructureToMemoryInfoKHR
16829   {
16830     using NativeType = VkCopyAccelerationStructureToMemoryInfoKHR;
16831 
16832     static const bool                                  allowDuplicate = false;
16833     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyAccelerationStructureToMemoryInfoKHR;
16834 
16835 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyAccelerationStructureToMemoryInfoKHRVULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR16836     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR(
16837       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         src_   = {},
16838       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR           dst_   = {},
16839       VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_  = VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone,
16840       const void *                                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
16841       : pNext{ pNext_ }
16842       , src{ src_ }
16843       , dst{ dst_ }
16844       , mode{ mode_ }
16845     {
16846     }
16847 
16848     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR( CopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16849 
CopyAccelerationStructureToMemoryInfoKHRVULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR16850     CopyAccelerationStructureToMemoryInfoKHR( VkCopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
16851       : CopyAccelerationStructureToMemoryInfoKHR( *reinterpret_cast<CopyAccelerationStructureToMemoryInfoKHR const *>( &rhs ) )
16852     {
16853     }
16854 
16855     CopyAccelerationStructureToMemoryInfoKHR & operator=( CopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16856 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16857 
operator =VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR16858     CopyAccelerationStructureToMemoryInfoKHR & operator=( VkCopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
16859     {
16860       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR const *>( &rhs );
16861       return *this;
16862     }
16863 
16864 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR16865     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16866     {
16867       pNext = pNext_;
16868       return *this;
16869     }
16870 
setSrcVULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR16871     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR & setSrc( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR src_ ) VULKAN_HPP_NOEXCEPT
16872     {
16873       src = src_;
16874       return *this;
16875     }
16876 
setDstVULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR16877     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR & setDst( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const & dst_ ) VULKAN_HPP_NOEXCEPT
16878     {
16879       dst = dst_;
16880       return *this;
16881     }
16882 
16883     VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR &
setModeVULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR16884       setMode( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ ) VULKAN_HPP_NOEXCEPT
16885     {
16886       mode = mode_;
16887       return *this;
16888     }
16889 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16890 
operator VkCopyAccelerationStructureToMemoryInfoKHR const&VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR16891     operator VkCopyAccelerationStructureToMemoryInfoKHR const &() const VULKAN_HPP_NOEXCEPT
16892     {
16893       return *reinterpret_cast<const VkCopyAccelerationStructureToMemoryInfoKHR *>( this );
16894     }
16895 
operator VkCopyAccelerationStructureToMemoryInfoKHR&VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR16896     operator VkCopyAccelerationStructureToMemoryInfoKHR &() VULKAN_HPP_NOEXCEPT
16897     {
16898       return *reinterpret_cast<VkCopyAccelerationStructureToMemoryInfoKHR *>( this );
16899     }
16900 
16901 #if defined( VULKAN_HPP_USE_REFLECT )
16902 #  if 14 <= VULKAN_HPP_CPP_VERSION
16903     auto
16904 #  else
16905     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
16906                const void * const &,
16907                VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &,
16908                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const &,
16909                VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR const &>
16910 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR16911       reflect() const VULKAN_HPP_NOEXCEPT
16912     {
16913       return std::tie( sType, pNext, src, dst, mode );
16914     }
16915 #endif
16916 
16917   public:
16918     VULKAN_HPP_NAMESPACE::StructureType                    sType = StructureType::eCopyAccelerationStructureToMemoryInfoKHR;
16919     const void *                                           pNext = {};
16920     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         src   = {};
16921     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR           dst   = {};
16922     VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode  = VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone;
16923   };
16924 
16925   template <>
16926   struct CppType<StructureType, StructureType::eCopyAccelerationStructureToMemoryInfoKHR>
16927   {
16928     using Type = CopyAccelerationStructureToMemoryInfoKHR;
16929   };
16930 
16931   struct CopyBufferInfo2
16932   {
16933     using NativeType = VkCopyBufferInfo2;
16934 
16935     static const bool                                  allowDuplicate = false;
16936     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyBufferInfo2;
16937 
16938 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyBufferInfo2VULKAN_HPP_NAMESPACE::CopyBufferInfo216939     VULKAN_HPP_CONSTEXPR CopyBufferInfo2( VULKAN_HPP_NAMESPACE::Buffer              srcBuffer_   = {},
16940                                           VULKAN_HPP_NAMESPACE::Buffer              dstBuffer_   = {},
16941                                           uint32_t                                  regionCount_ = {},
16942                                           const VULKAN_HPP_NAMESPACE::BufferCopy2 * pRegions_    = {},
16943                                           const void *                              pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
16944       : pNext{ pNext_ }
16945       , srcBuffer{ srcBuffer_ }
16946       , dstBuffer{ dstBuffer_ }
16947       , regionCount{ regionCount_ }
16948       , pRegions{ pRegions_ }
16949     {
16950     }
16951 
16952     VULKAN_HPP_CONSTEXPR CopyBufferInfo2( CopyBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16953 
CopyBufferInfo2VULKAN_HPP_NAMESPACE::CopyBufferInfo216954     CopyBufferInfo2( VkCopyBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT : CopyBufferInfo2( *reinterpret_cast<CopyBufferInfo2 const *>( &rhs ) ) {}
16955 
16956 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyBufferInfo2VULKAN_HPP_NAMESPACE::CopyBufferInfo216957     CopyBufferInfo2( VULKAN_HPP_NAMESPACE::Buffer                                                                   srcBuffer_,
16958                      VULKAN_HPP_NAMESPACE::Buffer                                                                   dstBuffer_,
16959                      VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferCopy2> const & regions_,
16960                      const void *                                                                                   pNext_ = nullptr )
16961       : pNext( pNext_ ), srcBuffer( srcBuffer_ ), dstBuffer( dstBuffer_ ), regionCount( static_cast<uint32_t>( regions_.size() ) ), pRegions( regions_.data() )
16962     {
16963     }
16964 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
16965 
16966     CopyBufferInfo2 & operator=( CopyBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16967 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16968 
operator =VULKAN_HPP_NAMESPACE::CopyBufferInfo216969     CopyBufferInfo2 & operator=( VkCopyBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
16970     {
16971       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyBufferInfo2 const *>( &rhs );
16972       return *this;
16973     }
16974 
16975 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyBufferInfo216976     VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16977     {
16978       pNext = pNext_;
16979       return *this;
16980     }
16981 
setSrcBufferVULKAN_HPP_NAMESPACE::CopyBufferInfo216982     VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setSrcBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ ) VULKAN_HPP_NOEXCEPT
16983     {
16984       srcBuffer = srcBuffer_;
16985       return *this;
16986     }
16987 
setDstBufferVULKAN_HPP_NAMESPACE::CopyBufferInfo216988     VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setDstBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer_ ) VULKAN_HPP_NOEXCEPT
16989     {
16990       dstBuffer = dstBuffer_;
16991       return *this;
16992     }
16993 
setRegionCountVULKAN_HPP_NAMESPACE::CopyBufferInfo216994     VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
16995     {
16996       regionCount = regionCount_;
16997       return *this;
16998     }
16999 
setPRegionsVULKAN_HPP_NAMESPACE::CopyBufferInfo217000     VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setPRegions( const VULKAN_HPP_NAMESPACE::BufferCopy2 * pRegions_ ) VULKAN_HPP_NOEXCEPT
17001     {
17002       pRegions = pRegions_;
17003       return *this;
17004     }
17005 
17006 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRegionsVULKAN_HPP_NAMESPACE::CopyBufferInfo217007     CopyBufferInfo2 & setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferCopy2> const & regions_ ) VULKAN_HPP_NOEXCEPT
17008     {
17009       regionCount = static_cast<uint32_t>( regions_.size() );
17010       pRegions    = regions_.data();
17011       return *this;
17012     }
17013 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
17014 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17015 
operator VkCopyBufferInfo2 const&VULKAN_HPP_NAMESPACE::CopyBufferInfo217016     operator VkCopyBufferInfo2 const &() const VULKAN_HPP_NOEXCEPT
17017     {
17018       return *reinterpret_cast<const VkCopyBufferInfo2 *>( this );
17019     }
17020 
operator VkCopyBufferInfo2&VULKAN_HPP_NAMESPACE::CopyBufferInfo217021     operator VkCopyBufferInfo2 &() VULKAN_HPP_NOEXCEPT
17022     {
17023       return *reinterpret_cast<VkCopyBufferInfo2 *>( this );
17024     }
17025 
17026 #if defined( VULKAN_HPP_USE_REFLECT )
17027 #  if 14 <= VULKAN_HPP_CPP_VERSION
17028     auto
17029 #  else
17030     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
17031                const void * const &,
17032                VULKAN_HPP_NAMESPACE::Buffer const &,
17033                VULKAN_HPP_NAMESPACE::Buffer const &,
17034                uint32_t const &,
17035                const VULKAN_HPP_NAMESPACE::BufferCopy2 * const &>
17036 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyBufferInfo217037       reflect() const VULKAN_HPP_NOEXCEPT
17038     {
17039       return std::tie( sType, pNext, srcBuffer, dstBuffer, regionCount, pRegions );
17040     }
17041 #endif
17042 
17043 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
17044     auto operator<=>( CopyBufferInfo2 const & ) const = default;
17045 #else
operator ==VULKAN_HPP_NAMESPACE::CopyBufferInfo217046     bool operator==( CopyBufferInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
17047     {
17048 #  if defined( VULKAN_HPP_USE_REFLECT )
17049       return this->reflect() == rhs.reflect();
17050 #  else
17051       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcBuffer == rhs.srcBuffer ) && ( dstBuffer == rhs.dstBuffer ) &&
17052              ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions );
17053 #  endif
17054     }
17055 
operator !=VULKAN_HPP_NAMESPACE::CopyBufferInfo217056     bool operator!=( CopyBufferInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
17057     {
17058       return !operator==( rhs );
17059     }
17060 #endif
17061 
17062   public:
17063     VULKAN_HPP_NAMESPACE::StructureType       sType       = StructureType::eCopyBufferInfo2;
17064     const void *                              pNext       = {};
17065     VULKAN_HPP_NAMESPACE::Buffer              srcBuffer   = {};
17066     VULKAN_HPP_NAMESPACE::Buffer              dstBuffer   = {};
17067     uint32_t                                  regionCount = {};
17068     const VULKAN_HPP_NAMESPACE::BufferCopy2 * pRegions    = {};
17069   };
17070 
17071   template <>
17072   struct CppType<StructureType, StructureType::eCopyBufferInfo2>
17073   {
17074     using Type = CopyBufferInfo2;
17075   };
17076 
17077   using CopyBufferInfo2KHR = CopyBufferInfo2;
17078 
17079   struct CopyBufferToImageInfo2
17080   {
17081     using NativeType = VkCopyBufferToImageInfo2;
17082 
17083     static const bool                                  allowDuplicate = false;
17084     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyBufferToImageInfo2;
17085 
17086 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyBufferToImageInfo2VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217087     VULKAN_HPP_CONSTEXPR CopyBufferToImageInfo2( VULKAN_HPP_NAMESPACE::Buffer                   srcBuffer_      = {},
17088                                                  VULKAN_HPP_NAMESPACE::Image                    dstImage_       = {},
17089                                                  VULKAN_HPP_NAMESPACE::ImageLayout              dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
17090                                                  uint32_t                                       regionCount_    = {},
17091                                                  const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions_       = {},
17092                                                  const void *                                   pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
17093       : pNext{ pNext_ }
17094       , srcBuffer{ srcBuffer_ }
17095       , dstImage{ dstImage_ }
17096       , dstImageLayout{ dstImageLayout_ }
17097       , regionCount{ regionCount_ }
17098       , pRegions{ pRegions_ }
17099     {
17100     }
17101 
17102     VULKAN_HPP_CONSTEXPR CopyBufferToImageInfo2( CopyBufferToImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17103 
CopyBufferToImageInfo2VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217104     CopyBufferToImageInfo2( VkCopyBufferToImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
17105       : CopyBufferToImageInfo2( *reinterpret_cast<CopyBufferToImageInfo2 const *>( &rhs ) )
17106     {
17107     }
17108 
17109 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyBufferToImageInfo2VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217110     CopyBufferToImageInfo2( VULKAN_HPP_NAMESPACE::Buffer                                                                        srcBuffer_,
17111                             VULKAN_HPP_NAMESPACE::Image                                                                         dstImage_,
17112                             VULKAN_HPP_NAMESPACE::ImageLayout                                                                   dstImageLayout_,
17113                             VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferImageCopy2> const & regions_,
17114                             const void *                                                                                        pNext_ = nullptr )
17115       : pNext( pNext_ )
17116       , srcBuffer( srcBuffer_ )
17117       , dstImage( dstImage_ )
17118       , dstImageLayout( dstImageLayout_ )
17119       , regionCount( static_cast<uint32_t>( regions_.size() ) )
17120       , pRegions( regions_.data() )
17121     {
17122     }
17123 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
17124 
17125     CopyBufferToImageInfo2 & operator=( CopyBufferToImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17126 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17127 
operator =VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217128     CopyBufferToImageInfo2 & operator=( VkCopyBufferToImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
17129     {
17130       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 const *>( &rhs );
17131       return *this;
17132     }
17133 
17134 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217135     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17136     {
17137       pNext = pNext_;
17138       return *this;
17139     }
17140 
setSrcBufferVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217141     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setSrcBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ ) VULKAN_HPP_NOEXCEPT
17142     {
17143       srcBuffer = srcBuffer_;
17144       return *this;
17145     }
17146 
setDstImageVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217147     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT
17148     {
17149       dstImage = dstImage_;
17150       return *this;
17151     }
17152 
setDstImageLayoutVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217153     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT
17154     {
17155       dstImageLayout = dstImageLayout_;
17156       return *this;
17157     }
17158 
setRegionCountVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217159     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
17160     {
17161       regionCount = regionCount_;
17162       return *this;
17163     }
17164 
setPRegionsVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217165     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setPRegions( const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions_ ) VULKAN_HPP_NOEXCEPT
17166     {
17167       pRegions = pRegions_;
17168       return *this;
17169     }
17170 
17171 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
17172     CopyBufferToImageInfo2 &
setRegionsVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217173       setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferImageCopy2> const & regions_ ) VULKAN_HPP_NOEXCEPT
17174     {
17175       regionCount = static_cast<uint32_t>( regions_.size() );
17176       pRegions    = regions_.data();
17177       return *this;
17178     }
17179 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
17180 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17181 
operator VkCopyBufferToImageInfo2 const&VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217182     operator VkCopyBufferToImageInfo2 const &() const VULKAN_HPP_NOEXCEPT
17183     {
17184       return *reinterpret_cast<const VkCopyBufferToImageInfo2 *>( this );
17185     }
17186 
operator VkCopyBufferToImageInfo2&VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217187     operator VkCopyBufferToImageInfo2 &() VULKAN_HPP_NOEXCEPT
17188     {
17189       return *reinterpret_cast<VkCopyBufferToImageInfo2 *>( this );
17190     }
17191 
17192 #if defined( VULKAN_HPP_USE_REFLECT )
17193 #  if 14 <= VULKAN_HPP_CPP_VERSION
17194     auto
17195 #  else
17196     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
17197                const void * const &,
17198                VULKAN_HPP_NAMESPACE::Buffer const &,
17199                VULKAN_HPP_NAMESPACE::Image const &,
17200                VULKAN_HPP_NAMESPACE::ImageLayout const &,
17201                uint32_t const &,
17202                const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * const &>
17203 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217204       reflect() const VULKAN_HPP_NOEXCEPT
17205     {
17206       return std::tie( sType, pNext, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions );
17207     }
17208 #endif
17209 
17210 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
17211     auto operator<=>( CopyBufferToImageInfo2 const & ) const = default;
17212 #else
operator ==VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217213     bool operator==( CopyBufferToImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
17214     {
17215 #  if defined( VULKAN_HPP_USE_REFLECT )
17216       return this->reflect() == rhs.reflect();
17217 #  else
17218       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcBuffer == rhs.srcBuffer ) && ( dstImage == rhs.dstImage ) &&
17219              ( dstImageLayout == rhs.dstImageLayout ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions );
17220 #  endif
17221     }
17222 
operator !=VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo217223     bool operator!=( CopyBufferToImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
17224     {
17225       return !operator==( rhs );
17226     }
17227 #endif
17228 
17229   public:
17230     VULKAN_HPP_NAMESPACE::StructureType            sType          = StructureType::eCopyBufferToImageInfo2;
17231     const void *                                   pNext          = {};
17232     VULKAN_HPP_NAMESPACE::Buffer                   srcBuffer      = {};
17233     VULKAN_HPP_NAMESPACE::Image                    dstImage       = {};
17234     VULKAN_HPP_NAMESPACE::ImageLayout              dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
17235     uint32_t                                       regionCount    = {};
17236     const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions       = {};
17237   };
17238 
17239   template <>
17240   struct CppType<StructureType, StructureType::eCopyBufferToImageInfo2>
17241   {
17242     using Type = CopyBufferToImageInfo2;
17243   };
17244 
17245   using CopyBufferToImageInfo2KHR = CopyBufferToImageInfo2;
17246 
17247   struct CopyCommandTransformInfoQCOM
17248   {
17249     using NativeType = VkCopyCommandTransformInfoQCOM;
17250 
17251     static const bool                                  allowDuplicate = false;
17252     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyCommandTransformInfoQCOM;
17253 
17254 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
17255     VULKAN_HPP_CONSTEXPR
CopyCommandTransformInfoQCOMVULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM17256       CopyCommandTransformInfoQCOM( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
17257                                     const void *                                      pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
17258       : pNext{ pNext_ }
17259       , transform{ transform_ }
17260     {
17261     }
17262 
17263     VULKAN_HPP_CONSTEXPR CopyCommandTransformInfoQCOM( CopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17264 
CopyCommandTransformInfoQCOMVULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM17265     CopyCommandTransformInfoQCOM( VkCopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
17266       : CopyCommandTransformInfoQCOM( *reinterpret_cast<CopyCommandTransformInfoQCOM const *>( &rhs ) )
17267     {
17268     }
17269 
17270     CopyCommandTransformInfoQCOM & operator=( CopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17271 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17272 
operator =VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM17273     CopyCommandTransformInfoQCOM & operator=( VkCopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
17274     {
17275       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM const *>( &rhs );
17276       return *this;
17277     }
17278 
17279 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM17280     VULKAN_HPP_CONSTEXPR_14 CopyCommandTransformInfoQCOM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17281     {
17282       pNext = pNext_;
17283       return *this;
17284     }
17285 
setTransformVULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM17286     VULKAN_HPP_CONSTEXPR_14 CopyCommandTransformInfoQCOM & setTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ ) VULKAN_HPP_NOEXCEPT
17287     {
17288       transform = transform_;
17289       return *this;
17290     }
17291 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17292 
operator VkCopyCommandTransformInfoQCOM const&VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM17293     operator VkCopyCommandTransformInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
17294     {
17295       return *reinterpret_cast<const VkCopyCommandTransformInfoQCOM *>( this );
17296     }
17297 
operator VkCopyCommandTransformInfoQCOM&VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM17298     operator VkCopyCommandTransformInfoQCOM &() VULKAN_HPP_NOEXCEPT
17299     {
17300       return *reinterpret_cast<VkCopyCommandTransformInfoQCOM *>( this );
17301     }
17302 
17303 #if defined( VULKAN_HPP_USE_REFLECT )
17304 #  if 14 <= VULKAN_HPP_CPP_VERSION
17305     auto
17306 #  else
17307     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &>
17308 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM17309       reflect() const VULKAN_HPP_NOEXCEPT
17310     {
17311       return std::tie( sType, pNext, transform );
17312     }
17313 #endif
17314 
17315 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
17316     auto operator<=>( CopyCommandTransformInfoQCOM const & ) const = default;
17317 #else
operator ==VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM17318     bool operator==( CopyCommandTransformInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
17319     {
17320 #  if defined( VULKAN_HPP_USE_REFLECT )
17321       return this->reflect() == rhs.reflect();
17322 #  else
17323       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( transform == rhs.transform );
17324 #  endif
17325     }
17326 
operator !=VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM17327     bool operator!=( CopyCommandTransformInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
17328     {
17329       return !operator==( rhs );
17330     }
17331 #endif
17332 
17333   public:
17334     VULKAN_HPP_NAMESPACE::StructureType               sType     = StructureType::eCopyCommandTransformInfoQCOM;
17335     const void *                                      pNext     = {};
17336     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
17337   };
17338 
17339   template <>
17340   struct CppType<StructureType, StructureType::eCopyCommandTransformInfoQCOM>
17341   {
17342     using Type = CopyCommandTransformInfoQCOM;
17343   };
17344 
17345   struct CopyDescriptorSet
17346   {
17347     using NativeType = VkCopyDescriptorSet;
17348 
17349     static const bool                                  allowDuplicate = false;
17350     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyDescriptorSet;
17351 
17352 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyDescriptorSetVULKAN_HPP_NAMESPACE::CopyDescriptorSet17353     VULKAN_HPP_CONSTEXPR CopyDescriptorSet( VULKAN_HPP_NAMESPACE::DescriptorSet srcSet_          = {},
17354                                             uint32_t                            srcBinding_      = {},
17355                                             uint32_t                            srcArrayElement_ = {},
17356                                             VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_          = {},
17357                                             uint32_t                            dstBinding_      = {},
17358                                             uint32_t                            dstArrayElement_ = {},
17359                                             uint32_t                            descriptorCount_ = {},
17360                                             const void *                        pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
17361       : pNext{ pNext_ }
17362       , srcSet{ srcSet_ }
17363       , srcBinding{ srcBinding_ }
17364       , srcArrayElement{ srcArrayElement_ }
17365       , dstSet{ dstSet_ }
17366       , dstBinding{ dstBinding_ }
17367       , dstArrayElement{ dstArrayElement_ }
17368       , descriptorCount{ descriptorCount_ }
17369     {
17370     }
17371 
17372     VULKAN_HPP_CONSTEXPR CopyDescriptorSet( CopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17373 
CopyDescriptorSetVULKAN_HPP_NAMESPACE::CopyDescriptorSet17374     CopyDescriptorSet( VkCopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT : CopyDescriptorSet( *reinterpret_cast<CopyDescriptorSet const *>( &rhs ) ) {}
17375 
17376     CopyDescriptorSet & operator=( CopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17377 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17378 
operator =VULKAN_HPP_NAMESPACE::CopyDescriptorSet17379     CopyDescriptorSet & operator=( VkCopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT
17380     {
17381       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyDescriptorSet const *>( &rhs );
17382       return *this;
17383     }
17384 
17385 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyDescriptorSet17386     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17387     {
17388       pNext = pNext_;
17389       return *this;
17390     }
17391 
setSrcSetVULKAN_HPP_NAMESPACE::CopyDescriptorSet17392     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setSrcSet( VULKAN_HPP_NAMESPACE::DescriptorSet srcSet_ ) VULKAN_HPP_NOEXCEPT
17393     {
17394       srcSet = srcSet_;
17395       return *this;
17396     }
17397 
setSrcBindingVULKAN_HPP_NAMESPACE::CopyDescriptorSet17398     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setSrcBinding( uint32_t srcBinding_ ) VULKAN_HPP_NOEXCEPT
17399     {
17400       srcBinding = srcBinding_;
17401       return *this;
17402     }
17403 
setSrcArrayElementVULKAN_HPP_NAMESPACE::CopyDescriptorSet17404     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setSrcArrayElement( uint32_t srcArrayElement_ ) VULKAN_HPP_NOEXCEPT
17405     {
17406       srcArrayElement = srcArrayElement_;
17407       return *this;
17408     }
17409 
setDstSetVULKAN_HPP_NAMESPACE::CopyDescriptorSet17410     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDstSet( VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_ ) VULKAN_HPP_NOEXCEPT
17411     {
17412       dstSet = dstSet_;
17413       return *this;
17414     }
17415 
setDstBindingVULKAN_HPP_NAMESPACE::CopyDescriptorSet17416     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDstBinding( uint32_t dstBinding_ ) VULKAN_HPP_NOEXCEPT
17417     {
17418       dstBinding = dstBinding_;
17419       return *this;
17420     }
17421 
setDstArrayElementVULKAN_HPP_NAMESPACE::CopyDescriptorSet17422     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDstArrayElement( uint32_t dstArrayElement_ ) VULKAN_HPP_NOEXCEPT
17423     {
17424       dstArrayElement = dstArrayElement_;
17425       return *this;
17426     }
17427 
setDescriptorCountVULKAN_HPP_NAMESPACE::CopyDescriptorSet17428     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT
17429     {
17430       descriptorCount = descriptorCount_;
17431       return *this;
17432     }
17433 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17434 
operator VkCopyDescriptorSet const&VULKAN_HPP_NAMESPACE::CopyDescriptorSet17435     operator VkCopyDescriptorSet const &() const VULKAN_HPP_NOEXCEPT
17436     {
17437       return *reinterpret_cast<const VkCopyDescriptorSet *>( this );
17438     }
17439 
operator VkCopyDescriptorSet&VULKAN_HPP_NAMESPACE::CopyDescriptorSet17440     operator VkCopyDescriptorSet &() VULKAN_HPP_NOEXCEPT
17441     {
17442       return *reinterpret_cast<VkCopyDescriptorSet *>( this );
17443     }
17444 
17445 #if defined( VULKAN_HPP_USE_REFLECT )
17446 #  if 14 <= VULKAN_HPP_CPP_VERSION
17447     auto
17448 #  else
17449     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
17450                const void * const &,
17451                VULKAN_HPP_NAMESPACE::DescriptorSet const &,
17452                uint32_t const &,
17453                uint32_t const &,
17454                VULKAN_HPP_NAMESPACE::DescriptorSet const &,
17455                uint32_t const &,
17456                uint32_t const &,
17457                uint32_t const &>
17458 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyDescriptorSet17459       reflect() const VULKAN_HPP_NOEXCEPT
17460     {
17461       return std::tie( sType, pNext, srcSet, srcBinding, srcArrayElement, dstSet, dstBinding, dstArrayElement, descriptorCount );
17462     }
17463 #endif
17464 
17465 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
17466     auto operator<=>( CopyDescriptorSet const & ) const = default;
17467 #else
operator ==VULKAN_HPP_NAMESPACE::CopyDescriptorSet17468     bool operator==( CopyDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT
17469     {
17470 #  if defined( VULKAN_HPP_USE_REFLECT )
17471       return this->reflect() == rhs.reflect();
17472 #  else
17473       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcSet == rhs.srcSet ) && ( srcBinding == rhs.srcBinding ) &&
17474              ( srcArrayElement == rhs.srcArrayElement ) && ( dstSet == rhs.dstSet ) && ( dstBinding == rhs.dstBinding ) &&
17475              ( dstArrayElement == rhs.dstArrayElement ) && ( descriptorCount == rhs.descriptorCount );
17476 #  endif
17477     }
17478 
operator !=VULKAN_HPP_NAMESPACE::CopyDescriptorSet17479     bool operator!=( CopyDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT
17480     {
17481       return !operator==( rhs );
17482     }
17483 #endif
17484 
17485   public:
17486     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eCopyDescriptorSet;
17487     const void *                        pNext           = {};
17488     VULKAN_HPP_NAMESPACE::DescriptorSet srcSet          = {};
17489     uint32_t                            srcBinding      = {};
17490     uint32_t                            srcArrayElement = {};
17491     VULKAN_HPP_NAMESPACE::DescriptorSet dstSet          = {};
17492     uint32_t                            dstBinding      = {};
17493     uint32_t                            dstArrayElement = {};
17494     uint32_t                            descriptorCount = {};
17495   };
17496 
17497   template <>
17498   struct CppType<StructureType, StructureType::eCopyDescriptorSet>
17499   {
17500     using Type = CopyDescriptorSet;
17501   };
17502 
17503   struct ImageCopy2
17504   {
17505     using NativeType = VkImageCopy2;
17506 
17507     static const bool                                  allowDuplicate = false;
17508     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageCopy2;
17509 
17510 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageCopy2VULKAN_HPP_NAMESPACE::ImageCopy217511     VULKAN_HPP_CONSTEXPR ImageCopy2( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {},
17512                                      VULKAN_HPP_NAMESPACE::Offset3D               srcOffset_      = {},
17513                                      VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {},
17514                                      VULKAN_HPP_NAMESPACE::Offset3D               dstOffset_      = {},
17515                                      VULKAN_HPP_NAMESPACE::Extent3D               extent_         = {},
17516                                      const void *                                 pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
17517       : pNext{ pNext_ }
17518       , srcSubresource{ srcSubresource_ }
17519       , srcOffset{ srcOffset_ }
17520       , dstSubresource{ dstSubresource_ }
17521       , dstOffset{ dstOffset_ }
17522       , extent{ extent_ }
17523     {
17524     }
17525 
17526     VULKAN_HPP_CONSTEXPR ImageCopy2( ImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17527 
ImageCopy2VULKAN_HPP_NAMESPACE::ImageCopy217528     ImageCopy2( VkImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT : ImageCopy2( *reinterpret_cast<ImageCopy2 const *>( &rhs ) ) {}
17529 
17530     ImageCopy2 & operator=( ImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17531 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17532 
operator =VULKAN_HPP_NAMESPACE::ImageCopy217533     ImageCopy2 & operator=( VkImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT
17534     {
17535       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageCopy2 const *>( &rhs );
17536       return *this;
17537     }
17538 
17539 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageCopy217540     VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17541     {
17542       pNext = pNext_;
17543       return *this;
17544     }
17545 
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageCopy217546     VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
17547     {
17548       srcSubresource = srcSubresource_;
17549       return *this;
17550     }
17551 
setSrcOffsetVULKAN_HPP_NAMESPACE::ImageCopy217552     VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT
17553     {
17554       srcOffset = srcOffset_;
17555       return *this;
17556     }
17557 
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageCopy217558     VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
17559     {
17560       dstSubresource = dstSubresource_;
17561       return *this;
17562     }
17563 
setDstOffsetVULKAN_HPP_NAMESPACE::ImageCopy217564     VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT
17565     {
17566       dstOffset = dstOffset_;
17567       return *this;
17568     }
17569 
setExtentVULKAN_HPP_NAMESPACE::ImageCopy217570     VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
17571     {
17572       extent = extent_;
17573       return *this;
17574     }
17575 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17576 
operator VkImageCopy2 const&VULKAN_HPP_NAMESPACE::ImageCopy217577     operator VkImageCopy2 const &() const VULKAN_HPP_NOEXCEPT
17578     {
17579       return *reinterpret_cast<const VkImageCopy2 *>( this );
17580     }
17581 
operator VkImageCopy2&VULKAN_HPP_NAMESPACE::ImageCopy217582     operator VkImageCopy2 &() VULKAN_HPP_NOEXCEPT
17583     {
17584       return *reinterpret_cast<VkImageCopy2 *>( this );
17585     }
17586 
17587 #if defined( VULKAN_HPP_USE_REFLECT )
17588 #  if 14 <= VULKAN_HPP_CPP_VERSION
17589     auto
17590 #  else
17591     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
17592                const void * const &,
17593                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
17594                VULKAN_HPP_NAMESPACE::Offset3D const &,
17595                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
17596                VULKAN_HPP_NAMESPACE::Offset3D const &,
17597                VULKAN_HPP_NAMESPACE::Extent3D const &>
17598 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageCopy217599       reflect() const VULKAN_HPP_NOEXCEPT
17600     {
17601       return std::tie( sType, pNext, srcSubresource, srcOffset, dstSubresource, dstOffset, extent );
17602     }
17603 #endif
17604 
17605 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
17606     auto operator<=>( ImageCopy2 const & ) const = default;
17607 #else
operator ==VULKAN_HPP_NAMESPACE::ImageCopy217608     bool operator==( ImageCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT
17609     {
17610 #  if defined( VULKAN_HPP_USE_REFLECT )
17611       return this->reflect() == rhs.reflect();
17612 #  else
17613       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcSubresource == rhs.srcSubresource ) && ( srcOffset == rhs.srcOffset ) &&
17614              ( dstSubresource == rhs.dstSubresource ) && ( dstOffset == rhs.dstOffset ) && ( extent == rhs.extent );
17615 #  endif
17616     }
17617 
operator !=VULKAN_HPP_NAMESPACE::ImageCopy217618     bool operator!=( ImageCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT
17619     {
17620       return !operator==( rhs );
17621     }
17622 #endif
17623 
17624   public:
17625     VULKAN_HPP_NAMESPACE::StructureType          sType          = StructureType::eImageCopy2;
17626     const void *                                 pNext          = {};
17627     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {};
17628     VULKAN_HPP_NAMESPACE::Offset3D               srcOffset      = {};
17629     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {};
17630     VULKAN_HPP_NAMESPACE::Offset3D               dstOffset      = {};
17631     VULKAN_HPP_NAMESPACE::Extent3D               extent         = {};
17632   };
17633 
17634   template <>
17635   struct CppType<StructureType, StructureType::eImageCopy2>
17636   {
17637     using Type = ImageCopy2;
17638   };
17639 
17640   using ImageCopy2KHR = ImageCopy2;
17641 
17642   struct CopyImageInfo2
17643   {
17644     using NativeType = VkCopyImageInfo2;
17645 
17646     static const bool                                  allowDuplicate = false;
17647     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyImageInfo2;
17648 
17649 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyImageInfo2VULKAN_HPP_NAMESPACE::CopyImageInfo217650     VULKAN_HPP_CONSTEXPR CopyImageInfo2( VULKAN_HPP_NAMESPACE::Image              srcImage_       = {},
17651                                          VULKAN_HPP_NAMESPACE::ImageLayout        srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
17652                                          VULKAN_HPP_NAMESPACE::Image              dstImage_       = {},
17653                                          VULKAN_HPP_NAMESPACE::ImageLayout        dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
17654                                          uint32_t                                 regionCount_    = {},
17655                                          const VULKAN_HPP_NAMESPACE::ImageCopy2 * pRegions_       = {},
17656                                          const void *                             pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
17657       : pNext{ pNext_ }
17658       , srcImage{ srcImage_ }
17659       , srcImageLayout{ srcImageLayout_ }
17660       , dstImage{ dstImage_ }
17661       , dstImageLayout{ dstImageLayout_ }
17662       , regionCount{ regionCount_ }
17663       , pRegions{ pRegions_ }
17664     {
17665     }
17666 
17667     VULKAN_HPP_CONSTEXPR CopyImageInfo2( CopyImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17668 
CopyImageInfo2VULKAN_HPP_NAMESPACE::CopyImageInfo217669     CopyImageInfo2( VkCopyImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT : CopyImageInfo2( *reinterpret_cast<CopyImageInfo2 const *>( &rhs ) ) {}
17670 
17671 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyImageInfo2VULKAN_HPP_NAMESPACE::CopyImageInfo217672     CopyImageInfo2( VULKAN_HPP_NAMESPACE::Image                                                                   srcImage_,
17673                     VULKAN_HPP_NAMESPACE::ImageLayout                                                             srcImageLayout_,
17674                     VULKAN_HPP_NAMESPACE::Image                                                                   dstImage_,
17675                     VULKAN_HPP_NAMESPACE::ImageLayout                                                             dstImageLayout_,
17676                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageCopy2> const & regions_,
17677                     const void *                                                                                  pNext_ = nullptr )
17678       : pNext( pNext_ )
17679       , srcImage( srcImage_ )
17680       , srcImageLayout( srcImageLayout_ )
17681       , dstImage( dstImage_ )
17682       , dstImageLayout( dstImageLayout_ )
17683       , regionCount( static_cast<uint32_t>( regions_.size() ) )
17684       , pRegions( regions_.data() )
17685     {
17686     }
17687 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
17688 
17689     CopyImageInfo2 & operator=( CopyImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17690 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17691 
operator =VULKAN_HPP_NAMESPACE::CopyImageInfo217692     CopyImageInfo2 & operator=( VkCopyImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
17693     {
17694       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyImageInfo2 const *>( &rhs );
17695       return *this;
17696     }
17697 
17698 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyImageInfo217699     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17700     {
17701       pNext = pNext_;
17702       return *this;
17703     }
17704 
setSrcImageVULKAN_HPP_NAMESPACE::CopyImageInfo217705     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT
17706     {
17707       srcImage = srcImage_;
17708       return *this;
17709     }
17710 
setSrcImageLayoutVULKAN_HPP_NAMESPACE::CopyImageInfo217711     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT
17712     {
17713       srcImageLayout = srcImageLayout_;
17714       return *this;
17715     }
17716 
setDstImageVULKAN_HPP_NAMESPACE::CopyImageInfo217717     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT
17718     {
17719       dstImage = dstImage_;
17720       return *this;
17721     }
17722 
setDstImageLayoutVULKAN_HPP_NAMESPACE::CopyImageInfo217723     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT
17724     {
17725       dstImageLayout = dstImageLayout_;
17726       return *this;
17727     }
17728 
setRegionCountVULKAN_HPP_NAMESPACE::CopyImageInfo217729     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
17730     {
17731       regionCount = regionCount_;
17732       return *this;
17733     }
17734 
setPRegionsVULKAN_HPP_NAMESPACE::CopyImageInfo217735     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setPRegions( const VULKAN_HPP_NAMESPACE::ImageCopy2 * pRegions_ ) VULKAN_HPP_NOEXCEPT
17736     {
17737       pRegions = pRegions_;
17738       return *this;
17739     }
17740 
17741 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRegionsVULKAN_HPP_NAMESPACE::CopyImageInfo217742     CopyImageInfo2 & setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageCopy2> const & regions_ ) VULKAN_HPP_NOEXCEPT
17743     {
17744       regionCount = static_cast<uint32_t>( regions_.size() );
17745       pRegions    = regions_.data();
17746       return *this;
17747     }
17748 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
17749 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17750 
operator VkCopyImageInfo2 const&VULKAN_HPP_NAMESPACE::CopyImageInfo217751     operator VkCopyImageInfo2 const &() const VULKAN_HPP_NOEXCEPT
17752     {
17753       return *reinterpret_cast<const VkCopyImageInfo2 *>( this );
17754     }
17755 
operator VkCopyImageInfo2&VULKAN_HPP_NAMESPACE::CopyImageInfo217756     operator VkCopyImageInfo2 &() VULKAN_HPP_NOEXCEPT
17757     {
17758       return *reinterpret_cast<VkCopyImageInfo2 *>( this );
17759     }
17760 
17761 #if defined( VULKAN_HPP_USE_REFLECT )
17762 #  if 14 <= VULKAN_HPP_CPP_VERSION
17763     auto
17764 #  else
17765     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
17766                const void * const &,
17767                VULKAN_HPP_NAMESPACE::Image const &,
17768                VULKAN_HPP_NAMESPACE::ImageLayout const &,
17769                VULKAN_HPP_NAMESPACE::Image const &,
17770                VULKAN_HPP_NAMESPACE::ImageLayout const &,
17771                uint32_t const &,
17772                const VULKAN_HPP_NAMESPACE::ImageCopy2 * const &>
17773 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyImageInfo217774       reflect() const VULKAN_HPP_NOEXCEPT
17775     {
17776       return std::tie( sType, pNext, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions );
17777     }
17778 #endif
17779 
17780 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
17781     auto operator<=>( CopyImageInfo2 const & ) const = default;
17782 #else
operator ==VULKAN_HPP_NAMESPACE::CopyImageInfo217783     bool operator==( CopyImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
17784     {
17785 #  if defined( VULKAN_HPP_USE_REFLECT )
17786       return this->reflect() == rhs.reflect();
17787 #  else
17788       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcImage == rhs.srcImage ) && ( srcImageLayout == rhs.srcImageLayout ) &&
17789              ( dstImage == rhs.dstImage ) && ( dstImageLayout == rhs.dstImageLayout ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions );
17790 #  endif
17791     }
17792 
operator !=VULKAN_HPP_NAMESPACE::CopyImageInfo217793     bool operator!=( CopyImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
17794     {
17795       return !operator==( rhs );
17796     }
17797 #endif
17798 
17799   public:
17800     VULKAN_HPP_NAMESPACE::StructureType      sType          = StructureType::eCopyImageInfo2;
17801     const void *                             pNext          = {};
17802     VULKAN_HPP_NAMESPACE::Image              srcImage       = {};
17803     VULKAN_HPP_NAMESPACE::ImageLayout        srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
17804     VULKAN_HPP_NAMESPACE::Image              dstImage       = {};
17805     VULKAN_HPP_NAMESPACE::ImageLayout        dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
17806     uint32_t                                 regionCount    = {};
17807     const VULKAN_HPP_NAMESPACE::ImageCopy2 * pRegions       = {};
17808   };
17809 
17810   template <>
17811   struct CppType<StructureType, StructureType::eCopyImageInfo2>
17812   {
17813     using Type = CopyImageInfo2;
17814   };
17815 
17816   using CopyImageInfo2KHR = CopyImageInfo2;
17817 
17818   struct CopyImageToBufferInfo2
17819   {
17820     using NativeType = VkCopyImageToBufferInfo2;
17821 
17822     static const bool                                  allowDuplicate = false;
17823     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyImageToBufferInfo2;
17824 
17825 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyImageToBufferInfo2VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo217826     VULKAN_HPP_CONSTEXPR CopyImageToBufferInfo2( VULKAN_HPP_NAMESPACE::Image                    srcImage_       = {},
17827                                                  VULKAN_HPP_NAMESPACE::ImageLayout              srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
17828                                                  VULKAN_HPP_NAMESPACE::Buffer                   dstBuffer_      = {},
17829                                                  uint32_t                                       regionCount_    = {},
17830                                                  const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions_       = {},
17831                                                  const void *                                   pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
17832       : pNext{ pNext_ }
17833       , srcImage{ srcImage_ }
17834       , srcImageLayout{ srcImageLayout_ }
17835       , dstBuffer{ dstBuffer_ }
17836       , regionCount{ regionCount_ }
17837       , pRegions{ pRegions_ }
17838     {
17839     }
17840 
17841     VULKAN_HPP_CONSTEXPR CopyImageToBufferInfo2( CopyImageToBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17842 
CopyImageToBufferInfo2VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo217843     CopyImageToBufferInfo2( VkCopyImageToBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
17844       : CopyImageToBufferInfo2( *reinterpret_cast<CopyImageToBufferInfo2 const *>( &rhs ) )
17845     {
17846     }
17847 
17848 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyImageToBufferInfo2VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo217849     CopyImageToBufferInfo2( VULKAN_HPP_NAMESPACE::Image                                                                         srcImage_,
17850                             VULKAN_HPP_NAMESPACE::ImageLayout                                                                   srcImageLayout_,
17851                             VULKAN_HPP_NAMESPACE::Buffer                                                                        dstBuffer_,
17852                             VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferImageCopy2> const & regions_,
17853                             const void *                                                                                        pNext_ = nullptr )
17854       : pNext( pNext_ )
17855       , srcImage( srcImage_ )
17856       , srcImageLayout( srcImageLayout_ )
17857       , dstBuffer( dstBuffer_ )
17858       , regionCount( static_cast<uint32_t>( regions_.size() ) )
17859       , pRegions( regions_.data() )
17860     {
17861     }
17862 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
17863 
17864     CopyImageToBufferInfo2 & operator=( CopyImageToBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17865 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17866 
operator =VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo217867     CopyImageToBufferInfo2 & operator=( VkCopyImageToBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
17868     {
17869       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 const *>( &rhs );
17870       return *this;
17871     }
17872 
17873 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo217874     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17875     {
17876       pNext = pNext_;
17877       return *this;
17878     }
17879 
setSrcImageVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo217880     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT
17881     {
17882       srcImage = srcImage_;
17883       return *this;
17884     }
17885 
setSrcImageLayoutVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo217886     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT
17887     {
17888       srcImageLayout = srcImageLayout_;
17889       return *this;
17890     }
17891 
setDstBufferVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo217892     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setDstBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer_ ) VULKAN_HPP_NOEXCEPT
17893     {
17894       dstBuffer = dstBuffer_;
17895       return *this;
17896     }
17897 
setRegionCountVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo217898     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
17899     {
17900       regionCount = regionCount_;
17901       return *this;
17902     }
17903 
setPRegionsVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo217904     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setPRegions( const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions_ ) VULKAN_HPP_NOEXCEPT
17905     {
17906       pRegions = pRegions_;
17907       return *this;
17908     }
17909 
17910 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
17911     CopyImageToBufferInfo2 &
setRegionsVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo217912       setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferImageCopy2> const & regions_ ) VULKAN_HPP_NOEXCEPT
17913     {
17914       regionCount = static_cast<uint32_t>( regions_.size() );
17915       pRegions    = regions_.data();
17916       return *this;
17917     }
17918 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
17919 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17920 
operator VkCopyImageToBufferInfo2 const&VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo217921     operator VkCopyImageToBufferInfo2 const &() const VULKAN_HPP_NOEXCEPT
17922     {
17923       return *reinterpret_cast<const VkCopyImageToBufferInfo2 *>( this );
17924     }
17925 
operator VkCopyImageToBufferInfo2&VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo217926     operator VkCopyImageToBufferInfo2 &() VULKAN_HPP_NOEXCEPT
17927     {
17928       return *reinterpret_cast<VkCopyImageToBufferInfo2 *>( this );
17929     }
17930 
17931 #if defined( VULKAN_HPP_USE_REFLECT )
17932 #  if 14 <= VULKAN_HPP_CPP_VERSION
17933     auto
17934 #  else
17935     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
17936                const void * const &,
17937                VULKAN_HPP_NAMESPACE::Image const &,
17938                VULKAN_HPP_NAMESPACE::ImageLayout const &,
17939                VULKAN_HPP_NAMESPACE::Buffer const &,
17940                uint32_t const &,
17941                const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * const &>
17942 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo217943       reflect() const VULKAN_HPP_NOEXCEPT
17944     {
17945       return std::tie( sType, pNext, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions );
17946     }
17947 #endif
17948 
17949 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
17950     auto operator<=>( CopyImageToBufferInfo2 const & ) const = default;
17951 #else
operator ==VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo217952     bool operator==( CopyImageToBufferInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
17953     {
17954 #  if defined( VULKAN_HPP_USE_REFLECT )
17955       return this->reflect() == rhs.reflect();
17956 #  else
17957       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcImage == rhs.srcImage ) && ( srcImageLayout == rhs.srcImageLayout ) &&
17958              ( dstBuffer == rhs.dstBuffer ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions );
17959 #  endif
17960     }
17961 
operator !=VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo217962     bool operator!=( CopyImageToBufferInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
17963     {
17964       return !operator==( rhs );
17965     }
17966 #endif
17967 
17968   public:
17969     VULKAN_HPP_NAMESPACE::StructureType            sType          = StructureType::eCopyImageToBufferInfo2;
17970     const void *                                   pNext          = {};
17971     VULKAN_HPP_NAMESPACE::Image                    srcImage       = {};
17972     VULKAN_HPP_NAMESPACE::ImageLayout              srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
17973     VULKAN_HPP_NAMESPACE::Buffer                   dstBuffer      = {};
17974     uint32_t                                       regionCount    = {};
17975     const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions       = {};
17976   };
17977 
17978   template <>
17979   struct CppType<StructureType, StructureType::eCopyImageToBufferInfo2>
17980   {
17981     using Type = CopyImageToBufferInfo2;
17982   };
17983 
17984   using CopyImageToBufferInfo2KHR = CopyImageToBufferInfo2;
17985 
17986   struct CopyImageToImageInfoEXT
17987   {
17988     using NativeType = VkCopyImageToImageInfoEXT;
17989 
17990     static const bool                                  allowDuplicate = false;
17991     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyImageToImageInfoEXT;
17992 
17993 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyImageToImageInfoEXTVULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT17994     VULKAN_HPP_CONSTEXPR CopyImageToImageInfoEXT( VULKAN_HPP_NAMESPACE::HostImageCopyFlagsEXT flags_          = {},
17995                                                   VULKAN_HPP_NAMESPACE::Image                 srcImage_       = {},
17996                                                   VULKAN_HPP_NAMESPACE::ImageLayout           srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
17997                                                   VULKAN_HPP_NAMESPACE::Image                 dstImage_       = {},
17998                                                   VULKAN_HPP_NAMESPACE::ImageLayout           dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
17999                                                   uint32_t                                    regionCount_    = {},
18000                                                   const VULKAN_HPP_NAMESPACE::ImageCopy2 *    pRegions_       = {},
18001                                                   const void *                                pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
18002       : pNext{ pNext_ }
18003       , flags{ flags_ }
18004       , srcImage{ srcImage_ }
18005       , srcImageLayout{ srcImageLayout_ }
18006       , dstImage{ dstImage_ }
18007       , dstImageLayout{ dstImageLayout_ }
18008       , regionCount{ regionCount_ }
18009       , pRegions{ pRegions_ }
18010     {
18011     }
18012 
18013     VULKAN_HPP_CONSTEXPR CopyImageToImageInfoEXT( CopyImageToImageInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18014 
CopyImageToImageInfoEXTVULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT18015     CopyImageToImageInfoEXT( VkCopyImageToImageInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
18016       : CopyImageToImageInfoEXT( *reinterpret_cast<CopyImageToImageInfoEXT const *>( &rhs ) )
18017     {
18018     }
18019 
18020 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyImageToImageInfoEXTVULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT18021     CopyImageToImageInfoEXT( VULKAN_HPP_NAMESPACE::HostImageCopyFlagsEXT                                                   flags_,
18022                              VULKAN_HPP_NAMESPACE::Image                                                                   srcImage_,
18023                              VULKAN_HPP_NAMESPACE::ImageLayout                                                             srcImageLayout_,
18024                              VULKAN_HPP_NAMESPACE::Image                                                                   dstImage_,
18025                              VULKAN_HPP_NAMESPACE::ImageLayout                                                             dstImageLayout_,
18026                              VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageCopy2> const & regions_,
18027                              const void *                                                                                  pNext_ = nullptr )
18028       : pNext( pNext_ )
18029       , flags( flags_ )
18030       , srcImage( srcImage_ )
18031       , srcImageLayout( srcImageLayout_ )
18032       , dstImage( dstImage_ )
18033       , dstImageLayout( dstImageLayout_ )
18034       , regionCount( static_cast<uint32_t>( regions_.size() ) )
18035       , pRegions( regions_.data() )
18036     {
18037     }
18038 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
18039 
18040     CopyImageToImageInfoEXT & operator=( CopyImageToImageInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18041 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18042 
operator =VULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT18043     CopyImageToImageInfoEXT & operator=( VkCopyImageToImageInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
18044     {
18045       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT const *>( &rhs );
18046       return *this;
18047     }
18048 
18049 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT18050     VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18051     {
18052       pNext = pNext_;
18053       return *this;
18054     }
18055 
setFlagsVULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT18056     VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::HostImageCopyFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
18057     {
18058       flags = flags_;
18059       return *this;
18060     }
18061 
setSrcImageVULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT18062     VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfoEXT & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT
18063     {
18064       srcImage = srcImage_;
18065       return *this;
18066     }
18067 
setSrcImageLayoutVULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT18068     VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfoEXT & setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT
18069     {
18070       srcImageLayout = srcImageLayout_;
18071       return *this;
18072     }
18073 
setDstImageVULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT18074     VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfoEXT & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT
18075     {
18076       dstImage = dstImage_;
18077       return *this;
18078     }
18079 
setDstImageLayoutVULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT18080     VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfoEXT & setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT
18081     {
18082       dstImageLayout = dstImageLayout_;
18083       return *this;
18084     }
18085 
setRegionCountVULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT18086     VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfoEXT & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
18087     {
18088       regionCount = regionCount_;
18089       return *this;
18090     }
18091 
setPRegionsVULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT18092     VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfoEXT & setPRegions( const VULKAN_HPP_NAMESPACE::ImageCopy2 * pRegions_ ) VULKAN_HPP_NOEXCEPT
18093     {
18094       pRegions = pRegions_;
18095       return *this;
18096     }
18097 
18098 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
18099     CopyImageToImageInfoEXT &
setRegionsVULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT18100       setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageCopy2> const & regions_ ) VULKAN_HPP_NOEXCEPT
18101     {
18102       regionCount = static_cast<uint32_t>( regions_.size() );
18103       pRegions    = regions_.data();
18104       return *this;
18105     }
18106 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
18107 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18108 
operator VkCopyImageToImageInfoEXT const&VULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT18109     operator VkCopyImageToImageInfoEXT const &() const VULKAN_HPP_NOEXCEPT
18110     {
18111       return *reinterpret_cast<const VkCopyImageToImageInfoEXT *>( this );
18112     }
18113 
operator VkCopyImageToImageInfoEXT&VULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT18114     operator VkCopyImageToImageInfoEXT &() VULKAN_HPP_NOEXCEPT
18115     {
18116       return *reinterpret_cast<VkCopyImageToImageInfoEXT *>( this );
18117     }
18118 
18119 #if defined( VULKAN_HPP_USE_REFLECT )
18120 #  if 14 <= VULKAN_HPP_CPP_VERSION
18121     auto
18122 #  else
18123     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
18124                const void * const &,
18125                VULKAN_HPP_NAMESPACE::HostImageCopyFlagsEXT const &,
18126                VULKAN_HPP_NAMESPACE::Image const &,
18127                VULKAN_HPP_NAMESPACE::ImageLayout const &,
18128                VULKAN_HPP_NAMESPACE::Image const &,
18129                VULKAN_HPP_NAMESPACE::ImageLayout const &,
18130                uint32_t const &,
18131                const VULKAN_HPP_NAMESPACE::ImageCopy2 * const &>
18132 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT18133       reflect() const VULKAN_HPP_NOEXCEPT
18134     {
18135       return std::tie( sType, pNext, flags, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions );
18136     }
18137 #endif
18138 
18139 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
18140     auto operator<=>( CopyImageToImageInfoEXT const & ) const = default;
18141 #else
operator ==VULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT18142     bool operator==( CopyImageToImageInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
18143     {
18144 #  if defined( VULKAN_HPP_USE_REFLECT )
18145       return this->reflect() == rhs.reflect();
18146 #  else
18147       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( srcImage == rhs.srcImage ) &&
18148              ( srcImageLayout == rhs.srcImageLayout ) && ( dstImage == rhs.dstImage ) && ( dstImageLayout == rhs.dstImageLayout ) &&
18149              ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions );
18150 #  endif
18151     }
18152 
operator !=VULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT18153     bool operator!=( CopyImageToImageInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
18154     {
18155       return !operator==( rhs );
18156     }
18157 #endif
18158 
18159   public:
18160     VULKAN_HPP_NAMESPACE::StructureType         sType          = StructureType::eCopyImageToImageInfoEXT;
18161     const void *                                pNext          = {};
18162     VULKAN_HPP_NAMESPACE::HostImageCopyFlagsEXT flags          = {};
18163     VULKAN_HPP_NAMESPACE::Image                 srcImage       = {};
18164     VULKAN_HPP_NAMESPACE::ImageLayout           srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
18165     VULKAN_HPP_NAMESPACE::Image                 dstImage       = {};
18166     VULKAN_HPP_NAMESPACE::ImageLayout           dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
18167     uint32_t                                    regionCount    = {};
18168     const VULKAN_HPP_NAMESPACE::ImageCopy2 *    pRegions       = {};
18169   };
18170 
18171   template <>
18172   struct CppType<StructureType, StructureType::eCopyImageToImageInfoEXT>
18173   {
18174     using Type = CopyImageToImageInfoEXT;
18175   };
18176 
18177   struct ImageToMemoryCopyEXT
18178   {
18179     using NativeType = VkImageToMemoryCopyEXT;
18180 
18181     static const bool                                  allowDuplicate = false;
18182     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageToMemoryCopyEXT;
18183 
18184 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageToMemoryCopyEXTVULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT18185     VULKAN_HPP_CONSTEXPR ImageToMemoryCopyEXT( void *                                       pHostPointer_      = {},
18186                                                uint32_t                                     memoryRowLength_   = {},
18187                                                uint32_t                                     memoryImageHeight_ = {},
18188                                                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource_  = {},
18189                                                VULKAN_HPP_NAMESPACE::Offset3D               imageOffset_       = {},
18190                                                VULKAN_HPP_NAMESPACE::Extent3D               imageExtent_       = {},
18191                                                const void *                                 pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
18192       : pNext{ pNext_ }
18193       , pHostPointer{ pHostPointer_ }
18194       , memoryRowLength{ memoryRowLength_ }
18195       , memoryImageHeight{ memoryImageHeight_ }
18196       , imageSubresource{ imageSubresource_ }
18197       , imageOffset{ imageOffset_ }
18198       , imageExtent{ imageExtent_ }
18199     {
18200     }
18201 
18202     VULKAN_HPP_CONSTEXPR ImageToMemoryCopyEXT( ImageToMemoryCopyEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18203 
ImageToMemoryCopyEXTVULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT18204     ImageToMemoryCopyEXT( VkImageToMemoryCopyEXT const & rhs ) VULKAN_HPP_NOEXCEPT
18205       : ImageToMemoryCopyEXT( *reinterpret_cast<ImageToMemoryCopyEXT const *>( &rhs ) )
18206     {
18207     }
18208 
18209     ImageToMemoryCopyEXT & operator=( ImageToMemoryCopyEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18210 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18211 
operator =VULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT18212     ImageToMemoryCopyEXT & operator=( VkImageToMemoryCopyEXT const & rhs ) VULKAN_HPP_NOEXCEPT
18213     {
18214       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT const *>( &rhs );
18215       return *this;
18216     }
18217 
18218 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT18219     VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopyEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18220     {
18221       pNext = pNext_;
18222       return *this;
18223     }
18224 
setPHostPointerVULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT18225     VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopyEXT & setPHostPointer( void * pHostPointer_ ) VULKAN_HPP_NOEXCEPT
18226     {
18227       pHostPointer = pHostPointer_;
18228       return *this;
18229     }
18230 
setMemoryRowLengthVULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT18231     VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopyEXT & setMemoryRowLength( uint32_t memoryRowLength_ ) VULKAN_HPP_NOEXCEPT
18232     {
18233       memoryRowLength = memoryRowLength_;
18234       return *this;
18235     }
18236 
setMemoryImageHeightVULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT18237     VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopyEXT & setMemoryImageHeight( uint32_t memoryImageHeight_ ) VULKAN_HPP_NOEXCEPT
18238     {
18239       memoryImageHeight = memoryImageHeight_;
18240       return *this;
18241     }
18242 
18243     VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopyEXT &
setImageSubresourceVULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT18244       setImageSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & imageSubresource_ ) VULKAN_HPP_NOEXCEPT
18245     {
18246       imageSubresource = imageSubresource_;
18247       return *this;
18248     }
18249 
setImageOffsetVULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT18250     VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopyEXT & setImageOffset( VULKAN_HPP_NAMESPACE::Offset3D const & imageOffset_ ) VULKAN_HPP_NOEXCEPT
18251     {
18252       imageOffset = imageOffset_;
18253       return *this;
18254     }
18255 
setImageExtentVULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT18256     VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopyEXT & setImageExtent( VULKAN_HPP_NAMESPACE::Extent3D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
18257     {
18258       imageExtent = imageExtent_;
18259       return *this;
18260     }
18261 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18262 
operator VkImageToMemoryCopyEXT const&VULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT18263     operator VkImageToMemoryCopyEXT const &() const VULKAN_HPP_NOEXCEPT
18264     {
18265       return *reinterpret_cast<const VkImageToMemoryCopyEXT *>( this );
18266     }
18267 
operator VkImageToMemoryCopyEXT&VULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT18268     operator VkImageToMemoryCopyEXT &() VULKAN_HPP_NOEXCEPT
18269     {
18270       return *reinterpret_cast<VkImageToMemoryCopyEXT *>( this );
18271     }
18272 
18273 #if defined( VULKAN_HPP_USE_REFLECT )
18274 #  if 14 <= VULKAN_HPP_CPP_VERSION
18275     auto
18276 #  else
18277     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
18278                const void * const &,
18279                void * const &,
18280                uint32_t const &,
18281                uint32_t const &,
18282                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
18283                VULKAN_HPP_NAMESPACE::Offset3D const &,
18284                VULKAN_HPP_NAMESPACE::Extent3D const &>
18285 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT18286       reflect() const VULKAN_HPP_NOEXCEPT
18287     {
18288       return std::tie( sType, pNext, pHostPointer, memoryRowLength, memoryImageHeight, imageSubresource, imageOffset, imageExtent );
18289     }
18290 #endif
18291 
18292 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
18293     auto operator<=>( ImageToMemoryCopyEXT const & ) const = default;
18294 #else
operator ==VULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT18295     bool operator==( ImageToMemoryCopyEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
18296     {
18297 #  if defined( VULKAN_HPP_USE_REFLECT )
18298       return this->reflect() == rhs.reflect();
18299 #  else
18300       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pHostPointer == rhs.pHostPointer ) && ( memoryRowLength == rhs.memoryRowLength ) &&
18301              ( memoryImageHeight == rhs.memoryImageHeight ) && ( imageSubresource == rhs.imageSubresource ) && ( imageOffset == rhs.imageOffset ) &&
18302              ( imageExtent == rhs.imageExtent );
18303 #  endif
18304     }
18305 
operator !=VULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT18306     bool operator!=( ImageToMemoryCopyEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
18307     {
18308       return !operator==( rhs );
18309     }
18310 #endif
18311 
18312   public:
18313     VULKAN_HPP_NAMESPACE::StructureType          sType             = StructureType::eImageToMemoryCopyEXT;
18314     const void *                                 pNext             = {};
18315     void *                                       pHostPointer      = {};
18316     uint32_t                                     memoryRowLength   = {};
18317     uint32_t                                     memoryImageHeight = {};
18318     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource  = {};
18319     VULKAN_HPP_NAMESPACE::Offset3D               imageOffset       = {};
18320     VULKAN_HPP_NAMESPACE::Extent3D               imageExtent       = {};
18321   };
18322 
18323   template <>
18324   struct CppType<StructureType, StructureType::eImageToMemoryCopyEXT>
18325   {
18326     using Type = ImageToMemoryCopyEXT;
18327   };
18328 
18329   struct CopyImageToMemoryInfoEXT
18330   {
18331     using NativeType = VkCopyImageToMemoryInfoEXT;
18332 
18333     static const bool                                  allowDuplicate = false;
18334     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyImageToMemoryInfoEXT;
18335 
18336 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyImageToMemoryInfoEXTVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfoEXT18337     VULKAN_HPP_CONSTEXPR CopyImageToMemoryInfoEXT( VULKAN_HPP_NAMESPACE::HostImageCopyFlagsEXT flags_           = {},
18338                                                    VULKAN_HPP_NAMESPACE::Image                 srcImage_        = {},
18339                                                    VULKAN_HPP_NAMESPACE::ImageLayout           srcImageLayout_  = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
18340                                                    uint32_t                                    regionCount_     = {},
18341                                                    const VULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT * pRegions_ = {},
18342                                                    const void *                                       pNext_    = nullptr ) VULKAN_HPP_NOEXCEPT
18343       : pNext{ pNext_ }
18344       , flags{ flags_ }
18345       , srcImage{ srcImage_ }
18346       , srcImageLayout{ srcImageLayout_ }
18347       , regionCount{ regionCount_ }
18348       , pRegions{ pRegions_ }
18349     {
18350     }
18351 
18352     VULKAN_HPP_CONSTEXPR CopyImageToMemoryInfoEXT( CopyImageToMemoryInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18353 
CopyImageToMemoryInfoEXTVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfoEXT18354     CopyImageToMemoryInfoEXT( VkCopyImageToMemoryInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
18355       : CopyImageToMemoryInfoEXT( *reinterpret_cast<CopyImageToMemoryInfoEXT const *>( &rhs ) )
18356     {
18357     }
18358 
18359 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyImageToMemoryInfoEXTVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfoEXT18360     CopyImageToMemoryInfoEXT( VULKAN_HPP_NAMESPACE::HostImageCopyFlagsEXT                                                             flags_,
18361                               VULKAN_HPP_NAMESPACE::Image                                                                             srcImage_,
18362                               VULKAN_HPP_NAMESPACE::ImageLayout                                                                       srcImageLayout_,
18363                               VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT> const & regions_,
18364                               const void *                                                                                            pNext_ = nullptr )
18365       : pNext( pNext_ )
18366       , flags( flags_ )
18367       , srcImage( srcImage_ )
18368       , srcImageLayout( srcImageLayout_ )
18369       , regionCount( static_cast<uint32_t>( regions_.size() ) )
18370       , pRegions( regions_.data() )
18371     {
18372     }
18373 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
18374 
18375     CopyImageToMemoryInfoEXT & operator=( CopyImageToMemoryInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18376 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18377 
operator =VULKAN_HPP_NAMESPACE::CopyImageToMemoryInfoEXT18378     CopyImageToMemoryInfoEXT & operator=( VkCopyImageToMemoryInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
18379     {
18380       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyImageToMemoryInfoEXT const *>( &rhs );
18381       return *this;
18382     }
18383 
18384 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfoEXT18385     VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18386     {
18387       pNext = pNext_;
18388       return *this;
18389     }
18390 
setFlagsVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfoEXT18391     VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::HostImageCopyFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
18392     {
18393       flags = flags_;
18394       return *this;
18395     }
18396 
setSrcImageVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfoEXT18397     VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfoEXT & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT
18398     {
18399       srcImage = srcImage_;
18400       return *this;
18401     }
18402 
setSrcImageLayoutVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfoEXT18403     VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfoEXT & setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT
18404     {
18405       srcImageLayout = srcImageLayout_;
18406       return *this;
18407     }
18408 
setRegionCountVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfoEXT18409     VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfoEXT & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
18410     {
18411       regionCount = regionCount_;
18412       return *this;
18413     }
18414 
setPRegionsVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfoEXT18415     VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfoEXT & setPRegions( const VULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT * pRegions_ ) VULKAN_HPP_NOEXCEPT
18416     {
18417       pRegions = pRegions_;
18418       return *this;
18419     }
18420 
18421 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
18422     CopyImageToMemoryInfoEXT &
setRegionsVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfoEXT18423       setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT> const & regions_ ) VULKAN_HPP_NOEXCEPT
18424     {
18425       regionCount = static_cast<uint32_t>( regions_.size() );
18426       pRegions    = regions_.data();
18427       return *this;
18428     }
18429 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
18430 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18431 
operator VkCopyImageToMemoryInfoEXT const&VULKAN_HPP_NAMESPACE::CopyImageToMemoryInfoEXT18432     operator VkCopyImageToMemoryInfoEXT const &() const VULKAN_HPP_NOEXCEPT
18433     {
18434       return *reinterpret_cast<const VkCopyImageToMemoryInfoEXT *>( this );
18435     }
18436 
operator VkCopyImageToMemoryInfoEXT&VULKAN_HPP_NAMESPACE::CopyImageToMemoryInfoEXT18437     operator VkCopyImageToMemoryInfoEXT &() VULKAN_HPP_NOEXCEPT
18438     {
18439       return *reinterpret_cast<VkCopyImageToMemoryInfoEXT *>( this );
18440     }
18441 
18442 #if defined( VULKAN_HPP_USE_REFLECT )
18443 #  if 14 <= VULKAN_HPP_CPP_VERSION
18444     auto
18445 #  else
18446     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
18447                const void * const &,
18448                VULKAN_HPP_NAMESPACE::HostImageCopyFlagsEXT const &,
18449                VULKAN_HPP_NAMESPACE::Image const &,
18450                VULKAN_HPP_NAMESPACE::ImageLayout const &,
18451                uint32_t const &,
18452                const VULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT * const &>
18453 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyImageToMemoryInfoEXT18454       reflect() const VULKAN_HPP_NOEXCEPT
18455     {
18456       return std::tie( sType, pNext, flags, srcImage, srcImageLayout, regionCount, pRegions );
18457     }
18458 #endif
18459 
18460 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
18461     auto operator<=>( CopyImageToMemoryInfoEXT const & ) const = default;
18462 #else
operator ==VULKAN_HPP_NAMESPACE::CopyImageToMemoryInfoEXT18463     bool operator==( CopyImageToMemoryInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
18464     {
18465 #  if defined( VULKAN_HPP_USE_REFLECT )
18466       return this->reflect() == rhs.reflect();
18467 #  else
18468       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( srcImage == rhs.srcImage ) &&
18469              ( srcImageLayout == rhs.srcImageLayout ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions );
18470 #  endif
18471     }
18472 
operator !=VULKAN_HPP_NAMESPACE::CopyImageToMemoryInfoEXT18473     bool operator!=( CopyImageToMemoryInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
18474     {
18475       return !operator==( rhs );
18476     }
18477 #endif
18478 
18479   public:
18480     VULKAN_HPP_NAMESPACE::StructureType                sType          = StructureType::eCopyImageToMemoryInfoEXT;
18481     const void *                                       pNext          = {};
18482     VULKAN_HPP_NAMESPACE::HostImageCopyFlagsEXT        flags          = {};
18483     VULKAN_HPP_NAMESPACE::Image                        srcImage       = {};
18484     VULKAN_HPP_NAMESPACE::ImageLayout                  srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
18485     uint32_t                                           regionCount    = {};
18486     const VULKAN_HPP_NAMESPACE::ImageToMemoryCopyEXT * pRegions       = {};
18487   };
18488 
18489   template <>
18490   struct CppType<StructureType, StructureType::eCopyImageToMemoryInfoEXT>
18491   {
18492     using Type = CopyImageToMemoryInfoEXT;
18493   };
18494 
18495   struct CopyMemoryIndirectCommandNV
18496   {
18497     using NativeType = VkCopyMemoryIndirectCommandNV;
18498 
18499 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyMemoryIndirectCommandNVVULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18500     VULKAN_HPP_CONSTEXPR CopyMemoryIndirectCommandNV( VULKAN_HPP_NAMESPACE::DeviceAddress srcAddress_ = {},
18501                                                       VULKAN_HPP_NAMESPACE::DeviceAddress dstAddress_ = {},
18502                                                       VULKAN_HPP_NAMESPACE::DeviceSize    size_       = {} ) VULKAN_HPP_NOEXCEPT
18503       : srcAddress{ srcAddress_ }
18504       , dstAddress{ dstAddress_ }
18505       , size{ size_ }
18506     {
18507     }
18508 
18509     VULKAN_HPP_CONSTEXPR CopyMemoryIndirectCommandNV( CopyMemoryIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18510 
CopyMemoryIndirectCommandNVVULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18511     CopyMemoryIndirectCommandNV( VkCopyMemoryIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
18512       : CopyMemoryIndirectCommandNV( *reinterpret_cast<CopyMemoryIndirectCommandNV const *>( &rhs ) )
18513     {
18514     }
18515 
18516     CopyMemoryIndirectCommandNV & operator=( CopyMemoryIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18517 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18518 
operator =VULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18519     CopyMemoryIndirectCommandNV & operator=( VkCopyMemoryIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
18520     {
18521       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV const *>( &rhs );
18522       return *this;
18523     }
18524 
18525 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcAddressVULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18526     VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectCommandNV & setSrcAddress( VULKAN_HPP_NAMESPACE::DeviceAddress srcAddress_ ) VULKAN_HPP_NOEXCEPT
18527     {
18528       srcAddress = srcAddress_;
18529       return *this;
18530     }
18531 
setDstAddressVULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18532     VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectCommandNV & setDstAddress( VULKAN_HPP_NAMESPACE::DeviceAddress dstAddress_ ) VULKAN_HPP_NOEXCEPT
18533     {
18534       dstAddress = dstAddress_;
18535       return *this;
18536     }
18537 
setSizeVULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18538     VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectCommandNV & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
18539     {
18540       size = size_;
18541       return *this;
18542     }
18543 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18544 
operator VkCopyMemoryIndirectCommandNV const&VULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18545     operator VkCopyMemoryIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT
18546     {
18547       return *reinterpret_cast<const VkCopyMemoryIndirectCommandNV *>( this );
18548     }
18549 
operator VkCopyMemoryIndirectCommandNV&VULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18550     operator VkCopyMemoryIndirectCommandNV &() VULKAN_HPP_NOEXCEPT
18551     {
18552       return *reinterpret_cast<VkCopyMemoryIndirectCommandNV *>( this );
18553     }
18554 
18555 #if defined( VULKAN_HPP_USE_REFLECT )
18556 #  if 14 <= VULKAN_HPP_CPP_VERSION
18557     auto
18558 #  else
18559     std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &, VULKAN_HPP_NAMESPACE::DeviceAddress const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
18560 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18561       reflect() const VULKAN_HPP_NOEXCEPT
18562     {
18563       return std::tie( srcAddress, dstAddress, size );
18564     }
18565 #endif
18566 
18567 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
18568     auto operator<=>( CopyMemoryIndirectCommandNV const & ) const = default;
18569 #else
operator ==VULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18570     bool operator==( CopyMemoryIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
18571     {
18572 #  if defined( VULKAN_HPP_USE_REFLECT )
18573       return this->reflect() == rhs.reflect();
18574 #  else
18575       return ( srcAddress == rhs.srcAddress ) && ( dstAddress == rhs.dstAddress ) && ( size == rhs.size );
18576 #  endif
18577     }
18578 
operator !=VULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV18579     bool operator!=( CopyMemoryIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
18580     {
18581       return !operator==( rhs );
18582     }
18583 #endif
18584 
18585   public:
18586     VULKAN_HPP_NAMESPACE::DeviceAddress srcAddress = {};
18587     VULKAN_HPP_NAMESPACE::DeviceAddress dstAddress = {};
18588     VULKAN_HPP_NAMESPACE::DeviceSize    size       = {};
18589   };
18590 
18591   struct CopyMemoryToAccelerationStructureInfoKHR
18592   {
18593     using NativeType = VkCopyMemoryToAccelerationStructureInfoKHR;
18594 
18595     static const bool                                  allowDuplicate = false;
18596     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyMemoryToAccelerationStructureInfoKHR;
18597 
18598 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyMemoryToAccelerationStructureInfoKHRVULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR18599     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR(
18600       VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      src_   = {},
18601       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         dst_   = {},
18602       VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_  = VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone,
18603       const void *                                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
18604       : pNext{ pNext_ }
18605       , src{ src_ }
18606       , dst{ dst_ }
18607       , mode{ mode_ }
18608     {
18609     }
18610 
18611     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR( CopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18612 
CopyMemoryToAccelerationStructureInfoKHRVULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR18613     CopyMemoryToAccelerationStructureInfoKHR( VkCopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
18614       : CopyMemoryToAccelerationStructureInfoKHR( *reinterpret_cast<CopyMemoryToAccelerationStructureInfoKHR const *>( &rhs ) )
18615     {
18616     }
18617 
18618     CopyMemoryToAccelerationStructureInfoKHR & operator=( CopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18619 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18620 
operator =VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR18621     CopyMemoryToAccelerationStructureInfoKHR & operator=( VkCopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
18622     {
18623       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR const *>( &rhs );
18624       return *this;
18625     }
18626 
18627 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR18628     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18629     {
18630       pNext = pNext_;
18631       return *this;
18632     }
18633 
18634     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR &
setSrcVULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR18635       setSrc( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & src_ ) VULKAN_HPP_NOEXCEPT
18636     {
18637       src = src_;
18638       return *this;
18639     }
18640 
setDstVULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR18641     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR & setDst( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dst_ ) VULKAN_HPP_NOEXCEPT
18642     {
18643       dst = dst_;
18644       return *this;
18645     }
18646 
18647     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR &
setModeVULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR18648       setMode( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ ) VULKAN_HPP_NOEXCEPT
18649     {
18650       mode = mode_;
18651       return *this;
18652     }
18653 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18654 
operator VkCopyMemoryToAccelerationStructureInfoKHR const&VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR18655     operator VkCopyMemoryToAccelerationStructureInfoKHR const &() const VULKAN_HPP_NOEXCEPT
18656     {
18657       return *reinterpret_cast<const VkCopyMemoryToAccelerationStructureInfoKHR *>( this );
18658     }
18659 
operator VkCopyMemoryToAccelerationStructureInfoKHR&VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR18660     operator VkCopyMemoryToAccelerationStructureInfoKHR &() VULKAN_HPP_NOEXCEPT
18661     {
18662       return *reinterpret_cast<VkCopyMemoryToAccelerationStructureInfoKHR *>( this );
18663     }
18664 
18665 #if defined( VULKAN_HPP_USE_REFLECT )
18666 #  if 14 <= VULKAN_HPP_CPP_VERSION
18667     auto
18668 #  else
18669     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
18670                const void * const &,
18671                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
18672                VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const &,
18673                VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR const &>
18674 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR18675       reflect() const VULKAN_HPP_NOEXCEPT
18676     {
18677       return std::tie( sType, pNext, src, dst, mode );
18678     }
18679 #endif
18680 
18681   public:
18682     VULKAN_HPP_NAMESPACE::StructureType                    sType = StructureType::eCopyMemoryToAccelerationStructureInfoKHR;
18683     const void *                                           pNext = {};
18684     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      src   = {};
18685     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR         dst   = {};
18686     VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode  = VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone;
18687   };
18688 
18689   template <>
18690   struct CppType<StructureType, StructureType::eCopyMemoryToAccelerationStructureInfoKHR>
18691   {
18692     using Type = CopyMemoryToAccelerationStructureInfoKHR;
18693   };
18694 
18695   struct CopyMemoryToImageIndirectCommandNV
18696   {
18697     using NativeType = VkCopyMemoryToImageIndirectCommandNV;
18698 
18699 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyMemoryToImageIndirectCommandNVVULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18700     VULKAN_HPP_CONSTEXPR CopyMemoryToImageIndirectCommandNV( VULKAN_HPP_NAMESPACE::DeviceAddress          srcAddress_        = {},
18701                                                              uint32_t                                     bufferRowLength_   = {},
18702                                                              uint32_t                                     bufferImageHeight_ = {},
18703                                                              VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource_  = {},
18704                                                              VULKAN_HPP_NAMESPACE::Offset3D               imageOffset_       = {},
18705                                                              VULKAN_HPP_NAMESPACE::Extent3D               imageExtent_       = {} ) VULKAN_HPP_NOEXCEPT
18706       : srcAddress{ srcAddress_ }
18707       , bufferRowLength{ bufferRowLength_ }
18708       , bufferImageHeight{ bufferImageHeight_ }
18709       , imageSubresource{ imageSubresource_ }
18710       , imageOffset{ imageOffset_ }
18711       , imageExtent{ imageExtent_ }
18712     {
18713     }
18714 
18715     VULKAN_HPP_CONSTEXPR CopyMemoryToImageIndirectCommandNV( CopyMemoryToImageIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18716 
CopyMemoryToImageIndirectCommandNVVULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18717     CopyMemoryToImageIndirectCommandNV( VkCopyMemoryToImageIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
18718       : CopyMemoryToImageIndirectCommandNV( *reinterpret_cast<CopyMemoryToImageIndirectCommandNV const *>( &rhs ) )
18719     {
18720     }
18721 
18722     CopyMemoryToImageIndirectCommandNV & operator=( CopyMemoryToImageIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18723 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18724 
operator =VULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18725     CopyMemoryToImageIndirectCommandNV & operator=( VkCopyMemoryToImageIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
18726     {
18727       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV const *>( &rhs );
18728       return *this;
18729     }
18730 
18731 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcAddressVULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18732     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandNV & setSrcAddress( VULKAN_HPP_NAMESPACE::DeviceAddress srcAddress_ ) VULKAN_HPP_NOEXCEPT
18733     {
18734       srcAddress = srcAddress_;
18735       return *this;
18736     }
18737 
setBufferRowLengthVULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18738     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandNV & setBufferRowLength( uint32_t bufferRowLength_ ) VULKAN_HPP_NOEXCEPT
18739     {
18740       bufferRowLength = bufferRowLength_;
18741       return *this;
18742     }
18743 
setBufferImageHeightVULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18744     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandNV & setBufferImageHeight( uint32_t bufferImageHeight_ ) VULKAN_HPP_NOEXCEPT
18745     {
18746       bufferImageHeight = bufferImageHeight_;
18747       return *this;
18748     }
18749 
18750     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandNV &
setImageSubresourceVULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18751       setImageSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & imageSubresource_ ) VULKAN_HPP_NOEXCEPT
18752     {
18753       imageSubresource = imageSubresource_;
18754       return *this;
18755     }
18756 
setImageOffsetVULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18757     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandNV & setImageOffset( VULKAN_HPP_NAMESPACE::Offset3D const & imageOffset_ ) VULKAN_HPP_NOEXCEPT
18758     {
18759       imageOffset = imageOffset_;
18760       return *this;
18761     }
18762 
setImageExtentVULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18763     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandNV & setImageExtent( VULKAN_HPP_NAMESPACE::Extent3D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
18764     {
18765       imageExtent = imageExtent_;
18766       return *this;
18767     }
18768 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18769 
operator VkCopyMemoryToImageIndirectCommandNV const&VULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18770     operator VkCopyMemoryToImageIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT
18771     {
18772       return *reinterpret_cast<const VkCopyMemoryToImageIndirectCommandNV *>( this );
18773     }
18774 
operator VkCopyMemoryToImageIndirectCommandNV&VULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18775     operator VkCopyMemoryToImageIndirectCommandNV &() VULKAN_HPP_NOEXCEPT
18776     {
18777       return *reinterpret_cast<VkCopyMemoryToImageIndirectCommandNV *>( this );
18778     }
18779 
18780 #if defined( VULKAN_HPP_USE_REFLECT )
18781 #  if 14 <= VULKAN_HPP_CPP_VERSION
18782     auto
18783 #  else
18784     std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &,
18785                uint32_t const &,
18786                uint32_t const &,
18787                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
18788                VULKAN_HPP_NAMESPACE::Offset3D const &,
18789                VULKAN_HPP_NAMESPACE::Extent3D const &>
18790 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18791       reflect() const VULKAN_HPP_NOEXCEPT
18792     {
18793       return std::tie( srcAddress, bufferRowLength, bufferImageHeight, imageSubresource, imageOffset, imageExtent );
18794     }
18795 #endif
18796 
18797 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
18798     auto operator<=>( CopyMemoryToImageIndirectCommandNV const & ) const = default;
18799 #else
operator ==VULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18800     bool operator==( CopyMemoryToImageIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
18801     {
18802 #  if defined( VULKAN_HPP_USE_REFLECT )
18803       return this->reflect() == rhs.reflect();
18804 #  else
18805       return ( srcAddress == rhs.srcAddress ) && ( bufferRowLength == rhs.bufferRowLength ) && ( bufferImageHeight == rhs.bufferImageHeight ) &&
18806              ( imageSubresource == rhs.imageSubresource ) && ( imageOffset == rhs.imageOffset ) && ( imageExtent == rhs.imageExtent );
18807 #  endif
18808     }
18809 
operator !=VULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV18810     bool operator!=( CopyMemoryToImageIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
18811     {
18812       return !operator==( rhs );
18813     }
18814 #endif
18815 
18816   public:
18817     VULKAN_HPP_NAMESPACE::DeviceAddress          srcAddress        = {};
18818     uint32_t                                     bufferRowLength   = {};
18819     uint32_t                                     bufferImageHeight = {};
18820     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource  = {};
18821     VULKAN_HPP_NAMESPACE::Offset3D               imageOffset       = {};
18822     VULKAN_HPP_NAMESPACE::Extent3D               imageExtent       = {};
18823   };
18824 
18825   struct MemoryToImageCopyEXT
18826   {
18827     using NativeType = VkMemoryToImageCopyEXT;
18828 
18829     static const bool                                  allowDuplicate = false;
18830     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryToImageCopyEXT;
18831 
18832 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryToImageCopyEXTVULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT18833     VULKAN_HPP_CONSTEXPR MemoryToImageCopyEXT( const void *                                 pHostPointer_      = {},
18834                                                uint32_t                                     memoryRowLength_   = {},
18835                                                uint32_t                                     memoryImageHeight_ = {},
18836                                                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource_  = {},
18837                                                VULKAN_HPP_NAMESPACE::Offset3D               imageOffset_       = {},
18838                                                VULKAN_HPP_NAMESPACE::Extent3D               imageExtent_       = {},
18839                                                const void *                                 pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
18840       : pNext{ pNext_ }
18841       , pHostPointer{ pHostPointer_ }
18842       , memoryRowLength{ memoryRowLength_ }
18843       , memoryImageHeight{ memoryImageHeight_ }
18844       , imageSubresource{ imageSubresource_ }
18845       , imageOffset{ imageOffset_ }
18846       , imageExtent{ imageExtent_ }
18847     {
18848     }
18849 
18850     VULKAN_HPP_CONSTEXPR MemoryToImageCopyEXT( MemoryToImageCopyEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18851 
MemoryToImageCopyEXTVULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT18852     MemoryToImageCopyEXT( VkMemoryToImageCopyEXT const & rhs ) VULKAN_HPP_NOEXCEPT
18853       : MemoryToImageCopyEXT( *reinterpret_cast<MemoryToImageCopyEXT const *>( &rhs ) )
18854     {
18855     }
18856 
18857     MemoryToImageCopyEXT & operator=( MemoryToImageCopyEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18858 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18859 
operator =VULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT18860     MemoryToImageCopyEXT & operator=( VkMemoryToImageCopyEXT const & rhs ) VULKAN_HPP_NOEXCEPT
18861     {
18862       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT const *>( &rhs );
18863       return *this;
18864     }
18865 
18866 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT18867     VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopyEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18868     {
18869       pNext = pNext_;
18870       return *this;
18871     }
18872 
setPHostPointerVULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT18873     VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopyEXT & setPHostPointer( const void * pHostPointer_ ) VULKAN_HPP_NOEXCEPT
18874     {
18875       pHostPointer = pHostPointer_;
18876       return *this;
18877     }
18878 
setMemoryRowLengthVULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT18879     VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopyEXT & setMemoryRowLength( uint32_t memoryRowLength_ ) VULKAN_HPP_NOEXCEPT
18880     {
18881       memoryRowLength = memoryRowLength_;
18882       return *this;
18883     }
18884 
setMemoryImageHeightVULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT18885     VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopyEXT & setMemoryImageHeight( uint32_t memoryImageHeight_ ) VULKAN_HPP_NOEXCEPT
18886     {
18887       memoryImageHeight = memoryImageHeight_;
18888       return *this;
18889     }
18890 
18891     VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopyEXT &
setImageSubresourceVULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT18892       setImageSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & imageSubresource_ ) VULKAN_HPP_NOEXCEPT
18893     {
18894       imageSubresource = imageSubresource_;
18895       return *this;
18896     }
18897 
setImageOffsetVULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT18898     VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopyEXT & setImageOffset( VULKAN_HPP_NAMESPACE::Offset3D const & imageOffset_ ) VULKAN_HPP_NOEXCEPT
18899     {
18900       imageOffset = imageOffset_;
18901       return *this;
18902     }
18903 
setImageExtentVULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT18904     VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopyEXT & setImageExtent( VULKAN_HPP_NAMESPACE::Extent3D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
18905     {
18906       imageExtent = imageExtent_;
18907       return *this;
18908     }
18909 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18910 
operator VkMemoryToImageCopyEXT const&VULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT18911     operator VkMemoryToImageCopyEXT const &() const VULKAN_HPP_NOEXCEPT
18912     {
18913       return *reinterpret_cast<const VkMemoryToImageCopyEXT *>( this );
18914     }
18915 
operator VkMemoryToImageCopyEXT&VULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT18916     operator VkMemoryToImageCopyEXT &() VULKAN_HPP_NOEXCEPT
18917     {
18918       return *reinterpret_cast<VkMemoryToImageCopyEXT *>( this );
18919     }
18920 
18921 #if defined( VULKAN_HPP_USE_REFLECT )
18922 #  if 14 <= VULKAN_HPP_CPP_VERSION
18923     auto
18924 #  else
18925     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
18926                const void * const &,
18927                const void * const &,
18928                uint32_t const &,
18929                uint32_t const &,
18930                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
18931                VULKAN_HPP_NAMESPACE::Offset3D const &,
18932                VULKAN_HPP_NAMESPACE::Extent3D const &>
18933 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT18934       reflect() const VULKAN_HPP_NOEXCEPT
18935     {
18936       return std::tie( sType, pNext, pHostPointer, memoryRowLength, memoryImageHeight, imageSubresource, imageOffset, imageExtent );
18937     }
18938 #endif
18939 
18940 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
18941     auto operator<=>( MemoryToImageCopyEXT const & ) const = default;
18942 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT18943     bool operator==( MemoryToImageCopyEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
18944     {
18945 #  if defined( VULKAN_HPP_USE_REFLECT )
18946       return this->reflect() == rhs.reflect();
18947 #  else
18948       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pHostPointer == rhs.pHostPointer ) && ( memoryRowLength == rhs.memoryRowLength ) &&
18949              ( memoryImageHeight == rhs.memoryImageHeight ) && ( imageSubresource == rhs.imageSubresource ) && ( imageOffset == rhs.imageOffset ) &&
18950              ( imageExtent == rhs.imageExtent );
18951 #  endif
18952     }
18953 
operator !=VULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT18954     bool operator!=( MemoryToImageCopyEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
18955     {
18956       return !operator==( rhs );
18957     }
18958 #endif
18959 
18960   public:
18961     VULKAN_HPP_NAMESPACE::StructureType          sType             = StructureType::eMemoryToImageCopyEXT;
18962     const void *                                 pNext             = {};
18963     const void *                                 pHostPointer      = {};
18964     uint32_t                                     memoryRowLength   = {};
18965     uint32_t                                     memoryImageHeight = {};
18966     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource  = {};
18967     VULKAN_HPP_NAMESPACE::Offset3D               imageOffset       = {};
18968     VULKAN_HPP_NAMESPACE::Extent3D               imageExtent       = {};
18969   };
18970 
18971   template <>
18972   struct CppType<StructureType, StructureType::eMemoryToImageCopyEXT>
18973   {
18974     using Type = MemoryToImageCopyEXT;
18975   };
18976 
18977   struct CopyMemoryToImageInfoEXT
18978   {
18979     using NativeType = VkCopyMemoryToImageInfoEXT;
18980 
18981     static const bool                                  allowDuplicate = false;
18982     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyMemoryToImageInfoEXT;
18983 
18984 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyMemoryToImageInfoEXTVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfoEXT18985     VULKAN_HPP_CONSTEXPR CopyMemoryToImageInfoEXT( VULKAN_HPP_NAMESPACE::HostImageCopyFlagsEXT flags_           = {},
18986                                                    VULKAN_HPP_NAMESPACE::Image                 dstImage_        = {},
18987                                                    VULKAN_HPP_NAMESPACE::ImageLayout           dstImageLayout_  = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
18988                                                    uint32_t                                    regionCount_     = {},
18989                                                    const VULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT * pRegions_ = {},
18990                                                    const void *                                       pNext_    = nullptr ) VULKAN_HPP_NOEXCEPT
18991       : pNext{ pNext_ }
18992       , flags{ flags_ }
18993       , dstImage{ dstImage_ }
18994       , dstImageLayout{ dstImageLayout_ }
18995       , regionCount{ regionCount_ }
18996       , pRegions{ pRegions_ }
18997     {
18998     }
18999 
19000     VULKAN_HPP_CONSTEXPR CopyMemoryToImageInfoEXT( CopyMemoryToImageInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19001 
CopyMemoryToImageInfoEXTVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfoEXT19002     CopyMemoryToImageInfoEXT( VkCopyMemoryToImageInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
19003       : CopyMemoryToImageInfoEXT( *reinterpret_cast<CopyMemoryToImageInfoEXT const *>( &rhs ) )
19004     {
19005     }
19006 
19007 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyMemoryToImageInfoEXTVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfoEXT19008     CopyMemoryToImageInfoEXT( VULKAN_HPP_NAMESPACE::HostImageCopyFlagsEXT                                                             flags_,
19009                               VULKAN_HPP_NAMESPACE::Image                                                                             dstImage_,
19010                               VULKAN_HPP_NAMESPACE::ImageLayout                                                                       dstImageLayout_,
19011                               VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT> const & regions_,
19012                               const void *                                                                                            pNext_ = nullptr )
19013       : pNext( pNext_ )
19014       , flags( flags_ )
19015       , dstImage( dstImage_ )
19016       , dstImageLayout( dstImageLayout_ )
19017       , regionCount( static_cast<uint32_t>( regions_.size() ) )
19018       , pRegions( regions_.data() )
19019     {
19020     }
19021 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19022 
19023     CopyMemoryToImageInfoEXT & operator=( CopyMemoryToImageInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19024 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19025 
operator =VULKAN_HPP_NAMESPACE::CopyMemoryToImageInfoEXT19026     CopyMemoryToImageInfoEXT & operator=( VkCopyMemoryToImageInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
19027     {
19028       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyMemoryToImageInfoEXT const *>( &rhs );
19029       return *this;
19030     }
19031 
19032 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfoEXT19033     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19034     {
19035       pNext = pNext_;
19036       return *this;
19037     }
19038 
setFlagsVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfoEXT19039     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::HostImageCopyFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
19040     {
19041       flags = flags_;
19042       return *this;
19043     }
19044 
setDstImageVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfoEXT19045     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfoEXT & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT
19046     {
19047       dstImage = dstImage_;
19048       return *this;
19049     }
19050 
setDstImageLayoutVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfoEXT19051     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfoEXT & setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT
19052     {
19053       dstImageLayout = dstImageLayout_;
19054       return *this;
19055     }
19056 
setRegionCountVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfoEXT19057     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfoEXT & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
19058     {
19059       regionCount = regionCount_;
19060       return *this;
19061     }
19062 
setPRegionsVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfoEXT19063     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfoEXT & setPRegions( const VULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT * pRegions_ ) VULKAN_HPP_NOEXCEPT
19064     {
19065       pRegions = pRegions_;
19066       return *this;
19067     }
19068 
19069 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
19070     CopyMemoryToImageInfoEXT &
setRegionsVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfoEXT19071       setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT> const & regions_ ) VULKAN_HPP_NOEXCEPT
19072     {
19073       regionCount = static_cast<uint32_t>( regions_.size() );
19074       pRegions    = regions_.data();
19075       return *this;
19076     }
19077 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19078 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19079 
operator VkCopyMemoryToImageInfoEXT const&VULKAN_HPP_NAMESPACE::CopyMemoryToImageInfoEXT19080     operator VkCopyMemoryToImageInfoEXT const &() const VULKAN_HPP_NOEXCEPT
19081     {
19082       return *reinterpret_cast<const VkCopyMemoryToImageInfoEXT *>( this );
19083     }
19084 
operator VkCopyMemoryToImageInfoEXT&VULKAN_HPP_NAMESPACE::CopyMemoryToImageInfoEXT19085     operator VkCopyMemoryToImageInfoEXT &() VULKAN_HPP_NOEXCEPT
19086     {
19087       return *reinterpret_cast<VkCopyMemoryToImageInfoEXT *>( this );
19088     }
19089 
19090 #if defined( VULKAN_HPP_USE_REFLECT )
19091 #  if 14 <= VULKAN_HPP_CPP_VERSION
19092     auto
19093 #  else
19094     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
19095                const void * const &,
19096                VULKAN_HPP_NAMESPACE::HostImageCopyFlagsEXT const &,
19097                VULKAN_HPP_NAMESPACE::Image const &,
19098                VULKAN_HPP_NAMESPACE::ImageLayout const &,
19099                uint32_t const &,
19100                const VULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT * const &>
19101 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyMemoryToImageInfoEXT19102       reflect() const VULKAN_HPP_NOEXCEPT
19103     {
19104       return std::tie( sType, pNext, flags, dstImage, dstImageLayout, regionCount, pRegions );
19105     }
19106 #endif
19107 
19108 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
19109     auto operator<=>( CopyMemoryToImageInfoEXT const & ) const = default;
19110 #else
operator ==VULKAN_HPP_NAMESPACE::CopyMemoryToImageInfoEXT19111     bool operator==( CopyMemoryToImageInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
19112     {
19113 #  if defined( VULKAN_HPP_USE_REFLECT )
19114       return this->reflect() == rhs.reflect();
19115 #  else
19116       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( dstImage == rhs.dstImage ) &&
19117              ( dstImageLayout == rhs.dstImageLayout ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions );
19118 #  endif
19119     }
19120 
operator !=VULKAN_HPP_NAMESPACE::CopyMemoryToImageInfoEXT19121     bool operator!=( CopyMemoryToImageInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
19122     {
19123       return !operator==( rhs );
19124     }
19125 #endif
19126 
19127   public:
19128     VULKAN_HPP_NAMESPACE::StructureType                sType          = StructureType::eCopyMemoryToImageInfoEXT;
19129     const void *                                       pNext          = {};
19130     VULKAN_HPP_NAMESPACE::HostImageCopyFlagsEXT        flags          = {};
19131     VULKAN_HPP_NAMESPACE::Image                        dstImage       = {};
19132     VULKAN_HPP_NAMESPACE::ImageLayout                  dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
19133     uint32_t                                           regionCount    = {};
19134     const VULKAN_HPP_NAMESPACE::MemoryToImageCopyEXT * pRegions       = {};
19135   };
19136 
19137   template <>
19138   struct CppType<StructureType, StructureType::eCopyMemoryToImageInfoEXT>
19139   {
19140     using Type = CopyMemoryToImageInfoEXT;
19141   };
19142 
19143   struct CopyMemoryToMicromapInfoEXT
19144   {
19145     using NativeType = VkCopyMemoryToMicromapInfoEXT;
19146 
19147     static const bool                                  allowDuplicate = false;
19148     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyMemoryToMicromapInfoEXT;
19149 
19150 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyMemoryToMicromapInfoEXTVULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT19151     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR src_ = {},
19152                                                          VULKAN_HPP_NAMESPACE::MicromapEXT                 dst_ = {},
19153                                                          VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT mode_  = VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT::eClone,
19154                                                          const void *                              pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
19155       : pNext{ pNext_ }
19156       , src{ src_ }
19157       , dst{ dst_ }
19158       , mode{ mode_ }
19159     {
19160     }
19161 
19162     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT( CopyMemoryToMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19163 
CopyMemoryToMicromapInfoEXTVULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT19164     CopyMemoryToMicromapInfoEXT( VkCopyMemoryToMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
19165       : CopyMemoryToMicromapInfoEXT( *reinterpret_cast<CopyMemoryToMicromapInfoEXT const *>( &rhs ) )
19166     {
19167     }
19168 
19169     CopyMemoryToMicromapInfoEXT & operator=( CopyMemoryToMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19170 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19171 
operator =VULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT19172     CopyMemoryToMicromapInfoEXT & operator=( VkCopyMemoryToMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
19173     {
19174       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT const *>( &rhs );
19175       return *this;
19176     }
19177 
19178 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT19179     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19180     {
19181       pNext = pNext_;
19182       return *this;
19183     }
19184 
setSrcVULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT19185     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT & setSrc( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & src_ ) VULKAN_HPP_NOEXCEPT
19186     {
19187       src = src_;
19188       return *this;
19189     }
19190 
setDstVULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT19191     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT & setDst( VULKAN_HPP_NAMESPACE::MicromapEXT dst_ ) VULKAN_HPP_NOEXCEPT
19192     {
19193       dst = dst_;
19194       return *this;
19195     }
19196 
setModeVULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT19197     VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT & setMode( VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT mode_ ) VULKAN_HPP_NOEXCEPT
19198     {
19199       mode = mode_;
19200       return *this;
19201     }
19202 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19203 
operator VkCopyMemoryToMicromapInfoEXT const&VULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT19204     operator VkCopyMemoryToMicromapInfoEXT const &() const VULKAN_HPP_NOEXCEPT
19205     {
19206       return *reinterpret_cast<const VkCopyMemoryToMicromapInfoEXT *>( this );
19207     }
19208 
operator VkCopyMemoryToMicromapInfoEXT&VULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT19209     operator VkCopyMemoryToMicromapInfoEXT &() VULKAN_HPP_NOEXCEPT
19210     {
19211       return *reinterpret_cast<VkCopyMemoryToMicromapInfoEXT *>( this );
19212     }
19213 
19214 #if defined( VULKAN_HPP_USE_REFLECT )
19215 #  if 14 <= VULKAN_HPP_CPP_VERSION
19216     auto
19217 #  else
19218     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
19219                const void * const &,
19220                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
19221                VULKAN_HPP_NAMESPACE::MicromapEXT const &,
19222                VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT const &>
19223 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT19224       reflect() const VULKAN_HPP_NOEXCEPT
19225     {
19226       return std::tie( sType, pNext, src, dst, mode );
19227     }
19228 #endif
19229 
19230   public:
19231     VULKAN_HPP_NAMESPACE::StructureType               sType = StructureType::eCopyMemoryToMicromapInfoEXT;
19232     const void *                                      pNext = {};
19233     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR src   = {};
19234     VULKAN_HPP_NAMESPACE::MicromapEXT                 dst   = {};
19235     VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT         mode  = VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT::eClone;
19236   };
19237 
19238   template <>
19239   struct CppType<StructureType, StructureType::eCopyMemoryToMicromapInfoEXT>
19240   {
19241     using Type = CopyMemoryToMicromapInfoEXT;
19242   };
19243 
19244   struct CopyMicromapInfoEXT
19245   {
19246     using NativeType = VkCopyMicromapInfoEXT;
19247 
19248     static const bool                                  allowDuplicate = false;
19249     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyMicromapInfoEXT;
19250 
19251 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyMicromapInfoEXTVULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19252     VULKAN_HPP_CONSTEXPR CopyMicromapInfoEXT( VULKAN_HPP_NAMESPACE::MicromapEXT         src_   = {},
19253                                               VULKAN_HPP_NAMESPACE::MicromapEXT         dst_   = {},
19254                                               VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT mode_  = VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT::eClone,
19255                                               const void *                              pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
19256       : pNext{ pNext_ }
19257       , src{ src_ }
19258       , dst{ dst_ }
19259       , mode{ mode_ }
19260     {
19261     }
19262 
19263     VULKAN_HPP_CONSTEXPR CopyMicromapInfoEXT( CopyMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19264 
CopyMicromapInfoEXTVULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19265     CopyMicromapInfoEXT( VkCopyMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : CopyMicromapInfoEXT( *reinterpret_cast<CopyMicromapInfoEXT const *>( &rhs ) )
19266     {
19267     }
19268 
19269     CopyMicromapInfoEXT & operator=( CopyMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19270 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19271 
operator =VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19272     CopyMicromapInfoEXT & operator=( VkCopyMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
19273     {
19274       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT const *>( &rhs );
19275       return *this;
19276     }
19277 
19278 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19279     VULKAN_HPP_CONSTEXPR_14 CopyMicromapInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19280     {
19281       pNext = pNext_;
19282       return *this;
19283     }
19284 
setSrcVULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19285     VULKAN_HPP_CONSTEXPR_14 CopyMicromapInfoEXT & setSrc( VULKAN_HPP_NAMESPACE::MicromapEXT src_ ) VULKAN_HPP_NOEXCEPT
19286     {
19287       src = src_;
19288       return *this;
19289     }
19290 
setDstVULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19291     VULKAN_HPP_CONSTEXPR_14 CopyMicromapInfoEXT & setDst( VULKAN_HPP_NAMESPACE::MicromapEXT dst_ ) VULKAN_HPP_NOEXCEPT
19292     {
19293       dst = dst_;
19294       return *this;
19295     }
19296 
setModeVULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19297     VULKAN_HPP_CONSTEXPR_14 CopyMicromapInfoEXT & setMode( VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT mode_ ) VULKAN_HPP_NOEXCEPT
19298     {
19299       mode = mode_;
19300       return *this;
19301     }
19302 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19303 
operator VkCopyMicromapInfoEXT const&VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19304     operator VkCopyMicromapInfoEXT const &() const VULKAN_HPP_NOEXCEPT
19305     {
19306       return *reinterpret_cast<const VkCopyMicromapInfoEXT *>( this );
19307     }
19308 
operator VkCopyMicromapInfoEXT&VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19309     operator VkCopyMicromapInfoEXT &() VULKAN_HPP_NOEXCEPT
19310     {
19311       return *reinterpret_cast<VkCopyMicromapInfoEXT *>( this );
19312     }
19313 
19314 #if defined( VULKAN_HPP_USE_REFLECT )
19315 #  if 14 <= VULKAN_HPP_CPP_VERSION
19316     auto
19317 #  else
19318     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
19319                const void * const &,
19320                VULKAN_HPP_NAMESPACE::MicromapEXT const &,
19321                VULKAN_HPP_NAMESPACE::MicromapEXT const &,
19322                VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT const &>
19323 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19324       reflect() const VULKAN_HPP_NOEXCEPT
19325     {
19326       return std::tie( sType, pNext, src, dst, mode );
19327     }
19328 #endif
19329 
19330 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
19331     auto operator<=>( CopyMicromapInfoEXT const & ) const = default;
19332 #else
operator ==VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19333     bool operator==( CopyMicromapInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
19334     {
19335 #  if defined( VULKAN_HPP_USE_REFLECT )
19336       return this->reflect() == rhs.reflect();
19337 #  else
19338       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( src == rhs.src ) && ( dst == rhs.dst ) && ( mode == rhs.mode );
19339 #  endif
19340     }
19341 
operator !=VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT19342     bool operator!=( CopyMicromapInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
19343     {
19344       return !operator==( rhs );
19345     }
19346 #endif
19347 
19348   public:
19349     VULKAN_HPP_NAMESPACE::StructureType       sType = StructureType::eCopyMicromapInfoEXT;
19350     const void *                              pNext = {};
19351     VULKAN_HPP_NAMESPACE::MicromapEXT         src   = {};
19352     VULKAN_HPP_NAMESPACE::MicromapEXT         dst   = {};
19353     VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT mode  = VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT::eClone;
19354   };
19355 
19356   template <>
19357   struct CppType<StructureType, StructureType::eCopyMicromapInfoEXT>
19358   {
19359     using Type = CopyMicromapInfoEXT;
19360   };
19361 
19362   struct CopyMicromapToMemoryInfoEXT
19363   {
19364     using NativeType = VkCopyMicromapToMemoryInfoEXT;
19365 
19366     static const bool                                  allowDuplicate = false;
19367     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCopyMicromapToMemoryInfoEXT;
19368 
19369 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyMicromapToMemoryInfoEXTVULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT19370     VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT( VULKAN_HPP_NAMESPACE::MicromapEXT            src_  = {},
19371                                                          VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR dst_  = {},
19372                                                          VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT    mode_ = VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT::eClone,
19373                                                          const void *                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
19374       : pNext{ pNext_ }
19375       , src{ src_ }
19376       , dst{ dst_ }
19377       , mode{ mode_ }
19378     {
19379     }
19380 
19381     VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT( CopyMicromapToMemoryInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19382 
CopyMicromapToMemoryInfoEXTVULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT19383     CopyMicromapToMemoryInfoEXT( VkCopyMicromapToMemoryInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
19384       : CopyMicromapToMemoryInfoEXT( *reinterpret_cast<CopyMicromapToMemoryInfoEXT const *>( &rhs ) )
19385     {
19386     }
19387 
19388     CopyMicromapToMemoryInfoEXT & operator=( CopyMicromapToMemoryInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19389 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19390 
operator =VULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT19391     CopyMicromapToMemoryInfoEXT & operator=( VkCopyMicromapToMemoryInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
19392     {
19393       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT const *>( &rhs );
19394       return *this;
19395     }
19396 
19397 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT19398     VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19399     {
19400       pNext = pNext_;
19401       return *this;
19402     }
19403 
setSrcVULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT19404     VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT & setSrc( VULKAN_HPP_NAMESPACE::MicromapEXT src_ ) VULKAN_HPP_NOEXCEPT
19405     {
19406       src = src_;
19407       return *this;
19408     }
19409 
setDstVULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT19410     VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT & setDst( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const & dst_ ) VULKAN_HPP_NOEXCEPT
19411     {
19412       dst = dst_;
19413       return *this;
19414     }
19415 
setModeVULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT19416     VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT & setMode( VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT mode_ ) VULKAN_HPP_NOEXCEPT
19417     {
19418       mode = mode_;
19419       return *this;
19420     }
19421 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19422 
operator VkCopyMicromapToMemoryInfoEXT const&VULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT19423     operator VkCopyMicromapToMemoryInfoEXT const &() const VULKAN_HPP_NOEXCEPT
19424     {
19425       return *reinterpret_cast<const VkCopyMicromapToMemoryInfoEXT *>( this );
19426     }
19427 
operator VkCopyMicromapToMemoryInfoEXT&VULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT19428     operator VkCopyMicromapToMemoryInfoEXT &() VULKAN_HPP_NOEXCEPT
19429     {
19430       return *reinterpret_cast<VkCopyMicromapToMemoryInfoEXT *>( this );
19431     }
19432 
19433 #if defined( VULKAN_HPP_USE_REFLECT )
19434 #  if 14 <= VULKAN_HPP_CPP_VERSION
19435     auto
19436 #  else
19437     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
19438                const void * const &,
19439                VULKAN_HPP_NAMESPACE::MicromapEXT const &,
19440                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const &,
19441                VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT const &>
19442 #  endif
reflectVULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT19443       reflect() const VULKAN_HPP_NOEXCEPT
19444     {
19445       return std::tie( sType, pNext, src, dst, mode );
19446     }
19447 #endif
19448 
19449   public:
19450     VULKAN_HPP_NAMESPACE::StructureType          sType = StructureType::eCopyMicromapToMemoryInfoEXT;
19451     const void *                                 pNext = {};
19452     VULKAN_HPP_NAMESPACE::MicromapEXT            src   = {};
19453     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR dst   = {};
19454     VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT    mode  = VULKAN_HPP_NAMESPACE::CopyMicromapModeEXT::eClone;
19455   };
19456 
19457   template <>
19458   struct CppType<StructureType, StructureType::eCopyMicromapToMemoryInfoEXT>
19459   {
19460     using Type = CopyMicromapToMemoryInfoEXT;
19461   };
19462 
19463   struct CuFunctionCreateInfoNVX
19464   {
19465     using NativeType = VkCuFunctionCreateInfoNVX;
19466 
19467     static const bool                                  allowDuplicate = false;
19468     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCuFunctionCreateInfoNVX;
19469 
19470 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
19471     VULKAN_HPP_CONSTEXPR
CuFunctionCreateInfoNVXVULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19472       CuFunctionCreateInfoNVX( VULKAN_HPP_NAMESPACE::CuModuleNVX module_ = {}, const char * pName_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
19473       : pNext{ pNext_ }
19474       , module{ module_ }
19475       , pName{ pName_ }
19476     {
19477     }
19478 
19479     VULKAN_HPP_CONSTEXPR CuFunctionCreateInfoNVX( CuFunctionCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19480 
CuFunctionCreateInfoNVXVULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19481     CuFunctionCreateInfoNVX( VkCuFunctionCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
19482       : CuFunctionCreateInfoNVX( *reinterpret_cast<CuFunctionCreateInfoNVX const *>( &rhs ) )
19483     {
19484     }
19485 
19486     CuFunctionCreateInfoNVX & operator=( CuFunctionCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19487 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19488 
operator =VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19489     CuFunctionCreateInfoNVX & operator=( VkCuFunctionCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
19490     {
19491       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX const *>( &rhs );
19492       return *this;
19493     }
19494 
19495 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19496     VULKAN_HPP_CONSTEXPR_14 CuFunctionCreateInfoNVX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19497     {
19498       pNext = pNext_;
19499       return *this;
19500     }
19501 
setModuleVULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19502     VULKAN_HPP_CONSTEXPR_14 CuFunctionCreateInfoNVX & setModule( VULKAN_HPP_NAMESPACE::CuModuleNVX module_ ) VULKAN_HPP_NOEXCEPT
19503     {
19504       module = module_;
19505       return *this;
19506     }
19507 
setPNameVULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19508     VULKAN_HPP_CONSTEXPR_14 CuFunctionCreateInfoNVX & setPName( const char * pName_ ) VULKAN_HPP_NOEXCEPT
19509     {
19510       pName = pName_;
19511       return *this;
19512     }
19513 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19514 
operator VkCuFunctionCreateInfoNVX const&VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19515     operator VkCuFunctionCreateInfoNVX const &() const VULKAN_HPP_NOEXCEPT
19516     {
19517       return *reinterpret_cast<const VkCuFunctionCreateInfoNVX *>( this );
19518     }
19519 
operator VkCuFunctionCreateInfoNVX&VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19520     operator VkCuFunctionCreateInfoNVX &() VULKAN_HPP_NOEXCEPT
19521     {
19522       return *reinterpret_cast<VkCuFunctionCreateInfoNVX *>( this );
19523     }
19524 
19525 #if defined( VULKAN_HPP_USE_REFLECT )
19526 #  if 14 <= VULKAN_HPP_CPP_VERSION
19527     auto
19528 #  else
19529     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::CuModuleNVX const &, const char * const &>
19530 #  endif
reflectVULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19531       reflect() const VULKAN_HPP_NOEXCEPT
19532     {
19533       return std::tie( sType, pNext, module, pName );
19534     }
19535 #endif
19536 
19537 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19538     std::strong_ordering operator<=>( CuFunctionCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
19539     {
19540       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
19541         return cmp;
19542       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
19543         return cmp;
19544       if ( auto cmp = module <=> rhs.module; cmp != 0 )
19545         return cmp;
19546       if ( pName != rhs.pName )
19547         if ( auto cmp = strcmp( pName, rhs.pName ); cmp != 0 )
19548           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
19549 
19550       return std::strong_ordering::equivalent;
19551     }
19552 #endif
19553 
operator ==VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19554     bool operator==( CuFunctionCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
19555     {
19556       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( module == rhs.module ) && ( ( pName == rhs.pName ) || ( strcmp( pName, rhs.pName ) == 0 ) );
19557     }
19558 
operator !=VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX19559     bool operator!=( CuFunctionCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
19560     {
19561       return !operator==( rhs );
19562     }
19563 
19564   public:
19565     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eCuFunctionCreateInfoNVX;
19566     const void *                        pNext  = {};
19567     VULKAN_HPP_NAMESPACE::CuModuleNVX   module = {};
19568     const char *                        pName  = {};
19569   };
19570 
19571   template <>
19572   struct CppType<StructureType, StructureType::eCuFunctionCreateInfoNVX>
19573   {
19574     using Type = CuFunctionCreateInfoNVX;
19575   };
19576 
19577   struct CuLaunchInfoNVX
19578   {
19579     using NativeType = VkCuLaunchInfoNVX;
19580 
19581     static const bool                                  allowDuplicate = false;
19582     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCuLaunchInfoNVX;
19583 
19584 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CuLaunchInfoNVXVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19585     VULKAN_HPP_CONSTEXPR CuLaunchInfoNVX( VULKAN_HPP_NAMESPACE::CuFunctionNVX function_       = {},
19586                                           uint32_t                            gridDimX_       = {},
19587                                           uint32_t                            gridDimY_       = {},
19588                                           uint32_t                            gridDimZ_       = {},
19589                                           uint32_t                            blockDimX_      = {},
19590                                           uint32_t                            blockDimY_      = {},
19591                                           uint32_t                            blockDimZ_      = {},
19592                                           uint32_t                            sharedMemBytes_ = {},
19593                                           size_t                              paramCount_     = {},
19594                                           const void * const *                pParams_        = {},
19595                                           size_t                              extraCount_     = {},
19596                                           const void * const *                pExtras_        = {},
19597                                           const void *                        pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
19598       : pNext{ pNext_ }
19599       , function{ function_ }
19600       , gridDimX{ gridDimX_ }
19601       , gridDimY{ gridDimY_ }
19602       , gridDimZ{ gridDimZ_ }
19603       , blockDimX{ blockDimX_ }
19604       , blockDimY{ blockDimY_ }
19605       , blockDimZ{ blockDimZ_ }
19606       , sharedMemBytes{ sharedMemBytes_ }
19607       , paramCount{ paramCount_ }
19608       , pParams{ pParams_ }
19609       , extraCount{ extraCount_ }
19610       , pExtras{ pExtras_ }
19611     {
19612     }
19613 
19614     VULKAN_HPP_CONSTEXPR CuLaunchInfoNVX( CuLaunchInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19615 
CuLaunchInfoNVXVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19616     CuLaunchInfoNVX( VkCuLaunchInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT : CuLaunchInfoNVX( *reinterpret_cast<CuLaunchInfoNVX const *>( &rhs ) ) {}
19617 
19618 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CuLaunchInfoNVXVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19619     CuLaunchInfoNVX( VULKAN_HPP_NAMESPACE::CuFunctionNVX                                       function_,
19620                      uint32_t                                                                  gridDimX_,
19621                      uint32_t                                                                  gridDimY_,
19622                      uint32_t                                                                  gridDimZ_,
19623                      uint32_t                                                                  blockDimX_,
19624                      uint32_t                                                                  blockDimY_,
19625                      uint32_t                                                                  blockDimZ_,
19626                      uint32_t                                                                  sharedMemBytes_,
19627                      VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const void * const> const & params_,
19628                      VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const void * const> const & extras_ = {},
19629                      const void *                                                              pNext_  = nullptr )
19630       : pNext( pNext_ )
19631       , function( function_ )
19632       , gridDimX( gridDimX_ )
19633       , gridDimY( gridDimY_ )
19634       , gridDimZ( gridDimZ_ )
19635       , blockDimX( blockDimX_ )
19636       , blockDimY( blockDimY_ )
19637       , blockDimZ( blockDimZ_ )
19638       , sharedMemBytes( sharedMemBytes_ )
19639       , paramCount( params_.size() )
19640       , pParams( params_.data() )
19641       , extraCount( extras_.size() )
19642       , pExtras( extras_.data() )
19643     {
19644     }
19645 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19646 
19647     CuLaunchInfoNVX & operator=( CuLaunchInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19648 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19649 
operator =VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19650     CuLaunchInfoNVX & operator=( VkCuLaunchInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
19651     {
19652       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX const *>( &rhs );
19653       return *this;
19654     }
19655 
19656 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19657     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19658     {
19659       pNext = pNext_;
19660       return *this;
19661     }
19662 
setFunctionVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19663     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setFunction( VULKAN_HPP_NAMESPACE::CuFunctionNVX function_ ) VULKAN_HPP_NOEXCEPT
19664     {
19665       function = function_;
19666       return *this;
19667     }
19668 
setGridDimXVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19669     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setGridDimX( uint32_t gridDimX_ ) VULKAN_HPP_NOEXCEPT
19670     {
19671       gridDimX = gridDimX_;
19672       return *this;
19673     }
19674 
setGridDimYVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19675     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setGridDimY( uint32_t gridDimY_ ) VULKAN_HPP_NOEXCEPT
19676     {
19677       gridDimY = gridDimY_;
19678       return *this;
19679     }
19680 
setGridDimZVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19681     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setGridDimZ( uint32_t gridDimZ_ ) VULKAN_HPP_NOEXCEPT
19682     {
19683       gridDimZ = gridDimZ_;
19684       return *this;
19685     }
19686 
setBlockDimXVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19687     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setBlockDimX( uint32_t blockDimX_ ) VULKAN_HPP_NOEXCEPT
19688     {
19689       blockDimX = blockDimX_;
19690       return *this;
19691     }
19692 
setBlockDimYVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19693     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setBlockDimY( uint32_t blockDimY_ ) VULKAN_HPP_NOEXCEPT
19694     {
19695       blockDimY = blockDimY_;
19696       return *this;
19697     }
19698 
setBlockDimZVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19699     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setBlockDimZ( uint32_t blockDimZ_ ) VULKAN_HPP_NOEXCEPT
19700     {
19701       blockDimZ = blockDimZ_;
19702       return *this;
19703     }
19704 
setSharedMemBytesVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19705     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setSharedMemBytes( uint32_t sharedMemBytes_ ) VULKAN_HPP_NOEXCEPT
19706     {
19707       sharedMemBytes = sharedMemBytes_;
19708       return *this;
19709     }
19710 
setParamCountVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19711     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setParamCount( size_t paramCount_ ) VULKAN_HPP_NOEXCEPT
19712     {
19713       paramCount = paramCount_;
19714       return *this;
19715     }
19716 
setPParamsVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19717     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setPParams( const void * const * pParams_ ) VULKAN_HPP_NOEXCEPT
19718     {
19719       pParams = pParams_;
19720       return *this;
19721     }
19722 
19723 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setParamsVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19724     CuLaunchInfoNVX & setParams( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const void * const> const & params_ ) VULKAN_HPP_NOEXCEPT
19725     {
19726       paramCount = params_.size();
19727       pParams    = params_.data();
19728       return *this;
19729     }
19730 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19731 
setExtraCountVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19732     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setExtraCount( size_t extraCount_ ) VULKAN_HPP_NOEXCEPT
19733     {
19734       extraCount = extraCount_;
19735       return *this;
19736     }
19737 
setPExtrasVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19738     VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setPExtras( const void * const * pExtras_ ) VULKAN_HPP_NOEXCEPT
19739     {
19740       pExtras = pExtras_;
19741       return *this;
19742     }
19743 
19744 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setExtrasVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19745     CuLaunchInfoNVX & setExtras( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const void * const> const & extras_ ) VULKAN_HPP_NOEXCEPT
19746     {
19747       extraCount = extras_.size();
19748       pExtras    = extras_.data();
19749       return *this;
19750     }
19751 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19752 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19753 
operator VkCuLaunchInfoNVX const&VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19754     operator VkCuLaunchInfoNVX const &() const VULKAN_HPP_NOEXCEPT
19755     {
19756       return *reinterpret_cast<const VkCuLaunchInfoNVX *>( this );
19757     }
19758 
operator VkCuLaunchInfoNVX&VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19759     operator VkCuLaunchInfoNVX &() VULKAN_HPP_NOEXCEPT
19760     {
19761       return *reinterpret_cast<VkCuLaunchInfoNVX *>( this );
19762     }
19763 
19764 #if defined( VULKAN_HPP_USE_REFLECT )
19765 #  if 14 <= VULKAN_HPP_CPP_VERSION
19766     auto
19767 #  else
19768     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
19769                const void * const &,
19770                VULKAN_HPP_NAMESPACE::CuFunctionNVX const &,
19771                uint32_t const &,
19772                uint32_t const &,
19773                uint32_t const &,
19774                uint32_t const &,
19775                uint32_t const &,
19776                uint32_t const &,
19777                uint32_t const &,
19778                size_t const &,
19779                const void * const * const &,
19780                size_t const &,
19781                const void * const * const &>
19782 #  endif
reflectVULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19783       reflect() const VULKAN_HPP_NOEXCEPT
19784     {
19785       return std::tie(
19786         sType, pNext, function, gridDimX, gridDimY, gridDimZ, blockDimX, blockDimY, blockDimZ, sharedMemBytes, paramCount, pParams, extraCount, pExtras );
19787     }
19788 #endif
19789 
19790 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
19791     auto operator<=>( CuLaunchInfoNVX const & ) const = default;
19792 #else
operator ==VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19793     bool operator==( CuLaunchInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
19794     {
19795 #  if defined( VULKAN_HPP_USE_REFLECT )
19796       return this->reflect() == rhs.reflect();
19797 #  else
19798       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( function == rhs.function ) && ( gridDimX == rhs.gridDimX ) && ( gridDimY == rhs.gridDimY ) &&
19799              ( gridDimZ == rhs.gridDimZ ) && ( blockDimX == rhs.blockDimX ) && ( blockDimY == rhs.blockDimY ) && ( blockDimZ == rhs.blockDimZ ) &&
19800              ( sharedMemBytes == rhs.sharedMemBytes ) && ( paramCount == rhs.paramCount ) && ( pParams == rhs.pParams ) && ( extraCount == rhs.extraCount ) &&
19801              ( pExtras == rhs.pExtras );
19802 #  endif
19803     }
19804 
operator !=VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX19805     bool operator!=( CuLaunchInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
19806     {
19807       return !operator==( rhs );
19808     }
19809 #endif
19810 
19811   public:
19812     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eCuLaunchInfoNVX;
19813     const void *                        pNext          = {};
19814     VULKAN_HPP_NAMESPACE::CuFunctionNVX function       = {};
19815     uint32_t                            gridDimX       = {};
19816     uint32_t                            gridDimY       = {};
19817     uint32_t                            gridDimZ       = {};
19818     uint32_t                            blockDimX      = {};
19819     uint32_t                            blockDimY      = {};
19820     uint32_t                            blockDimZ      = {};
19821     uint32_t                            sharedMemBytes = {};
19822     size_t                              paramCount     = {};
19823     const void * const *                pParams        = {};
19824     size_t                              extraCount     = {};
19825     const void * const *                pExtras        = {};
19826   };
19827 
19828   template <>
19829   struct CppType<StructureType, StructureType::eCuLaunchInfoNVX>
19830   {
19831     using Type = CuLaunchInfoNVX;
19832   };
19833 
19834   struct CuModuleCreateInfoNVX
19835   {
19836     using NativeType = VkCuModuleCreateInfoNVX;
19837 
19838     static const bool                                  allowDuplicate = false;
19839     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCuModuleCreateInfoNVX;
19840 
19841 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CuModuleCreateInfoNVXVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX19842     VULKAN_HPP_CONSTEXPR CuModuleCreateInfoNVX( size_t dataSize_ = {}, const void * pData_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
19843       : pNext{ pNext_ }
19844       , dataSize{ dataSize_ }
19845       , pData{ pData_ }
19846     {
19847     }
19848 
19849     VULKAN_HPP_CONSTEXPR CuModuleCreateInfoNVX( CuModuleCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19850 
CuModuleCreateInfoNVXVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX19851     CuModuleCreateInfoNVX( VkCuModuleCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
19852       : CuModuleCreateInfoNVX( *reinterpret_cast<CuModuleCreateInfoNVX const *>( &rhs ) )
19853     {
19854     }
19855 
19856 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
19857     template <typename T>
CuModuleCreateInfoNVXVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX19858     CuModuleCreateInfoNVX( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_, const void * pNext_ = nullptr )
19859       : pNext( pNext_ ), dataSize( data_.size() * sizeof( T ) ), pData( data_.data() )
19860     {
19861     }
19862 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19863 
19864     CuModuleCreateInfoNVX & operator=( CuModuleCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19865 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19866 
operator =VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX19867     CuModuleCreateInfoNVX & operator=( VkCuModuleCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
19868     {
19869       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX const *>( &rhs );
19870       return *this;
19871     }
19872 
19873 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX19874     VULKAN_HPP_CONSTEXPR_14 CuModuleCreateInfoNVX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19875     {
19876       pNext = pNext_;
19877       return *this;
19878     }
19879 
setDataSizeVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX19880     VULKAN_HPP_CONSTEXPR_14 CuModuleCreateInfoNVX & setDataSize( size_t dataSize_ ) VULKAN_HPP_NOEXCEPT
19881     {
19882       dataSize = dataSize_;
19883       return *this;
19884     }
19885 
setPDataVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX19886     VULKAN_HPP_CONSTEXPR_14 CuModuleCreateInfoNVX & setPData( const void * pData_ ) VULKAN_HPP_NOEXCEPT
19887     {
19888       pData = pData_;
19889       return *this;
19890     }
19891 
19892 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
19893     template <typename T>
setDataVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX19894     CuModuleCreateInfoNVX & setData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_ ) VULKAN_HPP_NOEXCEPT
19895     {
19896       dataSize = data_.size() * sizeof( T );
19897       pData    = data_.data();
19898       return *this;
19899     }
19900 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19901 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19902 
operator VkCuModuleCreateInfoNVX const&VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX19903     operator VkCuModuleCreateInfoNVX const &() const VULKAN_HPP_NOEXCEPT
19904     {
19905       return *reinterpret_cast<const VkCuModuleCreateInfoNVX *>( this );
19906     }
19907 
operator VkCuModuleCreateInfoNVX&VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX19908     operator VkCuModuleCreateInfoNVX &() VULKAN_HPP_NOEXCEPT
19909     {
19910       return *reinterpret_cast<VkCuModuleCreateInfoNVX *>( this );
19911     }
19912 
19913 #if defined( VULKAN_HPP_USE_REFLECT )
19914 #  if 14 <= VULKAN_HPP_CPP_VERSION
19915     auto
19916 #  else
19917     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, size_t const &, const void * const &>
19918 #  endif
reflectVULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX19919       reflect() const VULKAN_HPP_NOEXCEPT
19920     {
19921       return std::tie( sType, pNext, dataSize, pData );
19922     }
19923 #endif
19924 
19925 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
19926     auto operator<=>( CuModuleCreateInfoNVX const & ) const = default;
19927 #else
operator ==VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX19928     bool operator==( CuModuleCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
19929     {
19930 #  if defined( VULKAN_HPP_USE_REFLECT )
19931       return this->reflect() == rhs.reflect();
19932 #  else
19933       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dataSize == rhs.dataSize ) && ( pData == rhs.pData );
19934 #  endif
19935     }
19936 
operator !=VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX19937     bool operator!=( CuModuleCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
19938     {
19939       return !operator==( rhs );
19940     }
19941 #endif
19942 
19943   public:
19944     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eCuModuleCreateInfoNVX;
19945     const void *                        pNext    = {};
19946     size_t                              dataSize = {};
19947     const void *                        pData    = {};
19948   };
19949 
19950   template <>
19951   struct CppType<StructureType, StructureType::eCuModuleCreateInfoNVX>
19952   {
19953     using Type = CuModuleCreateInfoNVX;
19954   };
19955 
19956 #if defined( VK_ENABLE_BETA_EXTENSIONS )
19957   struct CudaFunctionCreateInfoNV
19958   {
19959     using NativeType = VkCudaFunctionCreateInfoNV;
19960 
19961     static const bool                                  allowDuplicate = false;
19962     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCudaFunctionCreateInfoNV;
19963 
19964 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
19965     VULKAN_HPP_CONSTEXPR
CudaFunctionCreateInfoNVVULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV19966       CudaFunctionCreateInfoNV( VULKAN_HPP_NAMESPACE::CudaModuleNV module_ = {}, const char * pName_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
19967       : pNext{ pNext_ }
19968       , module{ module_ }
19969       , pName{ pName_ }
19970     {
19971     }
19972 
19973     VULKAN_HPP_CONSTEXPR CudaFunctionCreateInfoNV( CudaFunctionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19974 
CudaFunctionCreateInfoNVVULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV19975     CudaFunctionCreateInfoNV( VkCudaFunctionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
19976       : CudaFunctionCreateInfoNV( *reinterpret_cast<CudaFunctionCreateInfoNV const *>( &rhs ) )
19977     {
19978     }
19979 
19980     CudaFunctionCreateInfoNV & operator=( CudaFunctionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19981 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19982 
operator =VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV19983     CudaFunctionCreateInfoNV & operator=( VkCudaFunctionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
19984     {
19985       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV const *>( &rhs );
19986       return *this;
19987     }
19988 
19989 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV19990     VULKAN_HPP_CONSTEXPR_14 CudaFunctionCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19991     {
19992       pNext = pNext_;
19993       return *this;
19994     }
19995 
setModuleVULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV19996     VULKAN_HPP_CONSTEXPR_14 CudaFunctionCreateInfoNV & setModule( VULKAN_HPP_NAMESPACE::CudaModuleNV module_ ) VULKAN_HPP_NOEXCEPT
19997     {
19998       module = module_;
19999       return *this;
20000     }
20001 
setPNameVULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV20002     VULKAN_HPP_CONSTEXPR_14 CudaFunctionCreateInfoNV & setPName( const char * pName_ ) VULKAN_HPP_NOEXCEPT
20003     {
20004       pName = pName_;
20005       return *this;
20006     }
20007 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20008 
operator VkCudaFunctionCreateInfoNV const&VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV20009     operator VkCudaFunctionCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
20010     {
20011       return *reinterpret_cast<const VkCudaFunctionCreateInfoNV *>( this );
20012     }
20013 
operator VkCudaFunctionCreateInfoNV&VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV20014     operator VkCudaFunctionCreateInfoNV &() VULKAN_HPP_NOEXCEPT
20015     {
20016       return *reinterpret_cast<VkCudaFunctionCreateInfoNV *>( this );
20017     }
20018 
20019 #  if defined( VULKAN_HPP_USE_REFLECT )
20020 #    if 14 <= VULKAN_HPP_CPP_VERSION
20021     auto
20022 #    else
20023     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::CudaModuleNV const &, const char * const &>
20024 #    endif
reflectVULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV20025       reflect() const VULKAN_HPP_NOEXCEPT
20026     {
20027       return std::tie( sType, pNext, module, pName );
20028     }
20029 #  endif
20030 
20031 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV20032     std::strong_ordering operator<=>( CudaFunctionCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
20033     {
20034       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
20035         return cmp;
20036       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
20037         return cmp;
20038       if ( auto cmp = module <=> rhs.module; cmp != 0 )
20039         return cmp;
20040       if ( pName != rhs.pName )
20041         if ( auto cmp = strcmp( pName, rhs.pName ); cmp != 0 )
20042           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
20043 
20044       return std::strong_ordering::equivalent;
20045     }
20046 #  endif
20047 
operator ==VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV20048     bool operator==( CudaFunctionCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
20049     {
20050       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( module == rhs.module ) && ( ( pName == rhs.pName ) || ( strcmp( pName, rhs.pName ) == 0 ) );
20051     }
20052 
operator !=VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV20053     bool operator!=( CudaFunctionCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
20054     {
20055       return !operator==( rhs );
20056     }
20057 
20058   public:
20059     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eCudaFunctionCreateInfoNV;
20060     const void *                        pNext  = {};
20061     VULKAN_HPP_NAMESPACE::CudaModuleNV  module = {};
20062     const char *                        pName  = {};
20063   };
20064 
20065   template <>
20066   struct CppType<StructureType, StructureType::eCudaFunctionCreateInfoNV>
20067   {
20068     using Type = CudaFunctionCreateInfoNV;
20069   };
20070 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
20071 
20072 #if defined( VK_ENABLE_BETA_EXTENSIONS )
20073   struct CudaLaunchInfoNV
20074   {
20075     using NativeType = VkCudaLaunchInfoNV;
20076 
20077     static const bool                                  allowDuplicate = false;
20078     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCudaLaunchInfoNV;
20079 
20080 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CudaLaunchInfoNVVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20081     VULKAN_HPP_CONSTEXPR CudaLaunchInfoNV( VULKAN_HPP_NAMESPACE::CudaFunctionNV function_       = {},
20082                                            uint32_t                             gridDimX_       = {},
20083                                            uint32_t                             gridDimY_       = {},
20084                                            uint32_t                             gridDimZ_       = {},
20085                                            uint32_t                             blockDimX_      = {},
20086                                            uint32_t                             blockDimY_      = {},
20087                                            uint32_t                             blockDimZ_      = {},
20088                                            uint32_t                             sharedMemBytes_ = {},
20089                                            size_t                               paramCount_     = {},
20090                                            const void * const *                 pParams_        = {},
20091                                            size_t                               extraCount_     = {},
20092                                            const void * const *                 pExtras_        = {},
20093                                            const void *                         pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
20094       : pNext{ pNext_ }
20095       , function{ function_ }
20096       , gridDimX{ gridDimX_ }
20097       , gridDimY{ gridDimY_ }
20098       , gridDimZ{ gridDimZ_ }
20099       , blockDimX{ blockDimX_ }
20100       , blockDimY{ blockDimY_ }
20101       , blockDimZ{ blockDimZ_ }
20102       , sharedMemBytes{ sharedMemBytes_ }
20103       , paramCount{ paramCount_ }
20104       , pParams{ pParams_ }
20105       , extraCount{ extraCount_ }
20106       , pExtras{ pExtras_ }
20107     {
20108     }
20109 
20110     VULKAN_HPP_CONSTEXPR CudaLaunchInfoNV( CudaLaunchInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20111 
CudaLaunchInfoNVVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20112     CudaLaunchInfoNV( VkCudaLaunchInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT : CudaLaunchInfoNV( *reinterpret_cast<CudaLaunchInfoNV const *>( &rhs ) ) {}
20113 
20114 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CudaLaunchInfoNVVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20115     CudaLaunchInfoNV( VULKAN_HPP_NAMESPACE::CudaFunctionNV                                      function_,
20116                       uint32_t                                                                  gridDimX_,
20117                       uint32_t                                                                  gridDimY_,
20118                       uint32_t                                                                  gridDimZ_,
20119                       uint32_t                                                                  blockDimX_,
20120                       uint32_t                                                                  blockDimY_,
20121                       uint32_t                                                                  blockDimZ_,
20122                       uint32_t                                                                  sharedMemBytes_,
20123                       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const void * const> const & params_,
20124                       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const void * const> const & extras_ = {},
20125                       const void *                                                              pNext_  = nullptr )
20126       : pNext( pNext_ )
20127       , function( function_ )
20128       , gridDimX( gridDimX_ )
20129       , gridDimY( gridDimY_ )
20130       , gridDimZ( gridDimZ_ )
20131       , blockDimX( blockDimX_ )
20132       , blockDimY( blockDimY_ )
20133       , blockDimZ( blockDimZ_ )
20134       , sharedMemBytes( sharedMemBytes_ )
20135       , paramCount( params_.size() )
20136       , pParams( params_.data() )
20137       , extraCount( extras_.size() )
20138       , pExtras( extras_.data() )
20139     {
20140     }
20141 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20142 
20143     CudaLaunchInfoNV & operator=( CudaLaunchInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20144 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20145 
operator =VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20146     CudaLaunchInfoNV & operator=( VkCudaLaunchInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
20147     {
20148       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV const *>( &rhs );
20149       return *this;
20150     }
20151 
20152 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20153     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
20154     {
20155       pNext = pNext_;
20156       return *this;
20157     }
20158 
setFunctionVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20159     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setFunction( VULKAN_HPP_NAMESPACE::CudaFunctionNV function_ ) VULKAN_HPP_NOEXCEPT
20160     {
20161       function = function_;
20162       return *this;
20163     }
20164 
setGridDimXVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20165     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setGridDimX( uint32_t gridDimX_ ) VULKAN_HPP_NOEXCEPT
20166     {
20167       gridDimX = gridDimX_;
20168       return *this;
20169     }
20170 
setGridDimYVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20171     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setGridDimY( uint32_t gridDimY_ ) VULKAN_HPP_NOEXCEPT
20172     {
20173       gridDimY = gridDimY_;
20174       return *this;
20175     }
20176 
setGridDimZVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20177     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setGridDimZ( uint32_t gridDimZ_ ) VULKAN_HPP_NOEXCEPT
20178     {
20179       gridDimZ = gridDimZ_;
20180       return *this;
20181     }
20182 
setBlockDimXVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20183     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setBlockDimX( uint32_t blockDimX_ ) VULKAN_HPP_NOEXCEPT
20184     {
20185       blockDimX = blockDimX_;
20186       return *this;
20187     }
20188 
setBlockDimYVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20189     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setBlockDimY( uint32_t blockDimY_ ) VULKAN_HPP_NOEXCEPT
20190     {
20191       blockDimY = blockDimY_;
20192       return *this;
20193     }
20194 
setBlockDimZVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20195     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setBlockDimZ( uint32_t blockDimZ_ ) VULKAN_HPP_NOEXCEPT
20196     {
20197       blockDimZ = blockDimZ_;
20198       return *this;
20199     }
20200 
setSharedMemBytesVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20201     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setSharedMemBytes( uint32_t sharedMemBytes_ ) VULKAN_HPP_NOEXCEPT
20202     {
20203       sharedMemBytes = sharedMemBytes_;
20204       return *this;
20205     }
20206 
setParamCountVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20207     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setParamCount( size_t paramCount_ ) VULKAN_HPP_NOEXCEPT
20208     {
20209       paramCount = paramCount_;
20210       return *this;
20211     }
20212 
setPParamsVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20213     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setPParams( const void * const * pParams_ ) VULKAN_HPP_NOEXCEPT
20214     {
20215       pParams = pParams_;
20216       return *this;
20217     }
20218 
20219 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setParamsVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20220     CudaLaunchInfoNV & setParams( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const void * const> const & params_ ) VULKAN_HPP_NOEXCEPT
20221     {
20222       paramCount = params_.size();
20223       pParams    = params_.data();
20224       return *this;
20225     }
20226 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20227 
setExtraCountVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20228     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setExtraCount( size_t extraCount_ ) VULKAN_HPP_NOEXCEPT
20229     {
20230       extraCount = extraCount_;
20231       return *this;
20232     }
20233 
setPExtrasVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20234     VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setPExtras( const void * const * pExtras_ ) VULKAN_HPP_NOEXCEPT
20235     {
20236       pExtras = pExtras_;
20237       return *this;
20238     }
20239 
20240 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setExtrasVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20241     CudaLaunchInfoNV & setExtras( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const void * const> const & extras_ ) VULKAN_HPP_NOEXCEPT
20242     {
20243       extraCount = extras_.size();
20244       pExtras    = extras_.data();
20245       return *this;
20246     }
20247 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20248 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20249 
operator VkCudaLaunchInfoNV const&VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20250     operator VkCudaLaunchInfoNV const &() const VULKAN_HPP_NOEXCEPT
20251     {
20252       return *reinterpret_cast<const VkCudaLaunchInfoNV *>( this );
20253     }
20254 
operator VkCudaLaunchInfoNV&VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20255     operator VkCudaLaunchInfoNV &() VULKAN_HPP_NOEXCEPT
20256     {
20257       return *reinterpret_cast<VkCudaLaunchInfoNV *>( this );
20258     }
20259 
20260 #  if defined( VULKAN_HPP_USE_REFLECT )
20261 #    if 14 <= VULKAN_HPP_CPP_VERSION
20262     auto
20263 #    else
20264     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
20265                const void * const &,
20266                VULKAN_HPP_NAMESPACE::CudaFunctionNV const &,
20267                uint32_t const &,
20268                uint32_t const &,
20269                uint32_t const &,
20270                uint32_t const &,
20271                uint32_t const &,
20272                uint32_t const &,
20273                uint32_t const &,
20274                size_t const &,
20275                const void * const * const &,
20276                size_t const &,
20277                const void * const * const &>
20278 #    endif
reflectVULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20279       reflect() const VULKAN_HPP_NOEXCEPT
20280     {
20281       return std::tie(
20282         sType, pNext, function, gridDimX, gridDimY, gridDimZ, blockDimX, blockDimY, blockDimZ, sharedMemBytes, paramCount, pParams, extraCount, pExtras );
20283     }
20284 #  endif
20285 
20286 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
20287     auto operator<=>( CudaLaunchInfoNV const & ) const = default;
20288 #  else
operator ==VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20289     bool operator==( CudaLaunchInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
20290     {
20291 #    if defined( VULKAN_HPP_USE_REFLECT )
20292       return this->reflect() == rhs.reflect();
20293 #    else
20294       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( function == rhs.function ) && ( gridDimX == rhs.gridDimX ) && ( gridDimY == rhs.gridDimY ) &&
20295              ( gridDimZ == rhs.gridDimZ ) && ( blockDimX == rhs.blockDimX ) && ( blockDimY == rhs.blockDimY ) && ( blockDimZ == rhs.blockDimZ ) &&
20296              ( sharedMemBytes == rhs.sharedMemBytes ) && ( paramCount == rhs.paramCount ) && ( pParams == rhs.pParams ) && ( extraCount == rhs.extraCount ) &&
20297              ( pExtras == rhs.pExtras );
20298 #    endif
20299     }
20300 
operator !=VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV20301     bool operator!=( CudaLaunchInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
20302     {
20303       return !operator==( rhs );
20304     }
20305 #  endif
20306 
20307   public:
20308     VULKAN_HPP_NAMESPACE::StructureType  sType          = StructureType::eCudaLaunchInfoNV;
20309     const void *                         pNext          = {};
20310     VULKAN_HPP_NAMESPACE::CudaFunctionNV function       = {};
20311     uint32_t                             gridDimX       = {};
20312     uint32_t                             gridDimY       = {};
20313     uint32_t                             gridDimZ       = {};
20314     uint32_t                             blockDimX      = {};
20315     uint32_t                             blockDimY      = {};
20316     uint32_t                             blockDimZ      = {};
20317     uint32_t                             sharedMemBytes = {};
20318     size_t                               paramCount     = {};
20319     const void * const *                 pParams        = {};
20320     size_t                               extraCount     = {};
20321     const void * const *                 pExtras        = {};
20322   };
20323 
20324   template <>
20325   struct CppType<StructureType, StructureType::eCudaLaunchInfoNV>
20326   {
20327     using Type = CudaLaunchInfoNV;
20328   };
20329 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
20330 
20331 #if defined( VK_ENABLE_BETA_EXTENSIONS )
20332   struct CudaModuleCreateInfoNV
20333   {
20334     using NativeType = VkCudaModuleCreateInfoNV;
20335 
20336     static const bool                                  allowDuplicate = false;
20337     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eCudaModuleCreateInfoNV;
20338 
20339 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CudaModuleCreateInfoNVVULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20340     VULKAN_HPP_CONSTEXPR CudaModuleCreateInfoNV( size_t dataSize_ = {}, const void * pData_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
20341       : pNext{ pNext_ }
20342       , dataSize{ dataSize_ }
20343       , pData{ pData_ }
20344     {
20345     }
20346 
20347     VULKAN_HPP_CONSTEXPR CudaModuleCreateInfoNV( CudaModuleCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20348 
CudaModuleCreateInfoNVVULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20349     CudaModuleCreateInfoNV( VkCudaModuleCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
20350       : CudaModuleCreateInfoNV( *reinterpret_cast<CudaModuleCreateInfoNV const *>( &rhs ) )
20351     {
20352     }
20353 
20354 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
20355     template <typename T>
CudaModuleCreateInfoNVVULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20356     CudaModuleCreateInfoNV( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_, const void * pNext_ = nullptr )
20357       : pNext( pNext_ ), dataSize( data_.size() * sizeof( T ) ), pData( data_.data() )
20358     {
20359     }
20360 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20361 
20362     CudaModuleCreateInfoNV & operator=( CudaModuleCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20363 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20364 
operator =VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20365     CudaModuleCreateInfoNV & operator=( VkCudaModuleCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
20366     {
20367       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV const *>( &rhs );
20368       return *this;
20369     }
20370 
20371 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20372     VULKAN_HPP_CONSTEXPR_14 CudaModuleCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
20373     {
20374       pNext = pNext_;
20375       return *this;
20376     }
20377 
setDataSizeVULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20378     VULKAN_HPP_CONSTEXPR_14 CudaModuleCreateInfoNV & setDataSize( size_t dataSize_ ) VULKAN_HPP_NOEXCEPT
20379     {
20380       dataSize = dataSize_;
20381       return *this;
20382     }
20383 
setPDataVULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20384     VULKAN_HPP_CONSTEXPR_14 CudaModuleCreateInfoNV & setPData( const void * pData_ ) VULKAN_HPP_NOEXCEPT
20385     {
20386       pData = pData_;
20387       return *this;
20388     }
20389 
20390 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
20391     template <typename T>
setDataVULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20392     CudaModuleCreateInfoNV & setData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_ ) VULKAN_HPP_NOEXCEPT
20393     {
20394       dataSize = data_.size() * sizeof( T );
20395       pData    = data_.data();
20396       return *this;
20397     }
20398 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20399 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20400 
operator VkCudaModuleCreateInfoNV const&VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20401     operator VkCudaModuleCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
20402     {
20403       return *reinterpret_cast<const VkCudaModuleCreateInfoNV *>( this );
20404     }
20405 
operator VkCudaModuleCreateInfoNV&VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20406     operator VkCudaModuleCreateInfoNV &() VULKAN_HPP_NOEXCEPT
20407     {
20408       return *reinterpret_cast<VkCudaModuleCreateInfoNV *>( this );
20409     }
20410 
20411 #  if defined( VULKAN_HPP_USE_REFLECT )
20412 #    if 14 <= VULKAN_HPP_CPP_VERSION
20413     auto
20414 #    else
20415     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, size_t const &, const void * const &>
20416 #    endif
reflectVULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20417       reflect() const VULKAN_HPP_NOEXCEPT
20418     {
20419       return std::tie( sType, pNext, dataSize, pData );
20420     }
20421 #  endif
20422 
20423 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
20424     auto operator<=>( CudaModuleCreateInfoNV const & ) const = default;
20425 #  else
operator ==VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20426     bool operator==( CudaModuleCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
20427     {
20428 #    if defined( VULKAN_HPP_USE_REFLECT )
20429       return this->reflect() == rhs.reflect();
20430 #    else
20431       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dataSize == rhs.dataSize ) && ( pData == rhs.pData );
20432 #    endif
20433     }
20434 
operator !=VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV20435     bool operator!=( CudaModuleCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
20436     {
20437       return !operator==( rhs );
20438     }
20439 #  endif
20440 
20441   public:
20442     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eCudaModuleCreateInfoNV;
20443     const void *                        pNext    = {};
20444     size_t                              dataSize = {};
20445     const void *                        pData    = {};
20446   };
20447 
20448   template <>
20449   struct CppType<StructureType, StructureType::eCudaModuleCreateInfoNV>
20450   {
20451     using Type = CudaModuleCreateInfoNV;
20452   };
20453 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
20454 
20455 #if defined( VK_USE_PLATFORM_WIN32_KHR )
20456   struct D3D12FenceSubmitInfoKHR
20457   {
20458     using NativeType = VkD3D12FenceSubmitInfoKHR;
20459 
20460     static const bool                                  allowDuplicate = false;
20461     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eD3D12FenceSubmitInfoKHR;
20462 
20463 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
D3D12FenceSubmitInfoKHRVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20464     VULKAN_HPP_CONSTEXPR D3D12FenceSubmitInfoKHR( uint32_t         waitSemaphoreValuesCount_   = {},
20465                                                   const uint64_t * pWaitSemaphoreValues_       = {},
20466                                                   uint32_t         signalSemaphoreValuesCount_ = {},
20467                                                   const uint64_t * pSignalSemaphoreValues_     = {},
20468                                                   const void *     pNext_                      = nullptr ) VULKAN_HPP_NOEXCEPT
20469       : pNext{ pNext_ }
20470       , waitSemaphoreValuesCount{ waitSemaphoreValuesCount_ }
20471       , pWaitSemaphoreValues{ pWaitSemaphoreValues_ }
20472       , signalSemaphoreValuesCount{ signalSemaphoreValuesCount_ }
20473       , pSignalSemaphoreValues{ pSignalSemaphoreValues_ }
20474     {
20475     }
20476 
20477     VULKAN_HPP_CONSTEXPR D3D12FenceSubmitInfoKHR( D3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20478 
D3D12FenceSubmitInfoKHRVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20479     D3D12FenceSubmitInfoKHR( VkD3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
20480       : D3D12FenceSubmitInfoKHR( *reinterpret_cast<D3D12FenceSubmitInfoKHR const *>( &rhs ) )
20481     {
20482     }
20483 
20484 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
D3D12FenceSubmitInfoKHRVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20485     D3D12FenceSubmitInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & waitSemaphoreValues_,
20486                              VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & signalSemaphoreValues_ = {},
20487                              const void *                                                          pNext_                 = nullptr )
20488       : pNext( pNext_ )
20489       , waitSemaphoreValuesCount( static_cast<uint32_t>( waitSemaphoreValues_.size() ) )
20490       , pWaitSemaphoreValues( waitSemaphoreValues_.data() )
20491       , signalSemaphoreValuesCount( static_cast<uint32_t>( signalSemaphoreValues_.size() ) )
20492       , pSignalSemaphoreValues( signalSemaphoreValues_.data() )
20493     {
20494     }
20495 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20496 
20497     D3D12FenceSubmitInfoKHR & operator=( D3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20498 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20499 
operator =VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20500     D3D12FenceSubmitInfoKHR & operator=( VkD3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
20501     {
20502       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR const *>( &rhs );
20503       return *this;
20504     }
20505 
20506 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20507     VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
20508     {
20509       pNext = pNext_;
20510       return *this;
20511     }
20512 
setWaitSemaphoreValuesCountVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20513     VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ ) VULKAN_HPP_NOEXCEPT
20514     {
20515       waitSemaphoreValuesCount = waitSemaphoreValuesCount_;
20516       return *this;
20517     }
20518 
setPWaitSemaphoreValuesVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20519     VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & setPWaitSemaphoreValues( const uint64_t * pWaitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
20520     {
20521       pWaitSemaphoreValues = pWaitSemaphoreValues_;
20522       return *this;
20523     }
20524 
20525 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
20526     D3D12FenceSubmitInfoKHR &
setWaitSemaphoreValuesVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20527       setWaitSemaphoreValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & waitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
20528     {
20529       waitSemaphoreValuesCount = static_cast<uint32_t>( waitSemaphoreValues_.size() );
20530       pWaitSemaphoreValues     = waitSemaphoreValues_.data();
20531       return *this;
20532     }
20533 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20534 
setSignalSemaphoreValuesCountVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20535     VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ ) VULKAN_HPP_NOEXCEPT
20536     {
20537       signalSemaphoreValuesCount = signalSemaphoreValuesCount_;
20538       return *this;
20539     }
20540 
setPSignalSemaphoreValuesVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20541     VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & setPSignalSemaphoreValues( const uint64_t * pSignalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
20542     {
20543       pSignalSemaphoreValues = pSignalSemaphoreValues_;
20544       return *this;
20545     }
20546 
20547 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
20548     D3D12FenceSubmitInfoKHR &
setSignalSemaphoreValuesVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20549       setSignalSemaphoreValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & signalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
20550     {
20551       signalSemaphoreValuesCount = static_cast<uint32_t>( signalSemaphoreValues_.size() );
20552       pSignalSemaphoreValues     = signalSemaphoreValues_.data();
20553       return *this;
20554     }
20555 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20556 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20557 
operator VkD3D12FenceSubmitInfoKHR const&VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20558     operator VkD3D12FenceSubmitInfoKHR const &() const VULKAN_HPP_NOEXCEPT
20559     {
20560       return *reinterpret_cast<const VkD3D12FenceSubmitInfoKHR *>( this );
20561     }
20562 
operator VkD3D12FenceSubmitInfoKHR&VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20563     operator VkD3D12FenceSubmitInfoKHR &() VULKAN_HPP_NOEXCEPT
20564     {
20565       return *reinterpret_cast<VkD3D12FenceSubmitInfoKHR *>( this );
20566     }
20567 
20568 #  if defined( VULKAN_HPP_USE_REFLECT )
20569 #    if 14 <= VULKAN_HPP_CPP_VERSION
20570     auto
20571 #    else
20572     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
20573                const void * const &,
20574                uint32_t const &,
20575                const uint64_t * const &,
20576                uint32_t const &,
20577                const uint64_t * const &>
20578 #    endif
reflectVULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20579       reflect() const VULKAN_HPP_NOEXCEPT
20580     {
20581       return std::tie( sType, pNext, waitSemaphoreValuesCount, pWaitSemaphoreValues, signalSemaphoreValuesCount, pSignalSemaphoreValues );
20582     }
20583 #  endif
20584 
20585 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
20586     auto operator<=>( D3D12FenceSubmitInfoKHR const & ) const = default;
20587 #  else
operator ==VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20588     bool operator==( D3D12FenceSubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
20589     {
20590 #    if defined( VULKAN_HPP_USE_REFLECT )
20591       return this->reflect() == rhs.reflect();
20592 #    else
20593       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount ) &&
20594              ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues ) && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount ) &&
20595              ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
20596 #    endif
20597     }
20598 
operator !=VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR20599     bool operator!=( D3D12FenceSubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
20600     {
20601       return !operator==( rhs );
20602     }
20603 #  endif
20604 
20605   public:
20606     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::eD3D12FenceSubmitInfoKHR;
20607     const void *                        pNext                      = {};
20608     uint32_t                            waitSemaphoreValuesCount   = {};
20609     const uint64_t *                    pWaitSemaphoreValues       = {};
20610     uint32_t                            signalSemaphoreValuesCount = {};
20611     const uint64_t *                    pSignalSemaphoreValues     = {};
20612   };
20613 
20614   template <>
20615   struct CppType<StructureType, StructureType::eD3D12FenceSubmitInfoKHR>
20616   {
20617     using Type = D3D12FenceSubmitInfoKHR;
20618   };
20619 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
20620 
20621   struct DebugMarkerMarkerInfoEXT
20622   {
20623     using NativeType = VkDebugMarkerMarkerInfoEXT;
20624 
20625     static const bool                                  allowDuplicate = false;
20626     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugMarkerMarkerInfoEXT;
20627 
20628 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
20629     VULKAN_HPP_CONSTEXPR_14
DebugMarkerMarkerInfoEXTVULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20630       DebugMarkerMarkerInfoEXT( const char * pMarkerName_ = {}, std::array<float, 4> const & color_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
20631       : pNext{ pNext_ }
20632       , pMarkerName{ pMarkerName_ }
20633       , color{ color_ }
20634     {
20635     }
20636 
20637     VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT( DebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20638 
DebugMarkerMarkerInfoEXTVULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20639     DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
20640       : DebugMarkerMarkerInfoEXT( *reinterpret_cast<DebugMarkerMarkerInfoEXT const *>( &rhs ) )
20641     {
20642     }
20643 
20644     DebugMarkerMarkerInfoEXT & operator=( DebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20645 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20646 
operator =VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20647     DebugMarkerMarkerInfoEXT & operator=( VkDebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
20648     {
20649       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT const *>( &rhs );
20650       return *this;
20651     }
20652 
20653 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20654     VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
20655     {
20656       pNext = pNext_;
20657       return *this;
20658     }
20659 
setPMarkerNameVULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20660     VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT & setPMarkerName( const char * pMarkerName_ ) VULKAN_HPP_NOEXCEPT
20661     {
20662       pMarkerName = pMarkerName_;
20663       return *this;
20664     }
20665 
setColorVULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20666     VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT & setColor( std::array<float, 4> color_ ) VULKAN_HPP_NOEXCEPT
20667     {
20668       color = color_;
20669       return *this;
20670     }
20671 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20672 
operator VkDebugMarkerMarkerInfoEXT const&VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20673     operator VkDebugMarkerMarkerInfoEXT const &() const VULKAN_HPP_NOEXCEPT
20674     {
20675       return *reinterpret_cast<const VkDebugMarkerMarkerInfoEXT *>( this );
20676     }
20677 
operator VkDebugMarkerMarkerInfoEXT&VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20678     operator VkDebugMarkerMarkerInfoEXT &() VULKAN_HPP_NOEXCEPT
20679     {
20680       return *reinterpret_cast<VkDebugMarkerMarkerInfoEXT *>( this );
20681     }
20682 
20683 #if defined( VULKAN_HPP_USE_REFLECT )
20684 #  if 14 <= VULKAN_HPP_CPP_VERSION
20685     auto
20686 #  else
20687     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const char * const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> const &>
20688 #  endif
reflectVULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20689       reflect() const VULKAN_HPP_NOEXCEPT
20690     {
20691       return std::tie( sType, pNext, pMarkerName, color );
20692     }
20693 #endif
20694 
20695 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20696     std::partial_ordering operator<=>( DebugMarkerMarkerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
20697     {
20698       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
20699         return cmp;
20700       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
20701         return cmp;
20702       if ( pMarkerName != rhs.pMarkerName )
20703         if ( auto cmp = strcmp( pMarkerName, rhs.pMarkerName ); cmp != 0 )
20704           return ( cmp < 0 ) ? std::partial_ordering::less : std::partial_ordering::greater;
20705       if ( auto cmp = color <=> rhs.color; cmp != 0 )
20706         return cmp;
20707 
20708       return std::partial_ordering::equivalent;
20709     }
20710 #endif
20711 
operator ==VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20712     bool operator==( DebugMarkerMarkerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
20713     {
20714       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ( pMarkerName == rhs.pMarkerName ) || ( strcmp( pMarkerName, rhs.pMarkerName ) == 0 ) ) &&
20715              ( color == rhs.color );
20716     }
20717 
operator !=VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT20718     bool operator!=( DebugMarkerMarkerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
20719     {
20720       return !operator==( rhs );
20721     }
20722 
20723   public:
20724     VULKAN_HPP_NAMESPACE::StructureType            sType       = StructureType::eDebugMarkerMarkerInfoEXT;
20725     const void *                                   pNext       = {};
20726     const char *                                   pMarkerName = {};
20727     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> color       = {};
20728   };
20729 
20730   template <>
20731   struct CppType<StructureType, StructureType::eDebugMarkerMarkerInfoEXT>
20732   {
20733     using Type = DebugMarkerMarkerInfoEXT;
20734   };
20735 
20736   struct DebugMarkerObjectNameInfoEXT
20737   {
20738     using NativeType = VkDebugMarkerObjectNameInfoEXT;
20739 
20740     static const bool                                  allowDuplicate = false;
20741     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugMarkerObjectNameInfoEXT;
20742 
20743 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
20744     VULKAN_HPP_CONSTEXPR
DebugMarkerObjectNameInfoEXTVULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT20745       DebugMarkerObjectNameInfoEXT( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_  = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown,
20746                                     uint64_t                                       object_      = {},
20747                                     const char *                                   pObjectName_ = {},
20748                                     const void *                                   pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
20749       : pNext{ pNext_ }
20750       , objectType{ objectType_ }
20751       , object{ object_ }
20752       , pObjectName{ pObjectName_ }
20753     {
20754     }
20755 
20756     VULKAN_HPP_CONSTEXPR DebugMarkerObjectNameInfoEXT( DebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20757 
DebugMarkerObjectNameInfoEXTVULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT20758     DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
20759       : DebugMarkerObjectNameInfoEXT( *reinterpret_cast<DebugMarkerObjectNameInfoEXT const *>( &rhs ) )
20760     {
20761     }
20762 
20763     DebugMarkerObjectNameInfoEXT & operator=( DebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20764 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20765 
operator =VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT20766     DebugMarkerObjectNameInfoEXT & operator=( VkDebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
20767     {
20768       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT const *>( &rhs );
20769       return *this;
20770     }
20771 
20772 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT20773     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
20774     {
20775       pNext = pNext_;
20776       return *this;
20777     }
20778 
setObjectTypeVULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT20779     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT & setObjectType( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_ ) VULKAN_HPP_NOEXCEPT
20780     {
20781       objectType = objectType_;
20782       return *this;
20783     }
20784 
setObjectVULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT20785     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT & setObject( uint64_t object_ ) VULKAN_HPP_NOEXCEPT
20786     {
20787       object = object_;
20788       return *this;
20789     }
20790 
setPObjectNameVULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT20791     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT & setPObjectName( const char * pObjectName_ ) VULKAN_HPP_NOEXCEPT
20792     {
20793       pObjectName = pObjectName_;
20794       return *this;
20795     }
20796 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20797 
operator VkDebugMarkerObjectNameInfoEXT const&VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT20798     operator VkDebugMarkerObjectNameInfoEXT const &() const VULKAN_HPP_NOEXCEPT
20799     {
20800       return *reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT *>( this );
20801     }
20802 
operator VkDebugMarkerObjectNameInfoEXT&VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT20803     operator VkDebugMarkerObjectNameInfoEXT &() VULKAN_HPP_NOEXCEPT
20804     {
20805       return *reinterpret_cast<VkDebugMarkerObjectNameInfoEXT *>( this );
20806     }
20807 
20808 #if defined( VULKAN_HPP_USE_REFLECT )
20809 #  if 14 <= VULKAN_HPP_CPP_VERSION
20810     auto
20811 #  else
20812     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
20813                const void * const &,
20814                VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT const &,
20815                uint64_t const &,
20816                const char * const &>
20817 #  endif
reflectVULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT20818       reflect() const VULKAN_HPP_NOEXCEPT
20819     {
20820       return std::tie( sType, pNext, objectType, object, pObjectName );
20821     }
20822 #endif
20823 
20824 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT20825     std::strong_ordering operator<=>( DebugMarkerObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
20826     {
20827       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
20828         return cmp;
20829       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
20830         return cmp;
20831       if ( auto cmp = objectType <=> rhs.objectType; cmp != 0 )
20832         return cmp;
20833       if ( auto cmp = object <=> rhs.object; cmp != 0 )
20834         return cmp;
20835       if ( pObjectName != rhs.pObjectName )
20836         if ( auto cmp = strcmp( pObjectName, rhs.pObjectName ); cmp != 0 )
20837           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
20838 
20839       return std::strong_ordering::equivalent;
20840     }
20841 #endif
20842 
operator ==VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT20843     bool operator==( DebugMarkerObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
20844     {
20845       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( objectType == rhs.objectType ) && ( object == rhs.object ) &&
20846              ( ( pObjectName == rhs.pObjectName ) || ( strcmp( pObjectName, rhs.pObjectName ) == 0 ) );
20847     }
20848 
operator !=VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT20849     bool operator!=( DebugMarkerObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
20850     {
20851       return !operator==( rhs );
20852     }
20853 
20854   public:
20855     VULKAN_HPP_NAMESPACE::StructureType            sType       = StructureType::eDebugMarkerObjectNameInfoEXT;
20856     const void *                                   pNext       = {};
20857     VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType  = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
20858     uint64_t                                       object      = {};
20859     const char *                                   pObjectName = {};
20860   };
20861 
20862   template <>
20863   struct CppType<StructureType, StructureType::eDebugMarkerObjectNameInfoEXT>
20864   {
20865     using Type = DebugMarkerObjectNameInfoEXT;
20866   };
20867 
20868   struct DebugMarkerObjectTagInfoEXT
20869   {
20870     using NativeType = VkDebugMarkerObjectTagInfoEXT;
20871 
20872     static const bool                                  allowDuplicate = false;
20873     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugMarkerObjectTagInfoEXT;
20874 
20875 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
20876     VULKAN_HPP_CONSTEXPR
DebugMarkerObjectTagInfoEXTVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT20877       DebugMarkerObjectTagInfoEXT( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_ = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown,
20878                                    uint64_t                                       object_     = {},
20879                                    uint64_t                                       tagName_    = {},
20880                                    size_t                                         tagSize_    = {},
20881                                    const void *                                   pTag_       = {},
20882                                    const void *                                   pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
20883       : pNext{ pNext_ }
20884       , objectType{ objectType_ }
20885       , object{ object_ }
20886       , tagName{ tagName_ }
20887       , tagSize{ tagSize_ }
20888       , pTag{ pTag_ }
20889     {
20890     }
20891 
20892     VULKAN_HPP_CONSTEXPR DebugMarkerObjectTagInfoEXT( DebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20893 
DebugMarkerObjectTagInfoEXTVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT20894     DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
20895       : DebugMarkerObjectTagInfoEXT( *reinterpret_cast<DebugMarkerObjectTagInfoEXT const *>( &rhs ) )
20896     {
20897     }
20898 
20899 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
20900     template <typename T>
DebugMarkerObjectTagInfoEXTVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT20901     DebugMarkerObjectTagInfoEXT( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT                 objectType_,
20902                                  uint64_t                                                       object_,
20903                                  uint64_t                                                       tagName_,
20904                                  VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & tag_,
20905                                  const void *                                                   pNext_ = nullptr )
20906       : pNext( pNext_ ), objectType( objectType_ ), object( object_ ), tagName( tagName_ ), tagSize( tag_.size() * sizeof( T ) ), pTag( tag_.data() )
20907     {
20908     }
20909 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20910 
20911     DebugMarkerObjectTagInfoEXT & operator=( DebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20912 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20913 
operator =VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT20914     DebugMarkerObjectTagInfoEXT & operator=( VkDebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
20915     {
20916       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT const *>( &rhs );
20917       return *this;
20918     }
20919 
20920 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT20921     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
20922     {
20923       pNext = pNext_;
20924       return *this;
20925     }
20926 
setObjectTypeVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT20927     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setObjectType( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_ ) VULKAN_HPP_NOEXCEPT
20928     {
20929       objectType = objectType_;
20930       return *this;
20931     }
20932 
setObjectVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT20933     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setObject( uint64_t object_ ) VULKAN_HPP_NOEXCEPT
20934     {
20935       object = object_;
20936       return *this;
20937     }
20938 
setTagNameVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT20939     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setTagName( uint64_t tagName_ ) VULKAN_HPP_NOEXCEPT
20940     {
20941       tagName = tagName_;
20942       return *this;
20943     }
20944 
setTagSizeVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT20945     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setTagSize( size_t tagSize_ ) VULKAN_HPP_NOEXCEPT
20946     {
20947       tagSize = tagSize_;
20948       return *this;
20949     }
20950 
setPTagVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT20951     VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setPTag( const void * pTag_ ) VULKAN_HPP_NOEXCEPT
20952     {
20953       pTag = pTag_;
20954       return *this;
20955     }
20956 
20957 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
20958     template <typename T>
setTagVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT20959     DebugMarkerObjectTagInfoEXT & setTag( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & tag_ ) VULKAN_HPP_NOEXCEPT
20960     {
20961       tagSize = tag_.size() * sizeof( T );
20962       pTag    = tag_.data();
20963       return *this;
20964     }
20965 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20966 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20967 
operator VkDebugMarkerObjectTagInfoEXT const&VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT20968     operator VkDebugMarkerObjectTagInfoEXT const &() const VULKAN_HPP_NOEXCEPT
20969     {
20970       return *reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT *>( this );
20971     }
20972 
operator VkDebugMarkerObjectTagInfoEXT&VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT20973     operator VkDebugMarkerObjectTagInfoEXT &() VULKAN_HPP_NOEXCEPT
20974     {
20975       return *reinterpret_cast<VkDebugMarkerObjectTagInfoEXT *>( this );
20976     }
20977 
20978 #if defined( VULKAN_HPP_USE_REFLECT )
20979 #  if 14 <= VULKAN_HPP_CPP_VERSION
20980     auto
20981 #  else
20982     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
20983                const void * const &,
20984                VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT const &,
20985                uint64_t const &,
20986                uint64_t const &,
20987                size_t const &,
20988                const void * const &>
20989 #  endif
reflectVULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT20990       reflect() const VULKAN_HPP_NOEXCEPT
20991     {
20992       return std::tie( sType, pNext, objectType, object, tagName, tagSize, pTag );
20993     }
20994 #endif
20995 
20996 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
20997     auto operator<=>( DebugMarkerObjectTagInfoEXT const & ) const = default;
20998 #else
operator ==VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT20999     bool operator==( DebugMarkerObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21000     {
21001 #  if defined( VULKAN_HPP_USE_REFLECT )
21002       return this->reflect() == rhs.reflect();
21003 #  else
21004       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( objectType == rhs.objectType ) && ( object == rhs.object ) && ( tagName == rhs.tagName ) &&
21005              ( tagSize == rhs.tagSize ) && ( pTag == rhs.pTag );
21006 #  endif
21007     }
21008 
operator !=VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT21009     bool operator!=( DebugMarkerObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21010     {
21011       return !operator==( rhs );
21012     }
21013 #endif
21014 
21015   public:
21016     VULKAN_HPP_NAMESPACE::StructureType            sType      = StructureType::eDebugMarkerObjectTagInfoEXT;
21017     const void *                                   pNext      = {};
21018     VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
21019     uint64_t                                       object     = {};
21020     uint64_t                                       tagName    = {};
21021     size_t                                         tagSize    = {};
21022     const void *                                   pTag       = {};
21023   };
21024 
21025   template <>
21026   struct CppType<StructureType, StructureType::eDebugMarkerObjectTagInfoEXT>
21027   {
21028     using Type = DebugMarkerObjectTagInfoEXT;
21029   };
21030 
21031   struct DebugReportCallbackCreateInfoEXT
21032   {
21033     using NativeType = VkDebugReportCallbackCreateInfoEXT;
21034 
21035     static const bool                                  allowDuplicate = false;
21036     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugReportCallbackCreateInfoEXT;
21037 
21038 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugReportCallbackCreateInfoEXTVULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21039     VULKAN_HPP_CONSTEXPR DebugReportCallbackCreateInfoEXT( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags_       = {},
21040                                                            PFN_vkDebugReportCallbackEXT              pfnCallback_ = {},
21041                                                            void *                                    pUserData_   = {},
21042                                                            const void *                              pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
21043       : pNext{ pNext_ }
21044       , flags{ flags_ }
21045       , pfnCallback{ pfnCallback_ }
21046       , pUserData{ pUserData_ }
21047     {
21048     }
21049 
21050     VULKAN_HPP_CONSTEXPR DebugReportCallbackCreateInfoEXT( DebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21051 
DebugReportCallbackCreateInfoEXTVULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21052     DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21053       : DebugReportCallbackCreateInfoEXT( *reinterpret_cast<DebugReportCallbackCreateInfoEXT const *>( &rhs ) )
21054     {
21055     }
21056 
21057     DebugReportCallbackCreateInfoEXT & operator=( DebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21058 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21059 
operator =VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21060     DebugReportCallbackCreateInfoEXT & operator=( VkDebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21061     {
21062       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT const *>( &rhs );
21063       return *this;
21064     }
21065 
21066 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21067     VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
21068     {
21069       pNext = pNext_;
21070       return *this;
21071     }
21072 
setFlagsVULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21073     VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
21074     {
21075       flags = flags_;
21076       return *this;
21077     }
21078 
setPfnCallbackVULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21079     VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT & setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ ) VULKAN_HPP_NOEXCEPT
21080     {
21081       pfnCallback = pfnCallback_;
21082       return *this;
21083     }
21084 
setPUserDataVULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21085     VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT & setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT
21086     {
21087       pUserData = pUserData_;
21088       return *this;
21089     }
21090 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21091 
operator VkDebugReportCallbackCreateInfoEXT const&VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21092     operator VkDebugReportCallbackCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
21093     {
21094       return *reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT *>( this );
21095     }
21096 
operator VkDebugReportCallbackCreateInfoEXT&VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21097     operator VkDebugReportCallbackCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
21098     {
21099       return *reinterpret_cast<VkDebugReportCallbackCreateInfoEXT *>( this );
21100     }
21101 
21102 #if defined( VULKAN_HPP_USE_REFLECT )
21103 #  if 14 <= VULKAN_HPP_CPP_VERSION
21104     auto
21105 #  else
21106     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
21107                const void * const &,
21108                VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT const &,
21109                PFN_vkDebugReportCallbackEXT const &,
21110                void * const &>
21111 #  endif
reflectVULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21112       reflect() const VULKAN_HPP_NOEXCEPT
21113     {
21114       return std::tie( sType, pNext, flags, pfnCallback, pUserData );
21115     }
21116 #endif
21117 
operator ==VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21118     bool operator==( DebugReportCallbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21119     {
21120 #if defined( VULKAN_HPP_USE_REFLECT )
21121       return this->reflect() == rhs.reflect();
21122 #else
21123       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pfnCallback == rhs.pfnCallback ) && ( pUserData == rhs.pUserData );
21124 #endif
21125     }
21126 
operator !=VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT21127     bool operator!=( DebugReportCallbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21128     {
21129       return !operator==( rhs );
21130     }
21131 
21132   public:
21133     VULKAN_HPP_NAMESPACE::StructureType       sType       = StructureType::eDebugReportCallbackCreateInfoEXT;
21134     const void *                              pNext       = {};
21135     VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags       = {};
21136     PFN_vkDebugReportCallbackEXT              pfnCallback = {};
21137     void *                                    pUserData   = {};
21138   };
21139 
21140   template <>
21141   struct CppType<StructureType, StructureType::eDebugReportCallbackCreateInfoEXT>
21142   {
21143     using Type = DebugReportCallbackCreateInfoEXT;
21144   };
21145 
21146   struct DebugUtilsLabelEXT
21147   {
21148     using NativeType = VkDebugUtilsLabelEXT;
21149 
21150     static const bool                                  allowDuplicate = false;
21151     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugUtilsLabelEXT;
21152 
21153 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
21154     VULKAN_HPP_CONSTEXPR_14
DebugUtilsLabelEXTVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21155       DebugUtilsLabelEXT( const char * pLabelName_ = {}, std::array<float, 4> const & color_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
21156       : pNext{ pNext_ }
21157       , pLabelName{ pLabelName_ }
21158       , color{ color_ }
21159     {
21160     }
21161 
21162     VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT( DebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21163 
DebugUtilsLabelEXTVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21164     DebugUtilsLabelEXT( VkDebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT : DebugUtilsLabelEXT( *reinterpret_cast<DebugUtilsLabelEXT const *>( &rhs ) ) {}
21165 
21166     DebugUtilsLabelEXT & operator=( DebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21167 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21168 
operator =VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21169     DebugUtilsLabelEXT & operator=( VkDebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21170     {
21171       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT const *>( &rhs );
21172       return *this;
21173     }
21174 
21175 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21176     VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
21177     {
21178       pNext = pNext_;
21179       return *this;
21180     }
21181 
setPLabelNameVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21182     VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT & setPLabelName( const char * pLabelName_ ) VULKAN_HPP_NOEXCEPT
21183     {
21184       pLabelName = pLabelName_;
21185       return *this;
21186     }
21187 
setColorVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21188     VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT & setColor( std::array<float, 4> color_ ) VULKAN_HPP_NOEXCEPT
21189     {
21190       color = color_;
21191       return *this;
21192     }
21193 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21194 
operator VkDebugUtilsLabelEXT const&VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21195     operator VkDebugUtilsLabelEXT const &() const VULKAN_HPP_NOEXCEPT
21196     {
21197       return *reinterpret_cast<const VkDebugUtilsLabelEXT *>( this );
21198     }
21199 
operator VkDebugUtilsLabelEXT&VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21200     operator VkDebugUtilsLabelEXT &() VULKAN_HPP_NOEXCEPT
21201     {
21202       return *reinterpret_cast<VkDebugUtilsLabelEXT *>( this );
21203     }
21204 
21205 #if defined( VULKAN_HPP_USE_REFLECT )
21206 #  if 14 <= VULKAN_HPP_CPP_VERSION
21207     auto
21208 #  else
21209     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const char * const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> const &>
21210 #  endif
reflectVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21211       reflect() const VULKAN_HPP_NOEXCEPT
21212     {
21213       return std::tie( sType, pNext, pLabelName, color );
21214     }
21215 #endif
21216 
21217 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21218     std::partial_ordering operator<=>( DebugUtilsLabelEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21219     {
21220       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
21221         return cmp;
21222       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
21223         return cmp;
21224       if ( pLabelName != rhs.pLabelName )
21225         if ( auto cmp = strcmp( pLabelName, rhs.pLabelName ); cmp != 0 )
21226           return ( cmp < 0 ) ? std::partial_ordering::less : std::partial_ordering::greater;
21227       if ( auto cmp = color <=> rhs.color; cmp != 0 )
21228         return cmp;
21229 
21230       return std::partial_ordering::equivalent;
21231     }
21232 #endif
21233 
operator ==VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21234     bool operator==( DebugUtilsLabelEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21235     {
21236       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ( pLabelName == rhs.pLabelName ) || ( strcmp( pLabelName, rhs.pLabelName ) == 0 ) ) &&
21237              ( color == rhs.color );
21238     }
21239 
operator !=VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT21240     bool operator!=( DebugUtilsLabelEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21241     {
21242       return !operator==( rhs );
21243     }
21244 
21245   public:
21246     VULKAN_HPP_NAMESPACE::StructureType            sType      = StructureType::eDebugUtilsLabelEXT;
21247     const void *                                   pNext      = {};
21248     const char *                                   pLabelName = {};
21249     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> color      = {};
21250   };
21251 
21252   template <>
21253   struct CppType<StructureType, StructureType::eDebugUtilsLabelEXT>
21254   {
21255     using Type = DebugUtilsLabelEXT;
21256   };
21257 
21258   struct DebugUtilsObjectNameInfoEXT
21259   {
21260     using NativeType = VkDebugUtilsObjectNameInfoEXT;
21261 
21262     static const bool                                  allowDuplicate = false;
21263     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugUtilsObjectNameInfoEXT;
21264 
21265 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugUtilsObjectNameInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21266     VULKAN_HPP_CONSTEXPR DebugUtilsObjectNameInfoEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType_   = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown,
21267                                                       uint64_t                         objectHandle_ = {},
21268                                                       const char *                     pObjectName_  = {},
21269                                                       const void *                     pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
21270       : pNext{ pNext_ }
21271       , objectType{ objectType_ }
21272       , objectHandle{ objectHandle_ }
21273       , pObjectName{ pObjectName_ }
21274     {
21275     }
21276 
21277     VULKAN_HPP_CONSTEXPR DebugUtilsObjectNameInfoEXT( DebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21278 
DebugUtilsObjectNameInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21279     DebugUtilsObjectNameInfoEXT( VkDebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21280       : DebugUtilsObjectNameInfoEXT( *reinterpret_cast<DebugUtilsObjectNameInfoEXT const *>( &rhs ) )
21281     {
21282     }
21283 
21284     DebugUtilsObjectNameInfoEXT & operator=( DebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21285 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21286 
operator =VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21287     DebugUtilsObjectNameInfoEXT & operator=( VkDebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21288     {
21289       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT const *>( &rhs );
21290       return *this;
21291     }
21292 
21293 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21294     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
21295     {
21296       pNext = pNext_;
21297       return *this;
21298     }
21299 
setObjectTypeVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21300     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & setObjectType( VULKAN_HPP_NAMESPACE::ObjectType objectType_ ) VULKAN_HPP_NOEXCEPT
21301     {
21302       objectType = objectType_;
21303       return *this;
21304     }
21305 
setObjectHandleVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21306     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & setObjectHandle( uint64_t objectHandle_ ) VULKAN_HPP_NOEXCEPT
21307     {
21308       objectHandle = objectHandle_;
21309       return *this;
21310     }
21311 
setPObjectNameVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21312     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & setPObjectName( const char * pObjectName_ ) VULKAN_HPP_NOEXCEPT
21313     {
21314       pObjectName = pObjectName_;
21315       return *this;
21316     }
21317 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21318 
operator VkDebugUtilsObjectNameInfoEXT const&VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21319     operator VkDebugUtilsObjectNameInfoEXT const &() const VULKAN_HPP_NOEXCEPT
21320     {
21321       return *reinterpret_cast<const VkDebugUtilsObjectNameInfoEXT *>( this );
21322     }
21323 
operator VkDebugUtilsObjectNameInfoEXT&VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21324     operator VkDebugUtilsObjectNameInfoEXT &() VULKAN_HPP_NOEXCEPT
21325     {
21326       return *reinterpret_cast<VkDebugUtilsObjectNameInfoEXT *>( this );
21327     }
21328 
21329 #if defined( VULKAN_HPP_USE_REFLECT )
21330 #  if 14 <= VULKAN_HPP_CPP_VERSION
21331     auto
21332 #  else
21333     std::
21334       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ObjectType const &, uint64_t const &, const char * const &>
21335 #  endif
reflectVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21336       reflect() const VULKAN_HPP_NOEXCEPT
21337     {
21338       return std::tie( sType, pNext, objectType, objectHandle, pObjectName );
21339     }
21340 #endif
21341 
21342 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21343     std::strong_ordering operator<=>( DebugUtilsObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21344     {
21345       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
21346         return cmp;
21347       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
21348         return cmp;
21349       if ( auto cmp = objectType <=> rhs.objectType; cmp != 0 )
21350         return cmp;
21351       if ( auto cmp = objectHandle <=> rhs.objectHandle; cmp != 0 )
21352         return cmp;
21353       if ( pObjectName != rhs.pObjectName )
21354         if ( auto cmp = strcmp( pObjectName, rhs.pObjectName ); cmp != 0 )
21355           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
21356 
21357       return std::strong_ordering::equivalent;
21358     }
21359 #endif
21360 
operator ==VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21361     bool operator==( DebugUtilsObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21362     {
21363       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( objectType == rhs.objectType ) && ( objectHandle == rhs.objectHandle ) &&
21364              ( ( pObjectName == rhs.pObjectName ) || ( strcmp( pObjectName, rhs.pObjectName ) == 0 ) );
21365     }
21366 
operator !=VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT21367     bool operator!=( DebugUtilsObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21368     {
21369       return !operator==( rhs );
21370     }
21371 
21372   public:
21373     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eDebugUtilsObjectNameInfoEXT;
21374     const void *                        pNext        = {};
21375     VULKAN_HPP_NAMESPACE::ObjectType    objectType   = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown;
21376     uint64_t                            objectHandle = {};
21377     const char *                        pObjectName  = {};
21378   };
21379 
21380   template <>
21381   struct CppType<StructureType, StructureType::eDebugUtilsObjectNameInfoEXT>
21382   {
21383     using Type = DebugUtilsObjectNameInfoEXT;
21384   };
21385 
21386   struct DebugUtilsMessengerCallbackDataEXT
21387   {
21388     using NativeType = VkDebugUtilsMessengerCallbackDataEXT;
21389 
21390     static const bool                                  allowDuplicate = false;
21391     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugUtilsMessengerCallbackDataEXT;
21392 
21393 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugUtilsMessengerCallbackDataEXTVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21394     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags_            = {},
21395                                                                 const char *                                                  pMessageIdName_   = {},
21396                                                                 int32_t                                                       messageIdNumber_  = {},
21397                                                                 const char *                                                  pMessage_         = {},
21398                                                                 uint32_t                                                      queueLabelCount_  = {},
21399                                                                 const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT *              pQueueLabels_     = {},
21400                                                                 uint32_t                                                      cmdBufLabelCount_ = {},
21401                                                                 const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT *              pCmdBufLabels_    = {},
21402                                                                 uint32_t                                                      objectCount_      = {},
21403                                                                 const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT *     pObjects_         = {},
21404                                                                 const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
21405       : pNext{ pNext_ }
21406       , flags{ flags_ }
21407       , pMessageIdName{ pMessageIdName_ }
21408       , messageIdNumber{ messageIdNumber_ }
21409       , pMessage{ pMessage_ }
21410       , queueLabelCount{ queueLabelCount_ }
21411       , pQueueLabels{ pQueueLabels_ }
21412       , cmdBufLabelCount{ cmdBufLabelCount_ }
21413       , pCmdBufLabels{ pCmdBufLabels_ }
21414       , objectCount{ objectCount_ }
21415       , pObjects{ pObjects_ }
21416     {
21417     }
21418 
21419     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT( DebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21420 
DebugUtilsMessengerCallbackDataEXTVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21421     DebugUtilsMessengerCallbackDataEXT( VkDebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21422       : DebugUtilsMessengerCallbackDataEXT( *reinterpret_cast<DebugUtilsMessengerCallbackDataEXT const *>( &rhs ) )
21423     {
21424     }
21425 
21426 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DebugUtilsMessengerCallbackDataEXTVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21427     DebugUtilsMessengerCallbackDataEXT(
21428       VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT                                                  flags_,
21429       const char *                                                                                                   pMessageIdName_,
21430       int32_t                                                                                                        messageIdNumber_,
21431       const char *                                                                                                   pMessage_,
21432       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT> const &          queueLabels_,
21433       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT> const &          cmdBufLabels_ = {},
21434       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT> const & objects_      = {},
21435       const void *                                                                                                   pNext_        = nullptr )
21436       : pNext( pNext_ )
21437       , flags( flags_ )
21438       , pMessageIdName( pMessageIdName_ )
21439       , messageIdNumber( messageIdNumber_ )
21440       , pMessage( pMessage_ )
21441       , queueLabelCount( static_cast<uint32_t>( queueLabels_.size() ) )
21442       , pQueueLabels( queueLabels_.data() )
21443       , cmdBufLabelCount( static_cast<uint32_t>( cmdBufLabels_.size() ) )
21444       , pCmdBufLabels( cmdBufLabels_.data() )
21445       , objectCount( static_cast<uint32_t>( objects_.size() ) )
21446       , pObjects( objects_.data() )
21447     {
21448     }
21449 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21450 
21451     DebugUtilsMessengerCallbackDataEXT & operator=( DebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21452 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21453 
operator =VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21454     DebugUtilsMessengerCallbackDataEXT & operator=( VkDebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21455     {
21456       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT const *>( &rhs );
21457       return *this;
21458     }
21459 
21460 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21461     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
21462     {
21463       pNext = pNext_;
21464       return *this;
21465     }
21466 
21467     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT &
setFlagsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21468       setFlags( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
21469     {
21470       flags = flags_;
21471       return *this;
21472     }
21473 
setPMessageIdNameVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21474     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setPMessageIdName( const char * pMessageIdName_ ) VULKAN_HPP_NOEXCEPT
21475     {
21476       pMessageIdName = pMessageIdName_;
21477       return *this;
21478     }
21479 
setMessageIdNumberVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21480     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setMessageIdNumber( int32_t messageIdNumber_ ) VULKAN_HPP_NOEXCEPT
21481     {
21482       messageIdNumber = messageIdNumber_;
21483       return *this;
21484     }
21485 
setPMessageVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21486     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setPMessage( const char * pMessage_ ) VULKAN_HPP_NOEXCEPT
21487     {
21488       pMessage = pMessage_;
21489       return *this;
21490     }
21491 
setQueueLabelCountVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21492     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setQueueLabelCount( uint32_t queueLabelCount_ ) VULKAN_HPP_NOEXCEPT
21493     {
21494       queueLabelCount = queueLabelCount_;
21495       return *this;
21496     }
21497 
21498     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT &
setPQueueLabelsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21499       setPQueueLabels( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pQueueLabels_ ) VULKAN_HPP_NOEXCEPT
21500     {
21501       pQueueLabels = pQueueLabels_;
21502       return *this;
21503     }
21504 
21505 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
21506     DebugUtilsMessengerCallbackDataEXT &
setQueueLabelsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21507       setQueueLabels( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT> const & queueLabels_ ) VULKAN_HPP_NOEXCEPT
21508     {
21509       queueLabelCount = static_cast<uint32_t>( queueLabels_.size() );
21510       pQueueLabels    = queueLabels_.data();
21511       return *this;
21512     }
21513 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21514 
setCmdBufLabelCountVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21515     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setCmdBufLabelCount( uint32_t cmdBufLabelCount_ ) VULKAN_HPP_NOEXCEPT
21516     {
21517       cmdBufLabelCount = cmdBufLabelCount_;
21518       return *this;
21519     }
21520 
21521     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT &
setPCmdBufLabelsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21522       setPCmdBufLabels( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pCmdBufLabels_ ) VULKAN_HPP_NOEXCEPT
21523     {
21524       pCmdBufLabels = pCmdBufLabels_;
21525       return *this;
21526     }
21527 
21528 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
21529     DebugUtilsMessengerCallbackDataEXT &
setCmdBufLabelsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21530       setCmdBufLabels( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT> const & cmdBufLabels_ ) VULKAN_HPP_NOEXCEPT
21531     {
21532       cmdBufLabelCount = static_cast<uint32_t>( cmdBufLabels_.size() );
21533       pCmdBufLabels    = cmdBufLabels_.data();
21534       return *this;
21535     }
21536 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21537 
setObjectCountVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21538     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setObjectCount( uint32_t objectCount_ ) VULKAN_HPP_NOEXCEPT
21539     {
21540       objectCount = objectCount_;
21541       return *this;
21542     }
21543 
21544     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT &
setPObjectsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21545       setPObjects( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT * pObjects_ ) VULKAN_HPP_NOEXCEPT
21546     {
21547       pObjects = pObjects_;
21548       return *this;
21549     }
21550 
21551 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
21552     DebugUtilsMessengerCallbackDataEXT &
setObjectsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21553       setObjects( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT> const & objects_ ) VULKAN_HPP_NOEXCEPT
21554     {
21555       objectCount = static_cast<uint32_t>( objects_.size() );
21556       pObjects    = objects_.data();
21557       return *this;
21558     }
21559 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21560 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21561 
operator VkDebugUtilsMessengerCallbackDataEXT const&VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21562     operator VkDebugUtilsMessengerCallbackDataEXT const &() const VULKAN_HPP_NOEXCEPT
21563     {
21564       return *reinterpret_cast<const VkDebugUtilsMessengerCallbackDataEXT *>( this );
21565     }
21566 
operator VkDebugUtilsMessengerCallbackDataEXT&VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21567     operator VkDebugUtilsMessengerCallbackDataEXT &() VULKAN_HPP_NOEXCEPT
21568     {
21569       return *reinterpret_cast<VkDebugUtilsMessengerCallbackDataEXT *>( this );
21570     }
21571 
21572 #if defined( VULKAN_HPP_USE_REFLECT )
21573 #  if 14 <= VULKAN_HPP_CPP_VERSION
21574     auto
21575 #  else
21576     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
21577                const void * const &,
21578                VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT const &,
21579                const char * const &,
21580                int32_t const &,
21581                const char * const &,
21582                uint32_t const &,
21583                const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * const &,
21584                uint32_t const &,
21585                const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * const &,
21586                uint32_t const &,
21587                const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT * const &>
21588 #  endif
reflectVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21589       reflect() const VULKAN_HPP_NOEXCEPT
21590     {
21591       return std::tie(
21592         sType, pNext, flags, pMessageIdName, messageIdNumber, pMessage, queueLabelCount, pQueueLabels, cmdBufLabelCount, pCmdBufLabels, objectCount, pObjects );
21593     }
21594 #endif
21595 
21596 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21597     std::strong_ordering operator<=>( DebugUtilsMessengerCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21598     {
21599       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
21600         return cmp;
21601       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
21602         return cmp;
21603       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
21604         return cmp;
21605       if ( pMessageIdName != rhs.pMessageIdName )
21606         if ( auto cmp = strcmp( pMessageIdName, rhs.pMessageIdName ); cmp != 0 )
21607           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
21608       if ( auto cmp = messageIdNumber <=> rhs.messageIdNumber; cmp != 0 )
21609         return cmp;
21610       if ( pMessage != rhs.pMessage )
21611         if ( auto cmp = strcmp( pMessage, rhs.pMessage ); cmp != 0 )
21612           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
21613       if ( auto cmp = queueLabelCount <=> rhs.queueLabelCount; cmp != 0 )
21614         return cmp;
21615       if ( auto cmp = pQueueLabels <=> rhs.pQueueLabels; cmp != 0 )
21616         return cmp;
21617       if ( auto cmp = cmdBufLabelCount <=> rhs.cmdBufLabelCount; cmp != 0 )
21618         return cmp;
21619       if ( auto cmp = pCmdBufLabels <=> rhs.pCmdBufLabels; cmp != 0 )
21620         return cmp;
21621       if ( auto cmp = objectCount <=> rhs.objectCount; cmp != 0 )
21622         return cmp;
21623       if ( auto cmp = pObjects <=> rhs.pObjects; cmp != 0 )
21624         return cmp;
21625 
21626       return std::strong_ordering::equivalent;
21627     }
21628 #endif
21629 
operator ==VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21630     bool operator==( DebugUtilsMessengerCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21631     {
21632       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) &&
21633              ( ( pMessageIdName == rhs.pMessageIdName ) || ( strcmp( pMessageIdName, rhs.pMessageIdName ) == 0 ) ) &&
21634              ( messageIdNumber == rhs.messageIdNumber ) && ( ( pMessage == rhs.pMessage ) || ( strcmp( pMessage, rhs.pMessage ) == 0 ) ) &&
21635              ( queueLabelCount == rhs.queueLabelCount ) && ( pQueueLabels == rhs.pQueueLabels ) && ( cmdBufLabelCount == rhs.cmdBufLabelCount ) &&
21636              ( pCmdBufLabels == rhs.pCmdBufLabels ) && ( objectCount == rhs.objectCount ) && ( pObjects == rhs.pObjects );
21637     }
21638 
operator !=VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT21639     bool operator!=( DebugUtilsMessengerCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21640     {
21641       return !operator==( rhs );
21642     }
21643 
21644   public:
21645     VULKAN_HPP_NAMESPACE::StructureType                           sType            = StructureType::eDebugUtilsMessengerCallbackDataEXT;
21646     const void *                                                  pNext            = {};
21647     VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags            = {};
21648     const char *                                                  pMessageIdName   = {};
21649     int32_t                                                       messageIdNumber  = {};
21650     const char *                                                  pMessage         = {};
21651     uint32_t                                                      queueLabelCount  = {};
21652     const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT *              pQueueLabels     = {};
21653     uint32_t                                                      cmdBufLabelCount = {};
21654     const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT *              pCmdBufLabels    = {};
21655     uint32_t                                                      objectCount      = {};
21656     const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT *     pObjects         = {};
21657   };
21658 
21659   template <>
21660   struct CppType<StructureType, StructureType::eDebugUtilsMessengerCallbackDataEXT>
21661   {
21662     using Type = DebugUtilsMessengerCallbackDataEXT;
21663   };
21664 
21665   struct DebugUtilsMessengerCreateInfoEXT
21666   {
21667     using NativeType = VkDebugUtilsMessengerCreateInfoEXT;
21668 
21669     static const bool                                  allowDuplicate = true;
21670     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugUtilsMessengerCreateInfoEXT;
21671 
21672 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugUtilsMessengerCreateInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21673     VULKAN_HPP_CONSTEXPR DebugUtilsMessengerCreateInfoEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT flags_           = {},
21674                                                            VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT messageSeverity_ = {},
21675                                                            VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT     messageType_     = {},
21676                                                            PFN_vkDebugUtilsMessengerCallbackEXT                    pfnUserCallback_ = {},
21677                                                            void *                                                  pUserData_       = {},
21678                                                            const void *                                            pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
21679       : pNext{ pNext_ }
21680       , flags{ flags_ }
21681       , messageSeverity{ messageSeverity_ }
21682       , messageType{ messageType_ }
21683       , pfnUserCallback{ pfnUserCallback_ }
21684       , pUserData{ pUserData_ }
21685     {
21686     }
21687 
21688     VULKAN_HPP_CONSTEXPR DebugUtilsMessengerCreateInfoEXT( DebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21689 
DebugUtilsMessengerCreateInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21690     DebugUtilsMessengerCreateInfoEXT( VkDebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21691       : DebugUtilsMessengerCreateInfoEXT( *reinterpret_cast<DebugUtilsMessengerCreateInfoEXT const *>( &rhs ) )
21692     {
21693     }
21694 
21695     DebugUtilsMessengerCreateInfoEXT & operator=( DebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21696 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21697 
operator =VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21698     DebugUtilsMessengerCreateInfoEXT & operator=( VkDebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21699     {
21700       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT const *>( &rhs );
21701       return *this;
21702     }
21703 
21704 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21705     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
21706     {
21707       pNext = pNext_;
21708       return *this;
21709     }
21710 
setFlagsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21711     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
21712     {
21713       flags = flags_;
21714       return *this;
21715     }
21716 
21717     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT &
setMessageSeverityVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21718       setMessageSeverity( VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT messageSeverity_ ) VULKAN_HPP_NOEXCEPT
21719     {
21720       messageSeverity = messageSeverity_;
21721       return *this;
21722     }
21723 
21724     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT &
setMessageTypeVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21725       setMessageType( VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageType_ ) VULKAN_HPP_NOEXCEPT
21726     {
21727       messageType = messageType_;
21728       return *this;
21729     }
21730 
setPfnUserCallbackVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21731     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setPfnUserCallback( PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback_ ) VULKAN_HPP_NOEXCEPT
21732     {
21733       pfnUserCallback = pfnUserCallback_;
21734       return *this;
21735     }
21736 
setPUserDataVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21737     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT
21738     {
21739       pUserData = pUserData_;
21740       return *this;
21741     }
21742 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21743 
operator VkDebugUtilsMessengerCreateInfoEXT const&VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21744     operator VkDebugUtilsMessengerCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
21745     {
21746       return *reinterpret_cast<const VkDebugUtilsMessengerCreateInfoEXT *>( this );
21747     }
21748 
operator VkDebugUtilsMessengerCreateInfoEXT&VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21749     operator VkDebugUtilsMessengerCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
21750     {
21751       return *reinterpret_cast<VkDebugUtilsMessengerCreateInfoEXT *>( this );
21752     }
21753 
21754 #if defined( VULKAN_HPP_USE_REFLECT )
21755 #  if 14 <= VULKAN_HPP_CPP_VERSION
21756     auto
21757 #  else
21758     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
21759                const void * const &,
21760                VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT const &,
21761                VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT const &,
21762                VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT const &,
21763                PFN_vkDebugUtilsMessengerCallbackEXT const &,
21764                void * const &>
21765 #  endif
reflectVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21766       reflect() const VULKAN_HPP_NOEXCEPT
21767     {
21768       return std::tie( sType, pNext, flags, messageSeverity, messageType, pfnUserCallback, pUserData );
21769     }
21770 #endif
21771 
operator ==VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21772     bool operator==( DebugUtilsMessengerCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21773     {
21774 #if defined( VULKAN_HPP_USE_REFLECT )
21775       return this->reflect() == rhs.reflect();
21776 #else
21777       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( messageSeverity == rhs.messageSeverity ) &&
21778              ( messageType == rhs.messageType ) && ( pfnUserCallback == rhs.pfnUserCallback ) && ( pUserData == rhs.pUserData );
21779 #endif
21780     }
21781 
operator !=VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT21782     bool operator!=( DebugUtilsMessengerCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21783     {
21784       return !operator==( rhs );
21785     }
21786 
21787   public:
21788     VULKAN_HPP_NAMESPACE::StructureType                     sType           = StructureType::eDebugUtilsMessengerCreateInfoEXT;
21789     const void *                                            pNext           = {};
21790     VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT flags           = {};
21791     VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT messageSeverity = {};
21792     VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT     messageType     = {};
21793     PFN_vkDebugUtilsMessengerCallbackEXT                    pfnUserCallback = {};
21794     void *                                                  pUserData       = {};
21795   };
21796 
21797   template <>
21798   struct CppType<StructureType, StructureType::eDebugUtilsMessengerCreateInfoEXT>
21799   {
21800     using Type = DebugUtilsMessengerCreateInfoEXT;
21801   };
21802 
21803   struct DebugUtilsObjectTagInfoEXT
21804   {
21805     using NativeType = VkDebugUtilsObjectTagInfoEXT;
21806 
21807     static const bool                                  allowDuplicate = false;
21808     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDebugUtilsObjectTagInfoEXT;
21809 
21810 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugUtilsObjectTagInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT21811     VULKAN_HPP_CONSTEXPR DebugUtilsObjectTagInfoEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType_   = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown,
21812                                                      uint64_t                         objectHandle_ = {},
21813                                                      uint64_t                         tagName_      = {},
21814                                                      size_t                           tagSize_      = {},
21815                                                      const void *                     pTag_         = {},
21816                                                      const void *                     pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
21817       : pNext{ pNext_ }
21818       , objectType{ objectType_ }
21819       , objectHandle{ objectHandle_ }
21820       , tagName{ tagName_ }
21821       , tagSize{ tagSize_ }
21822       , pTag{ pTag_ }
21823     {
21824     }
21825 
21826     VULKAN_HPP_CONSTEXPR DebugUtilsObjectTagInfoEXT( DebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21827 
DebugUtilsObjectTagInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT21828     DebugUtilsObjectTagInfoEXT( VkDebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21829       : DebugUtilsObjectTagInfoEXT( *reinterpret_cast<DebugUtilsObjectTagInfoEXT const *>( &rhs ) )
21830     {
21831     }
21832 
21833 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
21834     template <typename T>
DebugUtilsObjectTagInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT21835     DebugUtilsObjectTagInfoEXT( VULKAN_HPP_NAMESPACE::ObjectType                               objectType_,
21836                                 uint64_t                                                       objectHandle_,
21837                                 uint64_t                                                       tagName_,
21838                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & tag_,
21839                                 const void *                                                   pNext_ = nullptr )
21840       : pNext( pNext_ )
21841       , objectType( objectType_ )
21842       , objectHandle( objectHandle_ )
21843       , tagName( tagName_ )
21844       , tagSize( tag_.size() * sizeof( T ) )
21845       , pTag( tag_.data() )
21846     {
21847     }
21848 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21849 
21850     DebugUtilsObjectTagInfoEXT & operator=( DebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21851 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21852 
operator =VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT21853     DebugUtilsObjectTagInfoEXT & operator=( VkDebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21854     {
21855       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT const *>( &rhs );
21856       return *this;
21857     }
21858 
21859 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT21860     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
21861     {
21862       pNext = pNext_;
21863       return *this;
21864     }
21865 
setObjectTypeVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT21866     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setObjectType( VULKAN_HPP_NAMESPACE::ObjectType objectType_ ) VULKAN_HPP_NOEXCEPT
21867     {
21868       objectType = objectType_;
21869       return *this;
21870     }
21871 
setObjectHandleVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT21872     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setObjectHandle( uint64_t objectHandle_ ) VULKAN_HPP_NOEXCEPT
21873     {
21874       objectHandle = objectHandle_;
21875       return *this;
21876     }
21877 
setTagNameVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT21878     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setTagName( uint64_t tagName_ ) VULKAN_HPP_NOEXCEPT
21879     {
21880       tagName = tagName_;
21881       return *this;
21882     }
21883 
setTagSizeVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT21884     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setTagSize( size_t tagSize_ ) VULKAN_HPP_NOEXCEPT
21885     {
21886       tagSize = tagSize_;
21887       return *this;
21888     }
21889 
setPTagVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT21890     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setPTag( const void * pTag_ ) VULKAN_HPP_NOEXCEPT
21891     {
21892       pTag = pTag_;
21893       return *this;
21894     }
21895 
21896 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
21897     template <typename T>
setTagVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT21898     DebugUtilsObjectTagInfoEXT & setTag( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & tag_ ) VULKAN_HPP_NOEXCEPT
21899     {
21900       tagSize = tag_.size() * sizeof( T );
21901       pTag    = tag_.data();
21902       return *this;
21903     }
21904 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21905 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21906 
operator VkDebugUtilsObjectTagInfoEXT const&VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT21907     operator VkDebugUtilsObjectTagInfoEXT const &() const VULKAN_HPP_NOEXCEPT
21908     {
21909       return *reinterpret_cast<const VkDebugUtilsObjectTagInfoEXT *>( this );
21910     }
21911 
operator VkDebugUtilsObjectTagInfoEXT&VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT21912     operator VkDebugUtilsObjectTagInfoEXT &() VULKAN_HPP_NOEXCEPT
21913     {
21914       return *reinterpret_cast<VkDebugUtilsObjectTagInfoEXT *>( this );
21915     }
21916 
21917 #if defined( VULKAN_HPP_USE_REFLECT )
21918 #  if 14 <= VULKAN_HPP_CPP_VERSION
21919     auto
21920 #  else
21921     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
21922                const void * const &,
21923                VULKAN_HPP_NAMESPACE::ObjectType const &,
21924                uint64_t const &,
21925                uint64_t const &,
21926                size_t const &,
21927                const void * const &>
21928 #  endif
reflectVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT21929       reflect() const VULKAN_HPP_NOEXCEPT
21930     {
21931       return std::tie( sType, pNext, objectType, objectHandle, tagName, tagSize, pTag );
21932     }
21933 #endif
21934 
21935 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
21936     auto operator<=>( DebugUtilsObjectTagInfoEXT const & ) const = default;
21937 #else
operator ==VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT21938     bool operator==( DebugUtilsObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21939     {
21940 #  if defined( VULKAN_HPP_USE_REFLECT )
21941       return this->reflect() == rhs.reflect();
21942 #  else
21943       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( objectType == rhs.objectType ) && ( objectHandle == rhs.objectHandle ) &&
21944              ( tagName == rhs.tagName ) && ( tagSize == rhs.tagSize ) && ( pTag == rhs.pTag );
21945 #  endif
21946     }
21947 
operator !=VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT21948     bool operator!=( DebugUtilsObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21949     {
21950       return !operator==( rhs );
21951     }
21952 #endif
21953 
21954   public:
21955     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eDebugUtilsObjectTagInfoEXT;
21956     const void *                        pNext        = {};
21957     VULKAN_HPP_NAMESPACE::ObjectType    objectType   = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown;
21958     uint64_t                            objectHandle = {};
21959     uint64_t                            tagName      = {};
21960     size_t                              tagSize      = {};
21961     const void *                        pTag         = {};
21962   };
21963 
21964   template <>
21965   struct CppType<StructureType, StructureType::eDebugUtilsObjectTagInfoEXT>
21966   {
21967     using Type = DebugUtilsObjectTagInfoEXT;
21968   };
21969 
21970   struct DecompressMemoryRegionNV
21971   {
21972     using NativeType = VkDecompressMemoryRegionNV;
21973 
21974 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DecompressMemoryRegionNVVULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV21975     VULKAN_HPP_CONSTEXPR DecompressMemoryRegionNV( VULKAN_HPP_NAMESPACE::DeviceAddress                    srcAddress_          = {},
21976                                                    VULKAN_HPP_NAMESPACE::DeviceAddress                    dstAddress_          = {},
21977                                                    VULKAN_HPP_NAMESPACE::DeviceSize                       compressedSize_      = {},
21978                                                    VULKAN_HPP_NAMESPACE::DeviceSize                       decompressedSize_    = {},
21979                                                    VULKAN_HPP_NAMESPACE::MemoryDecompressionMethodFlagsNV decompressionMethod_ = {} ) VULKAN_HPP_NOEXCEPT
21980       : srcAddress{ srcAddress_ }
21981       , dstAddress{ dstAddress_ }
21982       , compressedSize{ compressedSize_ }
21983       , decompressedSize{ decompressedSize_ }
21984       , decompressionMethod{ decompressionMethod_ }
21985     {
21986     }
21987 
21988     VULKAN_HPP_CONSTEXPR DecompressMemoryRegionNV( DecompressMemoryRegionNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21989 
DecompressMemoryRegionNVVULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV21990     DecompressMemoryRegionNV( VkDecompressMemoryRegionNV const & rhs ) VULKAN_HPP_NOEXCEPT
21991       : DecompressMemoryRegionNV( *reinterpret_cast<DecompressMemoryRegionNV const *>( &rhs ) )
21992     {
21993     }
21994 
21995     DecompressMemoryRegionNV & operator=( DecompressMemoryRegionNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21996 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21997 
operator =VULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV21998     DecompressMemoryRegionNV & operator=( VkDecompressMemoryRegionNV const & rhs ) VULKAN_HPP_NOEXCEPT
21999     {
22000       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV const *>( &rhs );
22001       return *this;
22002     }
22003 
22004 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcAddressVULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22005     VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionNV & setSrcAddress( VULKAN_HPP_NAMESPACE::DeviceAddress srcAddress_ ) VULKAN_HPP_NOEXCEPT
22006     {
22007       srcAddress = srcAddress_;
22008       return *this;
22009     }
22010 
setDstAddressVULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22011     VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionNV & setDstAddress( VULKAN_HPP_NAMESPACE::DeviceAddress dstAddress_ ) VULKAN_HPP_NOEXCEPT
22012     {
22013       dstAddress = dstAddress_;
22014       return *this;
22015     }
22016 
setCompressedSizeVULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22017     VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionNV & setCompressedSize( VULKAN_HPP_NAMESPACE::DeviceSize compressedSize_ ) VULKAN_HPP_NOEXCEPT
22018     {
22019       compressedSize = compressedSize_;
22020       return *this;
22021     }
22022 
setDecompressedSizeVULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22023     VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionNV & setDecompressedSize( VULKAN_HPP_NAMESPACE::DeviceSize decompressedSize_ ) VULKAN_HPP_NOEXCEPT
22024     {
22025       decompressedSize = decompressedSize_;
22026       return *this;
22027     }
22028 
22029     VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionNV &
setDecompressionMethodVULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22030       setDecompressionMethod( VULKAN_HPP_NAMESPACE::MemoryDecompressionMethodFlagsNV decompressionMethod_ ) VULKAN_HPP_NOEXCEPT
22031     {
22032       decompressionMethod = decompressionMethod_;
22033       return *this;
22034     }
22035 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22036 
operator VkDecompressMemoryRegionNV const&VULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22037     operator VkDecompressMemoryRegionNV const &() const VULKAN_HPP_NOEXCEPT
22038     {
22039       return *reinterpret_cast<const VkDecompressMemoryRegionNV *>( this );
22040     }
22041 
operator VkDecompressMemoryRegionNV&VULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22042     operator VkDecompressMemoryRegionNV &() VULKAN_HPP_NOEXCEPT
22043     {
22044       return *reinterpret_cast<VkDecompressMemoryRegionNV *>( this );
22045     }
22046 
22047 #if defined( VULKAN_HPP_USE_REFLECT )
22048 #  if 14 <= VULKAN_HPP_CPP_VERSION
22049     auto
22050 #  else
22051     std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &,
22052                VULKAN_HPP_NAMESPACE::DeviceAddress const &,
22053                VULKAN_HPP_NAMESPACE::DeviceSize const &,
22054                VULKAN_HPP_NAMESPACE::DeviceSize const &,
22055                VULKAN_HPP_NAMESPACE::MemoryDecompressionMethodFlagsNV const &>
22056 #  endif
reflectVULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22057       reflect() const VULKAN_HPP_NOEXCEPT
22058     {
22059       return std::tie( srcAddress, dstAddress, compressedSize, decompressedSize, decompressionMethod );
22060     }
22061 #endif
22062 
22063 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22064     auto operator<=>( DecompressMemoryRegionNV const & ) const = default;
22065 #else
operator ==VULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22066     bool operator==( DecompressMemoryRegionNV const & rhs ) const VULKAN_HPP_NOEXCEPT
22067     {
22068 #  if defined( VULKAN_HPP_USE_REFLECT )
22069       return this->reflect() == rhs.reflect();
22070 #  else
22071       return ( srcAddress == rhs.srcAddress ) && ( dstAddress == rhs.dstAddress ) && ( compressedSize == rhs.compressedSize ) &&
22072              ( decompressedSize == rhs.decompressedSize ) && ( decompressionMethod == rhs.decompressionMethod );
22073 #  endif
22074     }
22075 
operator !=VULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV22076     bool operator!=( DecompressMemoryRegionNV const & rhs ) const VULKAN_HPP_NOEXCEPT
22077     {
22078       return !operator==( rhs );
22079     }
22080 #endif
22081 
22082   public:
22083     VULKAN_HPP_NAMESPACE::DeviceAddress                    srcAddress          = {};
22084     VULKAN_HPP_NAMESPACE::DeviceAddress                    dstAddress          = {};
22085     VULKAN_HPP_NAMESPACE::DeviceSize                       compressedSize      = {};
22086     VULKAN_HPP_NAMESPACE::DeviceSize                       decompressedSize    = {};
22087     VULKAN_HPP_NAMESPACE::MemoryDecompressionMethodFlagsNV decompressionMethod = {};
22088   };
22089 
22090   struct DedicatedAllocationBufferCreateInfoNV
22091   {
22092     using NativeType = VkDedicatedAllocationBufferCreateInfoNV;
22093 
22094     static const bool                                  allowDuplicate = false;
22095     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDedicatedAllocationBufferCreateInfoNV;
22096 
22097 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DedicatedAllocationBufferCreateInfoNVVULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV22098     VULKAN_HPP_CONSTEXPR DedicatedAllocationBufferCreateInfoNV( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation_ = {},
22099                                                                 const void *                 pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
22100       : pNext{ pNext_ }
22101       , dedicatedAllocation{ dedicatedAllocation_ }
22102     {
22103     }
22104 
22105     VULKAN_HPP_CONSTEXPR DedicatedAllocationBufferCreateInfoNV( DedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22106 
DedicatedAllocationBufferCreateInfoNVVULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV22107     DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
22108       : DedicatedAllocationBufferCreateInfoNV( *reinterpret_cast<DedicatedAllocationBufferCreateInfoNV const *>( &rhs ) )
22109     {
22110     }
22111 
22112     DedicatedAllocationBufferCreateInfoNV & operator=( DedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22113 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22114 
operator =VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV22115     DedicatedAllocationBufferCreateInfoNV & operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
22116     {
22117       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV const *>( &rhs );
22118       return *this;
22119     }
22120 
22121 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV22122     VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationBufferCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22123     {
22124       pNext = pNext_;
22125       return *this;
22126     }
22127 
22128     VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationBufferCreateInfoNV &
setDedicatedAllocationVULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV22129       setDedicatedAllocation( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation_ ) VULKAN_HPP_NOEXCEPT
22130     {
22131       dedicatedAllocation = dedicatedAllocation_;
22132       return *this;
22133     }
22134 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22135 
operator VkDedicatedAllocationBufferCreateInfoNV const&VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV22136     operator VkDedicatedAllocationBufferCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
22137     {
22138       return *reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV *>( this );
22139     }
22140 
operator VkDedicatedAllocationBufferCreateInfoNV&VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV22141     operator VkDedicatedAllocationBufferCreateInfoNV &() VULKAN_HPP_NOEXCEPT
22142     {
22143       return *reinterpret_cast<VkDedicatedAllocationBufferCreateInfoNV *>( this );
22144     }
22145 
22146 #if defined( VULKAN_HPP_USE_REFLECT )
22147 #  if 14 <= VULKAN_HPP_CPP_VERSION
22148     auto
22149 #  else
22150     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
22151 #  endif
reflectVULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV22152       reflect() const VULKAN_HPP_NOEXCEPT
22153     {
22154       return std::tie( sType, pNext, dedicatedAllocation );
22155     }
22156 #endif
22157 
22158 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22159     auto operator<=>( DedicatedAllocationBufferCreateInfoNV const & ) const = default;
22160 #else
operator ==VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV22161     bool operator==( DedicatedAllocationBufferCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
22162     {
22163 #  if defined( VULKAN_HPP_USE_REFLECT )
22164       return this->reflect() == rhs.reflect();
22165 #  else
22166       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dedicatedAllocation == rhs.dedicatedAllocation );
22167 #  endif
22168     }
22169 
operator !=VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV22170     bool operator!=( DedicatedAllocationBufferCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
22171     {
22172       return !operator==( rhs );
22173     }
22174 #endif
22175 
22176   public:
22177     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::eDedicatedAllocationBufferCreateInfoNV;
22178     const void *                        pNext               = {};
22179     VULKAN_HPP_NAMESPACE::Bool32        dedicatedAllocation = {};
22180   };
22181 
22182   template <>
22183   struct CppType<StructureType, StructureType::eDedicatedAllocationBufferCreateInfoNV>
22184   {
22185     using Type = DedicatedAllocationBufferCreateInfoNV;
22186   };
22187 
22188   struct DedicatedAllocationImageCreateInfoNV
22189   {
22190     using NativeType = VkDedicatedAllocationImageCreateInfoNV;
22191 
22192     static const bool                                  allowDuplicate = false;
22193     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDedicatedAllocationImageCreateInfoNV;
22194 
22195 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DedicatedAllocationImageCreateInfoNVVULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV22196     VULKAN_HPP_CONSTEXPR DedicatedAllocationImageCreateInfoNV( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation_ = {},
22197                                                                const void *                 pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
22198       : pNext{ pNext_ }
22199       , dedicatedAllocation{ dedicatedAllocation_ }
22200     {
22201     }
22202 
22203     VULKAN_HPP_CONSTEXPR DedicatedAllocationImageCreateInfoNV( DedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22204 
DedicatedAllocationImageCreateInfoNVVULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV22205     DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
22206       : DedicatedAllocationImageCreateInfoNV( *reinterpret_cast<DedicatedAllocationImageCreateInfoNV const *>( &rhs ) )
22207     {
22208     }
22209 
22210     DedicatedAllocationImageCreateInfoNV & operator=( DedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22211 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22212 
operator =VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV22213     DedicatedAllocationImageCreateInfoNV & operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
22214     {
22215       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV const *>( &rhs );
22216       return *this;
22217     }
22218 
22219 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV22220     VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationImageCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22221     {
22222       pNext = pNext_;
22223       return *this;
22224     }
22225 
22226     VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationImageCreateInfoNV &
setDedicatedAllocationVULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV22227       setDedicatedAllocation( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation_ ) VULKAN_HPP_NOEXCEPT
22228     {
22229       dedicatedAllocation = dedicatedAllocation_;
22230       return *this;
22231     }
22232 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22233 
operator VkDedicatedAllocationImageCreateInfoNV const&VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV22234     operator VkDedicatedAllocationImageCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
22235     {
22236       return *reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV *>( this );
22237     }
22238 
operator VkDedicatedAllocationImageCreateInfoNV&VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV22239     operator VkDedicatedAllocationImageCreateInfoNV &() VULKAN_HPP_NOEXCEPT
22240     {
22241       return *reinterpret_cast<VkDedicatedAllocationImageCreateInfoNV *>( this );
22242     }
22243 
22244 #if defined( VULKAN_HPP_USE_REFLECT )
22245 #  if 14 <= VULKAN_HPP_CPP_VERSION
22246     auto
22247 #  else
22248     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
22249 #  endif
reflectVULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV22250       reflect() const VULKAN_HPP_NOEXCEPT
22251     {
22252       return std::tie( sType, pNext, dedicatedAllocation );
22253     }
22254 #endif
22255 
22256 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22257     auto operator<=>( DedicatedAllocationImageCreateInfoNV const & ) const = default;
22258 #else
operator ==VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV22259     bool operator==( DedicatedAllocationImageCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
22260     {
22261 #  if defined( VULKAN_HPP_USE_REFLECT )
22262       return this->reflect() == rhs.reflect();
22263 #  else
22264       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dedicatedAllocation == rhs.dedicatedAllocation );
22265 #  endif
22266     }
22267 
operator !=VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV22268     bool operator!=( DedicatedAllocationImageCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
22269     {
22270       return !operator==( rhs );
22271     }
22272 #endif
22273 
22274   public:
22275     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::eDedicatedAllocationImageCreateInfoNV;
22276     const void *                        pNext               = {};
22277     VULKAN_HPP_NAMESPACE::Bool32        dedicatedAllocation = {};
22278   };
22279 
22280   template <>
22281   struct CppType<StructureType, StructureType::eDedicatedAllocationImageCreateInfoNV>
22282   {
22283     using Type = DedicatedAllocationImageCreateInfoNV;
22284   };
22285 
22286   struct DedicatedAllocationMemoryAllocateInfoNV
22287   {
22288     using NativeType = VkDedicatedAllocationMemoryAllocateInfoNV;
22289 
22290     static const bool                                  allowDuplicate = false;
22291     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDedicatedAllocationMemoryAllocateInfoNV;
22292 
22293 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DedicatedAllocationMemoryAllocateInfoNVVULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22294     VULKAN_HPP_CONSTEXPR DedicatedAllocationMemoryAllocateInfoNV( VULKAN_HPP_NAMESPACE::Image  image_  = {},
22295                                                                   VULKAN_HPP_NAMESPACE::Buffer buffer_ = {},
22296                                                                   const void *                 pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
22297       : pNext{ pNext_ }
22298       , image{ image_ }
22299       , buffer{ buffer_ }
22300     {
22301     }
22302 
22303     VULKAN_HPP_CONSTEXPR DedicatedAllocationMemoryAllocateInfoNV( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22304 
DedicatedAllocationMemoryAllocateInfoNVVULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22305     DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
22306       : DedicatedAllocationMemoryAllocateInfoNV( *reinterpret_cast<DedicatedAllocationMemoryAllocateInfoNV const *>( &rhs ) )
22307     {
22308     }
22309 
22310     DedicatedAllocationMemoryAllocateInfoNV & operator=( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22311 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22312 
operator =VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22313     DedicatedAllocationMemoryAllocateInfoNV & operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
22314     {
22315       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV const *>( &rhs );
22316       return *this;
22317     }
22318 
22319 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22320     VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationMemoryAllocateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22321     {
22322       pNext = pNext_;
22323       return *this;
22324     }
22325 
setImageVULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22326     VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationMemoryAllocateInfoNV & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
22327     {
22328       image = image_;
22329       return *this;
22330     }
22331 
setBufferVULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22332     VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationMemoryAllocateInfoNV & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
22333     {
22334       buffer = buffer_;
22335       return *this;
22336     }
22337 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22338 
operator VkDedicatedAllocationMemoryAllocateInfoNV const&VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22339     operator VkDedicatedAllocationMemoryAllocateInfoNV const &() const VULKAN_HPP_NOEXCEPT
22340     {
22341       return *reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV *>( this );
22342     }
22343 
operator VkDedicatedAllocationMemoryAllocateInfoNV&VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22344     operator VkDedicatedAllocationMemoryAllocateInfoNV &() VULKAN_HPP_NOEXCEPT
22345     {
22346       return *reinterpret_cast<VkDedicatedAllocationMemoryAllocateInfoNV *>( this );
22347     }
22348 
22349 #if defined( VULKAN_HPP_USE_REFLECT )
22350 #  if 14 <= VULKAN_HPP_CPP_VERSION
22351     auto
22352 #  else
22353     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Image const &, VULKAN_HPP_NAMESPACE::Buffer const &>
22354 #  endif
reflectVULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22355       reflect() const VULKAN_HPP_NOEXCEPT
22356     {
22357       return std::tie( sType, pNext, image, buffer );
22358     }
22359 #endif
22360 
22361 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22362     auto operator<=>( DedicatedAllocationMemoryAllocateInfoNV const & ) const = default;
22363 #else
operator ==VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22364     bool operator==( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
22365     {
22366 #  if defined( VULKAN_HPP_USE_REFLECT )
22367       return this->reflect() == rhs.reflect();
22368 #  else
22369       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( buffer == rhs.buffer );
22370 #  endif
22371     }
22372 
operator !=VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV22373     bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
22374     {
22375       return !operator==( rhs );
22376     }
22377 #endif
22378 
22379   public:
22380     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eDedicatedAllocationMemoryAllocateInfoNV;
22381     const void *                        pNext  = {};
22382     VULKAN_HPP_NAMESPACE::Image         image  = {};
22383     VULKAN_HPP_NAMESPACE::Buffer        buffer = {};
22384   };
22385 
22386   template <>
22387   struct CppType<StructureType, StructureType::eDedicatedAllocationMemoryAllocateInfoNV>
22388   {
22389     using Type = DedicatedAllocationMemoryAllocateInfoNV;
22390   };
22391 
22392   struct MemoryBarrier2
22393   {
22394     using NativeType = VkMemoryBarrier2;
22395 
22396     static const bool                                  allowDuplicate = false;
22397     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryBarrier2;
22398 
22399 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryBarrier2VULKAN_HPP_NAMESPACE::MemoryBarrier222400     VULKAN_HPP_CONSTEXPR MemoryBarrier2( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_  = {},
22401                                          VULKAN_HPP_NAMESPACE::AccessFlags2        srcAccessMask_ = {},
22402                                          VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_  = {},
22403                                          VULKAN_HPP_NAMESPACE::AccessFlags2        dstAccessMask_ = {},
22404                                          const void *                              pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
22405       : pNext{ pNext_ }
22406       , srcStageMask{ srcStageMask_ }
22407       , srcAccessMask{ srcAccessMask_ }
22408       , dstStageMask{ dstStageMask_ }
22409       , dstAccessMask{ dstAccessMask_ }
22410     {
22411     }
22412 
22413     VULKAN_HPP_CONSTEXPR MemoryBarrier2( MemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22414 
MemoryBarrier2VULKAN_HPP_NAMESPACE::MemoryBarrier222415     MemoryBarrier2( VkMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryBarrier2( *reinterpret_cast<MemoryBarrier2 const *>( &rhs ) ) {}
22416 
22417     MemoryBarrier2 & operator=( MemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22418 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22419 
operator =VULKAN_HPP_NAMESPACE::MemoryBarrier222420     MemoryBarrier2 & operator=( VkMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT
22421     {
22422       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryBarrier2 const *>( &rhs );
22423       return *this;
22424     }
22425 
22426 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryBarrier222427     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22428     {
22429       pNext = pNext_;
22430       return *this;
22431     }
22432 
setSrcStageMaskVULKAN_HPP_NAMESPACE::MemoryBarrier222433     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_ ) VULKAN_HPP_NOEXCEPT
22434     {
22435       srcStageMask = srcStageMask_;
22436       return *this;
22437     }
22438 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::MemoryBarrier222439     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
22440     {
22441       srcAccessMask = srcAccessMask_;
22442       return *this;
22443     }
22444 
setDstStageMaskVULKAN_HPP_NAMESPACE::MemoryBarrier222445     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_ ) VULKAN_HPP_NOEXCEPT
22446     {
22447       dstStageMask = dstStageMask_;
22448       return *this;
22449     }
22450 
setDstAccessMaskVULKAN_HPP_NAMESPACE::MemoryBarrier222451     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
22452     {
22453       dstAccessMask = dstAccessMask_;
22454       return *this;
22455     }
22456 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22457 
operator VkMemoryBarrier2 const&VULKAN_HPP_NAMESPACE::MemoryBarrier222458     operator VkMemoryBarrier2 const &() const VULKAN_HPP_NOEXCEPT
22459     {
22460       return *reinterpret_cast<const VkMemoryBarrier2 *>( this );
22461     }
22462 
operator VkMemoryBarrier2&VULKAN_HPP_NAMESPACE::MemoryBarrier222463     operator VkMemoryBarrier2 &() VULKAN_HPP_NOEXCEPT
22464     {
22465       return *reinterpret_cast<VkMemoryBarrier2 *>( this );
22466     }
22467 
22468 #if defined( VULKAN_HPP_USE_REFLECT )
22469 #  if 14 <= VULKAN_HPP_CPP_VERSION
22470     auto
22471 #  else
22472     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
22473                const void * const &,
22474                VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &,
22475                VULKAN_HPP_NAMESPACE::AccessFlags2 const &,
22476                VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &,
22477                VULKAN_HPP_NAMESPACE::AccessFlags2 const &>
22478 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryBarrier222479       reflect() const VULKAN_HPP_NOEXCEPT
22480     {
22481       return std::tie( sType, pNext, srcStageMask, srcAccessMask, dstStageMask, dstAccessMask );
22482     }
22483 #endif
22484 
22485 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22486     auto operator<=>( MemoryBarrier2 const & ) const = default;
22487 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryBarrier222488     bool operator==( MemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT
22489     {
22490 #  if defined( VULKAN_HPP_USE_REFLECT )
22491       return this->reflect() == rhs.reflect();
22492 #  else
22493       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcStageMask == rhs.srcStageMask ) && ( srcAccessMask == rhs.srcAccessMask ) &&
22494              ( dstStageMask == rhs.dstStageMask ) && ( dstAccessMask == rhs.dstAccessMask );
22495 #  endif
22496     }
22497 
operator !=VULKAN_HPP_NAMESPACE::MemoryBarrier222498     bool operator!=( MemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT
22499     {
22500       return !operator==( rhs );
22501     }
22502 #endif
22503 
22504   public:
22505     VULKAN_HPP_NAMESPACE::StructureType       sType         = StructureType::eMemoryBarrier2;
22506     const void *                              pNext         = {};
22507     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask  = {};
22508     VULKAN_HPP_NAMESPACE::AccessFlags2        srcAccessMask = {};
22509     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask  = {};
22510     VULKAN_HPP_NAMESPACE::AccessFlags2        dstAccessMask = {};
22511   };
22512 
22513   template <>
22514   struct CppType<StructureType, StructureType::eMemoryBarrier2>
22515   {
22516     using Type = MemoryBarrier2;
22517   };
22518 
22519   using MemoryBarrier2KHR = MemoryBarrier2;
22520 
22521   struct ImageSubresourceRange
22522   {
22523     using NativeType = VkImageSubresourceRange;
22524 
22525 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageSubresourceRangeVULKAN_HPP_NAMESPACE::ImageSubresourceRange22526     VULKAN_HPP_CONSTEXPR ImageSubresourceRange( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_     = {},
22527                                                 uint32_t                               baseMipLevel_   = {},
22528                                                 uint32_t                               levelCount_     = {},
22529                                                 uint32_t                               baseArrayLayer_ = {},
22530                                                 uint32_t                               layerCount_     = {} ) VULKAN_HPP_NOEXCEPT
22531       : aspectMask{ aspectMask_ }
22532       , baseMipLevel{ baseMipLevel_ }
22533       , levelCount{ levelCount_ }
22534       , baseArrayLayer{ baseArrayLayer_ }
22535       , layerCount{ layerCount_ }
22536     {
22537     }
22538 
22539     VULKAN_HPP_CONSTEXPR ImageSubresourceRange( ImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22540 
ImageSubresourceRangeVULKAN_HPP_NAMESPACE::ImageSubresourceRange22541     ImageSubresourceRange( VkImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT
22542       : ImageSubresourceRange( *reinterpret_cast<ImageSubresourceRange const *>( &rhs ) )
22543     {
22544     }
22545 
22546     ImageSubresourceRange & operator=( ImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22547 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22548 
operator =VULKAN_HPP_NAMESPACE::ImageSubresourceRange22549     ImageSubresourceRange & operator=( VkImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT
22550     {
22551       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSubresourceRange const *>( &rhs );
22552       return *this;
22553     }
22554 
22555 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAspectMaskVULKAN_HPP_NAMESPACE::ImageSubresourceRange22556     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
22557     {
22558       aspectMask = aspectMask_;
22559       return *this;
22560     }
22561 
setBaseMipLevelVULKAN_HPP_NAMESPACE::ImageSubresourceRange22562     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setBaseMipLevel( uint32_t baseMipLevel_ ) VULKAN_HPP_NOEXCEPT
22563     {
22564       baseMipLevel = baseMipLevel_;
22565       return *this;
22566     }
22567 
setLevelCountVULKAN_HPP_NAMESPACE::ImageSubresourceRange22568     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setLevelCount( uint32_t levelCount_ ) VULKAN_HPP_NOEXCEPT
22569     {
22570       levelCount = levelCount_;
22571       return *this;
22572     }
22573 
setBaseArrayLayerVULKAN_HPP_NAMESPACE::ImageSubresourceRange22574     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT
22575     {
22576       baseArrayLayer = baseArrayLayer_;
22577       return *this;
22578     }
22579 
setLayerCountVULKAN_HPP_NAMESPACE::ImageSubresourceRange22580     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
22581     {
22582       layerCount = layerCount_;
22583       return *this;
22584     }
22585 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22586 
operator VkImageSubresourceRange const&VULKAN_HPP_NAMESPACE::ImageSubresourceRange22587     operator VkImageSubresourceRange const &() const VULKAN_HPP_NOEXCEPT
22588     {
22589       return *reinterpret_cast<const VkImageSubresourceRange *>( this );
22590     }
22591 
operator VkImageSubresourceRange&VULKAN_HPP_NAMESPACE::ImageSubresourceRange22592     operator VkImageSubresourceRange &() VULKAN_HPP_NOEXCEPT
22593     {
22594       return *reinterpret_cast<VkImageSubresourceRange *>( this );
22595     }
22596 
22597 #if defined( VULKAN_HPP_USE_REFLECT )
22598 #  if 14 <= VULKAN_HPP_CPP_VERSION
22599     auto
22600 #  else
22601     std::tuple<VULKAN_HPP_NAMESPACE::ImageAspectFlags const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &>
22602 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageSubresourceRange22603       reflect() const VULKAN_HPP_NOEXCEPT
22604     {
22605       return std::tie( aspectMask, baseMipLevel, levelCount, baseArrayLayer, layerCount );
22606     }
22607 #endif
22608 
22609 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22610     auto operator<=>( ImageSubresourceRange const & ) const = default;
22611 #else
operator ==VULKAN_HPP_NAMESPACE::ImageSubresourceRange22612     bool operator==( ImageSubresourceRange const & rhs ) const VULKAN_HPP_NOEXCEPT
22613     {
22614 #  if defined( VULKAN_HPP_USE_REFLECT )
22615       return this->reflect() == rhs.reflect();
22616 #  else
22617       return ( aspectMask == rhs.aspectMask ) && ( baseMipLevel == rhs.baseMipLevel ) && ( levelCount == rhs.levelCount ) &&
22618              ( baseArrayLayer == rhs.baseArrayLayer ) && ( layerCount == rhs.layerCount );
22619 #  endif
22620     }
22621 
operator !=VULKAN_HPP_NAMESPACE::ImageSubresourceRange22622     bool operator!=( ImageSubresourceRange const & rhs ) const VULKAN_HPP_NOEXCEPT
22623     {
22624       return !operator==( rhs );
22625     }
22626 #endif
22627 
22628   public:
22629     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask     = {};
22630     uint32_t                               baseMipLevel   = {};
22631     uint32_t                               levelCount     = {};
22632     uint32_t                               baseArrayLayer = {};
22633     uint32_t                               layerCount     = {};
22634   };
22635 
22636   struct ImageMemoryBarrier2
22637   {
22638     using NativeType = VkImageMemoryBarrier2;
22639 
22640     static const bool                                  allowDuplicate = false;
22641     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageMemoryBarrier2;
22642 
22643 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageMemoryBarrier2VULKAN_HPP_NAMESPACE::ImageMemoryBarrier222644     VULKAN_HPP_CONSTEXPR ImageMemoryBarrier2( VULKAN_HPP_NAMESPACE::PipelineStageFlags2   srcStageMask_        = {},
22645                                               VULKAN_HPP_NAMESPACE::AccessFlags2          srcAccessMask_       = {},
22646                                               VULKAN_HPP_NAMESPACE::PipelineStageFlags2   dstStageMask_        = {},
22647                                               VULKAN_HPP_NAMESPACE::AccessFlags2          dstAccessMask_       = {},
22648                                               VULKAN_HPP_NAMESPACE::ImageLayout           oldLayout_           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
22649                                               VULKAN_HPP_NAMESPACE::ImageLayout           newLayout_           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
22650                                               uint32_t                                    srcQueueFamilyIndex_ = {},
22651                                               uint32_t                                    dstQueueFamilyIndex_ = {},
22652                                               VULKAN_HPP_NAMESPACE::Image                 image_               = {},
22653                                               VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange_    = {},
22654                                               const void *                                pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
22655       : pNext{ pNext_ }
22656       , srcStageMask{ srcStageMask_ }
22657       , srcAccessMask{ srcAccessMask_ }
22658       , dstStageMask{ dstStageMask_ }
22659       , dstAccessMask{ dstAccessMask_ }
22660       , oldLayout{ oldLayout_ }
22661       , newLayout{ newLayout_ }
22662       , srcQueueFamilyIndex{ srcQueueFamilyIndex_ }
22663       , dstQueueFamilyIndex{ dstQueueFamilyIndex_ }
22664       , image{ image_ }
22665       , subresourceRange{ subresourceRange_ }
22666     {
22667     }
22668 
22669     VULKAN_HPP_CONSTEXPR ImageMemoryBarrier2( ImageMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22670 
ImageMemoryBarrier2VULKAN_HPP_NAMESPACE::ImageMemoryBarrier222671     ImageMemoryBarrier2( VkImageMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT : ImageMemoryBarrier2( *reinterpret_cast<ImageMemoryBarrier2 const *>( &rhs ) )
22672     {
22673     }
22674 
22675     ImageMemoryBarrier2 & operator=( ImageMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22676 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22677 
operator =VULKAN_HPP_NAMESPACE::ImageMemoryBarrier222678     ImageMemoryBarrier2 & operator=( VkImageMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT
22679     {
22680       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 const *>( &rhs );
22681       return *this;
22682     }
22683 
22684 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222685     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22686     {
22687       pNext = pNext_;
22688       return *this;
22689     }
22690 
setSrcStageMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222691     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_ ) VULKAN_HPP_NOEXCEPT
22692     {
22693       srcStageMask = srcStageMask_;
22694       return *this;
22695     }
22696 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222697     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
22698     {
22699       srcAccessMask = srcAccessMask_;
22700       return *this;
22701     }
22702 
setDstStageMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222703     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_ ) VULKAN_HPP_NOEXCEPT
22704     {
22705       dstStageMask = dstStageMask_;
22706       return *this;
22707     }
22708 
setDstAccessMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222709     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
22710     {
22711       dstAccessMask = dstAccessMask_;
22712       return *this;
22713     }
22714 
setOldLayoutVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222715     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setOldLayout( VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ ) VULKAN_HPP_NOEXCEPT
22716     {
22717       oldLayout = oldLayout_;
22718       return *this;
22719     }
22720 
setNewLayoutVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222721     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setNewLayout( VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ ) VULKAN_HPP_NOEXCEPT
22722     {
22723       newLayout = newLayout_;
22724       return *this;
22725     }
22726 
setSrcQueueFamilyIndexVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222727     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
22728     {
22729       srcQueueFamilyIndex = srcQueueFamilyIndex_;
22730       return *this;
22731     }
22732 
setDstQueueFamilyIndexVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222733     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
22734     {
22735       dstQueueFamilyIndex = dstQueueFamilyIndex_;
22736       return *this;
22737     }
22738 
setImageVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222739     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
22740     {
22741       image = image_;
22742       return *this;
22743     }
22744 
22745     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 &
setSubresourceRangeVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222746       setSubresourceRange( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & subresourceRange_ ) VULKAN_HPP_NOEXCEPT
22747     {
22748       subresourceRange = subresourceRange_;
22749       return *this;
22750     }
22751 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22752 
operator VkImageMemoryBarrier2 const&VULKAN_HPP_NAMESPACE::ImageMemoryBarrier222753     operator VkImageMemoryBarrier2 const &() const VULKAN_HPP_NOEXCEPT
22754     {
22755       return *reinterpret_cast<const VkImageMemoryBarrier2 *>( this );
22756     }
22757 
operator VkImageMemoryBarrier2&VULKAN_HPP_NAMESPACE::ImageMemoryBarrier222758     operator VkImageMemoryBarrier2 &() VULKAN_HPP_NOEXCEPT
22759     {
22760       return *reinterpret_cast<VkImageMemoryBarrier2 *>( this );
22761     }
22762 
22763 #if defined( VULKAN_HPP_USE_REFLECT )
22764 #  if 14 <= VULKAN_HPP_CPP_VERSION
22765     auto
22766 #  else
22767     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
22768                const void * const &,
22769                VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &,
22770                VULKAN_HPP_NAMESPACE::AccessFlags2 const &,
22771                VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &,
22772                VULKAN_HPP_NAMESPACE::AccessFlags2 const &,
22773                VULKAN_HPP_NAMESPACE::ImageLayout const &,
22774                VULKAN_HPP_NAMESPACE::ImageLayout const &,
22775                uint32_t const &,
22776                uint32_t const &,
22777                VULKAN_HPP_NAMESPACE::Image const &,
22778                VULKAN_HPP_NAMESPACE::ImageSubresourceRange const &>
22779 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageMemoryBarrier222780       reflect() const VULKAN_HPP_NOEXCEPT
22781     {
22782       return std::tie( sType,
22783                        pNext,
22784                        srcStageMask,
22785                        srcAccessMask,
22786                        dstStageMask,
22787                        dstAccessMask,
22788                        oldLayout,
22789                        newLayout,
22790                        srcQueueFamilyIndex,
22791                        dstQueueFamilyIndex,
22792                        image,
22793                        subresourceRange );
22794     }
22795 #endif
22796 
22797 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
22798     auto operator<=>( ImageMemoryBarrier2 const & ) const = default;
22799 #else
operator ==VULKAN_HPP_NAMESPACE::ImageMemoryBarrier222800     bool operator==( ImageMemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT
22801     {
22802 #  if defined( VULKAN_HPP_USE_REFLECT )
22803       return this->reflect() == rhs.reflect();
22804 #  else
22805       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcStageMask == rhs.srcStageMask ) && ( srcAccessMask == rhs.srcAccessMask ) &&
22806              ( dstStageMask == rhs.dstStageMask ) && ( dstAccessMask == rhs.dstAccessMask ) && ( oldLayout == rhs.oldLayout ) &&
22807              ( newLayout == rhs.newLayout ) && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex ) && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex ) &&
22808              ( image == rhs.image ) && ( subresourceRange == rhs.subresourceRange );
22809 #  endif
22810     }
22811 
operator !=VULKAN_HPP_NAMESPACE::ImageMemoryBarrier222812     bool operator!=( ImageMemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT
22813     {
22814       return !operator==( rhs );
22815     }
22816 #endif
22817 
22818   public:
22819     VULKAN_HPP_NAMESPACE::StructureType         sType               = StructureType::eImageMemoryBarrier2;
22820     const void *                                pNext               = {};
22821     VULKAN_HPP_NAMESPACE::PipelineStageFlags2   srcStageMask        = {};
22822     VULKAN_HPP_NAMESPACE::AccessFlags2          srcAccessMask       = {};
22823     VULKAN_HPP_NAMESPACE::PipelineStageFlags2   dstStageMask        = {};
22824     VULKAN_HPP_NAMESPACE::AccessFlags2          dstAccessMask       = {};
22825     VULKAN_HPP_NAMESPACE::ImageLayout           oldLayout           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
22826     VULKAN_HPP_NAMESPACE::ImageLayout           newLayout           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
22827     uint32_t                                    srcQueueFamilyIndex = {};
22828     uint32_t                                    dstQueueFamilyIndex = {};
22829     VULKAN_HPP_NAMESPACE::Image                 image               = {};
22830     VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange    = {};
22831   };
22832 
22833   template <>
22834   struct CppType<StructureType, StructureType::eImageMemoryBarrier2>
22835   {
22836     using Type = ImageMemoryBarrier2;
22837   };
22838 
22839   using ImageMemoryBarrier2KHR = ImageMemoryBarrier2;
22840 
22841   struct DependencyInfo
22842   {
22843     using NativeType = VkDependencyInfo;
22844 
22845     static const bool                                  allowDuplicate = false;
22846     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDependencyInfo;
22847 
22848 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DependencyInfoVULKAN_HPP_NAMESPACE::DependencyInfo22849     VULKAN_HPP_CONSTEXPR DependencyInfo( VULKAN_HPP_NAMESPACE::DependencyFlags              dependencyFlags_          = {},
22850                                          uint32_t                                           memoryBarrierCount_       = {},
22851                                          const VULKAN_HPP_NAMESPACE::MemoryBarrier2 *       pMemoryBarriers_          = {},
22852                                          uint32_t                                           bufferMemoryBarrierCount_ = {},
22853                                          const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 * pBufferMemoryBarriers_    = {},
22854                                          uint32_t                                           imageMemoryBarrierCount_  = {},
22855                                          const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 *  pImageMemoryBarriers_     = {},
22856                                          const void *                                       pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
22857       : pNext{ pNext_ }
22858       , dependencyFlags{ dependencyFlags_ }
22859       , memoryBarrierCount{ memoryBarrierCount_ }
22860       , pMemoryBarriers{ pMemoryBarriers_ }
22861       , bufferMemoryBarrierCount{ bufferMemoryBarrierCount_ }
22862       , pBufferMemoryBarriers{ pBufferMemoryBarriers_ }
22863       , imageMemoryBarrierCount{ imageMemoryBarrierCount_ }
22864       , pImageMemoryBarriers{ pImageMemoryBarriers_ }
22865     {
22866     }
22867 
22868     VULKAN_HPP_CONSTEXPR DependencyInfo( DependencyInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22869 
DependencyInfoVULKAN_HPP_NAMESPACE::DependencyInfo22870     DependencyInfo( VkDependencyInfo const & rhs ) VULKAN_HPP_NOEXCEPT : DependencyInfo( *reinterpret_cast<DependencyInfo const *>( &rhs ) ) {}
22871 
22872 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DependencyInfoVULKAN_HPP_NAMESPACE::DependencyInfo22873     DependencyInfo( VULKAN_HPP_NAMESPACE::DependencyFlags                                                                   dependencyFlags_,
22874                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MemoryBarrier2> const &       memoryBarriers_,
22875                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2> const & bufferMemoryBarriers_ = {},
22876                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2> const &  imageMemoryBarriers_  = {},
22877                     const void *                                                                                            pNext_                = nullptr )
22878       : pNext( pNext_ )
22879       , dependencyFlags( dependencyFlags_ )
22880       , memoryBarrierCount( static_cast<uint32_t>( memoryBarriers_.size() ) )
22881       , pMemoryBarriers( memoryBarriers_.data() )
22882       , bufferMemoryBarrierCount( static_cast<uint32_t>( bufferMemoryBarriers_.size() ) )
22883       , pBufferMemoryBarriers( bufferMemoryBarriers_.data() )
22884       , imageMemoryBarrierCount( static_cast<uint32_t>( imageMemoryBarriers_.size() ) )
22885       , pImageMemoryBarriers( imageMemoryBarriers_.data() )
22886     {
22887     }
22888 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22889 
22890     DependencyInfo & operator=( DependencyInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22891 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22892 
operator =VULKAN_HPP_NAMESPACE::DependencyInfo22893     DependencyInfo & operator=( VkDependencyInfo const & rhs ) VULKAN_HPP_NOEXCEPT
22894     {
22895       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DependencyInfo const *>( &rhs );
22896       return *this;
22897     }
22898 
22899 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DependencyInfo22900     VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22901     {
22902       pNext = pNext_;
22903       return *this;
22904     }
22905 
setDependencyFlagsVULKAN_HPP_NAMESPACE::DependencyInfo22906     VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setDependencyFlags( VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ ) VULKAN_HPP_NOEXCEPT
22907     {
22908       dependencyFlags = dependencyFlags_;
22909       return *this;
22910     }
22911 
setMemoryBarrierCountVULKAN_HPP_NAMESPACE::DependencyInfo22912     VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setMemoryBarrierCount( uint32_t memoryBarrierCount_ ) VULKAN_HPP_NOEXCEPT
22913     {
22914       memoryBarrierCount = memoryBarrierCount_;
22915       return *this;
22916     }
22917 
setPMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfo22918     VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setPMemoryBarriers( const VULKAN_HPP_NAMESPACE::MemoryBarrier2 * pMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT
22919     {
22920       pMemoryBarriers = pMemoryBarriers_;
22921       return *this;
22922     }
22923 
22924 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
22925     DependencyInfo &
setMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfo22926       setMemoryBarriers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MemoryBarrier2> const & memoryBarriers_ ) VULKAN_HPP_NOEXCEPT
22927     {
22928       memoryBarrierCount = static_cast<uint32_t>( memoryBarriers_.size() );
22929       pMemoryBarriers    = memoryBarriers_.data();
22930       return *this;
22931     }
22932 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22933 
setBufferMemoryBarrierCountVULKAN_HPP_NAMESPACE::DependencyInfo22934     VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setBufferMemoryBarrierCount( uint32_t bufferMemoryBarrierCount_ ) VULKAN_HPP_NOEXCEPT
22935     {
22936       bufferMemoryBarrierCount = bufferMemoryBarrierCount_;
22937       return *this;
22938     }
22939 
22940     VULKAN_HPP_CONSTEXPR_14 DependencyInfo &
setPBufferMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfo22941       setPBufferMemoryBarriers( const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 * pBufferMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT
22942     {
22943       pBufferMemoryBarriers = pBufferMemoryBarriers_;
22944       return *this;
22945     }
22946 
22947 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setBufferMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfo22948     DependencyInfo & setBufferMemoryBarriers(
22949       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2> const & bufferMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT
22950     {
22951       bufferMemoryBarrierCount = static_cast<uint32_t>( bufferMemoryBarriers_.size() );
22952       pBufferMemoryBarriers    = bufferMemoryBarriers_.data();
22953       return *this;
22954     }
22955 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22956 
setImageMemoryBarrierCountVULKAN_HPP_NAMESPACE::DependencyInfo22957     VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setImageMemoryBarrierCount( uint32_t imageMemoryBarrierCount_ ) VULKAN_HPP_NOEXCEPT
22958     {
22959       imageMemoryBarrierCount = imageMemoryBarrierCount_;
22960       return *this;
22961     }
22962 
22963     VULKAN_HPP_CONSTEXPR_14 DependencyInfo &
setPImageMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfo22964       setPImageMemoryBarriers( const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 * pImageMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT
22965     {
22966       pImageMemoryBarriers = pImageMemoryBarriers_;
22967       return *this;
22968     }
22969 
22970 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImageMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfo22971     DependencyInfo & setImageMemoryBarriers(
22972       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2> const & imageMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT
22973     {
22974       imageMemoryBarrierCount = static_cast<uint32_t>( imageMemoryBarriers_.size() );
22975       pImageMemoryBarriers    = imageMemoryBarriers_.data();
22976       return *this;
22977     }
22978 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22979 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22980 
operator VkDependencyInfo const&VULKAN_HPP_NAMESPACE::DependencyInfo22981     operator VkDependencyInfo const &() const VULKAN_HPP_NOEXCEPT
22982     {
22983       return *reinterpret_cast<const VkDependencyInfo *>( this );
22984     }
22985 
operator VkDependencyInfo&VULKAN_HPP_NAMESPACE::DependencyInfo22986     operator VkDependencyInfo &() VULKAN_HPP_NOEXCEPT
22987     {
22988       return *reinterpret_cast<VkDependencyInfo *>( this );
22989     }
22990 
22991 #if defined( VULKAN_HPP_USE_REFLECT )
22992 #  if 14 <= VULKAN_HPP_CPP_VERSION
22993     auto
22994 #  else
22995     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
22996                const void * const &,
22997                VULKAN_HPP_NAMESPACE::DependencyFlags const &,
22998                uint32_t const &,
22999                const VULKAN_HPP_NAMESPACE::MemoryBarrier2 * const &,
23000                uint32_t const &,
23001                const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 * const &,
23002                uint32_t const &,
23003                const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 * const &>
23004 #  endif
reflectVULKAN_HPP_NAMESPACE::DependencyInfo23005       reflect() const VULKAN_HPP_NOEXCEPT
23006     {
23007       return std::tie( sType,
23008                        pNext,
23009                        dependencyFlags,
23010                        memoryBarrierCount,
23011                        pMemoryBarriers,
23012                        bufferMemoryBarrierCount,
23013                        pBufferMemoryBarriers,
23014                        imageMemoryBarrierCount,
23015                        pImageMemoryBarriers );
23016     }
23017 #endif
23018 
23019 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23020     auto operator<=>( DependencyInfo const & ) const = default;
23021 #else
operator ==VULKAN_HPP_NAMESPACE::DependencyInfo23022     bool operator==( DependencyInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23023     {
23024 #  if defined( VULKAN_HPP_USE_REFLECT )
23025       return this->reflect() == rhs.reflect();
23026 #  else
23027       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dependencyFlags == rhs.dependencyFlags ) &&
23028              ( memoryBarrierCount == rhs.memoryBarrierCount ) && ( pMemoryBarriers == rhs.pMemoryBarriers ) &&
23029              ( bufferMemoryBarrierCount == rhs.bufferMemoryBarrierCount ) && ( pBufferMemoryBarriers == rhs.pBufferMemoryBarriers ) &&
23030              ( imageMemoryBarrierCount == rhs.imageMemoryBarrierCount ) && ( pImageMemoryBarriers == rhs.pImageMemoryBarriers );
23031 #  endif
23032     }
23033 
operator !=VULKAN_HPP_NAMESPACE::DependencyInfo23034     bool operator!=( DependencyInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23035     {
23036       return !operator==( rhs );
23037     }
23038 #endif
23039 
23040   public:
23041     VULKAN_HPP_NAMESPACE::StructureType                sType                    = StructureType::eDependencyInfo;
23042     const void *                                       pNext                    = {};
23043     VULKAN_HPP_NAMESPACE::DependencyFlags              dependencyFlags          = {};
23044     uint32_t                                           memoryBarrierCount       = {};
23045     const VULKAN_HPP_NAMESPACE::MemoryBarrier2 *       pMemoryBarriers          = {};
23046     uint32_t                                           bufferMemoryBarrierCount = {};
23047     const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 * pBufferMemoryBarriers    = {};
23048     uint32_t                                           imageMemoryBarrierCount  = {};
23049     const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 *  pImageMemoryBarriers     = {};
23050   };
23051 
23052   template <>
23053   struct CppType<StructureType, StructureType::eDependencyInfo>
23054   {
23055     using Type = DependencyInfo;
23056   };
23057 
23058   using DependencyInfoKHR = DependencyInfo;
23059 
23060   struct DepthBiasInfoEXT
23061   {
23062     using NativeType = VkDepthBiasInfoEXT;
23063 
23064     static const bool                                  allowDuplicate = false;
23065     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDepthBiasInfoEXT;
23066 
23067 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DepthBiasInfoEXTVULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23068     VULKAN_HPP_CONSTEXPR DepthBiasInfoEXT( float        depthBiasConstantFactor_ = {},
23069                                            float        depthBiasClamp_          = {},
23070                                            float        depthBiasSlopeFactor_    = {},
23071                                            const void * pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
23072       : pNext{ pNext_ }
23073       , depthBiasConstantFactor{ depthBiasConstantFactor_ }
23074       , depthBiasClamp{ depthBiasClamp_ }
23075       , depthBiasSlopeFactor{ depthBiasSlopeFactor_ }
23076     {
23077     }
23078 
23079     VULKAN_HPP_CONSTEXPR DepthBiasInfoEXT( DepthBiasInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23080 
DepthBiasInfoEXTVULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23081     DepthBiasInfoEXT( VkDepthBiasInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : DepthBiasInfoEXT( *reinterpret_cast<DepthBiasInfoEXT const *>( &rhs ) ) {}
23082 
23083     DepthBiasInfoEXT & operator=( DepthBiasInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23084 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23085 
operator =VULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23086     DepthBiasInfoEXT & operator=( VkDepthBiasInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23087     {
23088       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DepthBiasInfoEXT const *>( &rhs );
23089       return *this;
23090     }
23091 
23092 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23093     VULKAN_HPP_CONSTEXPR_14 DepthBiasInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23094     {
23095       pNext = pNext_;
23096       return *this;
23097     }
23098 
setDepthBiasConstantFactorVULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23099     VULKAN_HPP_CONSTEXPR_14 DepthBiasInfoEXT & setDepthBiasConstantFactor( float depthBiasConstantFactor_ ) VULKAN_HPP_NOEXCEPT
23100     {
23101       depthBiasConstantFactor = depthBiasConstantFactor_;
23102       return *this;
23103     }
23104 
setDepthBiasClampVULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23105     VULKAN_HPP_CONSTEXPR_14 DepthBiasInfoEXT & setDepthBiasClamp( float depthBiasClamp_ ) VULKAN_HPP_NOEXCEPT
23106     {
23107       depthBiasClamp = depthBiasClamp_;
23108       return *this;
23109     }
23110 
setDepthBiasSlopeFactorVULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23111     VULKAN_HPP_CONSTEXPR_14 DepthBiasInfoEXT & setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ ) VULKAN_HPP_NOEXCEPT
23112     {
23113       depthBiasSlopeFactor = depthBiasSlopeFactor_;
23114       return *this;
23115     }
23116 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23117 
operator VkDepthBiasInfoEXT const&VULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23118     operator VkDepthBiasInfoEXT const &() const VULKAN_HPP_NOEXCEPT
23119     {
23120       return *reinterpret_cast<const VkDepthBiasInfoEXT *>( this );
23121     }
23122 
operator VkDepthBiasInfoEXT&VULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23123     operator VkDepthBiasInfoEXT &() VULKAN_HPP_NOEXCEPT
23124     {
23125       return *reinterpret_cast<VkDepthBiasInfoEXT *>( this );
23126     }
23127 
23128 #if defined( VULKAN_HPP_USE_REFLECT )
23129 #  if 14 <= VULKAN_HPP_CPP_VERSION
23130     auto
23131 #  else
23132     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, float const &, float const &, float const &>
23133 #  endif
reflectVULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23134       reflect() const VULKAN_HPP_NOEXCEPT
23135     {
23136       return std::tie( sType, pNext, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
23137     }
23138 #endif
23139 
23140 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23141     auto operator<=>( DepthBiasInfoEXT const & ) const = default;
23142 #else
operator ==VULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23143     bool operator==( DepthBiasInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23144     {
23145 #  if defined( VULKAN_HPP_USE_REFLECT )
23146       return this->reflect() == rhs.reflect();
23147 #  else
23148       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor ) &&
23149              ( depthBiasClamp == rhs.depthBiasClamp ) && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor );
23150 #  endif
23151     }
23152 
operator !=VULKAN_HPP_NAMESPACE::DepthBiasInfoEXT23153     bool operator!=( DepthBiasInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23154     {
23155       return !operator==( rhs );
23156     }
23157 #endif
23158 
23159   public:
23160     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::eDepthBiasInfoEXT;
23161     const void *                        pNext                   = {};
23162     float                               depthBiasConstantFactor = {};
23163     float                               depthBiasClamp          = {};
23164     float                               depthBiasSlopeFactor    = {};
23165   };
23166 
23167   template <>
23168   struct CppType<StructureType, StructureType::eDepthBiasInfoEXT>
23169   {
23170     using Type = DepthBiasInfoEXT;
23171   };
23172 
23173   struct DepthBiasRepresentationInfoEXT
23174   {
23175     using NativeType = VkDepthBiasRepresentationInfoEXT;
23176 
23177     static const bool                                  allowDuplicate = false;
23178     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDepthBiasRepresentationInfoEXT;
23179 
23180 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DepthBiasRepresentationInfoEXTVULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23181     VULKAN_HPP_CONSTEXPR DepthBiasRepresentationInfoEXT( VULKAN_HPP_NAMESPACE::DepthBiasRepresentationEXT depthBiasRepresentation_ =
23182                                                            VULKAN_HPP_NAMESPACE::DepthBiasRepresentationEXT::eLeastRepresentableValueFormat,
23183                                                          VULKAN_HPP_NAMESPACE::Bool32 depthBiasExact_ = {},
23184                                                          const void *                 pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
23185       : pNext{ pNext_ }
23186       , depthBiasRepresentation{ depthBiasRepresentation_ }
23187       , depthBiasExact{ depthBiasExact_ }
23188     {
23189     }
23190 
23191     VULKAN_HPP_CONSTEXPR DepthBiasRepresentationInfoEXT( DepthBiasRepresentationInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23192 
DepthBiasRepresentationInfoEXTVULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23193     DepthBiasRepresentationInfoEXT( VkDepthBiasRepresentationInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23194       : DepthBiasRepresentationInfoEXT( *reinterpret_cast<DepthBiasRepresentationInfoEXT const *>( &rhs ) )
23195     {
23196     }
23197 
23198     DepthBiasRepresentationInfoEXT & operator=( DepthBiasRepresentationInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23199 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23200 
operator =VULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23201     DepthBiasRepresentationInfoEXT & operator=( VkDepthBiasRepresentationInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23202     {
23203       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT const *>( &rhs );
23204       return *this;
23205     }
23206 
23207 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23208     VULKAN_HPP_CONSTEXPR_14 DepthBiasRepresentationInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23209     {
23210       pNext = pNext_;
23211       return *this;
23212     }
23213 
23214     VULKAN_HPP_CONSTEXPR_14 DepthBiasRepresentationInfoEXT &
setDepthBiasRepresentationVULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23215       setDepthBiasRepresentation( VULKAN_HPP_NAMESPACE::DepthBiasRepresentationEXT depthBiasRepresentation_ ) VULKAN_HPP_NOEXCEPT
23216     {
23217       depthBiasRepresentation = depthBiasRepresentation_;
23218       return *this;
23219     }
23220 
setDepthBiasExactVULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23221     VULKAN_HPP_CONSTEXPR_14 DepthBiasRepresentationInfoEXT & setDepthBiasExact( VULKAN_HPP_NAMESPACE::Bool32 depthBiasExact_ ) VULKAN_HPP_NOEXCEPT
23222     {
23223       depthBiasExact = depthBiasExact_;
23224       return *this;
23225     }
23226 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23227 
operator VkDepthBiasRepresentationInfoEXT const&VULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23228     operator VkDepthBiasRepresentationInfoEXT const &() const VULKAN_HPP_NOEXCEPT
23229     {
23230       return *reinterpret_cast<const VkDepthBiasRepresentationInfoEXT *>( this );
23231     }
23232 
operator VkDepthBiasRepresentationInfoEXT&VULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23233     operator VkDepthBiasRepresentationInfoEXT &() VULKAN_HPP_NOEXCEPT
23234     {
23235       return *reinterpret_cast<VkDepthBiasRepresentationInfoEXT *>( this );
23236     }
23237 
23238 #if defined( VULKAN_HPP_USE_REFLECT )
23239 #  if 14 <= VULKAN_HPP_CPP_VERSION
23240     auto
23241 #  else
23242     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
23243                const void * const &,
23244                VULKAN_HPP_NAMESPACE::DepthBiasRepresentationEXT const &,
23245                VULKAN_HPP_NAMESPACE::Bool32 const &>
23246 #  endif
reflectVULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23247       reflect() const VULKAN_HPP_NOEXCEPT
23248     {
23249       return std::tie( sType, pNext, depthBiasRepresentation, depthBiasExact );
23250     }
23251 #endif
23252 
23253 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23254     auto operator<=>( DepthBiasRepresentationInfoEXT const & ) const = default;
23255 #else
operator ==VULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23256     bool operator==( DepthBiasRepresentationInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23257     {
23258 #  if defined( VULKAN_HPP_USE_REFLECT )
23259       return this->reflect() == rhs.reflect();
23260 #  else
23261       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthBiasRepresentation == rhs.depthBiasRepresentation ) &&
23262              ( depthBiasExact == rhs.depthBiasExact );
23263 #  endif
23264     }
23265 
operator !=VULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT23266     bool operator!=( DepthBiasRepresentationInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23267     {
23268       return !operator==( rhs );
23269     }
23270 #endif
23271 
23272   public:
23273     VULKAN_HPP_NAMESPACE::StructureType              sType                   = StructureType::eDepthBiasRepresentationInfoEXT;
23274     const void *                                     pNext                   = {};
23275     VULKAN_HPP_NAMESPACE::DepthBiasRepresentationEXT depthBiasRepresentation = VULKAN_HPP_NAMESPACE::DepthBiasRepresentationEXT::eLeastRepresentableValueFormat;
23276     VULKAN_HPP_NAMESPACE::Bool32                     depthBiasExact          = {};
23277   };
23278 
23279   template <>
23280   struct CppType<StructureType, StructureType::eDepthBiasRepresentationInfoEXT>
23281   {
23282     using Type = DepthBiasRepresentationInfoEXT;
23283   };
23284 
23285   struct DescriptorAddressInfoEXT
23286   {
23287     using NativeType = VkDescriptorAddressInfoEXT;
23288 
23289     static const bool                                  allowDuplicate = false;
23290     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorAddressInfoEXT;
23291 
23292 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorAddressInfoEXTVULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23293     VULKAN_HPP_CONSTEXPR DescriptorAddressInfoEXT( VULKAN_HPP_NAMESPACE::DeviceAddress address_ = {},
23294                                                    VULKAN_HPP_NAMESPACE::DeviceSize    range_   = {},
23295                                                    VULKAN_HPP_NAMESPACE::Format        format_  = VULKAN_HPP_NAMESPACE::Format::eUndefined,
23296                                                    void *                              pNext_   = nullptr ) VULKAN_HPP_NOEXCEPT
23297       : pNext{ pNext_ }
23298       , address{ address_ }
23299       , range{ range_ }
23300       , format{ format_ }
23301     {
23302     }
23303 
23304     VULKAN_HPP_CONSTEXPR DescriptorAddressInfoEXT( DescriptorAddressInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23305 
DescriptorAddressInfoEXTVULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23306     DescriptorAddressInfoEXT( VkDescriptorAddressInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23307       : DescriptorAddressInfoEXT( *reinterpret_cast<DescriptorAddressInfoEXT const *>( &rhs ) )
23308     {
23309     }
23310 
23311     DescriptorAddressInfoEXT & operator=( DescriptorAddressInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23312 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23313 
operator =VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23314     DescriptorAddressInfoEXT & operator=( VkDescriptorAddressInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23315     {
23316       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT const *>( &rhs );
23317       return *this;
23318     }
23319 
23320 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23321     VULKAN_HPP_CONSTEXPR_14 DescriptorAddressInfoEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
23322     {
23323       pNext = pNext_;
23324       return *this;
23325     }
23326 
setAddressVULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23327     VULKAN_HPP_CONSTEXPR_14 DescriptorAddressInfoEXT & setAddress( VULKAN_HPP_NAMESPACE::DeviceAddress address_ ) VULKAN_HPP_NOEXCEPT
23328     {
23329       address = address_;
23330       return *this;
23331     }
23332 
setRangeVULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23333     VULKAN_HPP_CONSTEXPR_14 DescriptorAddressInfoEXT & setRange( VULKAN_HPP_NAMESPACE::DeviceSize range_ ) VULKAN_HPP_NOEXCEPT
23334     {
23335       range = range_;
23336       return *this;
23337     }
23338 
setFormatVULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23339     VULKAN_HPP_CONSTEXPR_14 DescriptorAddressInfoEXT & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
23340     {
23341       format = format_;
23342       return *this;
23343     }
23344 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23345 
operator VkDescriptorAddressInfoEXT const&VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23346     operator VkDescriptorAddressInfoEXT const &() const VULKAN_HPP_NOEXCEPT
23347     {
23348       return *reinterpret_cast<const VkDescriptorAddressInfoEXT *>( this );
23349     }
23350 
operator VkDescriptorAddressInfoEXT&VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23351     operator VkDescriptorAddressInfoEXT &() VULKAN_HPP_NOEXCEPT
23352     {
23353       return *reinterpret_cast<VkDescriptorAddressInfoEXT *>( this );
23354     }
23355 
23356 #if defined( VULKAN_HPP_USE_REFLECT )
23357 #  if 14 <= VULKAN_HPP_CPP_VERSION
23358     auto
23359 #  else
23360     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
23361                void * const &,
23362                VULKAN_HPP_NAMESPACE::DeviceAddress const &,
23363                VULKAN_HPP_NAMESPACE::DeviceSize const &,
23364                VULKAN_HPP_NAMESPACE::Format const &>
23365 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23366       reflect() const VULKAN_HPP_NOEXCEPT
23367     {
23368       return std::tie( sType, pNext, address, range, format );
23369     }
23370 #endif
23371 
23372 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23373     auto operator<=>( DescriptorAddressInfoEXT const & ) const = default;
23374 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23375     bool operator==( DescriptorAddressInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23376     {
23377 #  if defined( VULKAN_HPP_USE_REFLECT )
23378       return this->reflect() == rhs.reflect();
23379 #  else
23380       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( address == rhs.address ) && ( range == rhs.range ) && ( format == rhs.format );
23381 #  endif
23382     }
23383 
operator !=VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT23384     bool operator!=( DescriptorAddressInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23385     {
23386       return !operator==( rhs );
23387     }
23388 #endif
23389 
23390   public:
23391     VULKAN_HPP_NAMESPACE::StructureType sType   = StructureType::eDescriptorAddressInfoEXT;
23392     void *                              pNext   = {};
23393     VULKAN_HPP_NAMESPACE::DeviceAddress address = {};
23394     VULKAN_HPP_NAMESPACE::DeviceSize    range   = {};
23395     VULKAN_HPP_NAMESPACE::Format        format  = VULKAN_HPP_NAMESPACE::Format::eUndefined;
23396   };
23397 
23398   template <>
23399   struct CppType<StructureType, StructureType::eDescriptorAddressInfoEXT>
23400   {
23401     using Type = DescriptorAddressInfoEXT;
23402   };
23403 
23404   struct DescriptorBufferBindingInfoEXT
23405   {
23406     using NativeType = VkDescriptorBufferBindingInfoEXT;
23407 
23408     static const bool                                  allowDuplicate = false;
23409     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorBufferBindingInfoEXT;
23410 
23411 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorBufferBindingInfoEXTVULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23412     VULKAN_HPP_CONSTEXPR DescriptorBufferBindingInfoEXT( VULKAN_HPP_NAMESPACE::DeviceAddress    address_ = {},
23413                                                          VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_   = {},
23414                                                          void *                                 pNext_   = nullptr ) VULKAN_HPP_NOEXCEPT
23415       : pNext{ pNext_ }
23416       , address{ address_ }
23417       , usage{ usage_ }
23418     {
23419     }
23420 
23421     VULKAN_HPP_CONSTEXPR DescriptorBufferBindingInfoEXT( DescriptorBufferBindingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23422 
DescriptorBufferBindingInfoEXTVULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23423     DescriptorBufferBindingInfoEXT( VkDescriptorBufferBindingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23424       : DescriptorBufferBindingInfoEXT( *reinterpret_cast<DescriptorBufferBindingInfoEXT const *>( &rhs ) )
23425     {
23426     }
23427 
23428     DescriptorBufferBindingInfoEXT & operator=( DescriptorBufferBindingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23429 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23430 
operator =VULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23431     DescriptorBufferBindingInfoEXT & operator=( VkDescriptorBufferBindingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23432     {
23433       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT const *>( &rhs );
23434       return *this;
23435     }
23436 
23437 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23438     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferBindingInfoEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
23439     {
23440       pNext = pNext_;
23441       return *this;
23442     }
23443 
setAddressVULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23444     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferBindingInfoEXT & setAddress( VULKAN_HPP_NAMESPACE::DeviceAddress address_ ) VULKAN_HPP_NOEXCEPT
23445     {
23446       address = address_;
23447       return *this;
23448     }
23449 
setUsageVULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23450     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferBindingInfoEXT & setUsage( VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
23451     {
23452       usage = usage_;
23453       return *this;
23454     }
23455 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23456 
operator VkDescriptorBufferBindingInfoEXT const&VULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23457     operator VkDescriptorBufferBindingInfoEXT const &() const VULKAN_HPP_NOEXCEPT
23458     {
23459       return *reinterpret_cast<const VkDescriptorBufferBindingInfoEXT *>( this );
23460     }
23461 
operator VkDescriptorBufferBindingInfoEXT&VULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23462     operator VkDescriptorBufferBindingInfoEXT &() VULKAN_HPP_NOEXCEPT
23463     {
23464       return *reinterpret_cast<VkDescriptorBufferBindingInfoEXT *>( this );
23465     }
23466 
23467 #if defined( VULKAN_HPP_USE_REFLECT )
23468 #  if 14 <= VULKAN_HPP_CPP_VERSION
23469     auto
23470 #  else
23471     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
23472                void * const &,
23473                VULKAN_HPP_NAMESPACE::DeviceAddress const &,
23474                VULKAN_HPP_NAMESPACE::BufferUsageFlags const &>
23475 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23476       reflect() const VULKAN_HPP_NOEXCEPT
23477     {
23478       return std::tie( sType, pNext, address, usage );
23479     }
23480 #endif
23481 
23482 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23483     auto operator<=>( DescriptorBufferBindingInfoEXT const & ) const = default;
23484 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23485     bool operator==( DescriptorBufferBindingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23486     {
23487 #  if defined( VULKAN_HPP_USE_REFLECT )
23488       return this->reflect() == rhs.reflect();
23489 #  else
23490       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( address == rhs.address ) && ( usage == rhs.usage );
23491 #  endif
23492     }
23493 
operator !=VULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT23494     bool operator!=( DescriptorBufferBindingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23495     {
23496       return !operator==( rhs );
23497     }
23498 #endif
23499 
23500   public:
23501     VULKAN_HPP_NAMESPACE::StructureType    sType   = StructureType::eDescriptorBufferBindingInfoEXT;
23502     void *                                 pNext   = {};
23503     VULKAN_HPP_NAMESPACE::DeviceAddress    address = {};
23504     VULKAN_HPP_NAMESPACE::BufferUsageFlags usage   = {};
23505   };
23506 
23507   template <>
23508   struct CppType<StructureType, StructureType::eDescriptorBufferBindingInfoEXT>
23509   {
23510     using Type = DescriptorBufferBindingInfoEXT;
23511   };
23512 
23513   struct DescriptorBufferBindingPushDescriptorBufferHandleEXT
23514   {
23515     using NativeType = VkDescriptorBufferBindingPushDescriptorBufferHandleEXT;
23516 
23517     static const bool                                  allowDuplicate = false;
23518     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorBufferBindingPushDescriptorBufferHandleEXT;
23519 
23520 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorBufferBindingPushDescriptorBufferHandleEXTVULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT23521     VULKAN_HPP_CONSTEXPR DescriptorBufferBindingPushDescriptorBufferHandleEXT( VULKAN_HPP_NAMESPACE::Buffer buffer_ = {},
23522                                                                                void *                       pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
23523       : pNext{ pNext_ }
23524       , buffer{ buffer_ }
23525     {
23526     }
23527 
23528     VULKAN_HPP_CONSTEXPR
23529       DescriptorBufferBindingPushDescriptorBufferHandleEXT( DescriptorBufferBindingPushDescriptorBufferHandleEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23530 
DescriptorBufferBindingPushDescriptorBufferHandleEXTVULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT23531     DescriptorBufferBindingPushDescriptorBufferHandleEXT( VkDescriptorBufferBindingPushDescriptorBufferHandleEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23532       : DescriptorBufferBindingPushDescriptorBufferHandleEXT( *reinterpret_cast<DescriptorBufferBindingPushDescriptorBufferHandleEXT const *>( &rhs ) )
23533     {
23534     }
23535 
23536     DescriptorBufferBindingPushDescriptorBufferHandleEXT &
23537       operator=( DescriptorBufferBindingPushDescriptorBufferHandleEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23538 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23539 
operator =VULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT23540     DescriptorBufferBindingPushDescriptorBufferHandleEXT & operator=( VkDescriptorBufferBindingPushDescriptorBufferHandleEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23541     {
23542       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT const *>( &rhs );
23543       return *this;
23544     }
23545 
23546 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT23547     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferBindingPushDescriptorBufferHandleEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
23548     {
23549       pNext = pNext_;
23550       return *this;
23551     }
23552 
setBufferVULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT23553     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferBindingPushDescriptorBufferHandleEXT & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
23554     {
23555       buffer = buffer_;
23556       return *this;
23557     }
23558 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23559 
operator VkDescriptorBufferBindingPushDescriptorBufferHandleEXT const&VULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT23560     operator VkDescriptorBufferBindingPushDescriptorBufferHandleEXT const &() const VULKAN_HPP_NOEXCEPT
23561     {
23562       return *reinterpret_cast<const VkDescriptorBufferBindingPushDescriptorBufferHandleEXT *>( this );
23563     }
23564 
operator VkDescriptorBufferBindingPushDescriptorBufferHandleEXT&VULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT23565     operator VkDescriptorBufferBindingPushDescriptorBufferHandleEXT &() VULKAN_HPP_NOEXCEPT
23566     {
23567       return *reinterpret_cast<VkDescriptorBufferBindingPushDescriptorBufferHandleEXT *>( this );
23568     }
23569 
23570 #if defined( VULKAN_HPP_USE_REFLECT )
23571 #  if 14 <= VULKAN_HPP_CPP_VERSION
23572     auto
23573 #  else
23574     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Buffer const &>
23575 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT23576       reflect() const VULKAN_HPP_NOEXCEPT
23577     {
23578       return std::tie( sType, pNext, buffer );
23579     }
23580 #endif
23581 
23582 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23583     auto operator<=>( DescriptorBufferBindingPushDescriptorBufferHandleEXT const & ) const = default;
23584 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT23585     bool operator==( DescriptorBufferBindingPushDescriptorBufferHandleEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23586     {
23587 #  if defined( VULKAN_HPP_USE_REFLECT )
23588       return this->reflect() == rhs.reflect();
23589 #  else
23590       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer );
23591 #  endif
23592     }
23593 
operator !=VULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT23594     bool operator!=( DescriptorBufferBindingPushDescriptorBufferHandleEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23595     {
23596       return !operator==( rhs );
23597     }
23598 #endif
23599 
23600   public:
23601     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eDescriptorBufferBindingPushDescriptorBufferHandleEXT;
23602     void *                              pNext  = {};
23603     VULKAN_HPP_NAMESPACE::Buffer        buffer = {};
23604   };
23605 
23606   template <>
23607   struct CppType<StructureType, StructureType::eDescriptorBufferBindingPushDescriptorBufferHandleEXT>
23608   {
23609     using Type = DescriptorBufferBindingPushDescriptorBufferHandleEXT;
23610   };
23611 
23612   struct DescriptorBufferInfo
23613   {
23614     using NativeType = VkDescriptorBufferInfo;
23615 
23616 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorBufferInfoVULKAN_HPP_NAMESPACE::DescriptorBufferInfo23617     VULKAN_HPP_CONSTEXPR DescriptorBufferInfo( VULKAN_HPP_NAMESPACE::Buffer     buffer_ = {},
23618                                                VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {},
23619                                                VULKAN_HPP_NAMESPACE::DeviceSize range_  = {} ) VULKAN_HPP_NOEXCEPT
23620       : buffer{ buffer_ }
23621       , offset{ offset_ }
23622       , range{ range_ }
23623     {
23624     }
23625 
23626     VULKAN_HPP_CONSTEXPR DescriptorBufferInfo( DescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23627 
DescriptorBufferInfoVULKAN_HPP_NAMESPACE::DescriptorBufferInfo23628     DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
23629       : DescriptorBufferInfo( *reinterpret_cast<DescriptorBufferInfo const *>( &rhs ) )
23630     {
23631     }
23632 
23633     DescriptorBufferInfo & operator=( DescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23634 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23635 
operator =VULKAN_HPP_NAMESPACE::DescriptorBufferInfo23636     DescriptorBufferInfo & operator=( VkDescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
23637     {
23638       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorBufferInfo const *>( &rhs );
23639       return *this;
23640     }
23641 
23642 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBufferVULKAN_HPP_NAMESPACE::DescriptorBufferInfo23643     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
23644     {
23645       buffer = buffer_;
23646       return *this;
23647     }
23648 
setOffsetVULKAN_HPP_NAMESPACE::DescriptorBufferInfo23649     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
23650     {
23651       offset = offset_;
23652       return *this;
23653     }
23654 
setRangeVULKAN_HPP_NAMESPACE::DescriptorBufferInfo23655     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo & setRange( VULKAN_HPP_NAMESPACE::DeviceSize range_ ) VULKAN_HPP_NOEXCEPT
23656     {
23657       range = range_;
23658       return *this;
23659     }
23660 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23661 
operator VkDescriptorBufferInfo const&VULKAN_HPP_NAMESPACE::DescriptorBufferInfo23662     operator VkDescriptorBufferInfo const &() const VULKAN_HPP_NOEXCEPT
23663     {
23664       return *reinterpret_cast<const VkDescriptorBufferInfo *>( this );
23665     }
23666 
operator VkDescriptorBufferInfo&VULKAN_HPP_NAMESPACE::DescriptorBufferInfo23667     operator VkDescriptorBufferInfo &() VULKAN_HPP_NOEXCEPT
23668     {
23669       return *reinterpret_cast<VkDescriptorBufferInfo *>( this );
23670     }
23671 
23672 #if defined( VULKAN_HPP_USE_REFLECT )
23673 #  if 14 <= VULKAN_HPP_CPP_VERSION
23674     auto
23675 #  else
23676     std::tuple<VULKAN_HPP_NAMESPACE::Buffer const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
23677 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorBufferInfo23678       reflect() const VULKAN_HPP_NOEXCEPT
23679     {
23680       return std::tie( buffer, offset, range );
23681     }
23682 #endif
23683 
23684 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23685     auto operator<=>( DescriptorBufferInfo const & ) const = default;
23686 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorBufferInfo23687     bool operator==( DescriptorBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23688     {
23689 #  if defined( VULKAN_HPP_USE_REFLECT )
23690       return this->reflect() == rhs.reflect();
23691 #  else
23692       return ( buffer == rhs.buffer ) && ( offset == rhs.offset ) && ( range == rhs.range );
23693 #  endif
23694     }
23695 
operator !=VULKAN_HPP_NAMESPACE::DescriptorBufferInfo23696     bool operator!=( DescriptorBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23697     {
23698       return !operator==( rhs );
23699     }
23700 #endif
23701 
23702   public:
23703     VULKAN_HPP_NAMESPACE::Buffer     buffer = {};
23704     VULKAN_HPP_NAMESPACE::DeviceSize offset = {};
23705     VULKAN_HPP_NAMESPACE::DeviceSize range  = {};
23706   };
23707 
23708   struct DescriptorImageInfo
23709   {
23710     using NativeType = VkDescriptorImageInfo;
23711 
23712 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
23713     VULKAN_HPP_CONSTEXPR
DescriptorImageInfoVULKAN_HPP_NAMESPACE::DescriptorImageInfo23714       DescriptorImageInfo( VULKAN_HPP_NAMESPACE::Sampler     sampler_     = {},
23715                            VULKAN_HPP_NAMESPACE::ImageView   imageView_   = {},
23716                            VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined ) VULKAN_HPP_NOEXCEPT
23717       : sampler{ sampler_ }
23718       , imageView{ imageView_ }
23719       , imageLayout{ imageLayout_ }
23720     {
23721     }
23722 
23723     VULKAN_HPP_CONSTEXPR DescriptorImageInfo( DescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23724 
DescriptorImageInfoVULKAN_HPP_NAMESPACE::DescriptorImageInfo23725     DescriptorImageInfo( VkDescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT : DescriptorImageInfo( *reinterpret_cast<DescriptorImageInfo const *>( &rhs ) )
23726     {
23727     }
23728 
23729     DescriptorImageInfo & operator=( DescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23730 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23731 
operator =VULKAN_HPP_NAMESPACE::DescriptorImageInfo23732     DescriptorImageInfo & operator=( VkDescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
23733     {
23734       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorImageInfo const *>( &rhs );
23735       return *this;
23736     }
23737 
23738 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSamplerVULKAN_HPP_NAMESPACE::DescriptorImageInfo23739     VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo & setSampler( VULKAN_HPP_NAMESPACE::Sampler sampler_ ) VULKAN_HPP_NOEXCEPT
23740     {
23741       sampler = sampler_;
23742       return *this;
23743     }
23744 
setImageViewVULKAN_HPP_NAMESPACE::DescriptorImageInfo23745     VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo & setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT
23746     {
23747       imageView = imageView_;
23748       return *this;
23749     }
23750 
setImageLayoutVULKAN_HPP_NAMESPACE::DescriptorImageInfo23751     VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo & setImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ ) VULKAN_HPP_NOEXCEPT
23752     {
23753       imageLayout = imageLayout_;
23754       return *this;
23755     }
23756 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23757 
operator VkDescriptorImageInfo const&VULKAN_HPP_NAMESPACE::DescriptorImageInfo23758     operator VkDescriptorImageInfo const &() const VULKAN_HPP_NOEXCEPT
23759     {
23760       return *reinterpret_cast<const VkDescriptorImageInfo *>( this );
23761     }
23762 
operator VkDescriptorImageInfo&VULKAN_HPP_NAMESPACE::DescriptorImageInfo23763     operator VkDescriptorImageInfo &() VULKAN_HPP_NOEXCEPT
23764     {
23765       return *reinterpret_cast<VkDescriptorImageInfo *>( this );
23766     }
23767 
23768 #if defined( VULKAN_HPP_USE_REFLECT )
23769 #  if 14 <= VULKAN_HPP_CPP_VERSION
23770     auto
23771 #  else
23772     std::tuple<VULKAN_HPP_NAMESPACE::Sampler const &, VULKAN_HPP_NAMESPACE::ImageView const &, VULKAN_HPP_NAMESPACE::ImageLayout const &>
23773 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorImageInfo23774       reflect() const VULKAN_HPP_NOEXCEPT
23775     {
23776       return std::tie( sampler, imageView, imageLayout );
23777     }
23778 #endif
23779 
23780 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
23781     auto operator<=>( DescriptorImageInfo const & ) const = default;
23782 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorImageInfo23783     bool operator==( DescriptorImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23784     {
23785 #  if defined( VULKAN_HPP_USE_REFLECT )
23786       return this->reflect() == rhs.reflect();
23787 #  else
23788       return ( sampler == rhs.sampler ) && ( imageView == rhs.imageView ) && ( imageLayout == rhs.imageLayout );
23789 #  endif
23790     }
23791 
operator !=VULKAN_HPP_NAMESPACE::DescriptorImageInfo23792     bool operator!=( DescriptorImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23793     {
23794       return !operator==( rhs );
23795     }
23796 #endif
23797 
23798   public:
23799     VULKAN_HPP_NAMESPACE::Sampler     sampler     = {};
23800     VULKAN_HPP_NAMESPACE::ImageView   imageView   = {};
23801     VULKAN_HPP_NAMESPACE::ImageLayout imageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
23802   };
23803 
23804   union DescriptorDataEXT
23805   {
23806     using NativeType = VkDescriptorDataEXT;
23807 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
23808 
DescriptorDataEXT(const VULKAN_HPP_NAMESPACE::Sampler * pSampler_={} )23809     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT( const VULKAN_HPP_NAMESPACE::Sampler * pSampler_ = {} ) : pSampler( pSampler_ ) {}
23810 
DescriptorDataEXT(const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pDescriptorImageInfo_)23811     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT( const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pDescriptorImageInfo_ )
23812       : pCombinedImageSampler( pDescriptorImageInfo_ )
23813     {
23814     }
23815 
DescriptorDataEXT(const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pDescriptorAddressInfoEXT_)23816     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT( const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pDescriptorAddressInfoEXT_ )
23817       : pUniformTexelBuffer( pDescriptorAddressInfoEXT_ )
23818     {
23819     }
23820 
DescriptorDataEXT(VULKAN_HPP_NAMESPACE::DeviceAddress accelerationStructure_)23821     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT( VULKAN_HPP_NAMESPACE::DeviceAddress accelerationStructure_ ) : accelerationStructure( accelerationStructure_ ) {}
23822 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
23823 
23824 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setPSampler(const VULKAN_HPP_NAMESPACE::Sampler * pSampler_)23825     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setPSampler( const VULKAN_HPP_NAMESPACE::Sampler * pSampler_ ) VULKAN_HPP_NOEXCEPT
23826     {
23827       pSampler = pSampler_;
23828       return *this;
23829     }
23830 
23831     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT &
setPCombinedImageSampler(const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pCombinedImageSampler_)23832       setPCombinedImageSampler( const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pCombinedImageSampler_ ) VULKAN_HPP_NOEXCEPT
23833     {
23834       pCombinedImageSampler = pCombinedImageSampler_;
23835       return *this;
23836     }
23837 
23838     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT &
setPInputAttachmentImage(const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pInputAttachmentImage_)23839       setPInputAttachmentImage( const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pInputAttachmentImage_ ) VULKAN_HPP_NOEXCEPT
23840     {
23841       pInputAttachmentImage = pInputAttachmentImage_;
23842       return *this;
23843     }
23844 
setPSampledImage(const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pSampledImage_)23845     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setPSampledImage( const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pSampledImage_ ) VULKAN_HPP_NOEXCEPT
23846     {
23847       pSampledImage = pSampledImage_;
23848       return *this;
23849     }
23850 
setPStorageImage(const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pStorageImage_)23851     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setPStorageImage( const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pStorageImage_ ) VULKAN_HPP_NOEXCEPT
23852     {
23853       pStorageImage = pStorageImage_;
23854       return *this;
23855     }
23856 
23857     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT &
setPUniformTexelBuffer(const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pUniformTexelBuffer_)23858       setPUniformTexelBuffer( const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pUniformTexelBuffer_ ) VULKAN_HPP_NOEXCEPT
23859     {
23860       pUniformTexelBuffer = pUniformTexelBuffer_;
23861       return *this;
23862     }
23863 
23864     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT &
setPStorageTexelBuffer(const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pStorageTexelBuffer_)23865       setPStorageTexelBuffer( const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pStorageTexelBuffer_ ) VULKAN_HPP_NOEXCEPT
23866     {
23867       pStorageTexelBuffer = pStorageTexelBuffer_;
23868       return *this;
23869     }
23870 
setPUniformBuffer(const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pUniformBuffer_)23871     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setPUniformBuffer( const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pUniformBuffer_ ) VULKAN_HPP_NOEXCEPT
23872     {
23873       pUniformBuffer = pUniformBuffer_;
23874       return *this;
23875     }
23876 
setPStorageBuffer(const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pStorageBuffer_)23877     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setPStorageBuffer( const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pStorageBuffer_ ) VULKAN_HPP_NOEXCEPT
23878     {
23879       pStorageBuffer = pStorageBuffer_;
23880       return *this;
23881     }
23882 
setAccelerationStructure(VULKAN_HPP_NAMESPACE::DeviceAddress accelerationStructure_)23883     VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setAccelerationStructure( VULKAN_HPP_NAMESPACE::DeviceAddress accelerationStructure_ ) VULKAN_HPP_NOEXCEPT
23884     {
23885       accelerationStructure = accelerationStructure_;
23886       return *this;
23887     }
23888 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
23889 
operator VkDescriptorDataEXT const&() const23890     operator VkDescriptorDataEXT const &() const
23891     {
23892       return *reinterpret_cast<const VkDescriptorDataEXT *>( this );
23893     }
23894 
operator VkDescriptorDataEXT&()23895     operator VkDescriptorDataEXT &()
23896     {
23897       return *reinterpret_cast<VkDescriptorDataEXT *>( this );
23898     }
23899 
23900 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
23901     const VULKAN_HPP_NAMESPACE::Sampler *                  pSampler;
23902     const VULKAN_HPP_NAMESPACE::DescriptorImageInfo *      pCombinedImageSampler;
23903     const VULKAN_HPP_NAMESPACE::DescriptorImageInfo *      pInputAttachmentImage;
23904     const VULKAN_HPP_NAMESPACE::DescriptorImageInfo *      pSampledImage;
23905     const VULKAN_HPP_NAMESPACE::DescriptorImageInfo *      pStorageImage;
23906     const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pUniformTexelBuffer;
23907     const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pStorageTexelBuffer;
23908     const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pUniformBuffer;
23909     const VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT * pStorageBuffer;
23910     VULKAN_HPP_NAMESPACE::DeviceAddress                    accelerationStructure;
23911 #else
23912     const VkSampler *                  pSampler;
23913     const VkDescriptorImageInfo *      pCombinedImageSampler;
23914     const VkDescriptorImageInfo *      pInputAttachmentImage;
23915     const VkDescriptorImageInfo *      pSampledImage;
23916     const VkDescriptorImageInfo *      pStorageImage;
23917     const VkDescriptorAddressInfoEXT * pUniformTexelBuffer;
23918     const VkDescriptorAddressInfoEXT * pStorageTexelBuffer;
23919     const VkDescriptorAddressInfoEXT * pUniformBuffer;
23920     const VkDescriptorAddressInfoEXT * pStorageBuffer;
23921     VkDeviceAddress                    accelerationStructure;
23922 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
23923   };
23924 
23925   struct DescriptorGetInfoEXT
23926   {
23927     using NativeType = VkDescriptorGetInfoEXT;
23928 
23929     static const bool                                  allowDuplicate = false;
23930     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorGetInfoEXT;
23931 
23932 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorGetInfoEXTVULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT23933     VULKAN_HPP_CONSTEXPR_14 DescriptorGetInfoEXT( VULKAN_HPP_NAMESPACE::DescriptorType    type_  = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler,
23934                                                   VULKAN_HPP_NAMESPACE::DescriptorDataEXT data_  = {},
23935                                                   const void *                            pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
23936       : pNext{ pNext_ }
23937       , type{ type_ }
23938       , data{ data_ }
23939     {
23940     }
23941 
23942     VULKAN_HPP_CONSTEXPR_14 DescriptorGetInfoEXT( DescriptorGetInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23943 
DescriptorGetInfoEXTVULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT23944     DescriptorGetInfoEXT( VkDescriptorGetInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23945       : DescriptorGetInfoEXT( *reinterpret_cast<DescriptorGetInfoEXT const *>( &rhs ) )
23946     {
23947     }
23948 
23949     DescriptorGetInfoEXT & operator=( DescriptorGetInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23950 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23951 
operator =VULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT23952     DescriptorGetInfoEXT & operator=( VkDescriptorGetInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23953     {
23954       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT const *>( &rhs );
23955       return *this;
23956     }
23957 
23958 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT23959     VULKAN_HPP_CONSTEXPR_14 DescriptorGetInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23960     {
23961       pNext = pNext_;
23962       return *this;
23963     }
23964 
setTypeVULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT23965     VULKAN_HPP_CONSTEXPR_14 DescriptorGetInfoEXT & setType( VULKAN_HPP_NAMESPACE::DescriptorType type_ ) VULKAN_HPP_NOEXCEPT
23966     {
23967       type = type_;
23968       return *this;
23969     }
23970 
setDataVULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT23971     VULKAN_HPP_CONSTEXPR_14 DescriptorGetInfoEXT & setData( VULKAN_HPP_NAMESPACE::DescriptorDataEXT const & data_ ) VULKAN_HPP_NOEXCEPT
23972     {
23973       data = data_;
23974       return *this;
23975     }
23976 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23977 
operator VkDescriptorGetInfoEXT const&VULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT23978     operator VkDescriptorGetInfoEXT const &() const VULKAN_HPP_NOEXCEPT
23979     {
23980       return *reinterpret_cast<const VkDescriptorGetInfoEXT *>( this );
23981     }
23982 
operator VkDescriptorGetInfoEXT&VULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT23983     operator VkDescriptorGetInfoEXT &() VULKAN_HPP_NOEXCEPT
23984     {
23985       return *reinterpret_cast<VkDescriptorGetInfoEXT *>( this );
23986     }
23987 
23988 #if defined( VULKAN_HPP_USE_REFLECT )
23989 #  if 14 <= VULKAN_HPP_CPP_VERSION
23990     auto
23991 #  else
23992     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
23993                const void * const &,
23994                VULKAN_HPP_NAMESPACE::DescriptorType const &,
23995                VULKAN_HPP_NAMESPACE::DescriptorDataEXT const &>
23996 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT23997       reflect() const VULKAN_HPP_NOEXCEPT
23998     {
23999       return std::tie( sType, pNext, type, data );
24000     }
24001 #endif
24002 
24003   public:
24004     VULKAN_HPP_NAMESPACE::StructureType     sType = StructureType::eDescriptorGetInfoEXT;
24005     const void *                            pNext = {};
24006     VULKAN_HPP_NAMESPACE::DescriptorType    type  = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler;
24007     VULKAN_HPP_NAMESPACE::DescriptorDataEXT data  = {};
24008   };
24009 
24010   template <>
24011   struct CppType<StructureType, StructureType::eDescriptorGetInfoEXT>
24012   {
24013     using Type = DescriptorGetInfoEXT;
24014   };
24015 
24016   struct DescriptorPoolSize
24017   {
24018     using NativeType = VkDescriptorPoolSize;
24019 
24020 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorPoolSizeVULKAN_HPP_NAMESPACE::DescriptorPoolSize24021     VULKAN_HPP_CONSTEXPR DescriptorPoolSize( VULKAN_HPP_NAMESPACE::DescriptorType type_            = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler,
24022                                              uint32_t                             descriptorCount_ = {} ) VULKAN_HPP_NOEXCEPT
24023       : type{ type_ }
24024       , descriptorCount{ descriptorCount_ }
24025     {
24026     }
24027 
24028     VULKAN_HPP_CONSTEXPR DescriptorPoolSize( DescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24029 
DescriptorPoolSizeVULKAN_HPP_NAMESPACE::DescriptorPoolSize24030     DescriptorPoolSize( VkDescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT : DescriptorPoolSize( *reinterpret_cast<DescriptorPoolSize const *>( &rhs ) ) {}
24031 
24032     DescriptorPoolSize & operator=( DescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24033 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24034 
operator =VULKAN_HPP_NAMESPACE::DescriptorPoolSize24035     DescriptorPoolSize & operator=( VkDescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT
24036     {
24037       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorPoolSize const *>( &rhs );
24038       return *this;
24039     }
24040 
24041 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setTypeVULKAN_HPP_NAMESPACE::DescriptorPoolSize24042     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolSize & setType( VULKAN_HPP_NAMESPACE::DescriptorType type_ ) VULKAN_HPP_NOEXCEPT
24043     {
24044       type = type_;
24045       return *this;
24046     }
24047 
setDescriptorCountVULKAN_HPP_NAMESPACE::DescriptorPoolSize24048     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolSize & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT
24049     {
24050       descriptorCount = descriptorCount_;
24051       return *this;
24052     }
24053 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24054 
operator VkDescriptorPoolSize const&VULKAN_HPP_NAMESPACE::DescriptorPoolSize24055     operator VkDescriptorPoolSize const &() const VULKAN_HPP_NOEXCEPT
24056     {
24057       return *reinterpret_cast<const VkDescriptorPoolSize *>( this );
24058     }
24059 
operator VkDescriptorPoolSize&VULKAN_HPP_NAMESPACE::DescriptorPoolSize24060     operator VkDescriptorPoolSize &() VULKAN_HPP_NOEXCEPT
24061     {
24062       return *reinterpret_cast<VkDescriptorPoolSize *>( this );
24063     }
24064 
24065 #if defined( VULKAN_HPP_USE_REFLECT )
24066 #  if 14 <= VULKAN_HPP_CPP_VERSION
24067     auto
24068 #  else
24069     std::tuple<VULKAN_HPP_NAMESPACE::DescriptorType const &, uint32_t const &>
24070 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorPoolSize24071       reflect() const VULKAN_HPP_NOEXCEPT
24072     {
24073       return std::tie( type, descriptorCount );
24074     }
24075 #endif
24076 
24077 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24078     auto operator<=>( DescriptorPoolSize const & ) const = default;
24079 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorPoolSize24080     bool                               operator==( DescriptorPoolSize const & rhs ) const VULKAN_HPP_NOEXCEPT
24081     {
24082 #  if defined( VULKAN_HPP_USE_REFLECT )
24083       return this->reflect() == rhs.reflect();
24084 #  else
24085       return ( type == rhs.type ) && ( descriptorCount == rhs.descriptorCount );
24086 #  endif
24087     }
24088 
operator !=VULKAN_HPP_NAMESPACE::DescriptorPoolSize24089     bool operator!=( DescriptorPoolSize const & rhs ) const VULKAN_HPP_NOEXCEPT
24090     {
24091       return !operator==( rhs );
24092     }
24093 #endif
24094 
24095   public:
24096     VULKAN_HPP_NAMESPACE::DescriptorType type            = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler;
24097     uint32_t                             descriptorCount = {};
24098   };
24099 
24100   struct DescriptorPoolCreateInfo
24101   {
24102     using NativeType = VkDescriptorPoolCreateInfo;
24103 
24104     static const bool                                  allowDuplicate = false;
24105     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorPoolCreateInfo;
24106 
24107 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorPoolCreateInfoVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24108     VULKAN_HPP_CONSTEXPR DescriptorPoolCreateInfo( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags  flags_         = {},
24109                                                    uint32_t                                         maxSets_       = {},
24110                                                    uint32_t                                         poolSizeCount_ = {},
24111                                                    const VULKAN_HPP_NAMESPACE::DescriptorPoolSize * pPoolSizes_    = {},
24112                                                    const void *                                     pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
24113       : pNext{ pNext_ }
24114       , flags{ flags_ }
24115       , maxSets{ maxSets_ }
24116       , poolSizeCount{ poolSizeCount_ }
24117       , pPoolSizes{ pPoolSizes_ }
24118     {
24119     }
24120 
24121     VULKAN_HPP_CONSTEXPR DescriptorPoolCreateInfo( DescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24122 
DescriptorPoolCreateInfoVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24123     DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
24124       : DescriptorPoolCreateInfo( *reinterpret_cast<DescriptorPoolCreateInfo const *>( &rhs ) )
24125     {
24126     }
24127 
24128 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorPoolCreateInfoVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24129     DescriptorPoolCreateInfo( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags                                                       flags_,
24130                               uint32_t                                                                                              maxSets_,
24131                               VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorPoolSize> const & poolSizes_,
24132                               const void *                                                                                          pNext_ = nullptr )
24133       : pNext( pNext_ ), flags( flags_ ), maxSets( maxSets_ ), poolSizeCount( static_cast<uint32_t>( poolSizes_.size() ) ), pPoolSizes( poolSizes_.data() )
24134     {
24135     }
24136 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24137 
24138     DescriptorPoolCreateInfo & operator=( DescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24139 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24140 
operator =VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24141     DescriptorPoolCreateInfo & operator=( VkDescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
24142     {
24143       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo const *>( &rhs );
24144       return *this;
24145     }
24146 
24147 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24148     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24149     {
24150       pNext = pNext_;
24151       return *this;
24152     }
24153 
setFlagsVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24154     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
24155     {
24156       flags = flags_;
24157       return *this;
24158     }
24159 
setMaxSetsVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24160     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setMaxSets( uint32_t maxSets_ ) VULKAN_HPP_NOEXCEPT
24161     {
24162       maxSets = maxSets_;
24163       return *this;
24164     }
24165 
setPoolSizeCountVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24166     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setPoolSizeCount( uint32_t poolSizeCount_ ) VULKAN_HPP_NOEXCEPT
24167     {
24168       poolSizeCount = poolSizeCount_;
24169       return *this;
24170     }
24171 
setPPoolSizesVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24172     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setPPoolSizes( const VULKAN_HPP_NAMESPACE::DescriptorPoolSize * pPoolSizes_ ) VULKAN_HPP_NOEXCEPT
24173     {
24174       pPoolSizes = pPoolSizes_;
24175       return *this;
24176     }
24177 
24178 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
24179     DescriptorPoolCreateInfo &
setPoolSizesVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24180       setPoolSizes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorPoolSize> const & poolSizes_ ) VULKAN_HPP_NOEXCEPT
24181     {
24182       poolSizeCount = static_cast<uint32_t>( poolSizes_.size() );
24183       pPoolSizes    = poolSizes_.data();
24184       return *this;
24185     }
24186 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24187 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24188 
operator VkDescriptorPoolCreateInfo const&VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24189     operator VkDescriptorPoolCreateInfo const &() const VULKAN_HPP_NOEXCEPT
24190     {
24191       return *reinterpret_cast<const VkDescriptorPoolCreateInfo *>( this );
24192     }
24193 
operator VkDescriptorPoolCreateInfo&VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24194     operator VkDescriptorPoolCreateInfo &() VULKAN_HPP_NOEXCEPT
24195     {
24196       return *reinterpret_cast<VkDescriptorPoolCreateInfo *>( this );
24197     }
24198 
24199 #if defined( VULKAN_HPP_USE_REFLECT )
24200 #  if 14 <= VULKAN_HPP_CPP_VERSION
24201     auto
24202 #  else
24203     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
24204                const void * const &,
24205                VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags const &,
24206                uint32_t const &,
24207                uint32_t const &,
24208                const VULKAN_HPP_NAMESPACE::DescriptorPoolSize * const &>
24209 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24210       reflect() const VULKAN_HPP_NOEXCEPT
24211     {
24212       return std::tie( sType, pNext, flags, maxSets, poolSizeCount, pPoolSizes );
24213     }
24214 #endif
24215 
24216 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24217     auto operator<=>( DescriptorPoolCreateInfo const & ) const = default;
24218 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24219     bool operator==( DescriptorPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24220     {
24221 #  if defined( VULKAN_HPP_USE_REFLECT )
24222       return this->reflect() == rhs.reflect();
24223 #  else
24224       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( maxSets == rhs.maxSets ) &&
24225              ( poolSizeCount == rhs.poolSizeCount ) && ( pPoolSizes == rhs.pPoolSizes );
24226 #  endif
24227     }
24228 
operator !=VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo24229     bool operator!=( DescriptorPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24230     {
24231       return !operator==( rhs );
24232     }
24233 #endif
24234 
24235   public:
24236     VULKAN_HPP_NAMESPACE::StructureType              sType         = StructureType::eDescriptorPoolCreateInfo;
24237     const void *                                     pNext         = {};
24238     VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags  flags         = {};
24239     uint32_t                                         maxSets       = {};
24240     uint32_t                                         poolSizeCount = {};
24241     const VULKAN_HPP_NAMESPACE::DescriptorPoolSize * pPoolSizes    = {};
24242   };
24243 
24244   template <>
24245   struct CppType<StructureType, StructureType::eDescriptorPoolCreateInfo>
24246   {
24247     using Type = DescriptorPoolCreateInfo;
24248   };
24249 
24250   struct DescriptorPoolInlineUniformBlockCreateInfo
24251   {
24252     using NativeType = VkDescriptorPoolInlineUniformBlockCreateInfo;
24253 
24254     static const bool                                  allowDuplicate = false;
24255     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorPoolInlineUniformBlockCreateInfo;
24256 
24257 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorPoolInlineUniformBlockCreateInfoVULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo24258     VULKAN_HPP_CONSTEXPR DescriptorPoolInlineUniformBlockCreateInfo( uint32_t     maxInlineUniformBlockBindings_ = {},
24259                                                                      const void * pNext_                         = nullptr ) VULKAN_HPP_NOEXCEPT
24260       : pNext{ pNext_ }
24261       , maxInlineUniformBlockBindings{ maxInlineUniformBlockBindings_ }
24262     {
24263     }
24264 
24265     VULKAN_HPP_CONSTEXPR DescriptorPoolInlineUniformBlockCreateInfo( DescriptorPoolInlineUniformBlockCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24266 
DescriptorPoolInlineUniformBlockCreateInfoVULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo24267     DescriptorPoolInlineUniformBlockCreateInfo( VkDescriptorPoolInlineUniformBlockCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
24268       : DescriptorPoolInlineUniformBlockCreateInfo( *reinterpret_cast<DescriptorPoolInlineUniformBlockCreateInfo const *>( &rhs ) )
24269     {
24270     }
24271 
24272     DescriptorPoolInlineUniformBlockCreateInfo & operator=( DescriptorPoolInlineUniformBlockCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24273 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24274 
operator =VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo24275     DescriptorPoolInlineUniformBlockCreateInfo & operator=( VkDescriptorPoolInlineUniformBlockCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
24276     {
24277       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo const *>( &rhs );
24278       return *this;
24279     }
24280 
24281 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo24282     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolInlineUniformBlockCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24283     {
24284       pNext = pNext_;
24285       return *this;
24286     }
24287 
24288     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolInlineUniformBlockCreateInfo &
setMaxInlineUniformBlockBindingsVULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo24289       setMaxInlineUniformBlockBindings( uint32_t maxInlineUniformBlockBindings_ ) VULKAN_HPP_NOEXCEPT
24290     {
24291       maxInlineUniformBlockBindings = maxInlineUniformBlockBindings_;
24292       return *this;
24293     }
24294 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24295 
operator VkDescriptorPoolInlineUniformBlockCreateInfo const&VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo24296     operator VkDescriptorPoolInlineUniformBlockCreateInfo const &() const VULKAN_HPP_NOEXCEPT
24297     {
24298       return *reinterpret_cast<const VkDescriptorPoolInlineUniformBlockCreateInfo *>( this );
24299     }
24300 
operator VkDescriptorPoolInlineUniformBlockCreateInfo&VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo24301     operator VkDescriptorPoolInlineUniformBlockCreateInfo &() VULKAN_HPP_NOEXCEPT
24302     {
24303       return *reinterpret_cast<VkDescriptorPoolInlineUniformBlockCreateInfo *>( this );
24304     }
24305 
24306 #if defined( VULKAN_HPP_USE_REFLECT )
24307 #  if 14 <= VULKAN_HPP_CPP_VERSION
24308     auto
24309 #  else
24310     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
24311 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo24312       reflect() const VULKAN_HPP_NOEXCEPT
24313     {
24314       return std::tie( sType, pNext, maxInlineUniformBlockBindings );
24315     }
24316 #endif
24317 
24318 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24319     auto operator<=>( DescriptorPoolInlineUniformBlockCreateInfo const & ) const = default;
24320 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo24321     bool operator==( DescriptorPoolInlineUniformBlockCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24322     {
24323 #  if defined( VULKAN_HPP_USE_REFLECT )
24324       return this->reflect() == rhs.reflect();
24325 #  else
24326       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxInlineUniformBlockBindings == rhs.maxInlineUniformBlockBindings );
24327 #  endif
24328     }
24329 
operator !=VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo24330     bool operator!=( DescriptorPoolInlineUniformBlockCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24331     {
24332       return !operator==( rhs );
24333     }
24334 #endif
24335 
24336   public:
24337     VULKAN_HPP_NAMESPACE::StructureType sType                         = StructureType::eDescriptorPoolInlineUniformBlockCreateInfo;
24338     const void *                        pNext                         = {};
24339     uint32_t                            maxInlineUniformBlockBindings = {};
24340   };
24341 
24342   template <>
24343   struct CppType<StructureType, StructureType::eDescriptorPoolInlineUniformBlockCreateInfo>
24344   {
24345     using Type = DescriptorPoolInlineUniformBlockCreateInfo;
24346   };
24347 
24348   using DescriptorPoolInlineUniformBlockCreateInfoEXT = DescriptorPoolInlineUniformBlockCreateInfo;
24349 
24350   struct DescriptorSetAllocateInfo
24351   {
24352     using NativeType = VkDescriptorSetAllocateInfo;
24353 
24354     static const bool                                  allowDuplicate = false;
24355     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorSetAllocateInfo;
24356 
24357 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24358     VULKAN_HPP_CONSTEXPR DescriptorSetAllocateInfo( VULKAN_HPP_NAMESPACE::DescriptorPool              descriptorPool_     = {},
24359                                                     uint32_t                                          descriptorSetCount_ = {},
24360                                                     const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_        = {},
24361                                                     const void *                                      pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
24362       : pNext{ pNext_ }
24363       , descriptorPool{ descriptorPool_ }
24364       , descriptorSetCount{ descriptorSetCount_ }
24365       , pSetLayouts{ pSetLayouts_ }
24366     {
24367     }
24368 
24369     VULKAN_HPP_CONSTEXPR DescriptorSetAllocateInfo( DescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24370 
DescriptorSetAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24371     DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
24372       : DescriptorSetAllocateInfo( *reinterpret_cast<DescriptorSetAllocateInfo const *>( &rhs ) )
24373     {
24374     }
24375 
24376 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorSetAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24377     DescriptorSetAllocateInfo( VULKAN_HPP_NAMESPACE::DescriptorPool                                                                   descriptorPool_,
24378                                VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const & setLayouts_,
24379                                const void *                                                                                           pNext_ = nullptr )
24380       : pNext( pNext_ ), descriptorPool( descriptorPool_ ), descriptorSetCount( static_cast<uint32_t>( setLayouts_.size() ) ), pSetLayouts( setLayouts_.data() )
24381     {
24382     }
24383 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24384 
24385     DescriptorSetAllocateInfo & operator=( DescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24386 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24387 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24388     DescriptorSetAllocateInfo & operator=( VkDescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
24389     {
24390       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo const *>( &rhs );
24391       return *this;
24392     }
24393 
24394 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24395     VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24396     {
24397       pNext = pNext_;
24398       return *this;
24399     }
24400 
setDescriptorPoolVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24401     VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & setDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool_ ) VULKAN_HPP_NOEXCEPT
24402     {
24403       descriptorPool = descriptorPool_;
24404       return *this;
24405     }
24406 
setDescriptorSetCountVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24407     VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & setDescriptorSetCount( uint32_t descriptorSetCount_ ) VULKAN_HPP_NOEXCEPT
24408     {
24409       descriptorSetCount = descriptorSetCount_;
24410       return *this;
24411     }
24412 
setPSetLayoutsVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24413     VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & setPSetLayouts( const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_ ) VULKAN_HPP_NOEXCEPT
24414     {
24415       pSetLayouts = pSetLayouts_;
24416       return *this;
24417     }
24418 
24419 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
24420     DescriptorSetAllocateInfo &
setSetLayoutsVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24421       setSetLayouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const & setLayouts_ ) VULKAN_HPP_NOEXCEPT
24422     {
24423       descriptorSetCount = static_cast<uint32_t>( setLayouts_.size() );
24424       pSetLayouts        = setLayouts_.data();
24425       return *this;
24426     }
24427 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24428 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24429 
operator VkDescriptorSetAllocateInfo const&VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24430     operator VkDescriptorSetAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
24431     {
24432       return *reinterpret_cast<const VkDescriptorSetAllocateInfo *>( this );
24433     }
24434 
operator VkDescriptorSetAllocateInfo&VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24435     operator VkDescriptorSetAllocateInfo &() VULKAN_HPP_NOEXCEPT
24436     {
24437       return *reinterpret_cast<VkDescriptorSetAllocateInfo *>( this );
24438     }
24439 
24440 #if defined( VULKAN_HPP_USE_REFLECT )
24441 #  if 14 <= VULKAN_HPP_CPP_VERSION
24442     auto
24443 #  else
24444     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
24445                const void * const &,
24446                VULKAN_HPP_NAMESPACE::DescriptorPool const &,
24447                uint32_t const &,
24448                const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * const &>
24449 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24450       reflect() const VULKAN_HPP_NOEXCEPT
24451     {
24452       return std::tie( sType, pNext, descriptorPool, descriptorSetCount, pSetLayouts );
24453     }
24454 #endif
24455 
24456 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24457     auto operator<=>( DescriptorSetAllocateInfo const & ) const = default;
24458 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24459     bool operator==( DescriptorSetAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24460     {
24461 #  if defined( VULKAN_HPP_USE_REFLECT )
24462       return this->reflect() == rhs.reflect();
24463 #  else
24464       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorPool == rhs.descriptorPool ) && ( descriptorSetCount == rhs.descriptorSetCount ) &&
24465              ( pSetLayouts == rhs.pSetLayouts );
24466 #  endif
24467     }
24468 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo24469     bool operator!=( DescriptorSetAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24470     {
24471       return !operator==( rhs );
24472     }
24473 #endif
24474 
24475   public:
24476     VULKAN_HPP_NAMESPACE::StructureType               sType              = StructureType::eDescriptorSetAllocateInfo;
24477     const void *                                      pNext              = {};
24478     VULKAN_HPP_NAMESPACE::DescriptorPool              descriptorPool     = {};
24479     uint32_t                                          descriptorSetCount = {};
24480     const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts        = {};
24481   };
24482 
24483   template <>
24484   struct CppType<StructureType, StructureType::eDescriptorSetAllocateInfo>
24485   {
24486     using Type = DescriptorSetAllocateInfo;
24487   };
24488 
24489   struct DescriptorSetBindingReferenceVALVE
24490   {
24491     using NativeType = VkDescriptorSetBindingReferenceVALVE;
24492 
24493     static const bool                                  allowDuplicate = false;
24494     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorSetBindingReferenceVALVE;
24495 
24496 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetBindingReferenceVALVEVULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24497     VULKAN_HPP_CONSTEXPR DescriptorSetBindingReferenceVALVE( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout_ = {},
24498                                                              uint32_t                                  binding_             = {},
24499                                                              const void *                              pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
24500       : pNext{ pNext_ }
24501       , descriptorSetLayout{ descriptorSetLayout_ }
24502       , binding{ binding_ }
24503     {
24504     }
24505 
24506     VULKAN_HPP_CONSTEXPR DescriptorSetBindingReferenceVALVE( DescriptorSetBindingReferenceVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24507 
DescriptorSetBindingReferenceVALVEVULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24508     DescriptorSetBindingReferenceVALVE( VkDescriptorSetBindingReferenceVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
24509       : DescriptorSetBindingReferenceVALVE( *reinterpret_cast<DescriptorSetBindingReferenceVALVE const *>( &rhs ) )
24510     {
24511     }
24512 
24513     DescriptorSetBindingReferenceVALVE & operator=( DescriptorSetBindingReferenceVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24514 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24515 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24516     DescriptorSetBindingReferenceVALVE & operator=( VkDescriptorSetBindingReferenceVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
24517     {
24518       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE const *>( &rhs );
24519       return *this;
24520     }
24521 
24522 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24523     VULKAN_HPP_CONSTEXPR_14 DescriptorSetBindingReferenceVALVE & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24524     {
24525       pNext = pNext_;
24526       return *this;
24527     }
24528 
24529     VULKAN_HPP_CONSTEXPR_14 DescriptorSetBindingReferenceVALVE &
setDescriptorSetLayoutVULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24530       setDescriptorSetLayout( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout_ ) VULKAN_HPP_NOEXCEPT
24531     {
24532       descriptorSetLayout = descriptorSetLayout_;
24533       return *this;
24534     }
24535 
setBindingVULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24536     VULKAN_HPP_CONSTEXPR_14 DescriptorSetBindingReferenceVALVE & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
24537     {
24538       binding = binding_;
24539       return *this;
24540     }
24541 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24542 
operator VkDescriptorSetBindingReferenceVALVE const&VULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24543     operator VkDescriptorSetBindingReferenceVALVE const &() const VULKAN_HPP_NOEXCEPT
24544     {
24545       return *reinterpret_cast<const VkDescriptorSetBindingReferenceVALVE *>( this );
24546     }
24547 
operator VkDescriptorSetBindingReferenceVALVE&VULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24548     operator VkDescriptorSetBindingReferenceVALVE &() VULKAN_HPP_NOEXCEPT
24549     {
24550       return *reinterpret_cast<VkDescriptorSetBindingReferenceVALVE *>( this );
24551     }
24552 
24553 #if defined( VULKAN_HPP_USE_REFLECT )
24554 #  if 14 <= VULKAN_HPP_CPP_VERSION
24555     auto
24556 #  else
24557     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DescriptorSetLayout const &, uint32_t const &>
24558 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24559       reflect() const VULKAN_HPP_NOEXCEPT
24560     {
24561       return std::tie( sType, pNext, descriptorSetLayout, binding );
24562     }
24563 #endif
24564 
24565 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24566     auto operator<=>( DescriptorSetBindingReferenceVALVE const & ) const = default;
24567 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24568     bool operator==( DescriptorSetBindingReferenceVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT
24569     {
24570 #  if defined( VULKAN_HPP_USE_REFLECT )
24571       return this->reflect() == rhs.reflect();
24572 #  else
24573       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorSetLayout == rhs.descriptorSetLayout ) && ( binding == rhs.binding );
24574 #  endif
24575     }
24576 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE24577     bool operator!=( DescriptorSetBindingReferenceVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT
24578     {
24579       return !operator==( rhs );
24580     }
24581 #endif
24582 
24583   public:
24584     VULKAN_HPP_NAMESPACE::StructureType       sType               = StructureType::eDescriptorSetBindingReferenceVALVE;
24585     const void *                              pNext               = {};
24586     VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout = {};
24587     uint32_t                                  binding             = {};
24588   };
24589 
24590   template <>
24591   struct CppType<StructureType, StructureType::eDescriptorSetBindingReferenceVALVE>
24592   {
24593     using Type = DescriptorSetBindingReferenceVALVE;
24594   };
24595 
24596   struct DescriptorSetLayoutBinding
24597   {
24598     using NativeType = VkDescriptorSetLayoutBinding;
24599 
24600 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetLayoutBindingVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24601     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBinding( uint32_t                               binding_         = {},
24602                                                      VULKAN_HPP_NAMESPACE::DescriptorType   descriptorType_  = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler,
24603                                                      uint32_t                               descriptorCount_ = {},
24604                                                      VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_      = {},
24605                                                      const VULKAN_HPP_NAMESPACE::Sampler *  pImmutableSamplers_ = {} ) VULKAN_HPP_NOEXCEPT
24606       : binding{ binding_ }
24607       , descriptorType{ descriptorType_ }
24608       , descriptorCount{ descriptorCount_ }
24609       , stageFlags{ stageFlags_ }
24610       , pImmutableSamplers{ pImmutableSamplers_ }
24611     {
24612     }
24613 
24614     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBinding( DescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24615 
DescriptorSetLayoutBindingVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24616     DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT
24617       : DescriptorSetLayoutBinding( *reinterpret_cast<DescriptorSetLayoutBinding const *>( &rhs ) )
24618     {
24619     }
24620 
24621 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorSetLayoutBindingVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24622     DescriptorSetLayoutBinding( uint32_t                                                                                   binding_,
24623                                 VULKAN_HPP_NAMESPACE::DescriptorType                                                       descriptorType_,
24624                                 VULKAN_HPP_NAMESPACE::ShaderStageFlags                                                     stageFlags_,
24625                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Sampler> const & immutableSamplers_ )
24626       : binding( binding_ )
24627       , descriptorType( descriptorType_ )
24628       , descriptorCount( static_cast<uint32_t>( immutableSamplers_.size() ) )
24629       , stageFlags( stageFlags_ )
24630       , pImmutableSamplers( immutableSamplers_.data() )
24631     {
24632     }
24633 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24634 
24635     DescriptorSetLayoutBinding & operator=( DescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24636 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24637 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24638     DescriptorSetLayoutBinding & operator=( VkDescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT
24639     {
24640       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding const *>( &rhs );
24641       return *this;
24642     }
24643 
24644 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBindingVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24645     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
24646     {
24647       binding = binding_;
24648       return *this;
24649     }
24650 
setDescriptorTypeVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24651     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT
24652     {
24653       descriptorType = descriptorType_;
24654       return *this;
24655     }
24656 
setDescriptorCountVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24657     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT
24658     {
24659       descriptorCount = descriptorCount_;
24660       return *this;
24661     }
24662 
setStageFlagsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24663     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT
24664     {
24665       stageFlags = stageFlags_;
24666       return *this;
24667     }
24668 
setPImmutableSamplersVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24669     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setPImmutableSamplers( const VULKAN_HPP_NAMESPACE::Sampler * pImmutableSamplers_ ) VULKAN_HPP_NOEXCEPT
24670     {
24671       pImmutableSamplers = pImmutableSamplers_;
24672       return *this;
24673     }
24674 
24675 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
24676     DescriptorSetLayoutBinding &
setImmutableSamplersVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24677       setImmutableSamplers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Sampler> const & immutableSamplers_ ) VULKAN_HPP_NOEXCEPT
24678     {
24679       descriptorCount    = static_cast<uint32_t>( immutableSamplers_.size() );
24680       pImmutableSamplers = immutableSamplers_.data();
24681       return *this;
24682     }
24683 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24684 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24685 
operator VkDescriptorSetLayoutBinding const&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24686     operator VkDescriptorSetLayoutBinding const &() const VULKAN_HPP_NOEXCEPT
24687     {
24688       return *reinterpret_cast<const VkDescriptorSetLayoutBinding *>( this );
24689     }
24690 
operator VkDescriptorSetLayoutBinding&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24691     operator VkDescriptorSetLayoutBinding &() VULKAN_HPP_NOEXCEPT
24692     {
24693       return *reinterpret_cast<VkDescriptorSetLayoutBinding *>( this );
24694     }
24695 
24696 #if defined( VULKAN_HPP_USE_REFLECT )
24697 #  if 14 <= VULKAN_HPP_CPP_VERSION
24698     auto
24699 #  else
24700     std::tuple<uint32_t const &,
24701                VULKAN_HPP_NAMESPACE::DescriptorType const &,
24702                uint32_t const &,
24703                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
24704                const VULKAN_HPP_NAMESPACE::Sampler * const &>
24705 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24706       reflect() const VULKAN_HPP_NOEXCEPT
24707     {
24708       return std::tie( binding, descriptorType, descriptorCount, stageFlags, pImmutableSamplers );
24709     }
24710 #endif
24711 
24712 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24713     auto operator<=>( DescriptorSetLayoutBinding const & ) const = default;
24714 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24715     bool operator==( DescriptorSetLayoutBinding const & rhs ) const VULKAN_HPP_NOEXCEPT
24716     {
24717 #  if defined( VULKAN_HPP_USE_REFLECT )
24718       return this->reflect() == rhs.reflect();
24719 #  else
24720       return ( binding == rhs.binding ) && ( descriptorType == rhs.descriptorType ) && ( descriptorCount == rhs.descriptorCount ) &&
24721              ( stageFlags == rhs.stageFlags ) && ( pImmutableSamplers == rhs.pImmutableSamplers );
24722 #  endif
24723     }
24724 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding24725     bool operator!=( DescriptorSetLayoutBinding const & rhs ) const VULKAN_HPP_NOEXCEPT
24726     {
24727       return !operator==( rhs );
24728     }
24729 #endif
24730 
24731   public:
24732     uint32_t                               binding            = {};
24733     VULKAN_HPP_NAMESPACE::DescriptorType   descriptorType     = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler;
24734     uint32_t                               descriptorCount    = {};
24735     VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags         = {};
24736     const VULKAN_HPP_NAMESPACE::Sampler *  pImmutableSamplers = {};
24737   };
24738 
24739   struct DescriptorSetLayoutBindingFlagsCreateInfo
24740   {
24741     using NativeType = VkDescriptorSetLayoutBindingFlagsCreateInfo;
24742 
24743     static const bool                                  allowDuplicate = false;
24744     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo;
24745 
24746 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetLayoutBindingFlagsCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo24747     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBindingFlagsCreateInfo( uint32_t                                             bindingCount_  = {},
24748                                                                     const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags * pBindingFlags_ = {},
24749                                                                     const void *                                         pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
24750       : pNext{ pNext_ }
24751       , bindingCount{ bindingCount_ }
24752       , pBindingFlags{ pBindingFlags_ }
24753     {
24754     }
24755 
24756     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBindingFlagsCreateInfo( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24757 
DescriptorSetLayoutBindingFlagsCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo24758     DescriptorSetLayoutBindingFlagsCreateInfo( VkDescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
24759       : DescriptorSetLayoutBindingFlagsCreateInfo( *reinterpret_cast<DescriptorSetLayoutBindingFlagsCreateInfo const *>( &rhs ) )
24760     {
24761     }
24762 
24763 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorSetLayoutBindingFlagsCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo24764     DescriptorSetLayoutBindingFlagsCreateInfo(
24765       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags> const & bindingFlags_, const void * pNext_ = nullptr )
24766       : pNext( pNext_ ), bindingCount( static_cast<uint32_t>( bindingFlags_.size() ) ), pBindingFlags( bindingFlags_.data() )
24767     {
24768     }
24769 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24770 
24771     DescriptorSetLayoutBindingFlagsCreateInfo & operator=( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24772 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24773 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo24774     DescriptorSetLayoutBindingFlagsCreateInfo & operator=( VkDescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
24775     {
24776       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo const *>( &rhs );
24777       return *this;
24778     }
24779 
24780 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo24781     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24782     {
24783       pNext = pNext_;
24784       return *this;
24785     }
24786 
setBindingCountVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo24787     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo & setBindingCount( uint32_t bindingCount_ ) VULKAN_HPP_NOEXCEPT
24788     {
24789       bindingCount = bindingCount_;
24790       return *this;
24791     }
24792 
24793     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo &
setPBindingFlagsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo24794       setPBindingFlags( const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags * pBindingFlags_ ) VULKAN_HPP_NOEXCEPT
24795     {
24796       pBindingFlags = pBindingFlags_;
24797       return *this;
24798     }
24799 
24800 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setBindingFlagsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo24801     DescriptorSetLayoutBindingFlagsCreateInfo & setBindingFlags(
24802       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags> const & bindingFlags_ ) VULKAN_HPP_NOEXCEPT
24803     {
24804       bindingCount  = static_cast<uint32_t>( bindingFlags_.size() );
24805       pBindingFlags = bindingFlags_.data();
24806       return *this;
24807     }
24808 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24809 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24810 
operator VkDescriptorSetLayoutBindingFlagsCreateInfo const&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo24811     operator VkDescriptorSetLayoutBindingFlagsCreateInfo const &() const VULKAN_HPP_NOEXCEPT
24812     {
24813       return *reinterpret_cast<const VkDescriptorSetLayoutBindingFlagsCreateInfo *>( this );
24814     }
24815 
operator VkDescriptorSetLayoutBindingFlagsCreateInfo&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo24816     operator VkDescriptorSetLayoutBindingFlagsCreateInfo &() VULKAN_HPP_NOEXCEPT
24817     {
24818       return *reinterpret_cast<VkDescriptorSetLayoutBindingFlagsCreateInfo *>( this );
24819     }
24820 
24821 #if defined( VULKAN_HPP_USE_REFLECT )
24822 #  if 14 <= VULKAN_HPP_CPP_VERSION
24823     auto
24824 #  else
24825     std::
24826       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags * const &>
24827 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo24828       reflect() const VULKAN_HPP_NOEXCEPT
24829     {
24830       return std::tie( sType, pNext, bindingCount, pBindingFlags );
24831     }
24832 #endif
24833 
24834 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24835     auto operator<=>( DescriptorSetLayoutBindingFlagsCreateInfo const & ) const = default;
24836 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo24837     bool operator==( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24838     {
24839 #  if defined( VULKAN_HPP_USE_REFLECT )
24840       return this->reflect() == rhs.reflect();
24841 #  else
24842       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( bindingCount == rhs.bindingCount ) && ( pBindingFlags == rhs.pBindingFlags );
24843 #  endif
24844     }
24845 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo24846     bool operator!=( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24847     {
24848       return !operator==( rhs );
24849     }
24850 #endif
24851 
24852   public:
24853     VULKAN_HPP_NAMESPACE::StructureType                  sType         = StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo;
24854     const void *                                         pNext         = {};
24855     uint32_t                                             bindingCount  = {};
24856     const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags * pBindingFlags = {};
24857   };
24858 
24859   template <>
24860   struct CppType<StructureType, StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo>
24861   {
24862     using Type = DescriptorSetLayoutBindingFlagsCreateInfo;
24863   };
24864 
24865   using DescriptorSetLayoutBindingFlagsCreateInfoEXT = DescriptorSetLayoutBindingFlagsCreateInfo;
24866 
24867   struct DescriptorSetLayoutCreateInfo
24868   {
24869     using NativeType = VkDescriptorSetLayoutCreateInfo;
24870 
24871     static const bool                                  allowDuplicate = false;
24872     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorSetLayoutCreateInfo;
24873 
24874 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetLayoutCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo24875     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutCreateInfo( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags     flags_        = {},
24876                                                         uint32_t                                                 bindingCount_ = {},
24877                                                         const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding * pBindings_    = {},
24878                                                         const void *                                             pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
24879       : pNext{ pNext_ }
24880       , flags{ flags_ }
24881       , bindingCount{ bindingCount_ }
24882       , pBindings{ pBindings_ }
24883     {
24884     }
24885 
24886     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24887 
DescriptorSetLayoutCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo24888     DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
24889       : DescriptorSetLayoutCreateInfo( *reinterpret_cast<DescriptorSetLayoutCreateInfo const *>( &rhs ) )
24890     {
24891     }
24892 
24893 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorSetLayoutCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo24894     DescriptorSetLayoutCreateInfo( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags                                                          flags_,
24895                                    VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding> const & bindings_,
24896                                    const void * pNext_ = nullptr )
24897       : pNext( pNext_ ), flags( flags_ ), bindingCount( static_cast<uint32_t>( bindings_.size() ) ), pBindings( bindings_.data() )
24898     {
24899     }
24900 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24901 
24902     DescriptorSetLayoutCreateInfo & operator=( DescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24903 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24904 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo24905     DescriptorSetLayoutCreateInfo & operator=( VkDescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
24906     {
24907       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo const *>( &rhs );
24908       return *this;
24909     }
24910 
24911 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo24912     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24913     {
24914       pNext = pNext_;
24915       return *this;
24916     }
24917 
setFlagsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo24918     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
24919     {
24920       flags = flags_;
24921       return *this;
24922     }
24923 
setBindingCountVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo24924     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo & setBindingCount( uint32_t bindingCount_ ) VULKAN_HPP_NOEXCEPT
24925     {
24926       bindingCount = bindingCount_;
24927       return *this;
24928     }
24929 
24930     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo &
setPBindingsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo24931       setPBindings( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding * pBindings_ ) VULKAN_HPP_NOEXCEPT
24932     {
24933       pBindings = pBindings_;
24934       return *this;
24935     }
24936 
24937 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
24938     DescriptorSetLayoutCreateInfo &
setBindingsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo24939       setBindings( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding> const & bindings_ ) VULKAN_HPP_NOEXCEPT
24940     {
24941       bindingCount = static_cast<uint32_t>( bindings_.size() );
24942       pBindings    = bindings_.data();
24943       return *this;
24944     }
24945 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24946 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24947 
operator VkDescriptorSetLayoutCreateInfo const&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo24948     operator VkDescriptorSetLayoutCreateInfo const &() const VULKAN_HPP_NOEXCEPT
24949     {
24950       return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( this );
24951     }
24952 
operator VkDescriptorSetLayoutCreateInfo&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo24953     operator VkDescriptorSetLayoutCreateInfo &() VULKAN_HPP_NOEXCEPT
24954     {
24955       return *reinterpret_cast<VkDescriptorSetLayoutCreateInfo *>( this );
24956     }
24957 
24958 #if defined( VULKAN_HPP_USE_REFLECT )
24959 #  if 14 <= VULKAN_HPP_CPP_VERSION
24960     auto
24961 #  else
24962     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
24963                const void * const &,
24964                VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags const &,
24965                uint32_t const &,
24966                const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding * const &>
24967 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo24968       reflect() const VULKAN_HPP_NOEXCEPT
24969     {
24970       return std::tie( sType, pNext, flags, bindingCount, pBindings );
24971     }
24972 #endif
24973 
24974 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
24975     auto operator<=>( DescriptorSetLayoutCreateInfo const & ) const = default;
24976 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo24977     bool operator==( DescriptorSetLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24978     {
24979 #  if defined( VULKAN_HPP_USE_REFLECT )
24980       return this->reflect() == rhs.reflect();
24981 #  else
24982       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( bindingCount == rhs.bindingCount ) &&
24983              ( pBindings == rhs.pBindings );
24984 #  endif
24985     }
24986 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo24987     bool operator!=( DescriptorSetLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24988     {
24989       return !operator==( rhs );
24990     }
24991 #endif
24992 
24993   public:
24994     VULKAN_HPP_NAMESPACE::StructureType                      sType        = StructureType::eDescriptorSetLayoutCreateInfo;
24995     const void *                                             pNext        = {};
24996     VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags     flags        = {};
24997     uint32_t                                                 bindingCount = {};
24998     const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding * pBindings    = {};
24999   };
25000 
25001   template <>
25002   struct CppType<StructureType, StructureType::eDescriptorSetLayoutCreateInfo>
25003   {
25004     using Type = DescriptorSetLayoutCreateInfo;
25005   };
25006 
25007   struct DescriptorSetLayoutHostMappingInfoVALVE
25008   {
25009     using NativeType = VkDescriptorSetLayoutHostMappingInfoVALVE;
25010 
25011     static const bool                                  allowDuplicate = false;
25012     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorSetLayoutHostMappingInfoVALVE;
25013 
25014 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
25015     VULKAN_HPP_CONSTEXPR
DescriptorSetLayoutHostMappingInfoVALVEVULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25016       DescriptorSetLayoutHostMappingInfoVALVE( size_t descriptorOffset_ = {}, uint32_t descriptorSize_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
25017       : pNext{ pNext_ }
25018       , descriptorOffset{ descriptorOffset_ }
25019       , descriptorSize{ descriptorSize_ }
25020     {
25021     }
25022 
25023     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutHostMappingInfoVALVE( DescriptorSetLayoutHostMappingInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25024 
DescriptorSetLayoutHostMappingInfoVALVEVULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25025     DescriptorSetLayoutHostMappingInfoVALVE( VkDescriptorSetLayoutHostMappingInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
25026       : DescriptorSetLayoutHostMappingInfoVALVE( *reinterpret_cast<DescriptorSetLayoutHostMappingInfoVALVE const *>( &rhs ) )
25027     {
25028     }
25029 
25030     DescriptorSetLayoutHostMappingInfoVALVE & operator=( DescriptorSetLayoutHostMappingInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25031 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25032 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25033     DescriptorSetLayoutHostMappingInfoVALVE & operator=( VkDescriptorSetLayoutHostMappingInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
25034     {
25035       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE const *>( &rhs );
25036       return *this;
25037     }
25038 
25039 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25040     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutHostMappingInfoVALVE & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
25041     {
25042       pNext = pNext_;
25043       return *this;
25044     }
25045 
setDescriptorOffsetVULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25046     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutHostMappingInfoVALVE & setDescriptorOffset( size_t descriptorOffset_ ) VULKAN_HPP_NOEXCEPT
25047     {
25048       descriptorOffset = descriptorOffset_;
25049       return *this;
25050     }
25051 
setDescriptorSizeVULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25052     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutHostMappingInfoVALVE & setDescriptorSize( uint32_t descriptorSize_ ) VULKAN_HPP_NOEXCEPT
25053     {
25054       descriptorSize = descriptorSize_;
25055       return *this;
25056     }
25057 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25058 
operator VkDescriptorSetLayoutHostMappingInfoVALVE const&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25059     operator VkDescriptorSetLayoutHostMappingInfoVALVE const &() const VULKAN_HPP_NOEXCEPT
25060     {
25061       return *reinterpret_cast<const VkDescriptorSetLayoutHostMappingInfoVALVE *>( this );
25062     }
25063 
operator VkDescriptorSetLayoutHostMappingInfoVALVE&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25064     operator VkDescriptorSetLayoutHostMappingInfoVALVE &() VULKAN_HPP_NOEXCEPT
25065     {
25066       return *reinterpret_cast<VkDescriptorSetLayoutHostMappingInfoVALVE *>( this );
25067     }
25068 
25069 #if defined( VULKAN_HPP_USE_REFLECT )
25070 #  if 14 <= VULKAN_HPP_CPP_VERSION
25071     auto
25072 #  else
25073     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, size_t const &, uint32_t const &>
25074 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25075       reflect() const VULKAN_HPP_NOEXCEPT
25076     {
25077       return std::tie( sType, pNext, descriptorOffset, descriptorSize );
25078     }
25079 #endif
25080 
25081 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25082     auto operator<=>( DescriptorSetLayoutHostMappingInfoVALVE const & ) const = default;
25083 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25084     bool operator==( DescriptorSetLayoutHostMappingInfoVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT
25085     {
25086 #  if defined( VULKAN_HPP_USE_REFLECT )
25087       return this->reflect() == rhs.reflect();
25088 #  else
25089       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorOffset == rhs.descriptorOffset ) && ( descriptorSize == rhs.descriptorSize );
25090 #  endif
25091     }
25092 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE25093     bool operator!=( DescriptorSetLayoutHostMappingInfoVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT
25094     {
25095       return !operator==( rhs );
25096     }
25097 #endif
25098 
25099   public:
25100     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::eDescriptorSetLayoutHostMappingInfoVALVE;
25101     void *                              pNext            = {};
25102     size_t                              descriptorOffset = {};
25103     uint32_t                            descriptorSize   = {};
25104   };
25105 
25106   template <>
25107   struct CppType<StructureType, StructureType::eDescriptorSetLayoutHostMappingInfoVALVE>
25108   {
25109     using Type = DescriptorSetLayoutHostMappingInfoVALVE;
25110   };
25111 
25112   struct DescriptorSetLayoutSupport
25113   {
25114     using NativeType = VkDescriptorSetLayoutSupport;
25115 
25116     static const bool                                  allowDuplicate = false;
25117     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorSetLayoutSupport;
25118 
25119 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetLayoutSupportVULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport25120     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutSupport( VULKAN_HPP_NAMESPACE::Bool32 supported_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
25121       : pNext{ pNext_ }
25122       , supported{ supported_ }
25123     {
25124     }
25125 
25126     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutSupport( DescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25127 
DescriptorSetLayoutSupportVULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport25128     DescriptorSetLayoutSupport( VkDescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT
25129       : DescriptorSetLayoutSupport( *reinterpret_cast<DescriptorSetLayoutSupport const *>( &rhs ) )
25130     {
25131     }
25132 
25133     DescriptorSetLayoutSupport & operator=( DescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25134 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25135 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport25136     DescriptorSetLayoutSupport & operator=( VkDescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT
25137     {
25138       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport const *>( &rhs );
25139       return *this;
25140     }
25141 
operator VkDescriptorSetLayoutSupport const&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport25142     operator VkDescriptorSetLayoutSupport const &() const VULKAN_HPP_NOEXCEPT
25143     {
25144       return *reinterpret_cast<const VkDescriptorSetLayoutSupport *>( this );
25145     }
25146 
operator VkDescriptorSetLayoutSupport&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport25147     operator VkDescriptorSetLayoutSupport &() VULKAN_HPP_NOEXCEPT
25148     {
25149       return *reinterpret_cast<VkDescriptorSetLayoutSupport *>( this );
25150     }
25151 
25152 #if defined( VULKAN_HPP_USE_REFLECT )
25153 #  if 14 <= VULKAN_HPP_CPP_VERSION
25154     auto
25155 #  else
25156     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
25157 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport25158       reflect() const VULKAN_HPP_NOEXCEPT
25159     {
25160       return std::tie( sType, pNext, supported );
25161     }
25162 #endif
25163 
25164 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25165     auto operator<=>( DescriptorSetLayoutSupport const & ) const = default;
25166 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport25167     bool operator==( DescriptorSetLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT
25168     {
25169 #  if defined( VULKAN_HPP_USE_REFLECT )
25170       return this->reflect() == rhs.reflect();
25171 #  else
25172       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supported == rhs.supported );
25173 #  endif
25174     }
25175 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport25176     bool operator!=( DescriptorSetLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT
25177     {
25178       return !operator==( rhs );
25179     }
25180 #endif
25181 
25182   public:
25183     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eDescriptorSetLayoutSupport;
25184     void *                              pNext     = {};
25185     VULKAN_HPP_NAMESPACE::Bool32        supported = {};
25186   };
25187 
25188   template <>
25189   struct CppType<StructureType, StructureType::eDescriptorSetLayoutSupport>
25190   {
25191     using Type = DescriptorSetLayoutSupport;
25192   };
25193 
25194   using DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport;
25195 
25196   struct DescriptorSetVariableDescriptorCountAllocateInfo
25197   {
25198     using NativeType = VkDescriptorSetVariableDescriptorCountAllocateInfo;
25199 
25200     static const bool                                  allowDuplicate = false;
25201     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo;
25202 
25203 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetVariableDescriptorCountAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25204     VULKAN_HPP_CONSTEXPR DescriptorSetVariableDescriptorCountAllocateInfo( uint32_t         descriptorSetCount_ = {},
25205                                                                            const uint32_t * pDescriptorCounts_  = {},
25206                                                                            const void *     pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
25207       : pNext{ pNext_ }
25208       , descriptorSetCount{ descriptorSetCount_ }
25209       , pDescriptorCounts{ pDescriptorCounts_ }
25210     {
25211     }
25212 
25213     VULKAN_HPP_CONSTEXPR
25214       DescriptorSetVariableDescriptorCountAllocateInfo( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25215 
DescriptorSetVariableDescriptorCountAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25216     DescriptorSetVariableDescriptorCountAllocateInfo( VkDescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
25217       : DescriptorSetVariableDescriptorCountAllocateInfo( *reinterpret_cast<DescriptorSetVariableDescriptorCountAllocateInfo const *>( &rhs ) )
25218     {
25219     }
25220 
25221 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorSetVariableDescriptorCountAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25222     DescriptorSetVariableDescriptorCountAllocateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & descriptorCounts_,
25223                                                       const void *                                                          pNext_ = nullptr )
25224       : pNext( pNext_ ), descriptorSetCount( static_cast<uint32_t>( descriptorCounts_.size() ) ), pDescriptorCounts( descriptorCounts_.data() )
25225     {
25226     }
25227 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25228 
25229     DescriptorSetVariableDescriptorCountAllocateInfo & operator=( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25230 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25231 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25232     DescriptorSetVariableDescriptorCountAllocateInfo & operator=( VkDescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
25233     {
25234       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo const *>( &rhs );
25235       return *this;
25236     }
25237 
25238 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25239     VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
25240     {
25241       pNext = pNext_;
25242       return *this;
25243     }
25244 
setDescriptorSetCountVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25245     VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo & setDescriptorSetCount( uint32_t descriptorSetCount_ ) VULKAN_HPP_NOEXCEPT
25246     {
25247       descriptorSetCount = descriptorSetCount_;
25248       return *this;
25249     }
25250 
setPDescriptorCountsVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25251     VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo & setPDescriptorCounts( const uint32_t * pDescriptorCounts_ ) VULKAN_HPP_NOEXCEPT
25252     {
25253       pDescriptorCounts = pDescriptorCounts_;
25254       return *this;
25255     }
25256 
25257 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
25258     DescriptorSetVariableDescriptorCountAllocateInfo &
setDescriptorCountsVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25259       setDescriptorCounts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & descriptorCounts_ ) VULKAN_HPP_NOEXCEPT
25260     {
25261       descriptorSetCount = static_cast<uint32_t>( descriptorCounts_.size() );
25262       pDescriptorCounts  = descriptorCounts_.data();
25263       return *this;
25264     }
25265 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25266 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25267 
operator VkDescriptorSetVariableDescriptorCountAllocateInfo const&VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25268     operator VkDescriptorSetVariableDescriptorCountAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
25269     {
25270       return *reinterpret_cast<const VkDescriptorSetVariableDescriptorCountAllocateInfo *>( this );
25271     }
25272 
operator VkDescriptorSetVariableDescriptorCountAllocateInfo&VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25273     operator VkDescriptorSetVariableDescriptorCountAllocateInfo &() VULKAN_HPP_NOEXCEPT
25274     {
25275       return *reinterpret_cast<VkDescriptorSetVariableDescriptorCountAllocateInfo *>( this );
25276     }
25277 
25278 #if defined( VULKAN_HPP_USE_REFLECT )
25279 #  if 14 <= VULKAN_HPP_CPP_VERSION
25280     auto
25281 #  else
25282     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const uint32_t * const &>
25283 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25284       reflect() const VULKAN_HPP_NOEXCEPT
25285     {
25286       return std::tie( sType, pNext, descriptorSetCount, pDescriptorCounts );
25287     }
25288 #endif
25289 
25290 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25291     auto operator<=>( DescriptorSetVariableDescriptorCountAllocateInfo const & ) const = default;
25292 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25293     bool operator==( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
25294     {
25295 #  if defined( VULKAN_HPP_USE_REFLECT )
25296       return this->reflect() == rhs.reflect();
25297 #  else
25298       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorSetCount == rhs.descriptorSetCount ) &&
25299              ( pDescriptorCounts == rhs.pDescriptorCounts );
25300 #  endif
25301     }
25302 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo25303     bool operator!=( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
25304     {
25305       return !operator==( rhs );
25306     }
25307 #endif
25308 
25309   public:
25310     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo;
25311     const void *                        pNext              = {};
25312     uint32_t                            descriptorSetCount = {};
25313     const uint32_t *                    pDescriptorCounts  = {};
25314   };
25315 
25316   template <>
25317   struct CppType<StructureType, StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo>
25318   {
25319     using Type = DescriptorSetVariableDescriptorCountAllocateInfo;
25320   };
25321 
25322   using DescriptorSetVariableDescriptorCountAllocateInfoEXT = DescriptorSetVariableDescriptorCountAllocateInfo;
25323 
25324   struct DescriptorSetVariableDescriptorCountLayoutSupport
25325   {
25326     using NativeType = VkDescriptorSetVariableDescriptorCountLayoutSupport;
25327 
25328     static const bool                                  allowDuplicate = false;
25329     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport;
25330 
25331 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetVariableDescriptorCountLayoutSupportVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport25332     VULKAN_HPP_CONSTEXPR DescriptorSetVariableDescriptorCountLayoutSupport( uint32_t maxVariableDescriptorCount_ = {},
25333                                                                             void *   pNext_                      = nullptr ) VULKAN_HPP_NOEXCEPT
25334       : pNext{ pNext_ }
25335       , maxVariableDescriptorCount{ maxVariableDescriptorCount_ }
25336     {
25337     }
25338 
25339     VULKAN_HPP_CONSTEXPR
25340       DescriptorSetVariableDescriptorCountLayoutSupport( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25341 
DescriptorSetVariableDescriptorCountLayoutSupportVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport25342     DescriptorSetVariableDescriptorCountLayoutSupport( VkDescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT
25343       : DescriptorSetVariableDescriptorCountLayoutSupport( *reinterpret_cast<DescriptorSetVariableDescriptorCountLayoutSupport const *>( &rhs ) )
25344     {
25345     }
25346 
25347     DescriptorSetVariableDescriptorCountLayoutSupport &
25348       operator=( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25349 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25350 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport25351     DescriptorSetVariableDescriptorCountLayoutSupport & operator=( VkDescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT
25352     {
25353       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport const *>( &rhs );
25354       return *this;
25355     }
25356 
operator VkDescriptorSetVariableDescriptorCountLayoutSupport const&VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport25357     operator VkDescriptorSetVariableDescriptorCountLayoutSupport const &() const VULKAN_HPP_NOEXCEPT
25358     {
25359       return *reinterpret_cast<const VkDescriptorSetVariableDescriptorCountLayoutSupport *>( this );
25360     }
25361 
operator VkDescriptorSetVariableDescriptorCountLayoutSupport&VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport25362     operator VkDescriptorSetVariableDescriptorCountLayoutSupport &() VULKAN_HPP_NOEXCEPT
25363     {
25364       return *reinterpret_cast<VkDescriptorSetVariableDescriptorCountLayoutSupport *>( this );
25365     }
25366 
25367 #if defined( VULKAN_HPP_USE_REFLECT )
25368 #  if 14 <= VULKAN_HPP_CPP_VERSION
25369     auto
25370 #  else
25371     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
25372 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport25373       reflect() const VULKAN_HPP_NOEXCEPT
25374     {
25375       return std::tie( sType, pNext, maxVariableDescriptorCount );
25376     }
25377 #endif
25378 
25379 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25380     auto operator<=>( DescriptorSetVariableDescriptorCountLayoutSupport const & ) const = default;
25381 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport25382     bool operator==( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT
25383     {
25384 #  if defined( VULKAN_HPP_USE_REFLECT )
25385       return this->reflect() == rhs.reflect();
25386 #  else
25387       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxVariableDescriptorCount == rhs.maxVariableDescriptorCount );
25388 #  endif
25389     }
25390 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport25391     bool operator!=( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT
25392     {
25393       return !operator==( rhs );
25394     }
25395 #endif
25396 
25397   public:
25398     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport;
25399     void *                              pNext                      = {};
25400     uint32_t                            maxVariableDescriptorCount = {};
25401   };
25402 
25403   template <>
25404   struct CppType<StructureType, StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport>
25405   {
25406     using Type = DescriptorSetVariableDescriptorCountLayoutSupport;
25407   };
25408 
25409   using DescriptorSetVariableDescriptorCountLayoutSupportEXT = DescriptorSetVariableDescriptorCountLayoutSupport;
25410 
25411   struct DescriptorUpdateTemplateEntry
25412   {
25413     using NativeType = VkDescriptorUpdateTemplateEntry;
25414 
25415 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorUpdateTemplateEntryVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25416     VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateEntry( uint32_t                             dstBinding_      = {},
25417                                                         uint32_t                             dstArrayElement_ = {},
25418                                                         uint32_t                             descriptorCount_ = {},
25419                                                         VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_  = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler,
25420                                                         size_t                               offset_          = {},
25421                                                         size_t                               stride_          = {} ) VULKAN_HPP_NOEXCEPT
25422       : dstBinding{ dstBinding_ }
25423       , dstArrayElement{ dstArrayElement_ }
25424       , descriptorCount{ descriptorCount_ }
25425       , descriptorType{ descriptorType_ }
25426       , offset{ offset_ }
25427       , stride{ stride_ }
25428     {
25429     }
25430 
25431     VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateEntry( DescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25432 
DescriptorUpdateTemplateEntryVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25433     DescriptorUpdateTemplateEntry( VkDescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT
25434       : DescriptorUpdateTemplateEntry( *reinterpret_cast<DescriptorUpdateTemplateEntry const *>( &rhs ) )
25435     {
25436     }
25437 
25438     DescriptorUpdateTemplateEntry & operator=( DescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25439 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25440 
operator =VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25441     DescriptorUpdateTemplateEntry & operator=( VkDescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT
25442     {
25443       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry const *>( &rhs );
25444       return *this;
25445     }
25446 
25447 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setDstBindingVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25448     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setDstBinding( uint32_t dstBinding_ ) VULKAN_HPP_NOEXCEPT
25449     {
25450       dstBinding = dstBinding_;
25451       return *this;
25452     }
25453 
setDstArrayElementVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25454     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setDstArrayElement( uint32_t dstArrayElement_ ) VULKAN_HPP_NOEXCEPT
25455     {
25456       dstArrayElement = dstArrayElement_;
25457       return *this;
25458     }
25459 
setDescriptorCountVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25460     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT
25461     {
25462       descriptorCount = descriptorCount_;
25463       return *this;
25464     }
25465 
setDescriptorTypeVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25466     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT
25467     {
25468       descriptorType = descriptorType_;
25469       return *this;
25470     }
25471 
setOffsetVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25472     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setOffset( size_t offset_ ) VULKAN_HPP_NOEXCEPT
25473     {
25474       offset = offset_;
25475       return *this;
25476     }
25477 
setStrideVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25478     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setStride( size_t stride_ ) VULKAN_HPP_NOEXCEPT
25479     {
25480       stride = stride_;
25481       return *this;
25482     }
25483 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25484 
operator VkDescriptorUpdateTemplateEntry const&VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25485     operator VkDescriptorUpdateTemplateEntry const &() const VULKAN_HPP_NOEXCEPT
25486     {
25487       return *reinterpret_cast<const VkDescriptorUpdateTemplateEntry *>( this );
25488     }
25489 
operator VkDescriptorUpdateTemplateEntry&VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25490     operator VkDescriptorUpdateTemplateEntry &() VULKAN_HPP_NOEXCEPT
25491     {
25492       return *reinterpret_cast<VkDescriptorUpdateTemplateEntry *>( this );
25493     }
25494 
25495 #if defined( VULKAN_HPP_USE_REFLECT )
25496 #  if 14 <= VULKAN_HPP_CPP_VERSION
25497     auto
25498 #  else
25499     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::DescriptorType const &, size_t const &, size_t const &>
25500 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25501       reflect() const VULKAN_HPP_NOEXCEPT
25502     {
25503       return std::tie( dstBinding, dstArrayElement, descriptorCount, descriptorType, offset, stride );
25504     }
25505 #endif
25506 
25507 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25508     auto operator<=>( DescriptorUpdateTemplateEntry const & ) const = default;
25509 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25510     bool operator==( DescriptorUpdateTemplateEntry const & rhs ) const VULKAN_HPP_NOEXCEPT
25511     {
25512 #  if defined( VULKAN_HPP_USE_REFLECT )
25513       return this->reflect() == rhs.reflect();
25514 #  else
25515       return ( dstBinding == rhs.dstBinding ) && ( dstArrayElement == rhs.dstArrayElement ) && ( descriptorCount == rhs.descriptorCount ) &&
25516              ( descriptorType == rhs.descriptorType ) && ( offset == rhs.offset ) && ( stride == rhs.stride );
25517 #  endif
25518     }
25519 
operator !=VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry25520     bool operator!=( DescriptorUpdateTemplateEntry const & rhs ) const VULKAN_HPP_NOEXCEPT
25521     {
25522       return !operator==( rhs );
25523     }
25524 #endif
25525 
25526   public:
25527     uint32_t                             dstBinding      = {};
25528     uint32_t                             dstArrayElement = {};
25529     uint32_t                             descriptorCount = {};
25530     VULKAN_HPP_NAMESPACE::DescriptorType descriptorType  = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler;
25531     size_t                               offset          = {};
25532     size_t                               stride          = {};
25533   };
25534 
25535   using DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry;
25536 
25537   struct DescriptorUpdateTemplateCreateInfo
25538   {
25539     using NativeType = VkDescriptorUpdateTemplateCreateInfo;
25540 
25541     static const bool                                  allowDuplicate = false;
25542     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDescriptorUpdateTemplateCreateInfo;
25543 
25544 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorUpdateTemplateCreateInfoVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25545     VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateCreateInfo(
25546       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags   flags_                      = {},
25547       uint32_t                                                    descriptorUpdateEntryCount_ = {},
25548       const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry * pDescriptorUpdateEntries_   = {},
25549       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType          templateType_        = VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType::eDescriptorSet,
25550       VULKAN_HPP_NAMESPACE::DescriptorSetLayout                   descriptorSetLayout_ = {},
25551       VULKAN_HPP_NAMESPACE::PipelineBindPoint                     pipelineBindPoint_   = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
25552       VULKAN_HPP_NAMESPACE::PipelineLayout                        pipelineLayout_      = {},
25553       uint32_t                                                    set_                 = {},
25554       const void *                                                pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
25555       : pNext{ pNext_ }
25556       , flags{ flags_ }
25557       , descriptorUpdateEntryCount{ descriptorUpdateEntryCount_ }
25558       , pDescriptorUpdateEntries{ pDescriptorUpdateEntries_ }
25559       , templateType{ templateType_ }
25560       , descriptorSetLayout{ descriptorSetLayout_ }
25561       , pipelineBindPoint{ pipelineBindPoint_ }
25562       , pipelineLayout{ pipelineLayout_ }
25563       , set{ set_ }
25564     {
25565     }
25566 
25567     VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateCreateInfo( DescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25568 
DescriptorUpdateTemplateCreateInfoVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25569     DescriptorUpdateTemplateCreateInfo( VkDescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
25570       : DescriptorUpdateTemplateCreateInfo( *reinterpret_cast<DescriptorUpdateTemplateCreateInfo const *>( &rhs ) )
25571     {
25572     }
25573 
25574 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorUpdateTemplateCreateInfoVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25575     DescriptorUpdateTemplateCreateInfo(
25576       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags                                                        flags_,
25577       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry> const & descriptorUpdateEntries_,
25578       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType templateType_        = VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType::eDescriptorSet,
25579       VULKAN_HPP_NAMESPACE::DescriptorSetLayout          descriptorSetLayout_ = {},
25580       VULKAN_HPP_NAMESPACE::PipelineBindPoint            pipelineBindPoint_   = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
25581       VULKAN_HPP_NAMESPACE::PipelineLayout               pipelineLayout_      = {},
25582       uint32_t                                           set_                 = {},
25583       const void *                                       pNext_               = nullptr )
25584       : pNext( pNext_ )
25585       , flags( flags_ )
25586       , descriptorUpdateEntryCount( static_cast<uint32_t>( descriptorUpdateEntries_.size() ) )
25587       , pDescriptorUpdateEntries( descriptorUpdateEntries_.data() )
25588       , templateType( templateType_ )
25589       , descriptorSetLayout( descriptorSetLayout_ )
25590       , pipelineBindPoint( pipelineBindPoint_ )
25591       , pipelineLayout( pipelineLayout_ )
25592       , set( set_ )
25593     {
25594     }
25595 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25596 
25597     DescriptorUpdateTemplateCreateInfo & operator=( DescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25598 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25599 
operator =VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25600     DescriptorUpdateTemplateCreateInfo & operator=( VkDescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
25601     {
25602       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const *>( &rhs );
25603       return *this;
25604     }
25605 
25606 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25607     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
25608     {
25609       pNext = pNext_;
25610       return *this;
25611     }
25612 
25613     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25614       setFlags( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
25615     {
25616       flags = flags_;
25617       return *this;
25618     }
25619 
setDescriptorUpdateEntryCountVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25620     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ ) VULKAN_HPP_NOEXCEPT
25621     {
25622       descriptorUpdateEntryCount = descriptorUpdateEntryCount_;
25623       return *this;
25624     }
25625 
25626     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo &
setPDescriptorUpdateEntriesVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25627       setPDescriptorUpdateEntries( const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry * pDescriptorUpdateEntries_ ) VULKAN_HPP_NOEXCEPT
25628     {
25629       pDescriptorUpdateEntries = pDescriptorUpdateEntries_;
25630       return *this;
25631     }
25632 
25633 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDescriptorUpdateEntriesVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25634     DescriptorUpdateTemplateCreateInfo & setDescriptorUpdateEntries(
25635       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry> const & descriptorUpdateEntries_ )
25636       VULKAN_HPP_NOEXCEPT
25637     {
25638       descriptorUpdateEntryCount = static_cast<uint32_t>( descriptorUpdateEntries_.size() );
25639       pDescriptorUpdateEntries   = descriptorUpdateEntries_.data();
25640       return *this;
25641     }
25642 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25643 
25644     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo &
setTemplateTypeVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25645       setTemplateType( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType templateType_ ) VULKAN_HPP_NOEXCEPT
25646     {
25647       templateType = templateType_;
25648       return *this;
25649     }
25650 
25651     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo &
setDescriptorSetLayoutVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25652       setDescriptorSetLayout( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout_ ) VULKAN_HPP_NOEXCEPT
25653     {
25654       descriptorSetLayout = descriptorSetLayout_;
25655       return *this;
25656     }
25657 
25658     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo &
setPipelineBindPointVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25659       setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
25660     {
25661       pipelineBindPoint = pipelineBindPoint_;
25662       return *this;
25663     }
25664 
setPipelineLayoutVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25665     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setPipelineLayout( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout_ ) VULKAN_HPP_NOEXCEPT
25666     {
25667       pipelineLayout = pipelineLayout_;
25668       return *this;
25669     }
25670 
setSetVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25671     VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setSet( uint32_t set_ ) VULKAN_HPP_NOEXCEPT
25672     {
25673       set = set_;
25674       return *this;
25675     }
25676 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25677 
operator VkDescriptorUpdateTemplateCreateInfo const&VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25678     operator VkDescriptorUpdateTemplateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
25679     {
25680       return *reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfo *>( this );
25681     }
25682 
operator VkDescriptorUpdateTemplateCreateInfo&VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25683     operator VkDescriptorUpdateTemplateCreateInfo &() VULKAN_HPP_NOEXCEPT
25684     {
25685       return *reinterpret_cast<VkDescriptorUpdateTemplateCreateInfo *>( this );
25686     }
25687 
25688 #if defined( VULKAN_HPP_USE_REFLECT )
25689 #  if 14 <= VULKAN_HPP_CPP_VERSION
25690     auto
25691 #  else
25692     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
25693                const void * const &,
25694                VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags const &,
25695                uint32_t const &,
25696                const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry * const &,
25697                VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType const &,
25698                VULKAN_HPP_NAMESPACE::DescriptorSetLayout const &,
25699                VULKAN_HPP_NAMESPACE::PipelineBindPoint const &,
25700                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
25701                uint32_t const &>
25702 #  endif
reflectVULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25703       reflect() const VULKAN_HPP_NOEXCEPT
25704     {
25705       return std::tie(
25706         sType, pNext, flags, descriptorUpdateEntryCount, pDescriptorUpdateEntries, templateType, descriptorSetLayout, pipelineBindPoint, pipelineLayout, set );
25707     }
25708 #endif
25709 
25710 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25711     auto operator<=>( DescriptorUpdateTemplateCreateInfo const & ) const = default;
25712 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25713     bool operator==( DescriptorUpdateTemplateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
25714     {
25715 #  if defined( VULKAN_HPP_USE_REFLECT )
25716       return this->reflect() == rhs.reflect();
25717 #  else
25718       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount ) &&
25719              ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries ) && ( templateType == rhs.templateType ) &&
25720              ( descriptorSetLayout == rhs.descriptorSetLayout ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) && ( pipelineLayout == rhs.pipelineLayout ) &&
25721              ( set == rhs.set );
25722 #  endif
25723     }
25724 
operator !=VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo25725     bool operator!=( DescriptorUpdateTemplateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
25726     {
25727       return !operator==( rhs );
25728     }
25729 #endif
25730 
25731   public:
25732     VULKAN_HPP_NAMESPACE::StructureType                         sType                      = StructureType::eDescriptorUpdateTemplateCreateInfo;
25733     const void *                                                pNext                      = {};
25734     VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags   flags                      = {};
25735     uint32_t                                                    descriptorUpdateEntryCount = {};
25736     const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry * pDescriptorUpdateEntries   = {};
25737     VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType          templateType               = VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType::eDescriptorSet;
25738     VULKAN_HPP_NAMESPACE::DescriptorSetLayout                   descriptorSetLayout        = {};
25739     VULKAN_HPP_NAMESPACE::PipelineBindPoint                     pipelineBindPoint          = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
25740     VULKAN_HPP_NAMESPACE::PipelineLayout                        pipelineLayout             = {};
25741     uint32_t                                                    set                        = {};
25742   };
25743 
25744   template <>
25745   struct CppType<StructureType, StructureType::eDescriptorUpdateTemplateCreateInfo>
25746   {
25747     using Type = DescriptorUpdateTemplateCreateInfo;
25748   };
25749 
25750   using DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo;
25751 
25752   struct DeviceAddressBindingCallbackDataEXT
25753   {
25754     using NativeType = VkDeviceAddressBindingCallbackDataEXT;
25755 
25756     static const bool                                  allowDuplicate = false;
25757     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceAddressBindingCallbackDataEXT;
25758 
25759 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceAddressBindingCallbackDataEXTVULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT25760     VULKAN_HPP_CONSTEXPR DeviceAddressBindingCallbackDataEXT(
25761       VULKAN_HPP_NAMESPACE::DeviceAddressBindingFlagsEXT flags_       = {},
25762       VULKAN_HPP_NAMESPACE::DeviceAddress                baseAddress_ = {},
25763       VULKAN_HPP_NAMESPACE::DeviceSize                   size_        = {},
25764       VULKAN_HPP_NAMESPACE::DeviceAddressBindingTypeEXT  bindingType_ = VULKAN_HPP_NAMESPACE::DeviceAddressBindingTypeEXT::eBind,
25765       void *                                             pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
25766       : pNext{ pNext_ }
25767       , flags{ flags_ }
25768       , baseAddress{ baseAddress_ }
25769       , size{ size_ }
25770       , bindingType{ bindingType_ }
25771     {
25772     }
25773 
25774     VULKAN_HPP_CONSTEXPR DeviceAddressBindingCallbackDataEXT( DeviceAddressBindingCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25775 
DeviceAddressBindingCallbackDataEXTVULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT25776     DeviceAddressBindingCallbackDataEXT( VkDeviceAddressBindingCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
25777       : DeviceAddressBindingCallbackDataEXT( *reinterpret_cast<DeviceAddressBindingCallbackDataEXT const *>( &rhs ) )
25778     {
25779     }
25780 
25781     DeviceAddressBindingCallbackDataEXT & operator=( DeviceAddressBindingCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25782 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25783 
operator =VULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT25784     DeviceAddressBindingCallbackDataEXT & operator=( VkDeviceAddressBindingCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
25785     {
25786       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT const *>( &rhs );
25787       return *this;
25788     }
25789 
25790 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT25791     VULKAN_HPP_CONSTEXPR_14 DeviceAddressBindingCallbackDataEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
25792     {
25793       pNext = pNext_;
25794       return *this;
25795     }
25796 
setFlagsVULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT25797     VULKAN_HPP_CONSTEXPR_14 DeviceAddressBindingCallbackDataEXT & setFlags( VULKAN_HPP_NAMESPACE::DeviceAddressBindingFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
25798     {
25799       flags = flags_;
25800       return *this;
25801     }
25802 
setBaseAddressVULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT25803     VULKAN_HPP_CONSTEXPR_14 DeviceAddressBindingCallbackDataEXT & setBaseAddress( VULKAN_HPP_NAMESPACE::DeviceAddress baseAddress_ ) VULKAN_HPP_NOEXCEPT
25804     {
25805       baseAddress = baseAddress_;
25806       return *this;
25807     }
25808 
setSizeVULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT25809     VULKAN_HPP_CONSTEXPR_14 DeviceAddressBindingCallbackDataEXT & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
25810     {
25811       size = size_;
25812       return *this;
25813     }
25814 
25815     VULKAN_HPP_CONSTEXPR_14 DeviceAddressBindingCallbackDataEXT &
setBindingTypeVULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT25816       setBindingType( VULKAN_HPP_NAMESPACE::DeviceAddressBindingTypeEXT bindingType_ ) VULKAN_HPP_NOEXCEPT
25817     {
25818       bindingType = bindingType_;
25819       return *this;
25820     }
25821 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25822 
operator VkDeviceAddressBindingCallbackDataEXT const&VULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT25823     operator VkDeviceAddressBindingCallbackDataEXT const &() const VULKAN_HPP_NOEXCEPT
25824     {
25825       return *reinterpret_cast<const VkDeviceAddressBindingCallbackDataEXT *>( this );
25826     }
25827 
operator VkDeviceAddressBindingCallbackDataEXT&VULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT25828     operator VkDeviceAddressBindingCallbackDataEXT &() VULKAN_HPP_NOEXCEPT
25829     {
25830       return *reinterpret_cast<VkDeviceAddressBindingCallbackDataEXT *>( this );
25831     }
25832 
25833 #if defined( VULKAN_HPP_USE_REFLECT )
25834 #  if 14 <= VULKAN_HPP_CPP_VERSION
25835     auto
25836 #  else
25837     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
25838                void * const &,
25839                VULKAN_HPP_NAMESPACE::DeviceAddressBindingFlagsEXT const &,
25840                VULKAN_HPP_NAMESPACE::DeviceAddress const &,
25841                VULKAN_HPP_NAMESPACE::DeviceSize const &,
25842                VULKAN_HPP_NAMESPACE::DeviceAddressBindingTypeEXT const &>
25843 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT25844       reflect() const VULKAN_HPP_NOEXCEPT
25845     {
25846       return std::tie( sType, pNext, flags, baseAddress, size, bindingType );
25847     }
25848 #endif
25849 
25850 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25851     auto operator<=>( DeviceAddressBindingCallbackDataEXT const & ) const = default;
25852 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT25853     bool operator==( DeviceAddressBindingCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
25854     {
25855 #  if defined( VULKAN_HPP_USE_REFLECT )
25856       return this->reflect() == rhs.reflect();
25857 #  else
25858       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( baseAddress == rhs.baseAddress ) && ( size == rhs.size ) &&
25859              ( bindingType == rhs.bindingType );
25860 #  endif
25861     }
25862 
operator !=VULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT25863     bool operator!=( DeviceAddressBindingCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
25864     {
25865       return !operator==( rhs );
25866     }
25867 #endif
25868 
25869   public:
25870     VULKAN_HPP_NAMESPACE::StructureType                sType       = StructureType::eDeviceAddressBindingCallbackDataEXT;
25871     void *                                             pNext       = {};
25872     VULKAN_HPP_NAMESPACE::DeviceAddressBindingFlagsEXT flags       = {};
25873     VULKAN_HPP_NAMESPACE::DeviceAddress                baseAddress = {};
25874     VULKAN_HPP_NAMESPACE::DeviceSize                   size        = {};
25875     VULKAN_HPP_NAMESPACE::DeviceAddressBindingTypeEXT  bindingType = VULKAN_HPP_NAMESPACE::DeviceAddressBindingTypeEXT::eBind;
25876   };
25877 
25878   template <>
25879   struct CppType<StructureType, StructureType::eDeviceAddressBindingCallbackDataEXT>
25880   {
25881     using Type = DeviceAddressBindingCallbackDataEXT;
25882   };
25883 
25884   struct DeviceBufferMemoryRequirements
25885   {
25886     using NativeType = VkDeviceBufferMemoryRequirements;
25887 
25888     static const bool                                  allowDuplicate = false;
25889     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceBufferMemoryRequirements;
25890 
25891 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceBufferMemoryRequirementsVULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements25892     VULKAN_HPP_CONSTEXPR DeviceBufferMemoryRequirements( const VULKAN_HPP_NAMESPACE::BufferCreateInfo * pCreateInfo_ = {},
25893                                                          const void *                                   pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
25894       : pNext{ pNext_ }
25895       , pCreateInfo{ pCreateInfo_ }
25896     {
25897     }
25898 
25899     VULKAN_HPP_CONSTEXPR DeviceBufferMemoryRequirements( DeviceBufferMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25900 
DeviceBufferMemoryRequirementsVULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements25901     DeviceBufferMemoryRequirements( VkDeviceBufferMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
25902       : DeviceBufferMemoryRequirements( *reinterpret_cast<DeviceBufferMemoryRequirements const *>( &rhs ) )
25903     {
25904     }
25905 
25906     DeviceBufferMemoryRequirements & operator=( DeviceBufferMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25907 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25908 
operator =VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements25909     DeviceBufferMemoryRequirements & operator=( VkDeviceBufferMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
25910     {
25911       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements const *>( &rhs );
25912       return *this;
25913     }
25914 
25915 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements25916     VULKAN_HPP_CONSTEXPR_14 DeviceBufferMemoryRequirements & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
25917     {
25918       pNext = pNext_;
25919       return *this;
25920     }
25921 
setPCreateInfoVULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements25922     VULKAN_HPP_CONSTEXPR_14 DeviceBufferMemoryRequirements & setPCreateInfo( const VULKAN_HPP_NAMESPACE::BufferCreateInfo * pCreateInfo_ ) VULKAN_HPP_NOEXCEPT
25923     {
25924       pCreateInfo = pCreateInfo_;
25925       return *this;
25926     }
25927 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25928 
operator VkDeviceBufferMemoryRequirements const&VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements25929     operator VkDeviceBufferMemoryRequirements const &() const VULKAN_HPP_NOEXCEPT
25930     {
25931       return *reinterpret_cast<const VkDeviceBufferMemoryRequirements *>( this );
25932     }
25933 
operator VkDeviceBufferMemoryRequirements&VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements25934     operator VkDeviceBufferMemoryRequirements &() VULKAN_HPP_NOEXCEPT
25935     {
25936       return *reinterpret_cast<VkDeviceBufferMemoryRequirements *>( this );
25937     }
25938 
25939 #if defined( VULKAN_HPP_USE_REFLECT )
25940 #  if 14 <= VULKAN_HPP_CPP_VERSION
25941     auto
25942 #  else
25943     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const VULKAN_HPP_NAMESPACE::BufferCreateInfo * const &>
25944 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements25945       reflect() const VULKAN_HPP_NOEXCEPT
25946     {
25947       return std::tie( sType, pNext, pCreateInfo );
25948     }
25949 #endif
25950 
25951 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
25952     auto operator<=>( DeviceBufferMemoryRequirements const & ) const = default;
25953 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements25954     bool operator==( DeviceBufferMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
25955     {
25956 #  if defined( VULKAN_HPP_USE_REFLECT )
25957       return this->reflect() == rhs.reflect();
25958 #  else
25959       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pCreateInfo == rhs.pCreateInfo );
25960 #  endif
25961     }
25962 
operator !=VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements25963     bool operator!=( DeviceBufferMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
25964     {
25965       return !operator==( rhs );
25966     }
25967 #endif
25968 
25969   public:
25970     VULKAN_HPP_NAMESPACE::StructureType            sType       = StructureType::eDeviceBufferMemoryRequirements;
25971     const void *                                   pNext       = {};
25972     const VULKAN_HPP_NAMESPACE::BufferCreateInfo * pCreateInfo = {};
25973   };
25974 
25975   template <>
25976   struct CppType<StructureType, StructureType::eDeviceBufferMemoryRequirements>
25977   {
25978     using Type = DeviceBufferMemoryRequirements;
25979   };
25980 
25981   using DeviceBufferMemoryRequirementsKHR = DeviceBufferMemoryRequirements;
25982 
25983   struct DeviceQueueCreateInfo
25984   {
25985     using NativeType = VkDeviceQueueCreateInfo;
25986 
25987     static const bool                                  allowDuplicate = false;
25988     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceQueueCreateInfo;
25989 
25990 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceQueueCreateInfoVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo25991     VULKAN_HPP_CONSTEXPR DeviceQueueCreateInfo( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_            = {},
25992                                                 uint32_t                                     queueFamilyIndex_ = {},
25993                                                 uint32_t                                     queueCount_       = {},
25994                                                 const float *                                pQueuePriorities_ = {},
25995                                                 const void *                                 pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
25996       : pNext{ pNext_ }
25997       , flags{ flags_ }
25998       , queueFamilyIndex{ queueFamilyIndex_ }
25999       , queueCount{ queueCount_ }
26000       , pQueuePriorities{ pQueuePriorities_ }
26001     {
26002     }
26003 
26004     VULKAN_HPP_CONSTEXPR DeviceQueueCreateInfo( DeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26005 
DeviceQueueCreateInfoVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26006     DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
26007       : DeviceQueueCreateInfo( *reinterpret_cast<DeviceQueueCreateInfo const *>( &rhs ) )
26008     {
26009     }
26010 
26011 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceQueueCreateInfoVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26012     DeviceQueueCreateInfo( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags                       flags_,
26013                            uint32_t                                                           queueFamilyIndex_,
26014                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const float> const & queuePriorities_,
26015                            const void *                                                       pNext_ = nullptr )
26016       : pNext( pNext_ )
26017       , flags( flags_ )
26018       , queueFamilyIndex( queueFamilyIndex_ )
26019       , queueCount( static_cast<uint32_t>( queuePriorities_.size() ) )
26020       , pQueuePriorities( queuePriorities_.data() )
26021     {
26022     }
26023 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26024 
26025     DeviceQueueCreateInfo & operator=( DeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26026 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26027 
operator =VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26028     DeviceQueueCreateInfo & operator=( VkDeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
26029     {
26030       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo const *>( &rhs );
26031       return *this;
26032     }
26033 
26034 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26035     VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
26036     {
26037       pNext = pNext_;
26038       return *this;
26039     }
26040 
setFlagsVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26041     VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
26042     {
26043       flags = flags_;
26044       return *this;
26045     }
26046 
setQueueFamilyIndexVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26047     VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
26048     {
26049       queueFamilyIndex = queueFamilyIndex_;
26050       return *this;
26051     }
26052 
setQueueCountVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26053     VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setQueueCount( uint32_t queueCount_ ) VULKAN_HPP_NOEXCEPT
26054     {
26055       queueCount = queueCount_;
26056       return *this;
26057     }
26058 
setPQueuePrioritiesVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26059     VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setPQueuePriorities( const float * pQueuePriorities_ ) VULKAN_HPP_NOEXCEPT
26060     {
26061       pQueuePriorities = pQueuePriorities_;
26062       return *this;
26063     }
26064 
26065 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueuePrioritiesVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26066     DeviceQueueCreateInfo & setQueuePriorities( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const float> const & queuePriorities_ ) VULKAN_HPP_NOEXCEPT
26067     {
26068       queueCount       = static_cast<uint32_t>( queuePriorities_.size() );
26069       pQueuePriorities = queuePriorities_.data();
26070       return *this;
26071     }
26072 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26073 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
26074 
operator VkDeviceQueueCreateInfo const&VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26075     operator VkDeviceQueueCreateInfo const &() const VULKAN_HPP_NOEXCEPT
26076     {
26077       return *reinterpret_cast<const VkDeviceQueueCreateInfo *>( this );
26078     }
26079 
operator VkDeviceQueueCreateInfo&VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26080     operator VkDeviceQueueCreateInfo &() VULKAN_HPP_NOEXCEPT
26081     {
26082       return *reinterpret_cast<VkDeviceQueueCreateInfo *>( this );
26083     }
26084 
26085 #if defined( VULKAN_HPP_USE_REFLECT )
26086 #  if 14 <= VULKAN_HPP_CPP_VERSION
26087     auto
26088 #  else
26089     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
26090                const void * const &,
26091                VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags const &,
26092                uint32_t const &,
26093                uint32_t const &,
26094                const float * const &>
26095 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26096       reflect() const VULKAN_HPP_NOEXCEPT
26097     {
26098       return std::tie( sType, pNext, flags, queueFamilyIndex, queueCount, pQueuePriorities );
26099     }
26100 #endif
26101 
26102 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
26103     auto operator<=>( DeviceQueueCreateInfo const & ) const = default;
26104 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26105     bool operator==( DeviceQueueCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
26106     {
26107 #  if defined( VULKAN_HPP_USE_REFLECT )
26108       return this->reflect() == rhs.reflect();
26109 #  else
26110       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( queueFamilyIndex == rhs.queueFamilyIndex ) &&
26111              ( queueCount == rhs.queueCount ) && ( pQueuePriorities == rhs.pQueuePriorities );
26112 #  endif
26113     }
26114 
operator !=VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo26115     bool operator!=( DeviceQueueCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
26116     {
26117       return !operator==( rhs );
26118     }
26119 #endif
26120 
26121   public:
26122     VULKAN_HPP_NAMESPACE::StructureType          sType            = StructureType::eDeviceQueueCreateInfo;
26123     const void *                                 pNext            = {};
26124     VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags            = {};
26125     uint32_t                                     queueFamilyIndex = {};
26126     uint32_t                                     queueCount       = {};
26127     const float *                                pQueuePriorities = {};
26128   };
26129 
26130   template <>
26131   struct CppType<StructureType, StructureType::eDeviceQueueCreateInfo>
26132   {
26133     using Type = DeviceQueueCreateInfo;
26134   };
26135 
26136   struct PhysicalDeviceFeatures
26137   {
26138     using NativeType = VkPhysicalDeviceFeatures;
26139 
26140 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26141     VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures( VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess_                      = {},
26142                                                  VULKAN_HPP_NAMESPACE::Bool32 fullDrawIndexUint32_                     = {},
26143                                                  VULKAN_HPP_NAMESPACE::Bool32 imageCubeArray_                          = {},
26144                                                  VULKAN_HPP_NAMESPACE::Bool32 independentBlend_                        = {},
26145                                                  VULKAN_HPP_NAMESPACE::Bool32 geometryShader_                          = {},
26146                                                  VULKAN_HPP_NAMESPACE::Bool32 tessellationShader_                      = {},
26147                                                  VULKAN_HPP_NAMESPACE::Bool32 sampleRateShading_                       = {},
26148                                                  VULKAN_HPP_NAMESPACE::Bool32 dualSrcBlend_                            = {},
26149                                                  VULKAN_HPP_NAMESPACE::Bool32 logicOp_                                 = {},
26150                                                  VULKAN_HPP_NAMESPACE::Bool32 multiDrawIndirect_                       = {},
26151                                                  VULKAN_HPP_NAMESPACE::Bool32 drawIndirectFirstInstance_               = {},
26152                                                  VULKAN_HPP_NAMESPACE::Bool32 depthClamp_                              = {},
26153                                                  VULKAN_HPP_NAMESPACE::Bool32 depthBiasClamp_                          = {},
26154                                                  VULKAN_HPP_NAMESPACE::Bool32 fillModeNonSolid_                        = {},
26155                                                  VULKAN_HPP_NAMESPACE::Bool32 depthBounds_                             = {},
26156                                                  VULKAN_HPP_NAMESPACE::Bool32 wideLines_                               = {},
26157                                                  VULKAN_HPP_NAMESPACE::Bool32 largePoints_                             = {},
26158                                                  VULKAN_HPP_NAMESPACE::Bool32 alphaToOne_                              = {},
26159                                                  VULKAN_HPP_NAMESPACE::Bool32 multiViewport_                           = {},
26160                                                  VULKAN_HPP_NAMESPACE::Bool32 samplerAnisotropy_                       = {},
26161                                                  VULKAN_HPP_NAMESPACE::Bool32 textureCompressionETC2_                  = {},
26162                                                  VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_LDR_              = {},
26163                                                  VULKAN_HPP_NAMESPACE::Bool32 textureCompressionBC_                    = {},
26164                                                  VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryPrecise_                   = {},
26165                                                  VULKAN_HPP_NAMESPACE::Bool32 pipelineStatisticsQuery_                 = {},
26166                                                  VULKAN_HPP_NAMESPACE::Bool32 vertexPipelineStoresAndAtomics_          = {},
26167                                                  VULKAN_HPP_NAMESPACE::Bool32 fragmentStoresAndAtomics_                = {},
26168                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderTessellationAndGeometryPointSize_  = {},
26169                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderImageGatherExtended_               = {},
26170                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageExtendedFormats_       = {},
26171                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageMultisample_           = {},
26172                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageReadWithoutFormat_     = {},
26173                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageWriteWithoutFormat_    = {},
26174                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayDynamicIndexing_ = {},
26175                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayDynamicIndexing_  = {},
26176                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayDynamicIndexing_ = {},
26177                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayDynamicIndexing_  = {},
26178                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderClipDistance_                      = {},
26179                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderCullDistance_                      = {},
26180                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderFloat64_                           = {},
26181                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderInt64_                             = {},
26182                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderInt16_                             = {},
26183                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderResourceResidency_                 = {},
26184                                                  VULKAN_HPP_NAMESPACE::Bool32 shaderResourceMinLod_                    = {},
26185                                                  VULKAN_HPP_NAMESPACE::Bool32 sparseBinding_                           = {},
26186                                                  VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyBuffer_                   = {},
26187                                                  VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage2D_                  = {},
26188                                                  VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage3D_                  = {},
26189                                                  VULKAN_HPP_NAMESPACE::Bool32 sparseResidency2Samples_                 = {},
26190                                                  VULKAN_HPP_NAMESPACE::Bool32 sparseResidency4Samples_                 = {},
26191                                                  VULKAN_HPP_NAMESPACE::Bool32 sparseResidency8Samples_                 = {},
26192                                                  VULKAN_HPP_NAMESPACE::Bool32 sparseResidency16Samples_                = {},
26193                                                  VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyAliased_                  = {},
26194                                                  VULKAN_HPP_NAMESPACE::Bool32 variableMultisampleRate_                 = {},
26195                                                  VULKAN_HPP_NAMESPACE::Bool32 inheritedQueries_                        = {} ) VULKAN_HPP_NOEXCEPT
26196       : robustBufferAccess{ robustBufferAccess_ }
26197       , fullDrawIndexUint32{ fullDrawIndexUint32_ }
26198       , imageCubeArray{ imageCubeArray_ }
26199       , independentBlend{ independentBlend_ }
26200       , geometryShader{ geometryShader_ }
26201       , tessellationShader{ tessellationShader_ }
26202       , sampleRateShading{ sampleRateShading_ }
26203       , dualSrcBlend{ dualSrcBlend_ }
26204       , logicOp{ logicOp_ }
26205       , multiDrawIndirect{ multiDrawIndirect_ }
26206       , drawIndirectFirstInstance{ drawIndirectFirstInstance_ }
26207       , depthClamp{ depthClamp_ }
26208       , depthBiasClamp{ depthBiasClamp_ }
26209       , fillModeNonSolid{ fillModeNonSolid_ }
26210       , depthBounds{ depthBounds_ }
26211       , wideLines{ wideLines_ }
26212       , largePoints{ largePoints_ }
26213       , alphaToOne{ alphaToOne_ }
26214       , multiViewport{ multiViewport_ }
26215       , samplerAnisotropy{ samplerAnisotropy_ }
26216       , textureCompressionETC2{ textureCompressionETC2_ }
26217       , textureCompressionASTC_LDR{ textureCompressionASTC_LDR_ }
26218       , textureCompressionBC{ textureCompressionBC_ }
26219       , occlusionQueryPrecise{ occlusionQueryPrecise_ }
26220       , pipelineStatisticsQuery{ pipelineStatisticsQuery_ }
26221       , vertexPipelineStoresAndAtomics{ vertexPipelineStoresAndAtomics_ }
26222       , fragmentStoresAndAtomics{ fragmentStoresAndAtomics_ }
26223       , shaderTessellationAndGeometryPointSize{ shaderTessellationAndGeometryPointSize_ }
26224       , shaderImageGatherExtended{ shaderImageGatherExtended_ }
26225       , shaderStorageImageExtendedFormats{ shaderStorageImageExtendedFormats_ }
26226       , shaderStorageImageMultisample{ shaderStorageImageMultisample_ }
26227       , shaderStorageImageReadWithoutFormat{ shaderStorageImageReadWithoutFormat_ }
26228       , shaderStorageImageWriteWithoutFormat{ shaderStorageImageWriteWithoutFormat_ }
26229       , shaderUniformBufferArrayDynamicIndexing{ shaderUniformBufferArrayDynamicIndexing_ }
26230       , shaderSampledImageArrayDynamicIndexing{ shaderSampledImageArrayDynamicIndexing_ }
26231       , shaderStorageBufferArrayDynamicIndexing{ shaderStorageBufferArrayDynamicIndexing_ }
26232       , shaderStorageImageArrayDynamicIndexing{ shaderStorageImageArrayDynamicIndexing_ }
26233       , shaderClipDistance{ shaderClipDistance_ }
26234       , shaderCullDistance{ shaderCullDistance_ }
26235       , shaderFloat64{ shaderFloat64_ }
26236       , shaderInt64{ shaderInt64_ }
26237       , shaderInt16{ shaderInt16_ }
26238       , shaderResourceResidency{ shaderResourceResidency_ }
26239       , shaderResourceMinLod{ shaderResourceMinLod_ }
26240       , sparseBinding{ sparseBinding_ }
26241       , sparseResidencyBuffer{ sparseResidencyBuffer_ }
26242       , sparseResidencyImage2D{ sparseResidencyImage2D_ }
26243       , sparseResidencyImage3D{ sparseResidencyImage3D_ }
26244       , sparseResidency2Samples{ sparseResidency2Samples_ }
26245       , sparseResidency4Samples{ sparseResidency4Samples_ }
26246       , sparseResidency8Samples{ sparseResidency8Samples_ }
26247       , sparseResidency16Samples{ sparseResidency16Samples_ }
26248       , sparseResidencyAliased{ sparseResidencyAliased_ }
26249       , variableMultisampleRate{ variableMultisampleRate_ }
26250       , inheritedQueries{ inheritedQueries_ }
26251     {
26252     }
26253 
26254     VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures( PhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26255 
PhysicalDeviceFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26256     PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
26257       : PhysicalDeviceFeatures( *reinterpret_cast<PhysicalDeviceFeatures const *>( &rhs ) )
26258     {
26259     }
26260 
26261     PhysicalDeviceFeatures & operator=( PhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26262 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26263 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26264     PhysicalDeviceFeatures & operator=( VkPhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
26265     {
26266       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures const *>( &rhs );
26267       return *this;
26268     }
26269 
26270 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setRobustBufferAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26271     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setRobustBufferAccess( VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess_ ) VULKAN_HPP_NOEXCEPT
26272     {
26273       robustBufferAccess = robustBufferAccess_;
26274       return *this;
26275     }
26276 
setFullDrawIndexUint32VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26277     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setFullDrawIndexUint32( VULKAN_HPP_NAMESPACE::Bool32 fullDrawIndexUint32_ ) VULKAN_HPP_NOEXCEPT
26278     {
26279       fullDrawIndexUint32 = fullDrawIndexUint32_;
26280       return *this;
26281     }
26282 
setImageCubeArrayVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26283     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setImageCubeArray( VULKAN_HPP_NAMESPACE::Bool32 imageCubeArray_ ) VULKAN_HPP_NOEXCEPT
26284     {
26285       imageCubeArray = imageCubeArray_;
26286       return *this;
26287     }
26288 
setIndependentBlendVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26289     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setIndependentBlend( VULKAN_HPP_NAMESPACE::Bool32 independentBlend_ ) VULKAN_HPP_NOEXCEPT
26290     {
26291       independentBlend = independentBlend_;
26292       return *this;
26293     }
26294 
setGeometryShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26295     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setGeometryShader( VULKAN_HPP_NAMESPACE::Bool32 geometryShader_ ) VULKAN_HPP_NOEXCEPT
26296     {
26297       geometryShader = geometryShader_;
26298       return *this;
26299     }
26300 
setTessellationShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26301     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setTessellationShader( VULKAN_HPP_NAMESPACE::Bool32 tessellationShader_ ) VULKAN_HPP_NOEXCEPT
26302     {
26303       tessellationShader = tessellationShader_;
26304       return *this;
26305     }
26306 
setSampleRateShadingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26307     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSampleRateShading( VULKAN_HPP_NAMESPACE::Bool32 sampleRateShading_ ) VULKAN_HPP_NOEXCEPT
26308     {
26309       sampleRateShading = sampleRateShading_;
26310       return *this;
26311     }
26312 
setDualSrcBlendVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26313     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setDualSrcBlend( VULKAN_HPP_NAMESPACE::Bool32 dualSrcBlend_ ) VULKAN_HPP_NOEXCEPT
26314     {
26315       dualSrcBlend = dualSrcBlend_;
26316       return *this;
26317     }
26318 
setLogicOpVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26319     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setLogicOp( VULKAN_HPP_NAMESPACE::Bool32 logicOp_ ) VULKAN_HPP_NOEXCEPT
26320     {
26321       logicOp = logicOp_;
26322       return *this;
26323     }
26324 
setMultiDrawIndirectVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26325     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setMultiDrawIndirect( VULKAN_HPP_NAMESPACE::Bool32 multiDrawIndirect_ ) VULKAN_HPP_NOEXCEPT
26326     {
26327       multiDrawIndirect = multiDrawIndirect_;
26328       return *this;
26329     }
26330 
setDrawIndirectFirstInstanceVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26331     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setDrawIndirectFirstInstance( VULKAN_HPP_NAMESPACE::Bool32 drawIndirectFirstInstance_ ) VULKAN_HPP_NOEXCEPT
26332     {
26333       drawIndirectFirstInstance = drawIndirectFirstInstance_;
26334       return *this;
26335     }
26336 
setDepthClampVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26337     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setDepthClamp( VULKAN_HPP_NAMESPACE::Bool32 depthClamp_ ) VULKAN_HPP_NOEXCEPT
26338     {
26339       depthClamp = depthClamp_;
26340       return *this;
26341     }
26342 
setDepthBiasClampVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26343     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setDepthBiasClamp( VULKAN_HPP_NAMESPACE::Bool32 depthBiasClamp_ ) VULKAN_HPP_NOEXCEPT
26344     {
26345       depthBiasClamp = depthBiasClamp_;
26346       return *this;
26347     }
26348 
setFillModeNonSolidVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26349     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setFillModeNonSolid( VULKAN_HPP_NAMESPACE::Bool32 fillModeNonSolid_ ) VULKAN_HPP_NOEXCEPT
26350     {
26351       fillModeNonSolid = fillModeNonSolid_;
26352       return *this;
26353     }
26354 
setDepthBoundsVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26355     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setDepthBounds( VULKAN_HPP_NAMESPACE::Bool32 depthBounds_ ) VULKAN_HPP_NOEXCEPT
26356     {
26357       depthBounds = depthBounds_;
26358       return *this;
26359     }
26360 
setWideLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26361     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setWideLines( VULKAN_HPP_NAMESPACE::Bool32 wideLines_ ) VULKAN_HPP_NOEXCEPT
26362     {
26363       wideLines = wideLines_;
26364       return *this;
26365     }
26366 
setLargePointsVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26367     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setLargePoints( VULKAN_HPP_NAMESPACE::Bool32 largePoints_ ) VULKAN_HPP_NOEXCEPT
26368     {
26369       largePoints = largePoints_;
26370       return *this;
26371     }
26372 
setAlphaToOneVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26373     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setAlphaToOne( VULKAN_HPP_NAMESPACE::Bool32 alphaToOne_ ) VULKAN_HPP_NOEXCEPT
26374     {
26375       alphaToOne = alphaToOne_;
26376       return *this;
26377     }
26378 
setMultiViewportVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26379     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setMultiViewport( VULKAN_HPP_NAMESPACE::Bool32 multiViewport_ ) VULKAN_HPP_NOEXCEPT
26380     {
26381       multiViewport = multiViewport_;
26382       return *this;
26383     }
26384 
setSamplerAnisotropyVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26385     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSamplerAnisotropy( VULKAN_HPP_NAMESPACE::Bool32 samplerAnisotropy_ ) VULKAN_HPP_NOEXCEPT
26386     {
26387       samplerAnisotropy = samplerAnisotropy_;
26388       return *this;
26389     }
26390 
setTextureCompressionETC2VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26391     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setTextureCompressionETC2( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionETC2_ ) VULKAN_HPP_NOEXCEPT
26392     {
26393       textureCompressionETC2 = textureCompressionETC2_;
26394       return *this;
26395     }
26396 
26397     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setTextureCompressionASTC_LDRVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26398       setTextureCompressionASTC_LDR( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_LDR_ ) VULKAN_HPP_NOEXCEPT
26399     {
26400       textureCompressionASTC_LDR = textureCompressionASTC_LDR_;
26401       return *this;
26402     }
26403 
setTextureCompressionBCVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26404     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setTextureCompressionBC( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionBC_ ) VULKAN_HPP_NOEXCEPT
26405     {
26406       textureCompressionBC = textureCompressionBC_;
26407       return *this;
26408     }
26409 
setOcclusionQueryPreciseVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26410     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setOcclusionQueryPrecise( VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryPrecise_ ) VULKAN_HPP_NOEXCEPT
26411     {
26412       occlusionQueryPrecise = occlusionQueryPrecise_;
26413       return *this;
26414     }
26415 
setPipelineStatisticsQueryVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26416     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setPipelineStatisticsQuery( VULKAN_HPP_NAMESPACE::Bool32 pipelineStatisticsQuery_ ) VULKAN_HPP_NOEXCEPT
26417     {
26418       pipelineStatisticsQuery = pipelineStatisticsQuery_;
26419       return *this;
26420     }
26421 
26422     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setVertexPipelineStoresAndAtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26423       setVertexPipelineStoresAndAtomics( VULKAN_HPP_NAMESPACE::Bool32 vertexPipelineStoresAndAtomics_ ) VULKAN_HPP_NOEXCEPT
26424     {
26425       vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_;
26426       return *this;
26427     }
26428 
setFragmentStoresAndAtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26429     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setFragmentStoresAndAtomics( VULKAN_HPP_NAMESPACE::Bool32 fragmentStoresAndAtomics_ ) VULKAN_HPP_NOEXCEPT
26430     {
26431       fragmentStoresAndAtomics = fragmentStoresAndAtomics_;
26432       return *this;
26433     }
26434 
26435     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderTessellationAndGeometryPointSizeVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26436       setShaderTessellationAndGeometryPointSize( VULKAN_HPP_NAMESPACE::Bool32 shaderTessellationAndGeometryPointSize_ ) VULKAN_HPP_NOEXCEPT
26437     {
26438       shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_;
26439       return *this;
26440     }
26441 
setShaderImageGatherExtendedVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26442     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderImageGatherExtended( VULKAN_HPP_NAMESPACE::Bool32 shaderImageGatherExtended_ ) VULKAN_HPP_NOEXCEPT
26443     {
26444       shaderImageGatherExtended = shaderImageGatherExtended_;
26445       return *this;
26446     }
26447 
26448     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderStorageImageExtendedFormatsVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26449       setShaderStorageImageExtendedFormats( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageExtendedFormats_ ) VULKAN_HPP_NOEXCEPT
26450     {
26451       shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_;
26452       return *this;
26453     }
26454 
26455     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderStorageImageMultisampleVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26456       setShaderStorageImageMultisample( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageMultisample_ ) VULKAN_HPP_NOEXCEPT
26457     {
26458       shaderStorageImageMultisample = shaderStorageImageMultisample_;
26459       return *this;
26460     }
26461 
26462     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderStorageImageReadWithoutFormatVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26463       setShaderStorageImageReadWithoutFormat( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageReadWithoutFormat_ ) VULKAN_HPP_NOEXCEPT
26464     {
26465       shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_;
26466       return *this;
26467     }
26468 
26469     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderStorageImageWriteWithoutFormatVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26470       setShaderStorageImageWriteWithoutFormat( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageWriteWithoutFormat_ ) VULKAN_HPP_NOEXCEPT
26471     {
26472       shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_;
26473       return *this;
26474     }
26475 
26476     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderUniformBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26477       setShaderUniformBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
26478     {
26479       shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_;
26480       return *this;
26481     }
26482 
26483     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderSampledImageArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26484       setShaderSampledImageArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
26485     {
26486       shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_;
26487       return *this;
26488     }
26489 
26490     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderStorageBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26491       setShaderStorageBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
26492     {
26493       shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_;
26494       return *this;
26495     }
26496 
26497     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures &
setShaderStorageImageArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26498       setShaderStorageImageArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
26499     {
26500       shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_;
26501       return *this;
26502     }
26503 
setShaderClipDistanceVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26504     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderClipDistance( VULKAN_HPP_NAMESPACE::Bool32 shaderClipDistance_ ) VULKAN_HPP_NOEXCEPT
26505     {
26506       shaderClipDistance = shaderClipDistance_;
26507       return *this;
26508     }
26509 
setShaderCullDistanceVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26510     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderCullDistance( VULKAN_HPP_NAMESPACE::Bool32 shaderCullDistance_ ) VULKAN_HPP_NOEXCEPT
26511     {
26512       shaderCullDistance = shaderCullDistance_;
26513       return *this;
26514     }
26515 
setShaderFloat64VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26516     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderFloat64( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat64_ ) VULKAN_HPP_NOEXCEPT
26517     {
26518       shaderFloat64 = shaderFloat64_;
26519       return *this;
26520     }
26521 
setShaderInt64VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26522     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderInt64( VULKAN_HPP_NAMESPACE::Bool32 shaderInt64_ ) VULKAN_HPP_NOEXCEPT
26523     {
26524       shaderInt64 = shaderInt64_;
26525       return *this;
26526     }
26527 
setShaderInt16VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26528     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderInt16( VULKAN_HPP_NAMESPACE::Bool32 shaderInt16_ ) VULKAN_HPP_NOEXCEPT
26529     {
26530       shaderInt16 = shaderInt16_;
26531       return *this;
26532     }
26533 
setShaderResourceResidencyVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26534     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderResourceResidency( VULKAN_HPP_NAMESPACE::Bool32 shaderResourceResidency_ ) VULKAN_HPP_NOEXCEPT
26535     {
26536       shaderResourceResidency = shaderResourceResidency_;
26537       return *this;
26538     }
26539 
setShaderResourceMinLodVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26540     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderResourceMinLod( VULKAN_HPP_NAMESPACE::Bool32 shaderResourceMinLod_ ) VULKAN_HPP_NOEXCEPT
26541     {
26542       shaderResourceMinLod = shaderResourceMinLod_;
26543       return *this;
26544     }
26545 
setSparseBindingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26546     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseBinding( VULKAN_HPP_NAMESPACE::Bool32 sparseBinding_ ) VULKAN_HPP_NOEXCEPT
26547     {
26548       sparseBinding = sparseBinding_;
26549       return *this;
26550     }
26551 
setSparseResidencyBufferVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26552     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidencyBuffer( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyBuffer_ ) VULKAN_HPP_NOEXCEPT
26553     {
26554       sparseResidencyBuffer = sparseResidencyBuffer_;
26555       return *this;
26556     }
26557 
setSparseResidencyImage2DVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26558     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidencyImage2D( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage2D_ ) VULKAN_HPP_NOEXCEPT
26559     {
26560       sparseResidencyImage2D = sparseResidencyImage2D_;
26561       return *this;
26562     }
26563 
setSparseResidencyImage3DVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26564     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidencyImage3D( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage3D_ ) VULKAN_HPP_NOEXCEPT
26565     {
26566       sparseResidencyImage3D = sparseResidencyImage3D_;
26567       return *this;
26568     }
26569 
setSparseResidency2SamplesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26570     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidency2Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency2Samples_ ) VULKAN_HPP_NOEXCEPT
26571     {
26572       sparseResidency2Samples = sparseResidency2Samples_;
26573       return *this;
26574     }
26575 
setSparseResidency4SamplesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26576     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidency4Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency4Samples_ ) VULKAN_HPP_NOEXCEPT
26577     {
26578       sparseResidency4Samples = sparseResidency4Samples_;
26579       return *this;
26580     }
26581 
setSparseResidency8SamplesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26582     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidency8Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency8Samples_ ) VULKAN_HPP_NOEXCEPT
26583     {
26584       sparseResidency8Samples = sparseResidency8Samples_;
26585       return *this;
26586     }
26587 
setSparseResidency16SamplesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26588     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidency16Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency16Samples_ ) VULKAN_HPP_NOEXCEPT
26589     {
26590       sparseResidency16Samples = sparseResidency16Samples_;
26591       return *this;
26592     }
26593 
setSparseResidencyAliasedVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26594     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidencyAliased( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyAliased_ ) VULKAN_HPP_NOEXCEPT
26595     {
26596       sparseResidencyAliased = sparseResidencyAliased_;
26597       return *this;
26598     }
26599 
setVariableMultisampleRateVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26600     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setVariableMultisampleRate( VULKAN_HPP_NAMESPACE::Bool32 variableMultisampleRate_ ) VULKAN_HPP_NOEXCEPT
26601     {
26602       variableMultisampleRate = variableMultisampleRate_;
26603       return *this;
26604     }
26605 
setInheritedQueriesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26606     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setInheritedQueries( VULKAN_HPP_NAMESPACE::Bool32 inheritedQueries_ ) VULKAN_HPP_NOEXCEPT
26607     {
26608       inheritedQueries = inheritedQueries_;
26609       return *this;
26610     }
26611 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
26612 
operator VkPhysicalDeviceFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26613     operator VkPhysicalDeviceFeatures const &() const VULKAN_HPP_NOEXCEPT
26614     {
26615       return *reinterpret_cast<const VkPhysicalDeviceFeatures *>( this );
26616     }
26617 
operator VkPhysicalDeviceFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26618     operator VkPhysicalDeviceFeatures &() VULKAN_HPP_NOEXCEPT
26619     {
26620       return *reinterpret_cast<VkPhysicalDeviceFeatures *>( this );
26621     }
26622 
26623 #if defined( VULKAN_HPP_USE_REFLECT )
26624 #  if 14 <= VULKAN_HPP_CPP_VERSION
26625     auto
26626 #  else
26627     std::tuple<VULKAN_HPP_NAMESPACE::Bool32 const &,
26628                VULKAN_HPP_NAMESPACE::Bool32 const &,
26629                VULKAN_HPP_NAMESPACE::Bool32 const &,
26630                VULKAN_HPP_NAMESPACE::Bool32 const &,
26631                VULKAN_HPP_NAMESPACE::Bool32 const &,
26632                VULKAN_HPP_NAMESPACE::Bool32 const &,
26633                VULKAN_HPP_NAMESPACE::Bool32 const &,
26634                VULKAN_HPP_NAMESPACE::Bool32 const &,
26635                VULKAN_HPP_NAMESPACE::Bool32 const &,
26636                VULKAN_HPP_NAMESPACE::Bool32 const &,
26637                VULKAN_HPP_NAMESPACE::Bool32 const &,
26638                VULKAN_HPP_NAMESPACE::Bool32 const &,
26639                VULKAN_HPP_NAMESPACE::Bool32 const &,
26640                VULKAN_HPP_NAMESPACE::Bool32 const &,
26641                VULKAN_HPP_NAMESPACE::Bool32 const &,
26642                VULKAN_HPP_NAMESPACE::Bool32 const &,
26643                VULKAN_HPP_NAMESPACE::Bool32 const &,
26644                VULKAN_HPP_NAMESPACE::Bool32 const &,
26645                VULKAN_HPP_NAMESPACE::Bool32 const &,
26646                VULKAN_HPP_NAMESPACE::Bool32 const &,
26647                VULKAN_HPP_NAMESPACE::Bool32 const &,
26648                VULKAN_HPP_NAMESPACE::Bool32 const &,
26649                VULKAN_HPP_NAMESPACE::Bool32 const &,
26650                VULKAN_HPP_NAMESPACE::Bool32 const &,
26651                VULKAN_HPP_NAMESPACE::Bool32 const &,
26652                VULKAN_HPP_NAMESPACE::Bool32 const &,
26653                VULKAN_HPP_NAMESPACE::Bool32 const &,
26654                VULKAN_HPP_NAMESPACE::Bool32 const &,
26655                VULKAN_HPP_NAMESPACE::Bool32 const &,
26656                VULKAN_HPP_NAMESPACE::Bool32 const &,
26657                VULKAN_HPP_NAMESPACE::Bool32 const &,
26658                VULKAN_HPP_NAMESPACE::Bool32 const &,
26659                VULKAN_HPP_NAMESPACE::Bool32 const &,
26660                VULKAN_HPP_NAMESPACE::Bool32 const &,
26661                VULKAN_HPP_NAMESPACE::Bool32 const &,
26662                VULKAN_HPP_NAMESPACE::Bool32 const &,
26663                VULKAN_HPP_NAMESPACE::Bool32 const &,
26664                VULKAN_HPP_NAMESPACE::Bool32 const &,
26665                VULKAN_HPP_NAMESPACE::Bool32 const &,
26666                VULKAN_HPP_NAMESPACE::Bool32 const &,
26667                VULKAN_HPP_NAMESPACE::Bool32 const &,
26668                VULKAN_HPP_NAMESPACE::Bool32 const &,
26669                VULKAN_HPP_NAMESPACE::Bool32 const &,
26670                VULKAN_HPP_NAMESPACE::Bool32 const &,
26671                VULKAN_HPP_NAMESPACE::Bool32 const &,
26672                VULKAN_HPP_NAMESPACE::Bool32 const &,
26673                VULKAN_HPP_NAMESPACE::Bool32 const &,
26674                VULKAN_HPP_NAMESPACE::Bool32 const &,
26675                VULKAN_HPP_NAMESPACE::Bool32 const &,
26676                VULKAN_HPP_NAMESPACE::Bool32 const &,
26677                VULKAN_HPP_NAMESPACE::Bool32 const &,
26678                VULKAN_HPP_NAMESPACE::Bool32 const &,
26679                VULKAN_HPP_NAMESPACE::Bool32 const &,
26680                VULKAN_HPP_NAMESPACE::Bool32 const &,
26681                VULKAN_HPP_NAMESPACE::Bool32 const &>
26682 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26683       reflect() const VULKAN_HPP_NOEXCEPT
26684     {
26685       return std::tie( robustBufferAccess,
26686                        fullDrawIndexUint32,
26687                        imageCubeArray,
26688                        independentBlend,
26689                        geometryShader,
26690                        tessellationShader,
26691                        sampleRateShading,
26692                        dualSrcBlend,
26693                        logicOp,
26694                        multiDrawIndirect,
26695                        drawIndirectFirstInstance,
26696                        depthClamp,
26697                        depthBiasClamp,
26698                        fillModeNonSolid,
26699                        depthBounds,
26700                        wideLines,
26701                        largePoints,
26702                        alphaToOne,
26703                        multiViewport,
26704                        samplerAnisotropy,
26705                        textureCompressionETC2,
26706                        textureCompressionASTC_LDR,
26707                        textureCompressionBC,
26708                        occlusionQueryPrecise,
26709                        pipelineStatisticsQuery,
26710                        vertexPipelineStoresAndAtomics,
26711                        fragmentStoresAndAtomics,
26712                        shaderTessellationAndGeometryPointSize,
26713                        shaderImageGatherExtended,
26714                        shaderStorageImageExtendedFormats,
26715                        shaderStorageImageMultisample,
26716                        shaderStorageImageReadWithoutFormat,
26717                        shaderStorageImageWriteWithoutFormat,
26718                        shaderUniformBufferArrayDynamicIndexing,
26719                        shaderSampledImageArrayDynamicIndexing,
26720                        shaderStorageBufferArrayDynamicIndexing,
26721                        shaderStorageImageArrayDynamicIndexing,
26722                        shaderClipDistance,
26723                        shaderCullDistance,
26724                        shaderFloat64,
26725                        shaderInt64,
26726                        shaderInt16,
26727                        shaderResourceResidency,
26728                        shaderResourceMinLod,
26729                        sparseBinding,
26730                        sparseResidencyBuffer,
26731                        sparseResidencyImage2D,
26732                        sparseResidencyImage3D,
26733                        sparseResidency2Samples,
26734                        sparseResidency4Samples,
26735                        sparseResidency8Samples,
26736                        sparseResidency16Samples,
26737                        sparseResidencyAliased,
26738                        variableMultisampleRate,
26739                        inheritedQueries );
26740     }
26741 #endif
26742 
26743 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
26744     auto operator<=>( PhysicalDeviceFeatures const & ) const = default;
26745 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26746     bool operator==( PhysicalDeviceFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
26747     {
26748 #  if defined( VULKAN_HPP_USE_REFLECT )
26749       return this->reflect() == rhs.reflect();
26750 #  else
26751       return ( robustBufferAccess == rhs.robustBufferAccess ) && ( fullDrawIndexUint32 == rhs.fullDrawIndexUint32 ) &&
26752              ( imageCubeArray == rhs.imageCubeArray ) && ( independentBlend == rhs.independentBlend ) && ( geometryShader == rhs.geometryShader ) &&
26753              ( tessellationShader == rhs.tessellationShader ) && ( sampleRateShading == rhs.sampleRateShading ) && ( dualSrcBlend == rhs.dualSrcBlend ) &&
26754              ( logicOp == rhs.logicOp ) && ( multiDrawIndirect == rhs.multiDrawIndirect ) && ( drawIndirectFirstInstance == rhs.drawIndirectFirstInstance ) &&
26755              ( depthClamp == rhs.depthClamp ) && ( depthBiasClamp == rhs.depthBiasClamp ) && ( fillModeNonSolid == rhs.fillModeNonSolid ) &&
26756              ( depthBounds == rhs.depthBounds ) && ( wideLines == rhs.wideLines ) && ( largePoints == rhs.largePoints ) && ( alphaToOne == rhs.alphaToOne ) &&
26757              ( multiViewport == rhs.multiViewport ) && ( samplerAnisotropy == rhs.samplerAnisotropy ) &&
26758              ( textureCompressionETC2 == rhs.textureCompressionETC2 ) && ( textureCompressionASTC_LDR == rhs.textureCompressionASTC_LDR ) &&
26759              ( textureCompressionBC == rhs.textureCompressionBC ) && ( occlusionQueryPrecise == rhs.occlusionQueryPrecise ) &&
26760              ( pipelineStatisticsQuery == rhs.pipelineStatisticsQuery ) && ( vertexPipelineStoresAndAtomics == rhs.vertexPipelineStoresAndAtomics ) &&
26761              ( fragmentStoresAndAtomics == rhs.fragmentStoresAndAtomics ) &&
26762              ( shaderTessellationAndGeometryPointSize == rhs.shaderTessellationAndGeometryPointSize ) &&
26763              ( shaderImageGatherExtended == rhs.shaderImageGatherExtended ) && ( shaderStorageImageExtendedFormats == rhs.shaderStorageImageExtendedFormats ) &&
26764              ( shaderStorageImageMultisample == rhs.shaderStorageImageMultisample ) &&
26765              ( shaderStorageImageReadWithoutFormat == rhs.shaderStorageImageReadWithoutFormat ) &&
26766              ( shaderStorageImageWriteWithoutFormat == rhs.shaderStorageImageWriteWithoutFormat ) &&
26767              ( shaderUniformBufferArrayDynamicIndexing == rhs.shaderUniformBufferArrayDynamicIndexing ) &&
26768              ( shaderSampledImageArrayDynamicIndexing == rhs.shaderSampledImageArrayDynamicIndexing ) &&
26769              ( shaderStorageBufferArrayDynamicIndexing == rhs.shaderStorageBufferArrayDynamicIndexing ) &&
26770              ( shaderStorageImageArrayDynamicIndexing == rhs.shaderStorageImageArrayDynamicIndexing ) && ( shaderClipDistance == rhs.shaderClipDistance ) &&
26771              ( shaderCullDistance == rhs.shaderCullDistance ) && ( shaderFloat64 == rhs.shaderFloat64 ) && ( shaderInt64 == rhs.shaderInt64 ) &&
26772              ( shaderInt16 == rhs.shaderInt16 ) && ( shaderResourceResidency == rhs.shaderResourceResidency ) &&
26773              ( shaderResourceMinLod == rhs.shaderResourceMinLod ) && ( sparseBinding == rhs.sparseBinding ) &&
26774              ( sparseResidencyBuffer == rhs.sparseResidencyBuffer ) && ( sparseResidencyImage2D == rhs.sparseResidencyImage2D ) &&
26775              ( sparseResidencyImage3D == rhs.sparseResidencyImage3D ) && ( sparseResidency2Samples == rhs.sparseResidency2Samples ) &&
26776              ( sparseResidency4Samples == rhs.sparseResidency4Samples ) && ( sparseResidency8Samples == rhs.sparseResidency8Samples ) &&
26777              ( sparseResidency16Samples == rhs.sparseResidency16Samples ) && ( sparseResidencyAliased == rhs.sparseResidencyAliased ) &&
26778              ( variableMultisampleRate == rhs.variableMultisampleRate ) && ( inheritedQueries == rhs.inheritedQueries );
26779 #  endif
26780     }
26781 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures26782     bool operator!=( PhysicalDeviceFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
26783     {
26784       return !operator==( rhs );
26785     }
26786 #endif
26787 
26788   public:
26789     VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess                      = {};
26790     VULKAN_HPP_NAMESPACE::Bool32 fullDrawIndexUint32                     = {};
26791     VULKAN_HPP_NAMESPACE::Bool32 imageCubeArray                          = {};
26792     VULKAN_HPP_NAMESPACE::Bool32 independentBlend                        = {};
26793     VULKAN_HPP_NAMESPACE::Bool32 geometryShader                          = {};
26794     VULKAN_HPP_NAMESPACE::Bool32 tessellationShader                      = {};
26795     VULKAN_HPP_NAMESPACE::Bool32 sampleRateShading                       = {};
26796     VULKAN_HPP_NAMESPACE::Bool32 dualSrcBlend                            = {};
26797     VULKAN_HPP_NAMESPACE::Bool32 logicOp                                 = {};
26798     VULKAN_HPP_NAMESPACE::Bool32 multiDrawIndirect                       = {};
26799     VULKAN_HPP_NAMESPACE::Bool32 drawIndirectFirstInstance               = {};
26800     VULKAN_HPP_NAMESPACE::Bool32 depthClamp                              = {};
26801     VULKAN_HPP_NAMESPACE::Bool32 depthBiasClamp                          = {};
26802     VULKAN_HPP_NAMESPACE::Bool32 fillModeNonSolid                        = {};
26803     VULKAN_HPP_NAMESPACE::Bool32 depthBounds                             = {};
26804     VULKAN_HPP_NAMESPACE::Bool32 wideLines                               = {};
26805     VULKAN_HPP_NAMESPACE::Bool32 largePoints                             = {};
26806     VULKAN_HPP_NAMESPACE::Bool32 alphaToOne                              = {};
26807     VULKAN_HPP_NAMESPACE::Bool32 multiViewport                           = {};
26808     VULKAN_HPP_NAMESPACE::Bool32 samplerAnisotropy                       = {};
26809     VULKAN_HPP_NAMESPACE::Bool32 textureCompressionETC2                  = {};
26810     VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_LDR              = {};
26811     VULKAN_HPP_NAMESPACE::Bool32 textureCompressionBC                    = {};
26812     VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryPrecise                   = {};
26813     VULKAN_HPP_NAMESPACE::Bool32 pipelineStatisticsQuery                 = {};
26814     VULKAN_HPP_NAMESPACE::Bool32 vertexPipelineStoresAndAtomics          = {};
26815     VULKAN_HPP_NAMESPACE::Bool32 fragmentStoresAndAtomics                = {};
26816     VULKAN_HPP_NAMESPACE::Bool32 shaderTessellationAndGeometryPointSize  = {};
26817     VULKAN_HPP_NAMESPACE::Bool32 shaderImageGatherExtended               = {};
26818     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageExtendedFormats       = {};
26819     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageMultisample           = {};
26820     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageReadWithoutFormat     = {};
26821     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageWriteWithoutFormat    = {};
26822     VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayDynamicIndexing = {};
26823     VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayDynamicIndexing  = {};
26824     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayDynamicIndexing = {};
26825     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayDynamicIndexing  = {};
26826     VULKAN_HPP_NAMESPACE::Bool32 shaderClipDistance                      = {};
26827     VULKAN_HPP_NAMESPACE::Bool32 shaderCullDistance                      = {};
26828     VULKAN_HPP_NAMESPACE::Bool32 shaderFloat64                           = {};
26829     VULKAN_HPP_NAMESPACE::Bool32 shaderInt64                             = {};
26830     VULKAN_HPP_NAMESPACE::Bool32 shaderInt16                             = {};
26831     VULKAN_HPP_NAMESPACE::Bool32 shaderResourceResidency                 = {};
26832     VULKAN_HPP_NAMESPACE::Bool32 shaderResourceMinLod                    = {};
26833     VULKAN_HPP_NAMESPACE::Bool32 sparseBinding                           = {};
26834     VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyBuffer                   = {};
26835     VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage2D                  = {};
26836     VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage3D                  = {};
26837     VULKAN_HPP_NAMESPACE::Bool32 sparseResidency2Samples                 = {};
26838     VULKAN_HPP_NAMESPACE::Bool32 sparseResidency4Samples                 = {};
26839     VULKAN_HPP_NAMESPACE::Bool32 sparseResidency8Samples                 = {};
26840     VULKAN_HPP_NAMESPACE::Bool32 sparseResidency16Samples                = {};
26841     VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyAliased                  = {};
26842     VULKAN_HPP_NAMESPACE::Bool32 variableMultisampleRate                 = {};
26843     VULKAN_HPP_NAMESPACE::Bool32 inheritedQueries                        = {};
26844   };
26845 
26846   struct DeviceCreateInfo
26847   {
26848     using NativeType = VkDeviceCreateInfo;
26849 
26850     static const bool                                  allowDuplicate = false;
26851     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceCreateInfo;
26852 
26853 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceCreateInfo26854     VULKAN_HPP_CONSTEXPR DeviceCreateInfo( VULKAN_HPP_NAMESPACE::DeviceCreateFlags              flags_                   = {},
26855                                            uint32_t                                             queueCreateInfoCount_    = {},
26856                                            const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo *  pQueueCreateInfos_       = {},
26857                                            uint32_t                                             enabledLayerCount_       = {},
26858                                            const char * const *                                 ppEnabledLayerNames_     = {},
26859                                            uint32_t                                             enabledExtensionCount_   = {},
26860                                            const char * const *                                 ppEnabledExtensionNames_ = {},
26861                                            const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * pEnabledFeatures_        = {},
26862                                            const void *                                         pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
26863       : pNext{ pNext_ }
26864       , flags{ flags_ }
26865       , queueCreateInfoCount{ queueCreateInfoCount_ }
26866       , pQueueCreateInfos{ pQueueCreateInfos_ }
26867       , enabledLayerCount{ enabledLayerCount_ }
26868       , ppEnabledLayerNames{ ppEnabledLayerNames_ }
26869       , enabledExtensionCount{ enabledExtensionCount_ }
26870       , ppEnabledExtensionNames{ ppEnabledExtensionNames_ }
26871       , pEnabledFeatures{ pEnabledFeatures_ }
26872     {
26873     }
26874 
26875     VULKAN_HPP_CONSTEXPR DeviceCreateInfo( DeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26876 
DeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceCreateInfo26877     DeviceCreateInfo( VkDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : DeviceCreateInfo( *reinterpret_cast<DeviceCreateInfo const *>( &rhs ) ) {}
26878 
26879 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceCreateInfo26880     DeviceCreateInfo( VULKAN_HPP_NAMESPACE::DeviceCreateFlags                                                                  flags_,
26881                       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo> const & queueCreateInfos_,
26882                       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const &                                pEnabledLayerNames_     = {},
26883                       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const &                                pEnabledExtensionNames_ = {},
26884                       const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures *                                                     pEnabledFeatures_       = {},
26885                       const void *                                                                                             pNext_ = nullptr )
26886       : pNext( pNext_ )
26887       , flags( flags_ )
26888       , queueCreateInfoCount( static_cast<uint32_t>( queueCreateInfos_.size() ) )
26889       , pQueueCreateInfos( queueCreateInfos_.data() )
26890       , enabledLayerCount( static_cast<uint32_t>( pEnabledLayerNames_.size() ) )
26891       , ppEnabledLayerNames( pEnabledLayerNames_.data() )
26892       , enabledExtensionCount( static_cast<uint32_t>( pEnabledExtensionNames_.size() ) )
26893       , ppEnabledExtensionNames( pEnabledExtensionNames_.data() )
26894       , pEnabledFeatures( pEnabledFeatures_ )
26895     {
26896     }
26897 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26898 
26899     DeviceCreateInfo & operator=( DeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26900 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26901 
operator =VULKAN_HPP_NAMESPACE::DeviceCreateInfo26902     DeviceCreateInfo & operator=( VkDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
26903     {
26904       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceCreateInfo const *>( &rhs );
26905       return *this;
26906     }
26907 
26908 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceCreateInfo26909     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
26910     {
26911       pNext = pNext_;
26912       return *this;
26913     }
26914 
setFlagsVULKAN_HPP_NAMESPACE::DeviceCreateInfo26915     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::DeviceCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
26916     {
26917       flags = flags_;
26918       return *this;
26919     }
26920 
setQueueCreateInfoCountVULKAN_HPP_NAMESPACE::DeviceCreateInfo26921     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ ) VULKAN_HPP_NOEXCEPT
26922     {
26923       queueCreateInfoCount = queueCreateInfoCount_;
26924       return *this;
26925     }
26926 
26927     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo &
setPQueueCreateInfosVULKAN_HPP_NAMESPACE::DeviceCreateInfo26928       setPQueueCreateInfos( const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo * pQueueCreateInfos_ ) VULKAN_HPP_NOEXCEPT
26929     {
26930       pQueueCreateInfos = pQueueCreateInfos_;
26931       return *this;
26932     }
26933 
26934 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueueCreateInfosVULKAN_HPP_NAMESPACE::DeviceCreateInfo26935     DeviceCreateInfo & setQueueCreateInfos(
26936       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo> const & queueCreateInfos_ ) VULKAN_HPP_NOEXCEPT
26937     {
26938       queueCreateInfoCount = static_cast<uint32_t>( queueCreateInfos_.size() );
26939       pQueueCreateInfos    = queueCreateInfos_.data();
26940       return *this;
26941     }
26942 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26943 
setEnabledLayerCountVULKAN_HPP_NAMESPACE::DeviceCreateInfo26944     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setEnabledLayerCount( uint32_t enabledLayerCount_ ) VULKAN_HPP_NOEXCEPT
26945     {
26946       enabledLayerCount = enabledLayerCount_;
26947       return *this;
26948     }
26949 
setPpEnabledLayerNamesVULKAN_HPP_NAMESPACE::DeviceCreateInfo26950     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setPpEnabledLayerNames( const char * const * ppEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT
26951     {
26952       ppEnabledLayerNames = ppEnabledLayerNames_;
26953       return *this;
26954     }
26955 
26956 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
26957     DeviceCreateInfo &
setPEnabledLayerNamesVULKAN_HPP_NAMESPACE::DeviceCreateInfo26958       setPEnabledLayerNames( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT
26959     {
26960       enabledLayerCount   = static_cast<uint32_t>( pEnabledLayerNames_.size() );
26961       ppEnabledLayerNames = pEnabledLayerNames_.data();
26962       return *this;
26963     }
26964 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26965 
setEnabledExtensionCountVULKAN_HPP_NAMESPACE::DeviceCreateInfo26966     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setEnabledExtensionCount( uint32_t enabledExtensionCount_ ) VULKAN_HPP_NOEXCEPT
26967     {
26968       enabledExtensionCount = enabledExtensionCount_;
26969       return *this;
26970     }
26971 
setPpEnabledExtensionNamesVULKAN_HPP_NAMESPACE::DeviceCreateInfo26972     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setPpEnabledExtensionNames( const char * const * ppEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT
26973     {
26974       ppEnabledExtensionNames = ppEnabledExtensionNames_;
26975       return *this;
26976     }
26977 
26978 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
26979     DeviceCreateInfo &
setPEnabledExtensionNamesVULKAN_HPP_NAMESPACE::DeviceCreateInfo26980       setPEnabledExtensionNames( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT
26981     {
26982       enabledExtensionCount   = static_cast<uint32_t>( pEnabledExtensionNames_.size() );
26983       ppEnabledExtensionNames = pEnabledExtensionNames_.data();
26984       return *this;
26985     }
26986 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26987 
setPEnabledFeaturesVULKAN_HPP_NAMESPACE::DeviceCreateInfo26988     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setPEnabledFeatures( const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * pEnabledFeatures_ ) VULKAN_HPP_NOEXCEPT
26989     {
26990       pEnabledFeatures = pEnabledFeatures_;
26991       return *this;
26992     }
26993 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
26994 
operator VkDeviceCreateInfo const&VULKAN_HPP_NAMESPACE::DeviceCreateInfo26995     operator VkDeviceCreateInfo const &() const VULKAN_HPP_NOEXCEPT
26996     {
26997       return *reinterpret_cast<const VkDeviceCreateInfo *>( this );
26998     }
26999 
operator VkDeviceCreateInfo&VULKAN_HPP_NAMESPACE::DeviceCreateInfo27000     operator VkDeviceCreateInfo &() VULKAN_HPP_NOEXCEPT
27001     {
27002       return *reinterpret_cast<VkDeviceCreateInfo *>( this );
27003     }
27004 
27005 #if defined( VULKAN_HPP_USE_REFLECT )
27006 #  if 14 <= VULKAN_HPP_CPP_VERSION
27007     auto
27008 #  else
27009     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
27010                const void * const &,
27011                VULKAN_HPP_NAMESPACE::DeviceCreateFlags const &,
27012                uint32_t const &,
27013                const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo * const &,
27014                uint32_t const &,
27015                const char * const * const &,
27016                uint32_t const &,
27017                const char * const * const &,
27018                const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * const &>
27019 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceCreateInfo27020       reflect() const VULKAN_HPP_NOEXCEPT
27021     {
27022       return std::tie( sType,
27023                        pNext,
27024                        flags,
27025                        queueCreateInfoCount,
27026                        pQueueCreateInfos,
27027                        enabledLayerCount,
27028                        ppEnabledLayerNames,
27029                        enabledExtensionCount,
27030                        ppEnabledExtensionNames,
27031                        pEnabledFeatures );
27032     }
27033 #endif
27034 
27035 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::DeviceCreateInfo27036     std::strong_ordering operator<=>( DeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
27037     {
27038       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
27039         return cmp;
27040       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
27041         return cmp;
27042       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
27043         return cmp;
27044       if ( auto cmp = queueCreateInfoCount <=> rhs.queueCreateInfoCount; cmp != 0 )
27045         return cmp;
27046       if ( auto cmp = pQueueCreateInfos <=> rhs.pQueueCreateInfos; cmp != 0 )
27047         return cmp;
27048       if ( auto cmp = enabledLayerCount <=> rhs.enabledLayerCount; cmp != 0 )
27049         return cmp;
27050       for ( size_t i = 0; i < enabledLayerCount; ++i )
27051       {
27052         if ( ppEnabledLayerNames[i] != rhs.ppEnabledLayerNames[i] )
27053           if ( auto cmp = strcmp( ppEnabledLayerNames[i], rhs.ppEnabledLayerNames[i] ); cmp != 0 )
27054             return cmp < 0 ? std::strong_ordering::less : std::strong_ordering::greater;
27055       }
27056       if ( auto cmp = enabledExtensionCount <=> rhs.enabledExtensionCount; cmp != 0 )
27057         return cmp;
27058       for ( size_t i = 0; i < enabledExtensionCount; ++i )
27059       {
27060         if ( ppEnabledExtensionNames[i] != rhs.ppEnabledExtensionNames[i] )
27061           if ( auto cmp = strcmp( ppEnabledExtensionNames[i], rhs.ppEnabledExtensionNames[i] ); cmp != 0 )
27062             return cmp < 0 ? std::strong_ordering::less : std::strong_ordering::greater;
27063       }
27064       if ( auto cmp = pEnabledFeatures <=> rhs.pEnabledFeatures; cmp != 0 )
27065         return cmp;
27066 
27067       return std::strong_ordering::equivalent;
27068     }
27069 #endif
27070 
operator ==VULKAN_HPP_NAMESPACE::DeviceCreateInfo27071     bool operator==( DeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
27072     {
27073       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( queueCreateInfoCount == rhs.queueCreateInfoCount ) &&
27074              ( pQueueCreateInfos == rhs.pQueueCreateInfos ) && ( enabledLayerCount == rhs.enabledLayerCount ) &&
27075              std::equal( ppEnabledLayerNames,
27076                          ppEnabledLayerNames + enabledLayerCount,
27077                          rhs.ppEnabledLayerNames,
27078                          []( char const * left, char const * right ) { return ( left == right ) || ( strcmp( left, right ) == 0 ); } ) &&
27079              ( enabledExtensionCount == rhs.enabledExtensionCount ) &&
27080              std::equal( ppEnabledExtensionNames,
27081                          ppEnabledExtensionNames + enabledExtensionCount,
27082                          rhs.ppEnabledExtensionNames,
27083                          []( char const * left, char const * right ) { return ( left == right ) || ( strcmp( left, right ) == 0 ); } ) &&
27084              ( pEnabledFeatures == rhs.pEnabledFeatures );
27085     }
27086 
operator !=VULKAN_HPP_NAMESPACE::DeviceCreateInfo27087     bool operator!=( DeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
27088     {
27089       return !operator==( rhs );
27090     }
27091 
27092   public:
27093     VULKAN_HPP_NAMESPACE::StructureType                  sType                   = StructureType::eDeviceCreateInfo;
27094     const void *                                         pNext                   = {};
27095     VULKAN_HPP_NAMESPACE::DeviceCreateFlags              flags                   = {};
27096     uint32_t                                             queueCreateInfoCount    = {};
27097     const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo *  pQueueCreateInfos       = {};
27098     uint32_t                                             enabledLayerCount       = {};
27099     const char * const *                                 ppEnabledLayerNames     = {};
27100     uint32_t                                             enabledExtensionCount   = {};
27101     const char * const *                                 ppEnabledExtensionNames = {};
27102     const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * pEnabledFeatures        = {};
27103   };
27104 
27105   template <>
27106   struct CppType<StructureType, StructureType::eDeviceCreateInfo>
27107   {
27108     using Type = DeviceCreateInfo;
27109   };
27110 
27111   struct DeviceDeviceMemoryReportCreateInfoEXT
27112   {
27113     using NativeType = VkDeviceDeviceMemoryReportCreateInfoEXT;
27114 
27115     static const bool                                  allowDuplicate = true;
27116     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceDeviceMemoryReportCreateInfoEXT;
27117 
27118 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceDeviceMemoryReportCreateInfoEXTVULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27119     VULKAN_HPP_CONSTEXPR DeviceDeviceMemoryReportCreateInfoEXT( VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT flags_           = {},
27120                                                                 PFN_vkDeviceMemoryReportCallbackEXT              pfnUserCallback_ = {},
27121                                                                 void *                                           pUserData_       = {},
27122                                                                 const void *                                     pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
27123       : pNext{ pNext_ }
27124       , flags{ flags_ }
27125       , pfnUserCallback{ pfnUserCallback_ }
27126       , pUserData{ pUserData_ }
27127     {
27128     }
27129 
27130     VULKAN_HPP_CONSTEXPR DeviceDeviceMemoryReportCreateInfoEXT( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27131 
DeviceDeviceMemoryReportCreateInfoEXTVULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27132     DeviceDeviceMemoryReportCreateInfoEXT( VkDeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27133       : DeviceDeviceMemoryReportCreateInfoEXT( *reinterpret_cast<DeviceDeviceMemoryReportCreateInfoEXT const *>( &rhs ) )
27134     {
27135     }
27136 
27137     DeviceDeviceMemoryReportCreateInfoEXT & operator=( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27138 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27139 
operator =VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27140     DeviceDeviceMemoryReportCreateInfoEXT & operator=( VkDeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27141     {
27142       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT const *>( &rhs );
27143       return *this;
27144     }
27145 
27146 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27147     VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
27148     {
27149       pNext = pNext_;
27150       return *this;
27151     }
27152 
setFlagsVULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27153     VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
27154     {
27155       flags = flags_;
27156       return *this;
27157     }
27158 
27159     VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT &
setPfnUserCallbackVULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27160       setPfnUserCallback( PFN_vkDeviceMemoryReportCallbackEXT pfnUserCallback_ ) VULKAN_HPP_NOEXCEPT
27161     {
27162       pfnUserCallback = pfnUserCallback_;
27163       return *this;
27164     }
27165 
setPUserDataVULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27166     VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT & setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT
27167     {
27168       pUserData = pUserData_;
27169       return *this;
27170     }
27171 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27172 
operator VkDeviceDeviceMemoryReportCreateInfoEXT const&VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27173     operator VkDeviceDeviceMemoryReportCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
27174     {
27175       return *reinterpret_cast<const VkDeviceDeviceMemoryReportCreateInfoEXT *>( this );
27176     }
27177 
operator VkDeviceDeviceMemoryReportCreateInfoEXT&VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27178     operator VkDeviceDeviceMemoryReportCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
27179     {
27180       return *reinterpret_cast<VkDeviceDeviceMemoryReportCreateInfoEXT *>( this );
27181     }
27182 
27183 #if defined( VULKAN_HPP_USE_REFLECT )
27184 #  if 14 <= VULKAN_HPP_CPP_VERSION
27185     auto
27186 #  else
27187     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
27188                const void * const &,
27189                VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT const &,
27190                PFN_vkDeviceMemoryReportCallbackEXT const &,
27191                void * const &>
27192 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27193       reflect() const VULKAN_HPP_NOEXCEPT
27194     {
27195       return std::tie( sType, pNext, flags, pfnUserCallback, pUserData );
27196     }
27197 #endif
27198 
operator ==VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27199     bool operator==( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27200     {
27201 #if defined( VULKAN_HPP_USE_REFLECT )
27202       return this->reflect() == rhs.reflect();
27203 #else
27204       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pfnUserCallback == rhs.pfnUserCallback ) &&
27205              ( pUserData == rhs.pUserData );
27206 #endif
27207     }
27208 
operator !=VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT27209     bool operator!=( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27210     {
27211       return !operator==( rhs );
27212     }
27213 
27214   public:
27215     VULKAN_HPP_NAMESPACE::StructureType              sType           = StructureType::eDeviceDeviceMemoryReportCreateInfoEXT;
27216     const void *                                     pNext           = {};
27217     VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT flags           = {};
27218     PFN_vkDeviceMemoryReportCallbackEXT              pfnUserCallback = {};
27219     void *                                           pUserData       = {};
27220   };
27221 
27222   template <>
27223   struct CppType<StructureType, StructureType::eDeviceDeviceMemoryReportCreateInfoEXT>
27224   {
27225     using Type = DeviceDeviceMemoryReportCreateInfoEXT;
27226   };
27227 
27228   struct DeviceDiagnosticsConfigCreateInfoNV
27229   {
27230     using NativeType = VkDeviceDiagnosticsConfigCreateInfoNV;
27231 
27232     static const bool                                  allowDuplicate = false;
27233     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceDiagnosticsConfigCreateInfoNV;
27234 
27235 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceDiagnosticsConfigCreateInfoNVVULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV27236     VULKAN_HPP_CONSTEXPR DeviceDiagnosticsConfigCreateInfoNV( VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigFlagsNV flags_ = {},
27237                                                               const void *                                         pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
27238       : pNext{ pNext_ }
27239       , flags{ flags_ }
27240     {
27241     }
27242 
27243     VULKAN_HPP_CONSTEXPR DeviceDiagnosticsConfigCreateInfoNV( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27244 
DeviceDiagnosticsConfigCreateInfoNVVULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV27245     DeviceDiagnosticsConfigCreateInfoNV( VkDeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
27246       : DeviceDiagnosticsConfigCreateInfoNV( *reinterpret_cast<DeviceDiagnosticsConfigCreateInfoNV const *>( &rhs ) )
27247     {
27248     }
27249 
27250     DeviceDiagnosticsConfigCreateInfoNV & operator=( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27251 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27252 
operator =VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV27253     DeviceDiagnosticsConfigCreateInfoNV & operator=( VkDeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
27254     {
27255       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV const *>( &rhs );
27256       return *this;
27257     }
27258 
27259 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV27260     VULKAN_HPP_CONSTEXPR_14 DeviceDiagnosticsConfigCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
27261     {
27262       pNext = pNext_;
27263       return *this;
27264     }
27265 
setFlagsVULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV27266     VULKAN_HPP_CONSTEXPR_14 DeviceDiagnosticsConfigCreateInfoNV & setFlags( VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
27267     {
27268       flags = flags_;
27269       return *this;
27270     }
27271 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27272 
operator VkDeviceDiagnosticsConfigCreateInfoNV const&VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV27273     operator VkDeviceDiagnosticsConfigCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
27274     {
27275       return *reinterpret_cast<const VkDeviceDiagnosticsConfigCreateInfoNV *>( this );
27276     }
27277 
operator VkDeviceDiagnosticsConfigCreateInfoNV&VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV27278     operator VkDeviceDiagnosticsConfigCreateInfoNV &() VULKAN_HPP_NOEXCEPT
27279     {
27280       return *reinterpret_cast<VkDeviceDiagnosticsConfigCreateInfoNV *>( this );
27281     }
27282 
27283 #if defined( VULKAN_HPP_USE_REFLECT )
27284 #  if 14 <= VULKAN_HPP_CPP_VERSION
27285     auto
27286 #  else
27287     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigFlagsNV const &>
27288 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV27289       reflect() const VULKAN_HPP_NOEXCEPT
27290     {
27291       return std::tie( sType, pNext, flags );
27292     }
27293 #endif
27294 
27295 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
27296     auto operator<=>( DeviceDiagnosticsConfigCreateInfoNV const & ) const = default;
27297 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV27298     bool operator==( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
27299     {
27300 #  if defined( VULKAN_HPP_USE_REFLECT )
27301       return this->reflect() == rhs.reflect();
27302 #  else
27303       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
27304 #  endif
27305     }
27306 
operator !=VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV27307     bool operator!=( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
27308     {
27309       return !operator==( rhs );
27310     }
27311 #endif
27312 
27313   public:
27314     VULKAN_HPP_NAMESPACE::StructureType                  sType = StructureType::eDeviceDiagnosticsConfigCreateInfoNV;
27315     const void *                                         pNext = {};
27316     VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigFlagsNV flags = {};
27317   };
27318 
27319   template <>
27320   struct CppType<StructureType, StructureType::eDeviceDiagnosticsConfigCreateInfoNV>
27321   {
27322     using Type = DeviceDiagnosticsConfigCreateInfoNV;
27323   };
27324 
27325   struct DeviceEventInfoEXT
27326   {
27327     using NativeType = VkDeviceEventInfoEXT;
27328 
27329     static const bool                                  allowDuplicate = false;
27330     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceEventInfoEXT;
27331 
27332 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceEventInfoEXTVULKAN_HPP_NAMESPACE::DeviceEventInfoEXT27333     VULKAN_HPP_CONSTEXPR DeviceEventInfoEXT( VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT deviceEvent_ = VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT::eDisplayHotplug,
27334                                              const void *                             pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
27335       : pNext{ pNext_ }
27336       , deviceEvent{ deviceEvent_ }
27337     {
27338     }
27339 
27340     VULKAN_HPP_CONSTEXPR DeviceEventInfoEXT( DeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27341 
DeviceEventInfoEXTVULKAN_HPP_NAMESPACE::DeviceEventInfoEXT27342     DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : DeviceEventInfoEXT( *reinterpret_cast<DeviceEventInfoEXT const *>( &rhs ) ) {}
27343 
27344     DeviceEventInfoEXT & operator=( DeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27345 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27346 
operator =VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT27347     DeviceEventInfoEXT & operator=( VkDeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27348     {
27349       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT const *>( &rhs );
27350       return *this;
27351     }
27352 
27353 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceEventInfoEXT27354     VULKAN_HPP_CONSTEXPR_14 DeviceEventInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
27355     {
27356       pNext = pNext_;
27357       return *this;
27358     }
27359 
setDeviceEventVULKAN_HPP_NAMESPACE::DeviceEventInfoEXT27360     VULKAN_HPP_CONSTEXPR_14 DeviceEventInfoEXT & setDeviceEvent( VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT deviceEvent_ ) VULKAN_HPP_NOEXCEPT
27361     {
27362       deviceEvent = deviceEvent_;
27363       return *this;
27364     }
27365 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27366 
operator VkDeviceEventInfoEXT const&VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT27367     operator VkDeviceEventInfoEXT const &() const VULKAN_HPP_NOEXCEPT
27368     {
27369       return *reinterpret_cast<const VkDeviceEventInfoEXT *>( this );
27370     }
27371 
operator VkDeviceEventInfoEXT&VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT27372     operator VkDeviceEventInfoEXT &() VULKAN_HPP_NOEXCEPT
27373     {
27374       return *reinterpret_cast<VkDeviceEventInfoEXT *>( this );
27375     }
27376 
27377 #if defined( VULKAN_HPP_USE_REFLECT )
27378 #  if 14 <= VULKAN_HPP_CPP_VERSION
27379     auto
27380 #  else
27381     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT const &>
27382 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceEventInfoEXT27383       reflect() const VULKAN_HPP_NOEXCEPT
27384     {
27385       return std::tie( sType, pNext, deviceEvent );
27386     }
27387 #endif
27388 
27389 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
27390     auto operator<=>( DeviceEventInfoEXT const & ) const = default;
27391 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT27392     bool operator==( DeviceEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27393     {
27394 #  if defined( VULKAN_HPP_USE_REFLECT )
27395       return this->reflect() == rhs.reflect();
27396 #  else
27397       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceEvent == rhs.deviceEvent );
27398 #  endif
27399     }
27400 
operator !=VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT27401     bool operator!=( DeviceEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27402     {
27403       return !operator==( rhs );
27404     }
27405 #endif
27406 
27407   public:
27408     VULKAN_HPP_NAMESPACE::StructureType      sType       = StructureType::eDeviceEventInfoEXT;
27409     const void *                             pNext       = {};
27410     VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT deviceEvent = VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT::eDisplayHotplug;
27411   };
27412 
27413   template <>
27414   struct CppType<StructureType, StructureType::eDeviceEventInfoEXT>
27415   {
27416     using Type = DeviceEventInfoEXT;
27417   };
27418 
27419   struct DeviceFaultAddressInfoEXT
27420   {
27421     using NativeType = VkDeviceFaultAddressInfoEXT;
27422 
27423 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
27424     VULKAN_HPP_CONSTEXPR
DeviceFaultAddressInfoEXTVULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27425       DeviceFaultAddressInfoEXT( VULKAN_HPP_NAMESPACE::DeviceFaultAddressTypeEXT addressType_      = VULKAN_HPP_NAMESPACE::DeviceFaultAddressTypeEXT::eNone,
27426                                  VULKAN_HPP_NAMESPACE::DeviceAddress             reportedAddress_  = {},
27427                                  VULKAN_HPP_NAMESPACE::DeviceSize                addressPrecision_ = {} ) VULKAN_HPP_NOEXCEPT
27428       : addressType{ addressType_ }
27429       , reportedAddress{ reportedAddress_ }
27430       , addressPrecision{ addressPrecision_ }
27431     {
27432     }
27433 
27434     VULKAN_HPP_CONSTEXPR DeviceFaultAddressInfoEXT( DeviceFaultAddressInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27435 
DeviceFaultAddressInfoEXTVULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27436     DeviceFaultAddressInfoEXT( VkDeviceFaultAddressInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27437       : DeviceFaultAddressInfoEXT( *reinterpret_cast<DeviceFaultAddressInfoEXT const *>( &rhs ) )
27438     {
27439     }
27440 
27441     DeviceFaultAddressInfoEXT & operator=( DeviceFaultAddressInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27442 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27443 
operator =VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27444     DeviceFaultAddressInfoEXT & operator=( VkDeviceFaultAddressInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27445     {
27446       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT const *>( &rhs );
27447       return *this;
27448     }
27449 
27450 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAddressTypeVULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27451     VULKAN_HPP_CONSTEXPR_14 DeviceFaultAddressInfoEXT & setAddressType( VULKAN_HPP_NAMESPACE::DeviceFaultAddressTypeEXT addressType_ ) VULKAN_HPP_NOEXCEPT
27452     {
27453       addressType = addressType_;
27454       return *this;
27455     }
27456 
setReportedAddressVULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27457     VULKAN_HPP_CONSTEXPR_14 DeviceFaultAddressInfoEXT & setReportedAddress( VULKAN_HPP_NAMESPACE::DeviceAddress reportedAddress_ ) VULKAN_HPP_NOEXCEPT
27458     {
27459       reportedAddress = reportedAddress_;
27460       return *this;
27461     }
27462 
setAddressPrecisionVULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27463     VULKAN_HPP_CONSTEXPR_14 DeviceFaultAddressInfoEXT & setAddressPrecision( VULKAN_HPP_NAMESPACE::DeviceSize addressPrecision_ ) VULKAN_HPP_NOEXCEPT
27464     {
27465       addressPrecision = addressPrecision_;
27466       return *this;
27467     }
27468 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27469 
operator VkDeviceFaultAddressInfoEXT const&VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27470     operator VkDeviceFaultAddressInfoEXT const &() const VULKAN_HPP_NOEXCEPT
27471     {
27472       return *reinterpret_cast<const VkDeviceFaultAddressInfoEXT *>( this );
27473     }
27474 
operator VkDeviceFaultAddressInfoEXT&VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27475     operator VkDeviceFaultAddressInfoEXT &() VULKAN_HPP_NOEXCEPT
27476     {
27477       return *reinterpret_cast<VkDeviceFaultAddressInfoEXT *>( this );
27478     }
27479 
27480 #if defined( VULKAN_HPP_USE_REFLECT )
27481 #  if 14 <= VULKAN_HPP_CPP_VERSION
27482     auto
27483 #  else
27484     std::tuple<VULKAN_HPP_NAMESPACE::DeviceFaultAddressTypeEXT const &, VULKAN_HPP_NAMESPACE::DeviceAddress const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
27485 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27486       reflect() const VULKAN_HPP_NOEXCEPT
27487     {
27488       return std::tie( addressType, reportedAddress, addressPrecision );
27489     }
27490 #endif
27491 
27492 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
27493     auto operator<=>( DeviceFaultAddressInfoEXT const & ) const = default;
27494 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27495     bool operator==( DeviceFaultAddressInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27496     {
27497 #  if defined( VULKAN_HPP_USE_REFLECT )
27498       return this->reflect() == rhs.reflect();
27499 #  else
27500       return ( addressType == rhs.addressType ) && ( reportedAddress == rhs.reportedAddress ) && ( addressPrecision == rhs.addressPrecision );
27501 #  endif
27502     }
27503 
operator !=VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT27504     bool operator!=( DeviceFaultAddressInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27505     {
27506       return !operator==( rhs );
27507     }
27508 #endif
27509 
27510   public:
27511     VULKAN_HPP_NAMESPACE::DeviceFaultAddressTypeEXT addressType      = VULKAN_HPP_NAMESPACE::DeviceFaultAddressTypeEXT::eNone;
27512     VULKAN_HPP_NAMESPACE::DeviceAddress             reportedAddress  = {};
27513     VULKAN_HPP_NAMESPACE::DeviceSize                addressPrecision = {};
27514   };
27515 
27516   struct DeviceFaultCountsEXT
27517   {
27518     using NativeType = VkDeviceFaultCountsEXT;
27519 
27520     static const bool                                  allowDuplicate = false;
27521     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceFaultCountsEXT;
27522 
27523 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceFaultCountsEXTVULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27524     VULKAN_HPP_CONSTEXPR DeviceFaultCountsEXT( uint32_t                         addressInfoCount_ = {},
27525                                                uint32_t                         vendorInfoCount_  = {},
27526                                                VULKAN_HPP_NAMESPACE::DeviceSize vendorBinarySize_ = {},
27527                                                void *                           pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
27528       : pNext{ pNext_ }
27529       , addressInfoCount{ addressInfoCount_ }
27530       , vendorInfoCount{ vendorInfoCount_ }
27531       , vendorBinarySize{ vendorBinarySize_ }
27532     {
27533     }
27534 
27535     VULKAN_HPP_CONSTEXPR DeviceFaultCountsEXT( DeviceFaultCountsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27536 
DeviceFaultCountsEXTVULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27537     DeviceFaultCountsEXT( VkDeviceFaultCountsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27538       : DeviceFaultCountsEXT( *reinterpret_cast<DeviceFaultCountsEXT const *>( &rhs ) )
27539     {
27540     }
27541 
27542     DeviceFaultCountsEXT & operator=( DeviceFaultCountsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27543 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27544 
operator =VULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27545     DeviceFaultCountsEXT & operator=( VkDeviceFaultCountsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27546     {
27547       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT const *>( &rhs );
27548       return *this;
27549     }
27550 
27551 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27552     VULKAN_HPP_CONSTEXPR_14 DeviceFaultCountsEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
27553     {
27554       pNext = pNext_;
27555       return *this;
27556     }
27557 
setAddressInfoCountVULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27558     VULKAN_HPP_CONSTEXPR_14 DeviceFaultCountsEXT & setAddressInfoCount( uint32_t addressInfoCount_ ) VULKAN_HPP_NOEXCEPT
27559     {
27560       addressInfoCount = addressInfoCount_;
27561       return *this;
27562     }
27563 
setVendorInfoCountVULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27564     VULKAN_HPP_CONSTEXPR_14 DeviceFaultCountsEXT & setVendorInfoCount( uint32_t vendorInfoCount_ ) VULKAN_HPP_NOEXCEPT
27565     {
27566       vendorInfoCount = vendorInfoCount_;
27567       return *this;
27568     }
27569 
setVendorBinarySizeVULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27570     VULKAN_HPP_CONSTEXPR_14 DeviceFaultCountsEXT & setVendorBinarySize( VULKAN_HPP_NAMESPACE::DeviceSize vendorBinarySize_ ) VULKAN_HPP_NOEXCEPT
27571     {
27572       vendorBinarySize = vendorBinarySize_;
27573       return *this;
27574     }
27575 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27576 
operator VkDeviceFaultCountsEXT const&VULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27577     operator VkDeviceFaultCountsEXT const &() const VULKAN_HPP_NOEXCEPT
27578     {
27579       return *reinterpret_cast<const VkDeviceFaultCountsEXT *>( this );
27580     }
27581 
operator VkDeviceFaultCountsEXT&VULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27582     operator VkDeviceFaultCountsEXT &() VULKAN_HPP_NOEXCEPT
27583     {
27584       return *reinterpret_cast<VkDeviceFaultCountsEXT *>( this );
27585     }
27586 
27587 #if defined( VULKAN_HPP_USE_REFLECT )
27588 #  if 14 <= VULKAN_HPP_CPP_VERSION
27589     auto
27590 #  else
27591     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
27592 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27593       reflect() const VULKAN_HPP_NOEXCEPT
27594     {
27595       return std::tie( sType, pNext, addressInfoCount, vendorInfoCount, vendorBinarySize );
27596     }
27597 #endif
27598 
27599 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
27600     auto operator<=>( DeviceFaultCountsEXT const & ) const = default;
27601 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27602     bool operator==( DeviceFaultCountsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27603     {
27604 #  if defined( VULKAN_HPP_USE_REFLECT )
27605       return this->reflect() == rhs.reflect();
27606 #  else
27607       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( addressInfoCount == rhs.addressInfoCount ) && ( vendorInfoCount == rhs.vendorInfoCount ) &&
27608              ( vendorBinarySize == rhs.vendorBinarySize );
27609 #  endif
27610     }
27611 
operator !=VULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT27612     bool operator!=( DeviceFaultCountsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27613     {
27614       return !operator==( rhs );
27615     }
27616 #endif
27617 
27618   public:
27619     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::eDeviceFaultCountsEXT;
27620     void *                              pNext            = {};
27621     uint32_t                            addressInfoCount = {};
27622     uint32_t                            vendorInfoCount  = {};
27623     VULKAN_HPP_NAMESPACE::DeviceSize    vendorBinarySize = {};
27624   };
27625 
27626   template <>
27627   struct CppType<StructureType, StructureType::eDeviceFaultCountsEXT>
27628   {
27629     using Type = DeviceFaultCountsEXT;
27630   };
27631 
27632   struct DeviceFaultVendorInfoEXT
27633   {
27634     using NativeType = VkDeviceFaultVendorInfoEXT;
27635 
27636 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceFaultVendorInfoEXTVULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27637     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorInfoEXT( std::array<char, VK_MAX_DESCRIPTION_SIZE> const & description_     = {},
27638                                                       uint64_t                                          vendorFaultCode_ = {},
27639                                                       uint64_t                                          vendorFaultData_ = {} ) VULKAN_HPP_NOEXCEPT
27640       : description{ description_ }
27641       , vendorFaultCode{ vendorFaultCode_ }
27642       , vendorFaultData{ vendorFaultData_ }
27643     {
27644     }
27645 
27646     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorInfoEXT( DeviceFaultVendorInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27647 
DeviceFaultVendorInfoEXTVULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27648     DeviceFaultVendorInfoEXT( VkDeviceFaultVendorInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27649       : DeviceFaultVendorInfoEXT( *reinterpret_cast<DeviceFaultVendorInfoEXT const *>( &rhs ) )
27650     {
27651     }
27652 
27653 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceFaultVendorInfoEXTVULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27654     DeviceFaultVendorInfoEXT( std::string const & description_, uint64_t vendorFaultCode_ = {}, uint64_t vendorFaultData_ = {} )
27655       : vendorFaultCode( vendorFaultCode_ ), vendorFaultData( vendorFaultData_ )
27656     {
27657       VULKAN_HPP_ASSERT( description_.size() < VK_MAX_DESCRIPTION_SIZE );
27658 #    if defined( WIN32 )
27659       strncpy_s( description, VK_MAX_DESCRIPTION_SIZE, description_.data(), description_.size() );
27660 #    else
27661       strncpy( description, description_.data(), std::min<size_t>( VK_MAX_DESCRIPTION_SIZE, description_.size() ) );
27662 #    endif
27663     }
27664 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27665 
27666     DeviceFaultVendorInfoEXT & operator=( DeviceFaultVendorInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27667 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27668 
operator =VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27669     DeviceFaultVendorInfoEXT & operator=( VkDeviceFaultVendorInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27670     {
27671       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT const *>( &rhs );
27672       return *this;
27673     }
27674 
27675 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setDescriptionVULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27676     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorInfoEXT & setDescription( std::array<char, VK_MAX_DESCRIPTION_SIZE> description_ ) VULKAN_HPP_NOEXCEPT
27677     {
27678       description = description_;
27679       return *this;
27680     }
27681 
27682 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDescriptionVULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27683     DeviceFaultVendorInfoEXT & setDescription( std::string const & description_ ) VULKAN_HPP_NOEXCEPT
27684     {
27685       VULKAN_HPP_ASSERT( description_.size() < VK_MAX_DESCRIPTION_SIZE );
27686 #    if defined( WIN32 )
27687       strncpy_s( description, VK_MAX_DESCRIPTION_SIZE, description_.data(), description_.size() );
27688 #    else
27689       strncpy( description, description_.data(), std::min<size_t>( VK_MAX_DESCRIPTION_SIZE, description_.size() ) );
27690 #    endif
27691       return *this;
27692     }
27693 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27694 
setVendorFaultCodeVULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27695     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorInfoEXT & setVendorFaultCode( uint64_t vendorFaultCode_ ) VULKAN_HPP_NOEXCEPT
27696     {
27697       vendorFaultCode = vendorFaultCode_;
27698       return *this;
27699     }
27700 
setVendorFaultDataVULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27701     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorInfoEXT & setVendorFaultData( uint64_t vendorFaultData_ ) VULKAN_HPP_NOEXCEPT
27702     {
27703       vendorFaultData = vendorFaultData_;
27704       return *this;
27705     }
27706 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27707 
operator VkDeviceFaultVendorInfoEXT const&VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27708     operator VkDeviceFaultVendorInfoEXT const &() const VULKAN_HPP_NOEXCEPT
27709     {
27710       return *reinterpret_cast<const VkDeviceFaultVendorInfoEXT *>( this );
27711     }
27712 
operator VkDeviceFaultVendorInfoEXT&VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27713     operator VkDeviceFaultVendorInfoEXT &() VULKAN_HPP_NOEXCEPT
27714     {
27715       return *reinterpret_cast<VkDeviceFaultVendorInfoEXT *>( this );
27716     }
27717 
27718 #if defined( VULKAN_HPP_USE_REFLECT )
27719 #  if 14 <= VULKAN_HPP_CPP_VERSION
27720     auto
27721 #  else
27722     std::tuple<VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &, uint64_t const &, uint64_t const &>
27723 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27724       reflect() const VULKAN_HPP_NOEXCEPT
27725     {
27726       return std::tie( description, vendorFaultCode, vendorFaultData );
27727     }
27728 #endif
27729 
27730 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27731     std::strong_ordering operator<=>( DeviceFaultVendorInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27732     {
27733       if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 )
27734         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
27735       if ( auto cmp = vendorFaultCode <=> rhs.vendorFaultCode; cmp != 0 )
27736         return cmp;
27737       if ( auto cmp = vendorFaultData <=> rhs.vendorFaultData; cmp != 0 )
27738         return cmp;
27739 
27740       return std::strong_ordering::equivalent;
27741     }
27742 #endif
27743 
operator ==VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27744     bool operator==( DeviceFaultVendorInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27745     {
27746       return ( strcmp( description, rhs.description ) == 0 ) && ( vendorFaultCode == rhs.vendorFaultCode ) && ( vendorFaultData == rhs.vendorFaultData );
27747     }
27748 
operator !=VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT27749     bool operator!=( DeviceFaultVendorInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27750     {
27751       return !operator==( rhs );
27752     }
27753 
27754   public:
27755     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description     = {};
27756     uint64_t                                                            vendorFaultCode = {};
27757     uint64_t                                                            vendorFaultData = {};
27758   };
27759 
27760   struct DeviceFaultInfoEXT
27761   {
27762     using NativeType = VkDeviceFaultInfoEXT;
27763 
27764     static const bool                                  allowDuplicate = false;
27765     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceFaultInfoEXT;
27766 
27767 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceFaultInfoEXTVULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT27768     VULKAN_HPP_CONSTEXPR_14 DeviceFaultInfoEXT( std::array<char, VK_MAX_DESCRIPTION_SIZE> const & description_       = {},
27769                                                 VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT * pAddressInfos_     = {},
27770                                                 VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT *  pVendorInfos_      = {},
27771                                                 void *                                            pVendorBinaryData_ = {},
27772                                                 void *                                            pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
27773       : pNext{ pNext_ }
27774       , description{ description_ }
27775       , pAddressInfos{ pAddressInfos_ }
27776       , pVendorInfos{ pVendorInfos_ }
27777       , pVendorBinaryData{ pVendorBinaryData_ }
27778     {
27779     }
27780 
27781 #  ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
27782     VULKAN_HPP_CONSTEXPR_14 DeviceFaultInfoEXT( DeviceFaultInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27783 
DeviceFaultInfoEXTVULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT27784     DeviceFaultInfoEXT( VkDeviceFaultInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : DeviceFaultInfoEXT( *reinterpret_cast<DeviceFaultInfoEXT const *>( &rhs ) ) {}
27785 
27786     DeviceFaultInfoEXT & operator=( DeviceFaultInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27787 #  else
27788     DeviceFaultInfoEXT( DeviceFaultInfoEXT const & )             = delete;
27789     DeviceFaultInfoEXT & operator=( DeviceFaultInfoEXT const & ) = delete;
27790 
DeviceFaultInfoEXTVULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT27791     DeviceFaultInfoEXT( DeviceFaultInfoEXT && rhs ) VULKAN_HPP_NOEXCEPT
27792       : pNext{ rhs.pNext }
27793       , pAddressInfos{ rhs.pAddressInfos }
27794       , pVendorInfos{ rhs.pVendorInfos }
27795       , pVendorBinaryData{ rhs.pVendorBinaryData }
27796     {
27797       memcpy( description, rhs.description, VK_MAX_DESCRIPTION_SIZE );
27798 
27799       rhs.pNext = nullptr;
27800       memset( rhs.description, 0, VK_MAX_DESCRIPTION_SIZE );
27801       rhs.pAddressInfos     = nullptr;
27802       rhs.pVendorInfos      = nullptr;
27803       rhs.pVendorBinaryData = nullptr;
27804     }
27805 
operator =VULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT27806     DeviceFaultInfoEXT & operator=( DeviceFaultInfoEXT && rhs ) VULKAN_HPP_NOEXCEPT
27807     {
27808       free( pAddressInfos );
27809       free( pVendorInfos );
27810       free( pVendorBinaryData );
27811 
27812       pNext = rhs.pNext;
27813       memcpy( description, rhs.description, VK_MAX_DESCRIPTION_SIZE );
27814       pAddressInfos     = rhs.pAddressInfos;
27815       pVendorInfos      = rhs.pVendorInfos;
27816       pVendorBinaryData = rhs.pVendorBinaryData;
27817 
27818       rhs.pNext = nullptr;
27819       memset( rhs.description, 0, VK_MAX_DESCRIPTION_SIZE );
27820       rhs.pAddressInfos     = nullptr;
27821       rhs.pVendorInfos      = nullptr;
27822       rhs.pVendorBinaryData = nullptr;
27823 
27824       return *this;
27825     }
27826 
~DeviceFaultInfoEXTVULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT27827     ~DeviceFaultInfoEXT() VULKAN_HPP_NOEXCEPT
27828     {
27829       free( pAddressInfos );
27830       free( pVendorInfos );
27831       free( pVendorBinaryData );
27832     }
27833 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27834 #endif   /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27835 
operator VkDeviceFaultInfoEXT const&VULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT27836     operator VkDeviceFaultInfoEXT const &() const VULKAN_HPP_NOEXCEPT
27837     {
27838       return *reinterpret_cast<const VkDeviceFaultInfoEXT *>( this );
27839     }
27840 
operator VkDeviceFaultInfoEXT&VULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT27841     operator VkDeviceFaultInfoEXT &() VULKAN_HPP_NOEXCEPT
27842     {
27843       return *reinterpret_cast<VkDeviceFaultInfoEXT *>( this );
27844     }
27845 
27846 #if defined( VULKAN_HPP_USE_REFLECT )
27847 #  if 14 <= VULKAN_HPP_CPP_VERSION
27848     auto
27849 #  else
27850     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
27851                void * const &,
27852                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
27853                VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT * const &,
27854                VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT * const &,
27855                void * const &>
27856 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT27857       reflect() const VULKAN_HPP_NOEXCEPT
27858     {
27859       return std::tie( sType, pNext, description, pAddressInfos, pVendorInfos, pVendorBinaryData );
27860     }
27861 #endif
27862 
27863 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT27864     std::strong_ordering operator<=>( DeviceFaultInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27865     {
27866       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
27867         return cmp;
27868       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
27869         return cmp;
27870       if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 )
27871         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
27872       if ( auto cmp = pAddressInfos <=> rhs.pAddressInfos; cmp != 0 )
27873         return cmp;
27874       if ( auto cmp = pVendorInfos <=> rhs.pVendorInfos; cmp != 0 )
27875         return cmp;
27876       if ( auto cmp = pVendorBinaryData <=> rhs.pVendorBinaryData; cmp != 0 )
27877         return cmp;
27878 
27879       return std::strong_ordering::equivalent;
27880     }
27881 #endif
27882 
operator ==VULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT27883     bool operator==( DeviceFaultInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27884     {
27885       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( strcmp( description, rhs.description ) == 0 ) && ( pAddressInfos == rhs.pAddressInfos ) &&
27886              ( pVendorInfos == rhs.pVendorInfos ) && ( pVendorBinaryData == rhs.pVendorBinaryData );
27887     }
27888 
operator !=VULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT27889     bool operator!=( DeviceFaultInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27890     {
27891       return !operator==( rhs );
27892     }
27893 
27894   public:
27895     VULKAN_HPP_NAMESPACE::StructureType                                 sType             = StructureType::eDeviceFaultInfoEXT;
27896     void *                                                              pNext             = {};
27897     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description       = {};
27898     VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT *                   pAddressInfos     = {};
27899     VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT *                    pVendorInfos      = {};
27900     void *                                                              pVendorBinaryData = {};
27901   };
27902 
27903   template <>
27904   struct CppType<StructureType, StructureType::eDeviceFaultInfoEXT>
27905   {
27906     using Type = DeviceFaultInfoEXT;
27907   };
27908 
27909   struct DeviceFaultVendorBinaryHeaderVersionOneEXT
27910   {
27911     using NativeType = VkDeviceFaultVendorBinaryHeaderVersionOneEXT;
27912 
27913 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceFaultVendorBinaryHeaderVersionOneEXTVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT27914     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT(
27915       uint32_t                                                      headerSize_        = {},
27916       VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionEXT headerVersion_     = VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionEXT::eOne,
27917       uint32_t                                                      vendorID_          = {},
27918       uint32_t                                                      deviceID_          = {},
27919       uint32_t                                                      driverVersion_     = {},
27920       std::array<uint8_t, VK_UUID_SIZE> const &                     pipelineCacheUUID_ = {},
27921       uint32_t                                                      applicationNameOffset_ = {},
27922       uint32_t                                                      applicationVersion_    = {},
27923       uint32_t                                                      engineNameOffset_      = {},
27924       uint32_t                                                      engineVersion_         = {},
27925       uint32_t                                                      apiVersion_            = {} ) VULKAN_HPP_NOEXCEPT
27926       : headerSize{ headerSize_ }
27927       , headerVersion{ headerVersion_ }
27928       , vendorID{ vendorID_ }
27929       , deviceID{ deviceID_ }
27930       , driverVersion{ driverVersion_ }
27931       , pipelineCacheUUID{ pipelineCacheUUID_ }
27932       , applicationNameOffset{ applicationNameOffset_ }
27933       , applicationVersion{ applicationVersion_ }
27934       , engineNameOffset{ engineNameOffset_ }
27935       , engineVersion{ engineVersion_ }
27936       , apiVersion{ apiVersion_ }
27937     {
27938     }
27939 
27940     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT( DeviceFaultVendorBinaryHeaderVersionOneEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27941 
DeviceFaultVendorBinaryHeaderVersionOneEXTVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT27942     DeviceFaultVendorBinaryHeaderVersionOneEXT( VkDeviceFaultVendorBinaryHeaderVersionOneEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27943       : DeviceFaultVendorBinaryHeaderVersionOneEXT( *reinterpret_cast<DeviceFaultVendorBinaryHeaderVersionOneEXT const *>( &rhs ) )
27944     {
27945     }
27946 
27947     DeviceFaultVendorBinaryHeaderVersionOneEXT & operator=( DeviceFaultVendorBinaryHeaderVersionOneEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27948 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27949 
operator =VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT27950     DeviceFaultVendorBinaryHeaderVersionOneEXT & operator=( VkDeviceFaultVendorBinaryHeaderVersionOneEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27951     {
27952       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT const *>( &rhs );
27953       return *this;
27954     }
27955 
27956 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setHeaderSizeVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT27957     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT & setHeaderSize( uint32_t headerSize_ ) VULKAN_HPP_NOEXCEPT
27958     {
27959       headerSize = headerSize_;
27960       return *this;
27961     }
27962 
27963     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT &
setHeaderVersionVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT27964       setHeaderVersion( VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionEXT headerVersion_ ) VULKAN_HPP_NOEXCEPT
27965     {
27966       headerVersion = headerVersion_;
27967       return *this;
27968     }
27969 
setVendorIDVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT27970     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT & setVendorID( uint32_t vendorID_ ) VULKAN_HPP_NOEXCEPT
27971     {
27972       vendorID = vendorID_;
27973       return *this;
27974     }
27975 
setDeviceIDVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT27976     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT & setDeviceID( uint32_t deviceID_ ) VULKAN_HPP_NOEXCEPT
27977     {
27978       deviceID = deviceID_;
27979       return *this;
27980     }
27981 
setDriverVersionVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT27982     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT & setDriverVersion( uint32_t driverVersion_ ) VULKAN_HPP_NOEXCEPT
27983     {
27984       driverVersion = driverVersion_;
27985       return *this;
27986     }
27987 
27988     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT &
setPipelineCacheUUIDVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT27989       setPipelineCacheUUID( std::array<uint8_t, VK_UUID_SIZE> pipelineCacheUUID_ ) VULKAN_HPP_NOEXCEPT
27990     {
27991       pipelineCacheUUID = pipelineCacheUUID_;
27992       return *this;
27993     }
27994 
setApplicationNameOffsetVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT27995     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT & setApplicationNameOffset( uint32_t applicationNameOffset_ ) VULKAN_HPP_NOEXCEPT
27996     {
27997       applicationNameOffset = applicationNameOffset_;
27998       return *this;
27999     }
28000 
setApplicationVersionVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28001     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT & setApplicationVersion( uint32_t applicationVersion_ ) VULKAN_HPP_NOEXCEPT
28002     {
28003       applicationVersion = applicationVersion_;
28004       return *this;
28005     }
28006 
setEngineNameOffsetVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28007     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT & setEngineNameOffset( uint32_t engineNameOffset_ ) VULKAN_HPP_NOEXCEPT
28008     {
28009       engineNameOffset = engineNameOffset_;
28010       return *this;
28011     }
28012 
setEngineVersionVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28013     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT & setEngineVersion( uint32_t engineVersion_ ) VULKAN_HPP_NOEXCEPT
28014     {
28015       engineVersion = engineVersion_;
28016       return *this;
28017     }
28018 
setApiVersionVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28019     VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneEXT & setApiVersion( uint32_t apiVersion_ ) VULKAN_HPP_NOEXCEPT
28020     {
28021       apiVersion = apiVersion_;
28022       return *this;
28023     }
28024 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
28025 
operator VkDeviceFaultVendorBinaryHeaderVersionOneEXT const&VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28026     operator VkDeviceFaultVendorBinaryHeaderVersionOneEXT const &() const VULKAN_HPP_NOEXCEPT
28027     {
28028       return *reinterpret_cast<const VkDeviceFaultVendorBinaryHeaderVersionOneEXT *>( this );
28029     }
28030 
operator VkDeviceFaultVendorBinaryHeaderVersionOneEXT&VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28031     operator VkDeviceFaultVendorBinaryHeaderVersionOneEXT &() VULKAN_HPP_NOEXCEPT
28032     {
28033       return *reinterpret_cast<VkDeviceFaultVendorBinaryHeaderVersionOneEXT *>( this );
28034     }
28035 
28036 #if defined( VULKAN_HPP_USE_REFLECT )
28037 #  if 14 <= VULKAN_HPP_CPP_VERSION
28038     auto
28039 #  else
28040     std::tuple<uint32_t const &,
28041                VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionEXT const &,
28042                uint32_t const &,
28043                uint32_t const &,
28044                uint32_t const &,
28045                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &,
28046                uint32_t const &,
28047                uint32_t const &,
28048                uint32_t const &,
28049                uint32_t const &,
28050                uint32_t const &>
28051 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28052       reflect() const VULKAN_HPP_NOEXCEPT
28053     {
28054       return std::tie( headerSize,
28055                        headerVersion,
28056                        vendorID,
28057                        deviceID,
28058                        driverVersion,
28059                        pipelineCacheUUID,
28060                        applicationNameOffset,
28061                        applicationVersion,
28062                        engineNameOffset,
28063                        engineVersion,
28064                        apiVersion );
28065     }
28066 #endif
28067 
28068 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28069     auto operator<=>( DeviceFaultVendorBinaryHeaderVersionOneEXT const & ) const = default;
28070 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28071     bool operator==( DeviceFaultVendorBinaryHeaderVersionOneEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
28072     {
28073 #  if defined( VULKAN_HPP_USE_REFLECT )
28074       return this->reflect() == rhs.reflect();
28075 #  else
28076       return ( headerSize == rhs.headerSize ) && ( headerVersion == rhs.headerVersion ) && ( vendorID == rhs.vendorID ) && ( deviceID == rhs.deviceID ) &&
28077              ( driverVersion == rhs.driverVersion ) && ( pipelineCacheUUID == rhs.pipelineCacheUUID ) &&
28078              ( applicationNameOffset == rhs.applicationNameOffset ) && ( applicationVersion == rhs.applicationVersion ) &&
28079              ( engineNameOffset == rhs.engineNameOffset ) && ( engineVersion == rhs.engineVersion ) && ( apiVersion == rhs.apiVersion );
28080 #  endif
28081     }
28082 
operator !=VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT28083     bool operator!=( DeviceFaultVendorBinaryHeaderVersionOneEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
28084     {
28085       return !operator==( rhs );
28086     }
28087 #endif
28088 
28089   public:
28090     uint32_t                                                      headerSize            = {};
28091     VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionEXT headerVersion         = VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionEXT::eOne;
28092     uint32_t                                                      vendorID              = {};
28093     uint32_t                                                      deviceID              = {};
28094     uint32_t                                                      driverVersion         = {};
28095     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE>   pipelineCacheUUID     = {};
28096     uint32_t                                                      applicationNameOffset = {};
28097     uint32_t                                                      applicationVersion    = {};
28098     uint32_t                                                      engineNameOffset      = {};
28099     uint32_t                                                      engineVersion         = {};
28100     uint32_t                                                      apiVersion            = {};
28101   };
28102 
28103   struct DeviceGroupBindSparseInfo
28104   {
28105     using NativeType = VkDeviceGroupBindSparseInfo;
28106 
28107     static const bool                                  allowDuplicate = false;
28108     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceGroupBindSparseInfo;
28109 
28110 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
28111     VULKAN_HPP_CONSTEXPR
DeviceGroupBindSparseInfoVULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28112       DeviceGroupBindSparseInfo( uint32_t resourceDeviceIndex_ = {}, uint32_t memoryDeviceIndex_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
28113       : pNext{ pNext_ }
28114       , resourceDeviceIndex{ resourceDeviceIndex_ }
28115       , memoryDeviceIndex{ memoryDeviceIndex_ }
28116     {
28117     }
28118 
28119     VULKAN_HPP_CONSTEXPR DeviceGroupBindSparseInfo( DeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28120 
DeviceGroupBindSparseInfoVULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28121     DeviceGroupBindSparseInfo( VkDeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28122       : DeviceGroupBindSparseInfo( *reinterpret_cast<DeviceGroupBindSparseInfo const *>( &rhs ) )
28123     {
28124     }
28125 
28126     DeviceGroupBindSparseInfo & operator=( DeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28127 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28128 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28129     DeviceGroupBindSparseInfo & operator=( VkDeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28130     {
28131       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo const *>( &rhs );
28132       return *this;
28133     }
28134 
28135 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28136     VULKAN_HPP_CONSTEXPR_14 DeviceGroupBindSparseInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
28137     {
28138       pNext = pNext_;
28139       return *this;
28140     }
28141 
setResourceDeviceIndexVULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28142     VULKAN_HPP_CONSTEXPR_14 DeviceGroupBindSparseInfo & setResourceDeviceIndex( uint32_t resourceDeviceIndex_ ) VULKAN_HPP_NOEXCEPT
28143     {
28144       resourceDeviceIndex = resourceDeviceIndex_;
28145       return *this;
28146     }
28147 
setMemoryDeviceIndexVULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28148     VULKAN_HPP_CONSTEXPR_14 DeviceGroupBindSparseInfo & setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ ) VULKAN_HPP_NOEXCEPT
28149     {
28150       memoryDeviceIndex = memoryDeviceIndex_;
28151       return *this;
28152     }
28153 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
28154 
operator VkDeviceGroupBindSparseInfo const&VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28155     operator VkDeviceGroupBindSparseInfo const &() const VULKAN_HPP_NOEXCEPT
28156     {
28157       return *reinterpret_cast<const VkDeviceGroupBindSparseInfo *>( this );
28158     }
28159 
operator VkDeviceGroupBindSparseInfo&VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28160     operator VkDeviceGroupBindSparseInfo &() VULKAN_HPP_NOEXCEPT
28161     {
28162       return *reinterpret_cast<VkDeviceGroupBindSparseInfo *>( this );
28163     }
28164 
28165 #if defined( VULKAN_HPP_USE_REFLECT )
28166 #  if 14 <= VULKAN_HPP_CPP_VERSION
28167     auto
28168 #  else
28169     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, uint32_t const &>
28170 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28171       reflect() const VULKAN_HPP_NOEXCEPT
28172     {
28173       return std::tie( sType, pNext, resourceDeviceIndex, memoryDeviceIndex );
28174     }
28175 #endif
28176 
28177 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28178     auto operator<=>( DeviceGroupBindSparseInfo const & ) const = default;
28179 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28180     bool operator==( DeviceGroupBindSparseInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
28181     {
28182 #  if defined( VULKAN_HPP_USE_REFLECT )
28183       return this->reflect() == rhs.reflect();
28184 #  else
28185       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( resourceDeviceIndex == rhs.resourceDeviceIndex ) &&
28186              ( memoryDeviceIndex == rhs.memoryDeviceIndex );
28187 #  endif
28188     }
28189 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo28190     bool operator!=( DeviceGroupBindSparseInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
28191     {
28192       return !operator==( rhs );
28193     }
28194 #endif
28195 
28196   public:
28197     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::eDeviceGroupBindSparseInfo;
28198     const void *                        pNext               = {};
28199     uint32_t                            resourceDeviceIndex = {};
28200     uint32_t                            memoryDeviceIndex   = {};
28201   };
28202 
28203   template <>
28204   struct CppType<StructureType, StructureType::eDeviceGroupBindSparseInfo>
28205   {
28206     using Type = DeviceGroupBindSparseInfo;
28207   };
28208 
28209   using DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo;
28210 
28211   struct DeviceGroupCommandBufferBeginInfo
28212   {
28213     using NativeType = VkDeviceGroupCommandBufferBeginInfo;
28214 
28215     static const bool                                  allowDuplicate = false;
28216     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceGroupCommandBufferBeginInfo;
28217 
28218 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupCommandBufferBeginInfoVULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo28219     VULKAN_HPP_CONSTEXPR DeviceGroupCommandBufferBeginInfo( uint32_t deviceMask_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
28220       : pNext{ pNext_ }
28221       , deviceMask{ deviceMask_ }
28222     {
28223     }
28224 
28225     VULKAN_HPP_CONSTEXPR DeviceGroupCommandBufferBeginInfo( DeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28226 
DeviceGroupCommandBufferBeginInfoVULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo28227     DeviceGroupCommandBufferBeginInfo( VkDeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28228       : DeviceGroupCommandBufferBeginInfo( *reinterpret_cast<DeviceGroupCommandBufferBeginInfo const *>( &rhs ) )
28229     {
28230     }
28231 
28232     DeviceGroupCommandBufferBeginInfo & operator=( DeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28233 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28234 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo28235     DeviceGroupCommandBufferBeginInfo & operator=( VkDeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28236     {
28237       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo const *>( &rhs );
28238       return *this;
28239     }
28240 
28241 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo28242     VULKAN_HPP_CONSTEXPR_14 DeviceGroupCommandBufferBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
28243     {
28244       pNext = pNext_;
28245       return *this;
28246     }
28247 
setDeviceMaskVULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo28248     VULKAN_HPP_CONSTEXPR_14 DeviceGroupCommandBufferBeginInfo & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT
28249     {
28250       deviceMask = deviceMask_;
28251       return *this;
28252     }
28253 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
28254 
operator VkDeviceGroupCommandBufferBeginInfo const&VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo28255     operator VkDeviceGroupCommandBufferBeginInfo const &() const VULKAN_HPP_NOEXCEPT
28256     {
28257       return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfo *>( this );
28258     }
28259 
operator VkDeviceGroupCommandBufferBeginInfo&VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo28260     operator VkDeviceGroupCommandBufferBeginInfo &() VULKAN_HPP_NOEXCEPT
28261     {
28262       return *reinterpret_cast<VkDeviceGroupCommandBufferBeginInfo *>( this );
28263     }
28264 
28265 #if defined( VULKAN_HPP_USE_REFLECT )
28266 #  if 14 <= VULKAN_HPP_CPP_VERSION
28267     auto
28268 #  else
28269     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
28270 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo28271       reflect() const VULKAN_HPP_NOEXCEPT
28272     {
28273       return std::tie( sType, pNext, deviceMask );
28274     }
28275 #endif
28276 
28277 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28278     auto operator<=>( DeviceGroupCommandBufferBeginInfo const & ) const = default;
28279 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo28280     bool operator==( DeviceGroupCommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
28281     {
28282 #  if defined( VULKAN_HPP_USE_REFLECT )
28283       return this->reflect() == rhs.reflect();
28284 #  else
28285       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceMask == rhs.deviceMask );
28286 #  endif
28287     }
28288 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo28289     bool operator!=( DeviceGroupCommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
28290     {
28291       return !operator==( rhs );
28292     }
28293 #endif
28294 
28295   public:
28296     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eDeviceGroupCommandBufferBeginInfo;
28297     const void *                        pNext      = {};
28298     uint32_t                            deviceMask = {};
28299   };
28300 
28301   template <>
28302   struct CppType<StructureType, StructureType::eDeviceGroupCommandBufferBeginInfo>
28303   {
28304     using Type = DeviceGroupCommandBufferBeginInfo;
28305   };
28306 
28307   using DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo;
28308 
28309   struct DeviceGroupDeviceCreateInfo
28310   {
28311     using NativeType = VkDeviceGroupDeviceCreateInfo;
28312 
28313     static const bool                                  allowDuplicate = false;
28314     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceGroupDeviceCreateInfo;
28315 
28316 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupDeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28317     VULKAN_HPP_CONSTEXPR DeviceGroupDeviceCreateInfo( uint32_t                                     physicalDeviceCount_ = {},
28318                                                       const VULKAN_HPP_NAMESPACE::PhysicalDevice * pPhysicalDevices_    = {},
28319                                                       const void *                                 pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
28320       : pNext{ pNext_ }
28321       , physicalDeviceCount{ physicalDeviceCount_ }
28322       , pPhysicalDevices{ pPhysicalDevices_ }
28323     {
28324     }
28325 
28326     VULKAN_HPP_CONSTEXPR DeviceGroupDeviceCreateInfo( DeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28327 
DeviceGroupDeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28328     DeviceGroupDeviceCreateInfo( VkDeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28329       : DeviceGroupDeviceCreateInfo( *reinterpret_cast<DeviceGroupDeviceCreateInfo const *>( &rhs ) )
28330     {
28331     }
28332 
28333 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceGroupDeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28334     DeviceGroupDeviceCreateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PhysicalDevice> const & physicalDevices_,
28335                                  const void *                                                                                      pNext_ = nullptr )
28336       : pNext( pNext_ ), physicalDeviceCount( static_cast<uint32_t>( physicalDevices_.size() ) ), pPhysicalDevices( physicalDevices_.data() )
28337     {
28338     }
28339 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28340 
28341     DeviceGroupDeviceCreateInfo & operator=( DeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28342 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28343 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28344     DeviceGroupDeviceCreateInfo & operator=( VkDeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28345     {
28346       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo const *>( &rhs );
28347       return *this;
28348     }
28349 
28350 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28351     VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
28352     {
28353       pNext = pNext_;
28354       return *this;
28355     }
28356 
setPhysicalDeviceCountVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28357     VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo & setPhysicalDeviceCount( uint32_t physicalDeviceCount_ ) VULKAN_HPP_NOEXCEPT
28358     {
28359       physicalDeviceCount = physicalDeviceCount_;
28360       return *this;
28361     }
28362 
28363     VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo &
setPPhysicalDevicesVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28364       setPPhysicalDevices( const VULKAN_HPP_NAMESPACE::PhysicalDevice * pPhysicalDevices_ ) VULKAN_HPP_NOEXCEPT
28365     {
28366       pPhysicalDevices = pPhysicalDevices_;
28367       return *this;
28368     }
28369 
28370 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPhysicalDevicesVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28371     DeviceGroupDeviceCreateInfo & setPhysicalDevices(
28372       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PhysicalDevice> const & physicalDevices_ ) VULKAN_HPP_NOEXCEPT
28373     {
28374       physicalDeviceCount = static_cast<uint32_t>( physicalDevices_.size() );
28375       pPhysicalDevices    = physicalDevices_.data();
28376       return *this;
28377     }
28378 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28379 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
28380 
operator VkDeviceGroupDeviceCreateInfo const&VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28381     operator VkDeviceGroupDeviceCreateInfo const &() const VULKAN_HPP_NOEXCEPT
28382     {
28383       return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfo *>( this );
28384     }
28385 
operator VkDeviceGroupDeviceCreateInfo&VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28386     operator VkDeviceGroupDeviceCreateInfo &() VULKAN_HPP_NOEXCEPT
28387     {
28388       return *reinterpret_cast<VkDeviceGroupDeviceCreateInfo *>( this );
28389     }
28390 
28391 #if defined( VULKAN_HPP_USE_REFLECT )
28392 #  if 14 <= VULKAN_HPP_CPP_VERSION
28393     auto
28394 #  else
28395     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::PhysicalDevice * const &>
28396 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28397       reflect() const VULKAN_HPP_NOEXCEPT
28398     {
28399       return std::tie( sType, pNext, physicalDeviceCount, pPhysicalDevices );
28400     }
28401 #endif
28402 
28403 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28404     auto operator<=>( DeviceGroupDeviceCreateInfo const & ) const = default;
28405 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28406     bool operator==( DeviceGroupDeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
28407     {
28408 #  if defined( VULKAN_HPP_USE_REFLECT )
28409       return this->reflect() == rhs.reflect();
28410 #  else
28411       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( physicalDeviceCount == rhs.physicalDeviceCount ) &&
28412              ( pPhysicalDevices == rhs.pPhysicalDevices );
28413 #  endif
28414     }
28415 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo28416     bool operator!=( DeviceGroupDeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
28417     {
28418       return !operator==( rhs );
28419     }
28420 #endif
28421 
28422   public:
28423     VULKAN_HPP_NAMESPACE::StructureType          sType               = StructureType::eDeviceGroupDeviceCreateInfo;
28424     const void *                                 pNext               = {};
28425     uint32_t                                     physicalDeviceCount = {};
28426     const VULKAN_HPP_NAMESPACE::PhysicalDevice * pPhysicalDevices    = {};
28427   };
28428 
28429   template <>
28430   struct CppType<StructureType, StructureType::eDeviceGroupDeviceCreateInfo>
28431   {
28432     using Type = DeviceGroupDeviceCreateInfo;
28433   };
28434 
28435   using DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo;
28436 
28437   struct DeviceGroupPresentCapabilitiesKHR
28438   {
28439     using NativeType = VkDeviceGroupPresentCapabilitiesKHR;
28440 
28441     static const bool                                  allowDuplicate = false;
28442     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceGroupPresentCapabilitiesKHR;
28443 
28444 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupPresentCapabilitiesKHRVULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR28445     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentCapabilitiesKHR( std::array<uint32_t, VK_MAX_DEVICE_GROUP_SIZE> const & presentMask_ = {},
28446                                                                VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR   modes_       = {},
28447                                                                void *                                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
28448       : pNext{ pNext_ }
28449       , presentMask{ presentMask_ }
28450       , modes{ modes_ }
28451     {
28452     }
28453 
28454     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentCapabilitiesKHR( DeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28455 
DeviceGroupPresentCapabilitiesKHRVULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR28456     DeviceGroupPresentCapabilitiesKHR( VkDeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
28457       : DeviceGroupPresentCapabilitiesKHR( *reinterpret_cast<DeviceGroupPresentCapabilitiesKHR const *>( &rhs ) )
28458     {
28459     }
28460 
28461     DeviceGroupPresentCapabilitiesKHR & operator=( DeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28462 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28463 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR28464     DeviceGroupPresentCapabilitiesKHR & operator=( VkDeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
28465     {
28466       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR const *>( &rhs );
28467       return *this;
28468     }
28469 
operator VkDeviceGroupPresentCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR28470     operator VkDeviceGroupPresentCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
28471     {
28472       return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHR *>( this );
28473     }
28474 
operator VkDeviceGroupPresentCapabilitiesKHR&VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR28475     operator VkDeviceGroupPresentCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
28476     {
28477       return *reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHR *>( this );
28478     }
28479 
28480 #if defined( VULKAN_HPP_USE_REFLECT )
28481 #  if 14 <= VULKAN_HPP_CPP_VERSION
28482     auto
28483 #  else
28484     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
28485                void * const &,
28486                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, VK_MAX_DEVICE_GROUP_SIZE> const &,
28487                VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR const &>
28488 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR28489       reflect() const VULKAN_HPP_NOEXCEPT
28490     {
28491       return std::tie( sType, pNext, presentMask, modes );
28492     }
28493 #endif
28494 
28495 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28496     auto operator<=>( DeviceGroupPresentCapabilitiesKHR const & ) const = default;
28497 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR28498     bool operator==( DeviceGroupPresentCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
28499     {
28500 #  if defined( VULKAN_HPP_USE_REFLECT )
28501       return this->reflect() == rhs.reflect();
28502 #  else
28503       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentMask == rhs.presentMask ) && ( modes == rhs.modes );
28504 #  endif
28505     }
28506 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR28507     bool operator!=( DeviceGroupPresentCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
28508     {
28509       return !operator==( rhs );
28510     }
28511 #endif
28512 
28513   public:
28514     VULKAN_HPP_NAMESPACE::StructureType                                      sType       = StructureType::eDeviceGroupPresentCapabilitiesKHR;
28515     void *                                                                   pNext       = {};
28516     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, VK_MAX_DEVICE_GROUP_SIZE> presentMask = {};
28517     VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR                     modes       = {};
28518   };
28519 
28520   template <>
28521   struct CppType<StructureType, StructureType::eDeviceGroupPresentCapabilitiesKHR>
28522   {
28523     using Type = DeviceGroupPresentCapabilitiesKHR;
28524   };
28525 
28526   struct DeviceGroupPresentInfoKHR
28527   {
28528     using NativeType = VkDeviceGroupPresentInfoKHR;
28529 
28530     static const bool                                  allowDuplicate = false;
28531     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceGroupPresentInfoKHR;
28532 
28533 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupPresentInfoKHRVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28534     VULKAN_HPP_CONSTEXPR DeviceGroupPresentInfoKHR(
28535       uint32_t                                                swapchainCount_ = {},
28536       const uint32_t *                                        pDeviceMasks_   = {},
28537       VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode_           = VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR::eLocal,
28538       const void *                                            pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
28539       : pNext{ pNext_ }
28540       , swapchainCount{ swapchainCount_ }
28541       , pDeviceMasks{ pDeviceMasks_ }
28542       , mode{ mode_ }
28543     {
28544     }
28545 
28546     VULKAN_HPP_CONSTEXPR DeviceGroupPresentInfoKHR( DeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28547 
DeviceGroupPresentInfoKHRVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28548     DeviceGroupPresentInfoKHR( VkDeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
28549       : DeviceGroupPresentInfoKHR( *reinterpret_cast<DeviceGroupPresentInfoKHR const *>( &rhs ) )
28550     {
28551     }
28552 
28553 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceGroupPresentInfoKHRVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28554     DeviceGroupPresentInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceMasks_,
28555                                VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode_  = VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR::eLocal,
28556                                const void *                                            pNext_ = nullptr )
28557       : pNext( pNext_ ), swapchainCount( static_cast<uint32_t>( deviceMasks_.size() ) ), pDeviceMasks( deviceMasks_.data() ), mode( mode_ )
28558     {
28559     }
28560 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28561 
28562     DeviceGroupPresentInfoKHR & operator=( DeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28563 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28564 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28565     DeviceGroupPresentInfoKHR & operator=( VkDeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
28566     {
28567       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR const *>( &rhs );
28568       return *this;
28569     }
28570 
28571 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28572     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
28573     {
28574       pNext = pNext_;
28575       return *this;
28576     }
28577 
setSwapchainCountVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28578     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
28579     {
28580       swapchainCount = swapchainCount_;
28581       return *this;
28582     }
28583 
setPDeviceMasksVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28584     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & setPDeviceMasks( const uint32_t * pDeviceMasks_ ) VULKAN_HPP_NOEXCEPT
28585     {
28586       pDeviceMasks = pDeviceMasks_;
28587       return *this;
28588     }
28589 
28590 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDeviceMasksVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28591     DeviceGroupPresentInfoKHR & setDeviceMasks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceMasks_ ) VULKAN_HPP_NOEXCEPT
28592     {
28593       swapchainCount = static_cast<uint32_t>( deviceMasks_.size() );
28594       pDeviceMasks   = deviceMasks_.data();
28595       return *this;
28596     }
28597 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28598 
setModeVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28599     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & setMode( VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode_ ) VULKAN_HPP_NOEXCEPT
28600     {
28601       mode = mode_;
28602       return *this;
28603     }
28604 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
28605 
operator VkDeviceGroupPresentInfoKHR const&VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28606     operator VkDeviceGroupPresentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
28607     {
28608       return *reinterpret_cast<const VkDeviceGroupPresentInfoKHR *>( this );
28609     }
28610 
operator VkDeviceGroupPresentInfoKHR&VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28611     operator VkDeviceGroupPresentInfoKHR &() VULKAN_HPP_NOEXCEPT
28612     {
28613       return *reinterpret_cast<VkDeviceGroupPresentInfoKHR *>( this );
28614     }
28615 
28616 #if defined( VULKAN_HPP_USE_REFLECT )
28617 #  if 14 <= VULKAN_HPP_CPP_VERSION
28618     auto
28619 #  else
28620     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
28621                const void * const &,
28622                uint32_t const &,
28623                const uint32_t * const &,
28624                VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR const &>
28625 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28626       reflect() const VULKAN_HPP_NOEXCEPT
28627     {
28628       return std::tie( sType, pNext, swapchainCount, pDeviceMasks, mode );
28629     }
28630 #endif
28631 
28632 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28633     auto operator<=>( DeviceGroupPresentInfoKHR const & ) const = default;
28634 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28635     bool operator==( DeviceGroupPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
28636     {
28637 #  if defined( VULKAN_HPP_USE_REFLECT )
28638       return this->reflect() == rhs.reflect();
28639 #  else
28640       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && ( pDeviceMasks == rhs.pDeviceMasks ) &&
28641              ( mode == rhs.mode );
28642 #  endif
28643     }
28644 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR28645     bool operator!=( DeviceGroupPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
28646     {
28647       return !operator==( rhs );
28648     }
28649 #endif
28650 
28651   public:
28652     VULKAN_HPP_NAMESPACE::StructureType                     sType          = StructureType::eDeviceGroupPresentInfoKHR;
28653     const void *                                            pNext          = {};
28654     uint32_t                                                swapchainCount = {};
28655     const uint32_t *                                        pDeviceMasks   = {};
28656     VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode           = VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR::eLocal;
28657   };
28658 
28659   template <>
28660   struct CppType<StructureType, StructureType::eDeviceGroupPresentInfoKHR>
28661   {
28662     using Type = DeviceGroupPresentInfoKHR;
28663   };
28664 
28665   struct DeviceGroupRenderPassBeginInfo
28666   {
28667     using NativeType = VkDeviceGroupRenderPassBeginInfo;
28668 
28669     static const bool                                  allowDuplicate = false;
28670     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceGroupRenderPassBeginInfo;
28671 
28672 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupRenderPassBeginInfoVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28673     VULKAN_HPP_CONSTEXPR DeviceGroupRenderPassBeginInfo( uint32_t                             deviceMask_            = {},
28674                                                          uint32_t                             deviceRenderAreaCount_ = {},
28675                                                          const VULKAN_HPP_NAMESPACE::Rect2D * pDeviceRenderAreas_    = {},
28676                                                          const void *                         pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
28677       : pNext{ pNext_ }
28678       , deviceMask{ deviceMask_ }
28679       , deviceRenderAreaCount{ deviceRenderAreaCount_ }
28680       , pDeviceRenderAreas{ pDeviceRenderAreas_ }
28681     {
28682     }
28683 
28684     VULKAN_HPP_CONSTEXPR DeviceGroupRenderPassBeginInfo( DeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28685 
DeviceGroupRenderPassBeginInfoVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28686     DeviceGroupRenderPassBeginInfo( VkDeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28687       : DeviceGroupRenderPassBeginInfo( *reinterpret_cast<DeviceGroupRenderPassBeginInfo const *>( &rhs ) )
28688     {
28689     }
28690 
28691 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceGroupRenderPassBeginInfoVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28692     DeviceGroupRenderPassBeginInfo( uint32_t                                                                                  deviceMask_,
28693                                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & deviceRenderAreas_,
28694                                     const void *                                                                              pNext_ = nullptr )
28695       : pNext( pNext_ )
28696       , deviceMask( deviceMask_ )
28697       , deviceRenderAreaCount( static_cast<uint32_t>( deviceRenderAreas_.size() ) )
28698       , pDeviceRenderAreas( deviceRenderAreas_.data() )
28699     {
28700     }
28701 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28702 
28703     DeviceGroupRenderPassBeginInfo & operator=( DeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28704 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28705 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28706     DeviceGroupRenderPassBeginInfo & operator=( VkDeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28707     {
28708       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo const *>( &rhs );
28709       return *this;
28710     }
28711 
28712 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28713     VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
28714     {
28715       pNext = pNext_;
28716       return *this;
28717     }
28718 
setDeviceMaskVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28719     VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT
28720     {
28721       deviceMask = deviceMask_;
28722       return *this;
28723     }
28724 
setDeviceRenderAreaCountVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28725     VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ ) VULKAN_HPP_NOEXCEPT
28726     {
28727       deviceRenderAreaCount = deviceRenderAreaCount_;
28728       return *this;
28729     }
28730 
28731     VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo &
setPDeviceRenderAreasVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28732       setPDeviceRenderAreas( const VULKAN_HPP_NAMESPACE::Rect2D * pDeviceRenderAreas_ ) VULKAN_HPP_NOEXCEPT
28733     {
28734       pDeviceRenderAreas = pDeviceRenderAreas_;
28735       return *this;
28736     }
28737 
28738 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
28739     DeviceGroupRenderPassBeginInfo &
setDeviceRenderAreasVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28740       setDeviceRenderAreas( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & deviceRenderAreas_ ) VULKAN_HPP_NOEXCEPT
28741     {
28742       deviceRenderAreaCount = static_cast<uint32_t>( deviceRenderAreas_.size() );
28743       pDeviceRenderAreas    = deviceRenderAreas_.data();
28744       return *this;
28745     }
28746 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28747 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
28748 
operator VkDeviceGroupRenderPassBeginInfo const&VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28749     operator VkDeviceGroupRenderPassBeginInfo const &() const VULKAN_HPP_NOEXCEPT
28750     {
28751       return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfo *>( this );
28752     }
28753 
operator VkDeviceGroupRenderPassBeginInfo&VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28754     operator VkDeviceGroupRenderPassBeginInfo &() VULKAN_HPP_NOEXCEPT
28755     {
28756       return *reinterpret_cast<VkDeviceGroupRenderPassBeginInfo *>( this );
28757     }
28758 
28759 #if defined( VULKAN_HPP_USE_REFLECT )
28760 #  if 14 <= VULKAN_HPP_CPP_VERSION
28761     auto
28762 #  else
28763     std::
28764       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Rect2D * const &>
28765 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28766       reflect() const VULKAN_HPP_NOEXCEPT
28767     {
28768       return std::tie( sType, pNext, deviceMask, deviceRenderAreaCount, pDeviceRenderAreas );
28769     }
28770 #endif
28771 
28772 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28773     auto operator<=>( DeviceGroupRenderPassBeginInfo const & ) const = default;
28774 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28775     bool operator==( DeviceGroupRenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
28776     {
28777 #  if defined( VULKAN_HPP_USE_REFLECT )
28778       return this->reflect() == rhs.reflect();
28779 #  else
28780       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceMask == rhs.deviceMask ) && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount ) &&
28781              ( pDeviceRenderAreas == rhs.pDeviceRenderAreas );
28782 #  endif
28783     }
28784 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo28785     bool operator!=( DeviceGroupRenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
28786     {
28787       return !operator==( rhs );
28788     }
28789 #endif
28790 
28791   public:
28792     VULKAN_HPP_NAMESPACE::StructureType  sType                 = StructureType::eDeviceGroupRenderPassBeginInfo;
28793     const void *                         pNext                 = {};
28794     uint32_t                             deviceMask            = {};
28795     uint32_t                             deviceRenderAreaCount = {};
28796     const VULKAN_HPP_NAMESPACE::Rect2D * pDeviceRenderAreas    = {};
28797   };
28798 
28799   template <>
28800   struct CppType<StructureType, StructureType::eDeviceGroupRenderPassBeginInfo>
28801   {
28802     using Type = DeviceGroupRenderPassBeginInfo;
28803   };
28804 
28805   using DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo;
28806 
28807   struct DeviceGroupSubmitInfo
28808   {
28809     using NativeType = VkDeviceGroupSubmitInfo;
28810 
28811     static const bool                                  allowDuplicate = false;
28812     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceGroupSubmitInfo;
28813 
28814 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupSubmitInfoVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo28815     VULKAN_HPP_CONSTEXPR DeviceGroupSubmitInfo( uint32_t         waitSemaphoreCount_            = {},
28816                                                 const uint32_t * pWaitSemaphoreDeviceIndices_   = {},
28817                                                 uint32_t         commandBufferCount_            = {},
28818                                                 const uint32_t * pCommandBufferDeviceMasks_     = {},
28819                                                 uint32_t         signalSemaphoreCount_          = {},
28820                                                 const uint32_t * pSignalSemaphoreDeviceIndices_ = {},
28821                                                 const void *     pNext_                         = nullptr ) VULKAN_HPP_NOEXCEPT
28822       : pNext{ pNext_ }
28823       , waitSemaphoreCount{ waitSemaphoreCount_ }
28824       , pWaitSemaphoreDeviceIndices{ pWaitSemaphoreDeviceIndices_ }
28825       , commandBufferCount{ commandBufferCount_ }
28826       , pCommandBufferDeviceMasks{ pCommandBufferDeviceMasks_ }
28827       , signalSemaphoreCount{ signalSemaphoreCount_ }
28828       , pSignalSemaphoreDeviceIndices{ pSignalSemaphoreDeviceIndices_ }
28829     {
28830     }
28831 
28832     VULKAN_HPP_CONSTEXPR DeviceGroupSubmitInfo( DeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28833 
DeviceGroupSubmitInfoVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo28834     DeviceGroupSubmitInfo( VkDeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28835       : DeviceGroupSubmitInfo( *reinterpret_cast<DeviceGroupSubmitInfo const *>( &rhs ) )
28836     {
28837     }
28838 
28839 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceGroupSubmitInfoVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo28840     DeviceGroupSubmitInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & waitSemaphoreDeviceIndices_,
28841                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & commandBufferDeviceMasks_     = {},
28842                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & signalSemaphoreDeviceIndices_ = {},
28843                            const void *                                                          pNext_                        = nullptr )
28844       : pNext( pNext_ )
28845       , waitSemaphoreCount( static_cast<uint32_t>( waitSemaphoreDeviceIndices_.size() ) )
28846       , pWaitSemaphoreDeviceIndices( waitSemaphoreDeviceIndices_.data() )
28847       , commandBufferCount( static_cast<uint32_t>( commandBufferDeviceMasks_.size() ) )
28848       , pCommandBufferDeviceMasks( commandBufferDeviceMasks_.data() )
28849       , signalSemaphoreCount( static_cast<uint32_t>( signalSemaphoreDeviceIndices_.size() ) )
28850       , pSignalSemaphoreDeviceIndices( signalSemaphoreDeviceIndices_.data() )
28851     {
28852     }
28853 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28854 
28855     DeviceGroupSubmitInfo & operator=( DeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28856 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28857 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo28858     DeviceGroupSubmitInfo & operator=( VkDeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
28859     {
28860       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo const *>( &rhs );
28861       return *this;
28862     }
28863 
28864 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo28865     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
28866     {
28867       pNext = pNext_;
28868       return *this;
28869     }
28870 
setWaitSemaphoreCountVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo28871     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
28872     {
28873       waitSemaphoreCount = waitSemaphoreCount_;
28874       return *this;
28875     }
28876 
setPWaitSemaphoreDeviceIndicesVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo28877     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setPWaitSemaphoreDeviceIndices( const uint32_t * pWaitSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
28878     {
28879       pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
28880       return *this;
28881     }
28882 
28883 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
28884     DeviceGroupSubmitInfo &
setWaitSemaphoreDeviceIndicesVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo28885       setWaitSemaphoreDeviceIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & waitSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
28886     {
28887       waitSemaphoreCount          = static_cast<uint32_t>( waitSemaphoreDeviceIndices_.size() );
28888       pWaitSemaphoreDeviceIndices = waitSemaphoreDeviceIndices_.data();
28889       return *this;
28890     }
28891 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28892 
setCommandBufferCountVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo28893     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setCommandBufferCount( uint32_t commandBufferCount_ ) VULKAN_HPP_NOEXCEPT
28894     {
28895       commandBufferCount = commandBufferCount_;
28896       return *this;
28897     }
28898 
setPCommandBufferDeviceMasksVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo28899     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setPCommandBufferDeviceMasks( const uint32_t * pCommandBufferDeviceMasks_ ) VULKAN_HPP_NOEXCEPT
28900     {
28901       pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
28902       return *this;
28903     }
28904 
28905 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
28906     DeviceGroupSubmitInfo &
setCommandBufferDeviceMasksVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo28907       setCommandBufferDeviceMasks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & commandBufferDeviceMasks_ ) VULKAN_HPP_NOEXCEPT
28908     {
28909       commandBufferCount        = static_cast<uint32_t>( commandBufferDeviceMasks_.size() );
28910       pCommandBufferDeviceMasks = commandBufferDeviceMasks_.data();
28911       return *this;
28912     }
28913 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28914 
setSignalSemaphoreCountVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo28915     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
28916     {
28917       signalSemaphoreCount = signalSemaphoreCount_;
28918       return *this;
28919     }
28920 
setPSignalSemaphoreDeviceIndicesVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo28921     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setPSignalSemaphoreDeviceIndices( const uint32_t * pSignalSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
28922     {
28923       pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
28924       return *this;
28925     }
28926 
28927 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
28928     DeviceGroupSubmitInfo &
setSignalSemaphoreDeviceIndicesVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo28929       setSignalSemaphoreDeviceIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & signalSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
28930     {
28931       signalSemaphoreCount          = static_cast<uint32_t>( signalSemaphoreDeviceIndices_.size() );
28932       pSignalSemaphoreDeviceIndices = signalSemaphoreDeviceIndices_.data();
28933       return *this;
28934     }
28935 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28936 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
28937 
operator VkDeviceGroupSubmitInfo const&VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo28938     operator VkDeviceGroupSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
28939     {
28940       return *reinterpret_cast<const VkDeviceGroupSubmitInfo *>( this );
28941     }
28942 
operator VkDeviceGroupSubmitInfo&VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo28943     operator VkDeviceGroupSubmitInfo &() VULKAN_HPP_NOEXCEPT
28944     {
28945       return *reinterpret_cast<VkDeviceGroupSubmitInfo *>( this );
28946     }
28947 
28948 #if defined( VULKAN_HPP_USE_REFLECT )
28949 #  if 14 <= VULKAN_HPP_CPP_VERSION
28950     auto
28951 #  else
28952     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
28953                const void * const &,
28954                uint32_t const &,
28955                const uint32_t * const &,
28956                uint32_t const &,
28957                const uint32_t * const &,
28958                uint32_t const &,
28959                const uint32_t * const &>
28960 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo28961       reflect() const VULKAN_HPP_NOEXCEPT
28962     {
28963       return std::tie( sType,
28964                        pNext,
28965                        waitSemaphoreCount,
28966                        pWaitSemaphoreDeviceIndices,
28967                        commandBufferCount,
28968                        pCommandBufferDeviceMasks,
28969                        signalSemaphoreCount,
28970                        pSignalSemaphoreDeviceIndices );
28971     }
28972 #endif
28973 
28974 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
28975     auto operator<=>( DeviceGroupSubmitInfo const & ) const = default;
28976 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo28977     bool operator==( DeviceGroupSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
28978     {
28979 #  if defined( VULKAN_HPP_USE_REFLECT )
28980       return this->reflect() == rhs.reflect();
28981 #  else
28982       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreCount == rhs.waitSemaphoreCount ) &&
28983              ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices ) && ( commandBufferCount == rhs.commandBufferCount ) &&
28984              ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks ) && ( signalSemaphoreCount == rhs.signalSemaphoreCount ) &&
28985              ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices );
28986 #  endif
28987     }
28988 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo28989     bool operator!=( DeviceGroupSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
28990     {
28991       return !operator==( rhs );
28992     }
28993 #endif
28994 
28995   public:
28996     VULKAN_HPP_NAMESPACE::StructureType sType                         = StructureType::eDeviceGroupSubmitInfo;
28997     const void *                        pNext                         = {};
28998     uint32_t                            waitSemaphoreCount            = {};
28999     const uint32_t *                    pWaitSemaphoreDeviceIndices   = {};
29000     uint32_t                            commandBufferCount            = {};
29001     const uint32_t *                    pCommandBufferDeviceMasks     = {};
29002     uint32_t                            signalSemaphoreCount          = {};
29003     const uint32_t *                    pSignalSemaphoreDeviceIndices = {};
29004   };
29005 
29006   template <>
29007   struct CppType<StructureType, StructureType::eDeviceGroupSubmitInfo>
29008   {
29009     using Type = DeviceGroupSubmitInfo;
29010   };
29011 
29012   using DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo;
29013 
29014   struct DeviceGroupSwapchainCreateInfoKHR
29015   {
29016     using NativeType = VkDeviceGroupSwapchainCreateInfoKHR;
29017 
29018     static const bool                                  allowDuplicate = false;
29019     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceGroupSwapchainCreateInfoKHR;
29020 
29021 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupSwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR29022     VULKAN_HPP_CONSTEXPR DeviceGroupSwapchainCreateInfoKHR( VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes_ = {},
29023                                                             const void *                                         pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
29024       : pNext{ pNext_ }
29025       , modes{ modes_ }
29026     {
29027     }
29028 
29029     VULKAN_HPP_CONSTEXPR DeviceGroupSwapchainCreateInfoKHR( DeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29030 
DeviceGroupSwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR29031     DeviceGroupSwapchainCreateInfoKHR( VkDeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
29032       : DeviceGroupSwapchainCreateInfoKHR( *reinterpret_cast<DeviceGroupSwapchainCreateInfoKHR const *>( &rhs ) )
29033     {
29034     }
29035 
29036     DeviceGroupSwapchainCreateInfoKHR & operator=( DeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29037 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29038 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR29039     DeviceGroupSwapchainCreateInfoKHR & operator=( VkDeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
29040     {
29041       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR const *>( &rhs );
29042       return *this;
29043     }
29044 
29045 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR29046     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSwapchainCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
29047     {
29048       pNext = pNext_;
29049       return *this;
29050     }
29051 
setModesVULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR29052     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSwapchainCreateInfoKHR & setModes( VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes_ ) VULKAN_HPP_NOEXCEPT
29053     {
29054       modes = modes_;
29055       return *this;
29056     }
29057 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29058 
operator VkDeviceGroupSwapchainCreateInfoKHR const&VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR29059     operator VkDeviceGroupSwapchainCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
29060     {
29061       return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHR *>( this );
29062     }
29063 
operator VkDeviceGroupSwapchainCreateInfoKHR&VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR29064     operator VkDeviceGroupSwapchainCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
29065     {
29066       return *reinterpret_cast<VkDeviceGroupSwapchainCreateInfoKHR *>( this );
29067     }
29068 
29069 #if defined( VULKAN_HPP_USE_REFLECT )
29070 #  if 14 <= VULKAN_HPP_CPP_VERSION
29071     auto
29072 #  else
29073     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR const &>
29074 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR29075       reflect() const VULKAN_HPP_NOEXCEPT
29076     {
29077       return std::tie( sType, pNext, modes );
29078     }
29079 #endif
29080 
29081 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29082     auto operator<=>( DeviceGroupSwapchainCreateInfoKHR const & ) const = default;
29083 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR29084     bool operator==( DeviceGroupSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
29085     {
29086 #  if defined( VULKAN_HPP_USE_REFLECT )
29087       return this->reflect() == rhs.reflect();
29088 #  else
29089       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( modes == rhs.modes );
29090 #  endif
29091     }
29092 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR29093     bool operator!=( DeviceGroupSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
29094     {
29095       return !operator==( rhs );
29096     }
29097 #endif
29098 
29099   public:
29100     VULKAN_HPP_NAMESPACE::StructureType                  sType = StructureType::eDeviceGroupSwapchainCreateInfoKHR;
29101     const void *                                         pNext = {};
29102     VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes = {};
29103   };
29104 
29105   template <>
29106   struct CppType<StructureType, StructureType::eDeviceGroupSwapchainCreateInfoKHR>
29107   {
29108     using Type = DeviceGroupSwapchainCreateInfoKHR;
29109   };
29110 
29111   struct ImageCreateInfo
29112   {
29113     using NativeType = VkImageCreateInfo;
29114 
29115     static const bool                                  allowDuplicate = false;
29116     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageCreateInfo;
29117 
29118 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageCreateInfoVULKAN_HPP_NAMESPACE::ImageCreateInfo29119     VULKAN_HPP_CONSTEXPR ImageCreateInfo( VULKAN_HPP_NAMESPACE::ImageCreateFlags    flags_                 = {},
29120                                           VULKAN_HPP_NAMESPACE::ImageType           imageType_             = VULKAN_HPP_NAMESPACE::ImageType::e1D,
29121                                           VULKAN_HPP_NAMESPACE::Format              format_                = VULKAN_HPP_NAMESPACE::Format::eUndefined,
29122                                           VULKAN_HPP_NAMESPACE::Extent3D            extent_                = {},
29123                                           uint32_t                                  mipLevels_             = {},
29124                                           uint32_t                                  arrayLayers_           = {},
29125                                           VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_               = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
29126                                           VULKAN_HPP_NAMESPACE::ImageTiling         tiling_                = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal,
29127                                           VULKAN_HPP_NAMESPACE::ImageUsageFlags     usage_                 = {},
29128                                           VULKAN_HPP_NAMESPACE::SharingMode         sharingMode_           = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive,
29129                                           uint32_t                                  queueFamilyIndexCount_ = {},
29130                                           const uint32_t *                          pQueueFamilyIndices_   = {},
29131                                           VULKAN_HPP_NAMESPACE::ImageLayout         initialLayout_         = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
29132                                           const void *                              pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
29133       : pNext{ pNext_ }
29134       , flags{ flags_ }
29135       , imageType{ imageType_ }
29136       , format{ format_ }
29137       , extent{ extent_ }
29138       , mipLevels{ mipLevels_ }
29139       , arrayLayers{ arrayLayers_ }
29140       , samples{ samples_ }
29141       , tiling{ tiling_ }
29142       , usage{ usage_ }
29143       , sharingMode{ sharingMode_ }
29144       , queueFamilyIndexCount{ queueFamilyIndexCount_ }
29145       , pQueueFamilyIndices{ pQueueFamilyIndices_ }
29146       , initialLayout{ initialLayout_ }
29147     {
29148     }
29149 
29150     VULKAN_HPP_CONSTEXPR ImageCreateInfo( ImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29151 
ImageCreateInfoVULKAN_HPP_NAMESPACE::ImageCreateInfo29152     ImageCreateInfo( VkImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : ImageCreateInfo( *reinterpret_cast<ImageCreateInfo const *>( &rhs ) ) {}
29153 
29154 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageCreateInfoVULKAN_HPP_NAMESPACE::ImageCreateInfo29155     ImageCreateInfo( VULKAN_HPP_NAMESPACE::ImageCreateFlags                                flags_,
29156                      VULKAN_HPP_NAMESPACE::ImageType                                       imageType_,
29157                      VULKAN_HPP_NAMESPACE::Format                                          format_,
29158                      VULKAN_HPP_NAMESPACE::Extent3D                                        extent_,
29159                      uint32_t                                                              mipLevels_,
29160                      uint32_t                                                              arrayLayers_,
29161                      VULKAN_HPP_NAMESPACE::SampleCountFlagBits                             samples_,
29162                      VULKAN_HPP_NAMESPACE::ImageTiling                                     tiling_,
29163                      VULKAN_HPP_NAMESPACE::ImageUsageFlags                                 usage_,
29164                      VULKAN_HPP_NAMESPACE::SharingMode                                     sharingMode_,
29165                      VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_,
29166                      VULKAN_HPP_NAMESPACE::ImageLayout                                     initialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
29167                      const void *                                                          pNext_         = nullptr )
29168       : pNext( pNext_ )
29169       , flags( flags_ )
29170       , imageType( imageType_ )
29171       , format( format_ )
29172       , extent( extent_ )
29173       , mipLevels( mipLevels_ )
29174       , arrayLayers( arrayLayers_ )
29175       , samples( samples_ )
29176       , tiling( tiling_ )
29177       , usage( usage_ )
29178       , sharingMode( sharingMode_ )
29179       , queueFamilyIndexCount( static_cast<uint32_t>( queueFamilyIndices_.size() ) )
29180       , pQueueFamilyIndices( queueFamilyIndices_.data() )
29181       , initialLayout( initialLayout_ )
29182     {
29183     }
29184 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29185 
29186     ImageCreateInfo & operator=( ImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29187 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29188 
operator =VULKAN_HPP_NAMESPACE::ImageCreateInfo29189     ImageCreateInfo & operator=( VkImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
29190     {
29191       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageCreateInfo const *>( &rhs );
29192       return *this;
29193     }
29194 
29195 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageCreateInfo29196     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
29197     {
29198       pNext = pNext_;
29199       return *this;
29200     }
29201 
setFlagsVULKAN_HPP_NAMESPACE::ImageCreateInfo29202     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
29203     {
29204       flags = flags_;
29205       return *this;
29206     }
29207 
setImageTypeVULKAN_HPP_NAMESPACE::ImageCreateInfo29208     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setImageType( VULKAN_HPP_NAMESPACE::ImageType imageType_ ) VULKAN_HPP_NOEXCEPT
29209     {
29210       imageType = imageType_;
29211       return *this;
29212     }
29213 
setFormatVULKAN_HPP_NAMESPACE::ImageCreateInfo29214     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
29215     {
29216       format = format_;
29217       return *this;
29218     }
29219 
setExtentVULKAN_HPP_NAMESPACE::ImageCreateInfo29220     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
29221     {
29222       extent = extent_;
29223       return *this;
29224     }
29225 
setMipLevelsVULKAN_HPP_NAMESPACE::ImageCreateInfo29226     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setMipLevels( uint32_t mipLevels_ ) VULKAN_HPP_NOEXCEPT
29227     {
29228       mipLevels = mipLevels_;
29229       return *this;
29230     }
29231 
setArrayLayersVULKAN_HPP_NAMESPACE::ImageCreateInfo29232     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setArrayLayers( uint32_t arrayLayers_ ) VULKAN_HPP_NOEXCEPT
29233     {
29234       arrayLayers = arrayLayers_;
29235       return *this;
29236     }
29237 
setSamplesVULKAN_HPP_NAMESPACE::ImageCreateInfo29238     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT
29239     {
29240       samples = samples_;
29241       return *this;
29242     }
29243 
setTilingVULKAN_HPP_NAMESPACE::ImageCreateInfo29244     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setTiling( VULKAN_HPP_NAMESPACE::ImageTiling tiling_ ) VULKAN_HPP_NOEXCEPT
29245     {
29246       tiling = tiling_;
29247       return *this;
29248     }
29249 
setUsageVULKAN_HPP_NAMESPACE::ImageCreateInfo29250     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
29251     {
29252       usage = usage_;
29253       return *this;
29254     }
29255 
setSharingModeVULKAN_HPP_NAMESPACE::ImageCreateInfo29256     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setSharingMode( VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ ) VULKAN_HPP_NOEXCEPT
29257     {
29258       sharingMode = sharingMode_;
29259       return *this;
29260     }
29261 
setQueueFamilyIndexCountVULKAN_HPP_NAMESPACE::ImageCreateInfo29262     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT
29263     {
29264       queueFamilyIndexCount = queueFamilyIndexCount_;
29265       return *this;
29266     }
29267 
setPQueueFamilyIndicesVULKAN_HPP_NAMESPACE::ImageCreateInfo29268     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setPQueueFamilyIndices( const uint32_t * pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
29269     {
29270       pQueueFamilyIndices = pQueueFamilyIndices_;
29271       return *this;
29272     }
29273 
29274 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueueFamilyIndicesVULKAN_HPP_NAMESPACE::ImageCreateInfo29275     ImageCreateInfo & setQueueFamilyIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
29276     {
29277       queueFamilyIndexCount = static_cast<uint32_t>( queueFamilyIndices_.size() );
29278       pQueueFamilyIndices   = queueFamilyIndices_.data();
29279       return *this;
29280     }
29281 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29282 
setInitialLayoutVULKAN_HPP_NAMESPACE::ImageCreateInfo29283     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ ) VULKAN_HPP_NOEXCEPT
29284     {
29285       initialLayout = initialLayout_;
29286       return *this;
29287     }
29288 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29289 
operator VkImageCreateInfo const&VULKAN_HPP_NAMESPACE::ImageCreateInfo29290     operator VkImageCreateInfo const &() const VULKAN_HPP_NOEXCEPT
29291     {
29292       return *reinterpret_cast<const VkImageCreateInfo *>( this );
29293     }
29294 
operator VkImageCreateInfo&VULKAN_HPP_NAMESPACE::ImageCreateInfo29295     operator VkImageCreateInfo &() VULKAN_HPP_NOEXCEPT
29296     {
29297       return *reinterpret_cast<VkImageCreateInfo *>( this );
29298     }
29299 
29300 #if defined( VULKAN_HPP_USE_REFLECT )
29301 #  if 14 <= VULKAN_HPP_CPP_VERSION
29302     auto
29303 #  else
29304     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
29305                const void * const &,
29306                VULKAN_HPP_NAMESPACE::ImageCreateFlags const &,
29307                VULKAN_HPP_NAMESPACE::ImageType const &,
29308                VULKAN_HPP_NAMESPACE::Format const &,
29309                VULKAN_HPP_NAMESPACE::Extent3D const &,
29310                uint32_t const &,
29311                uint32_t const &,
29312                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
29313                VULKAN_HPP_NAMESPACE::ImageTiling const &,
29314                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &,
29315                VULKAN_HPP_NAMESPACE::SharingMode const &,
29316                uint32_t const &,
29317                const uint32_t * const &,
29318                VULKAN_HPP_NAMESPACE::ImageLayout const &>
29319 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageCreateInfo29320       reflect() const VULKAN_HPP_NOEXCEPT
29321     {
29322       return std::tie( sType,
29323                        pNext,
29324                        flags,
29325                        imageType,
29326                        format,
29327                        extent,
29328                        mipLevels,
29329                        arrayLayers,
29330                        samples,
29331                        tiling,
29332                        usage,
29333                        sharingMode,
29334                        queueFamilyIndexCount,
29335                        pQueueFamilyIndices,
29336                        initialLayout );
29337     }
29338 #endif
29339 
29340 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29341     auto operator<=>( ImageCreateInfo const & ) const = default;
29342 #else
operator ==VULKAN_HPP_NAMESPACE::ImageCreateInfo29343     bool operator==( ImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
29344     {
29345 #  if defined( VULKAN_HPP_USE_REFLECT )
29346       return this->reflect() == rhs.reflect();
29347 #  else
29348       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( imageType == rhs.imageType ) && ( format == rhs.format ) &&
29349              ( extent == rhs.extent ) && ( mipLevels == rhs.mipLevels ) && ( arrayLayers == rhs.arrayLayers ) && ( samples == rhs.samples ) &&
29350              ( tiling == rhs.tiling ) && ( usage == rhs.usage ) && ( sharingMode == rhs.sharingMode ) &&
29351              ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices ) &&
29352              ( initialLayout == rhs.initialLayout );
29353 #  endif
29354     }
29355 
operator !=VULKAN_HPP_NAMESPACE::ImageCreateInfo29356     bool operator!=( ImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
29357     {
29358       return !operator==( rhs );
29359     }
29360 #endif
29361 
29362   public:
29363     VULKAN_HPP_NAMESPACE::StructureType       sType                 = StructureType::eImageCreateInfo;
29364     const void *                              pNext                 = {};
29365     VULKAN_HPP_NAMESPACE::ImageCreateFlags    flags                 = {};
29366     VULKAN_HPP_NAMESPACE::ImageType           imageType             = VULKAN_HPP_NAMESPACE::ImageType::e1D;
29367     VULKAN_HPP_NAMESPACE::Format              format                = VULKAN_HPP_NAMESPACE::Format::eUndefined;
29368     VULKAN_HPP_NAMESPACE::Extent3D            extent                = {};
29369     uint32_t                                  mipLevels             = {};
29370     uint32_t                                  arrayLayers           = {};
29371     VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples               = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
29372     VULKAN_HPP_NAMESPACE::ImageTiling         tiling                = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal;
29373     VULKAN_HPP_NAMESPACE::ImageUsageFlags     usage                 = {};
29374     VULKAN_HPP_NAMESPACE::SharingMode         sharingMode           = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive;
29375     uint32_t                                  queueFamilyIndexCount = {};
29376     const uint32_t *                          pQueueFamilyIndices   = {};
29377     VULKAN_HPP_NAMESPACE::ImageLayout         initialLayout         = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
29378   };
29379 
29380   template <>
29381   struct CppType<StructureType, StructureType::eImageCreateInfo>
29382   {
29383     using Type = ImageCreateInfo;
29384   };
29385 
29386   struct DeviceImageMemoryRequirements
29387   {
29388     using NativeType = VkDeviceImageMemoryRequirements;
29389 
29390     static const bool                                  allowDuplicate = false;
29391     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceImageMemoryRequirements;
29392 
29393 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
29394     VULKAN_HPP_CONSTEXPR
DeviceImageMemoryRequirementsVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29395       DeviceImageMemoryRequirements( const VULKAN_HPP_NAMESPACE::ImageCreateInfo * pCreateInfo_ = {},
29396                                      VULKAN_HPP_NAMESPACE::ImageAspectFlagBits     planeAspect_ = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor,
29397                                      const void *                                  pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
29398       : pNext{ pNext_ }
29399       , pCreateInfo{ pCreateInfo_ }
29400       , planeAspect{ planeAspect_ }
29401     {
29402     }
29403 
29404     VULKAN_HPP_CONSTEXPR DeviceImageMemoryRequirements( DeviceImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29405 
DeviceImageMemoryRequirementsVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29406     DeviceImageMemoryRequirements( VkDeviceImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
29407       : DeviceImageMemoryRequirements( *reinterpret_cast<DeviceImageMemoryRequirements const *>( &rhs ) )
29408     {
29409     }
29410 
29411     DeviceImageMemoryRequirements & operator=( DeviceImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29412 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29413 
operator =VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29414     DeviceImageMemoryRequirements & operator=( VkDeviceImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
29415     {
29416       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements const *>( &rhs );
29417       return *this;
29418     }
29419 
29420 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29421     VULKAN_HPP_CONSTEXPR_14 DeviceImageMemoryRequirements & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
29422     {
29423       pNext = pNext_;
29424       return *this;
29425     }
29426 
setPCreateInfoVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29427     VULKAN_HPP_CONSTEXPR_14 DeviceImageMemoryRequirements & setPCreateInfo( const VULKAN_HPP_NAMESPACE::ImageCreateInfo * pCreateInfo_ ) VULKAN_HPP_NOEXCEPT
29428     {
29429       pCreateInfo = pCreateInfo_;
29430       return *this;
29431     }
29432 
setPlaneAspectVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29433     VULKAN_HPP_CONSTEXPR_14 DeviceImageMemoryRequirements & setPlaneAspect( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ ) VULKAN_HPP_NOEXCEPT
29434     {
29435       planeAspect = planeAspect_;
29436       return *this;
29437     }
29438 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29439 
operator VkDeviceImageMemoryRequirements const&VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29440     operator VkDeviceImageMemoryRequirements const &() const VULKAN_HPP_NOEXCEPT
29441     {
29442       return *reinterpret_cast<const VkDeviceImageMemoryRequirements *>( this );
29443     }
29444 
operator VkDeviceImageMemoryRequirements&VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29445     operator VkDeviceImageMemoryRequirements &() VULKAN_HPP_NOEXCEPT
29446     {
29447       return *reinterpret_cast<VkDeviceImageMemoryRequirements *>( this );
29448     }
29449 
29450 #if defined( VULKAN_HPP_USE_REFLECT )
29451 #  if 14 <= VULKAN_HPP_CPP_VERSION
29452     auto
29453 #  else
29454     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
29455                const void * const &,
29456                const VULKAN_HPP_NAMESPACE::ImageCreateInfo * const &,
29457                VULKAN_HPP_NAMESPACE::ImageAspectFlagBits const &>
29458 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29459       reflect() const VULKAN_HPP_NOEXCEPT
29460     {
29461       return std::tie( sType, pNext, pCreateInfo, planeAspect );
29462     }
29463 #endif
29464 
29465 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29466     auto operator<=>( DeviceImageMemoryRequirements const & ) const = default;
29467 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29468     bool operator==( DeviceImageMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
29469     {
29470 #  if defined( VULKAN_HPP_USE_REFLECT )
29471       return this->reflect() == rhs.reflect();
29472 #  else
29473       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pCreateInfo == rhs.pCreateInfo ) && ( planeAspect == rhs.planeAspect );
29474 #  endif
29475     }
29476 
operator !=VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements29477     bool operator!=( DeviceImageMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
29478     {
29479       return !operator==( rhs );
29480     }
29481 #endif
29482 
29483   public:
29484     VULKAN_HPP_NAMESPACE::StructureType           sType       = StructureType::eDeviceImageMemoryRequirements;
29485     const void *                                  pNext       = {};
29486     const VULKAN_HPP_NAMESPACE::ImageCreateInfo * pCreateInfo = {};
29487     VULKAN_HPP_NAMESPACE::ImageAspectFlagBits     planeAspect = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor;
29488   };
29489 
29490   template <>
29491   struct CppType<StructureType, StructureType::eDeviceImageMemoryRequirements>
29492   {
29493     using Type = DeviceImageMemoryRequirements;
29494   };
29495 
29496   using DeviceImageMemoryRequirementsKHR = DeviceImageMemoryRequirements;
29497 
29498   struct ImageSubresource2KHR
29499   {
29500     using NativeType = VkImageSubresource2KHR;
29501 
29502     static const bool                                  allowDuplicate = false;
29503     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageSubresource2KHR;
29504 
29505 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageSubresource2KHRVULKAN_HPP_NAMESPACE::ImageSubresource2KHR29506     VULKAN_HPP_CONSTEXPR ImageSubresource2KHR( VULKAN_HPP_NAMESPACE::ImageSubresource imageSubresource_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
29507       : pNext{ pNext_ }
29508       , imageSubresource{ imageSubresource_ }
29509     {
29510     }
29511 
29512     VULKAN_HPP_CONSTEXPR ImageSubresource2KHR( ImageSubresource2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29513 
ImageSubresource2KHRVULKAN_HPP_NAMESPACE::ImageSubresource2KHR29514     ImageSubresource2KHR( VkImageSubresource2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
29515       : ImageSubresource2KHR( *reinterpret_cast<ImageSubresource2KHR const *>( &rhs ) )
29516     {
29517     }
29518 
29519     ImageSubresource2KHR & operator=( ImageSubresource2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29520 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29521 
operator =VULKAN_HPP_NAMESPACE::ImageSubresource2KHR29522     ImageSubresource2KHR & operator=( VkImageSubresource2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
29523     {
29524       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSubresource2KHR const *>( &rhs );
29525       return *this;
29526     }
29527 
29528 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageSubresource2KHR29529     VULKAN_HPP_CONSTEXPR_14 ImageSubresource2KHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
29530     {
29531       pNext = pNext_;
29532       return *this;
29533     }
29534 
setImageSubresourceVULKAN_HPP_NAMESPACE::ImageSubresource2KHR29535     VULKAN_HPP_CONSTEXPR_14 ImageSubresource2KHR & setImageSubresource( VULKAN_HPP_NAMESPACE::ImageSubresource const & imageSubresource_ ) VULKAN_HPP_NOEXCEPT
29536     {
29537       imageSubresource = imageSubresource_;
29538       return *this;
29539     }
29540 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29541 
operator VkImageSubresource2KHR const&VULKAN_HPP_NAMESPACE::ImageSubresource2KHR29542     operator VkImageSubresource2KHR const &() const VULKAN_HPP_NOEXCEPT
29543     {
29544       return *reinterpret_cast<const VkImageSubresource2KHR *>( this );
29545     }
29546 
operator VkImageSubresource2KHR&VULKAN_HPP_NAMESPACE::ImageSubresource2KHR29547     operator VkImageSubresource2KHR &() VULKAN_HPP_NOEXCEPT
29548     {
29549       return *reinterpret_cast<VkImageSubresource2KHR *>( this );
29550     }
29551 
29552 #if defined( VULKAN_HPP_USE_REFLECT )
29553 #  if 14 <= VULKAN_HPP_CPP_VERSION
29554     auto
29555 #  else
29556     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ImageSubresource const &>
29557 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageSubresource2KHR29558       reflect() const VULKAN_HPP_NOEXCEPT
29559     {
29560       return std::tie( sType, pNext, imageSubresource );
29561     }
29562 #endif
29563 
29564 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29565     auto operator<=>( ImageSubresource2KHR const & ) const = default;
29566 #else
operator ==VULKAN_HPP_NAMESPACE::ImageSubresource2KHR29567     bool operator==( ImageSubresource2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
29568     {
29569 #  if defined( VULKAN_HPP_USE_REFLECT )
29570       return this->reflect() == rhs.reflect();
29571 #  else
29572       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageSubresource == rhs.imageSubresource );
29573 #  endif
29574     }
29575 
operator !=VULKAN_HPP_NAMESPACE::ImageSubresource2KHR29576     bool operator!=( ImageSubresource2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
29577     {
29578       return !operator==( rhs );
29579     }
29580 #endif
29581 
29582   public:
29583     VULKAN_HPP_NAMESPACE::StructureType    sType            = StructureType::eImageSubresource2KHR;
29584     void *                                 pNext            = {};
29585     VULKAN_HPP_NAMESPACE::ImageSubresource imageSubresource = {};
29586   };
29587 
29588   template <>
29589   struct CppType<StructureType, StructureType::eImageSubresource2KHR>
29590   {
29591     using Type = ImageSubresource2KHR;
29592   };
29593 
29594   using ImageSubresource2EXT = ImageSubresource2KHR;
29595 
29596   struct DeviceImageSubresourceInfoKHR
29597   {
29598     using NativeType = VkDeviceImageSubresourceInfoKHR;
29599 
29600     static const bool                                  allowDuplicate = false;
29601     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceImageSubresourceInfoKHR;
29602 
29603 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceImageSubresourceInfoKHRVULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfoKHR29604     VULKAN_HPP_CONSTEXPR DeviceImageSubresourceInfoKHR( const VULKAN_HPP_NAMESPACE::ImageCreateInfo *      pCreateInfo_  = {},
29605                                                         const VULKAN_HPP_NAMESPACE::ImageSubresource2KHR * pSubresource_ = {},
29606                                                         const void *                                       pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
29607       : pNext{ pNext_ }
29608       , pCreateInfo{ pCreateInfo_ }
29609       , pSubresource{ pSubresource_ }
29610     {
29611     }
29612 
29613     VULKAN_HPP_CONSTEXPR DeviceImageSubresourceInfoKHR( DeviceImageSubresourceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29614 
DeviceImageSubresourceInfoKHRVULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfoKHR29615     DeviceImageSubresourceInfoKHR( VkDeviceImageSubresourceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
29616       : DeviceImageSubresourceInfoKHR( *reinterpret_cast<DeviceImageSubresourceInfoKHR const *>( &rhs ) )
29617     {
29618     }
29619 
29620     DeviceImageSubresourceInfoKHR & operator=( DeviceImageSubresourceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29621 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29622 
operator =VULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfoKHR29623     DeviceImageSubresourceInfoKHR & operator=( VkDeviceImageSubresourceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
29624     {
29625       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfoKHR const *>( &rhs );
29626       return *this;
29627     }
29628 
29629 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfoKHR29630     VULKAN_HPP_CONSTEXPR_14 DeviceImageSubresourceInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
29631     {
29632       pNext = pNext_;
29633       return *this;
29634     }
29635 
setPCreateInfoVULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfoKHR29636     VULKAN_HPP_CONSTEXPR_14 DeviceImageSubresourceInfoKHR & setPCreateInfo( const VULKAN_HPP_NAMESPACE::ImageCreateInfo * pCreateInfo_ ) VULKAN_HPP_NOEXCEPT
29637     {
29638       pCreateInfo = pCreateInfo_;
29639       return *this;
29640     }
29641 
29642     VULKAN_HPP_CONSTEXPR_14 DeviceImageSubresourceInfoKHR &
setPSubresourceVULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfoKHR29643       setPSubresource( const VULKAN_HPP_NAMESPACE::ImageSubresource2KHR * pSubresource_ ) VULKAN_HPP_NOEXCEPT
29644     {
29645       pSubresource = pSubresource_;
29646       return *this;
29647     }
29648 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29649 
operator VkDeviceImageSubresourceInfoKHR const&VULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfoKHR29650     operator VkDeviceImageSubresourceInfoKHR const &() const VULKAN_HPP_NOEXCEPT
29651     {
29652       return *reinterpret_cast<const VkDeviceImageSubresourceInfoKHR *>( this );
29653     }
29654 
operator VkDeviceImageSubresourceInfoKHR&VULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfoKHR29655     operator VkDeviceImageSubresourceInfoKHR &() VULKAN_HPP_NOEXCEPT
29656     {
29657       return *reinterpret_cast<VkDeviceImageSubresourceInfoKHR *>( this );
29658     }
29659 
29660 #if defined( VULKAN_HPP_USE_REFLECT )
29661 #  if 14 <= VULKAN_HPP_CPP_VERSION
29662     auto
29663 #  else
29664     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
29665                const void * const &,
29666                const VULKAN_HPP_NAMESPACE::ImageCreateInfo * const &,
29667                const VULKAN_HPP_NAMESPACE::ImageSubresource2KHR * const &>
29668 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfoKHR29669       reflect() const VULKAN_HPP_NOEXCEPT
29670     {
29671       return std::tie( sType, pNext, pCreateInfo, pSubresource );
29672     }
29673 #endif
29674 
29675 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29676     auto operator<=>( DeviceImageSubresourceInfoKHR const & ) const = default;
29677 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfoKHR29678     bool operator==( DeviceImageSubresourceInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
29679     {
29680 #  if defined( VULKAN_HPP_USE_REFLECT )
29681       return this->reflect() == rhs.reflect();
29682 #  else
29683       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pCreateInfo == rhs.pCreateInfo ) && ( pSubresource == rhs.pSubresource );
29684 #  endif
29685     }
29686 
operator !=VULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfoKHR29687     bool operator!=( DeviceImageSubresourceInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
29688     {
29689       return !operator==( rhs );
29690     }
29691 #endif
29692 
29693   public:
29694     VULKAN_HPP_NAMESPACE::StructureType                sType        = StructureType::eDeviceImageSubresourceInfoKHR;
29695     const void *                                       pNext        = {};
29696     const VULKAN_HPP_NAMESPACE::ImageCreateInfo *      pCreateInfo  = {};
29697     const VULKAN_HPP_NAMESPACE::ImageSubresource2KHR * pSubresource = {};
29698   };
29699 
29700   template <>
29701   struct CppType<StructureType, StructureType::eDeviceImageSubresourceInfoKHR>
29702   {
29703     using Type = DeviceImageSubresourceInfoKHR;
29704   };
29705 
29706   struct DeviceMemoryOpaqueCaptureAddressInfo
29707   {
29708     using NativeType = VkDeviceMemoryOpaqueCaptureAddressInfo;
29709 
29710     static const bool                                  allowDuplicate = false;
29711     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceMemoryOpaqueCaptureAddressInfo;
29712 
29713 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceMemoryOpaqueCaptureAddressInfoVULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo29714     VULKAN_HPP_CONSTEXPR DeviceMemoryOpaqueCaptureAddressInfo( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {},
29715                                                                const void *                       pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
29716       : pNext{ pNext_ }
29717       , memory{ memory_ }
29718     {
29719     }
29720 
29721     VULKAN_HPP_CONSTEXPR DeviceMemoryOpaqueCaptureAddressInfo( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29722 
DeviceMemoryOpaqueCaptureAddressInfoVULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo29723     DeviceMemoryOpaqueCaptureAddressInfo( VkDeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
29724       : DeviceMemoryOpaqueCaptureAddressInfo( *reinterpret_cast<DeviceMemoryOpaqueCaptureAddressInfo const *>( &rhs ) )
29725     {
29726     }
29727 
29728     DeviceMemoryOpaqueCaptureAddressInfo & operator=( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29729 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29730 
operator =VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo29731     DeviceMemoryOpaqueCaptureAddressInfo & operator=( VkDeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
29732     {
29733       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo const *>( &rhs );
29734       return *this;
29735     }
29736 
29737 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo29738     VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOpaqueCaptureAddressInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
29739     {
29740       pNext = pNext_;
29741       return *this;
29742     }
29743 
setMemoryVULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo29744     VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOpaqueCaptureAddressInfo & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
29745     {
29746       memory = memory_;
29747       return *this;
29748     }
29749 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29750 
operator VkDeviceMemoryOpaqueCaptureAddressInfo const&VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo29751     operator VkDeviceMemoryOpaqueCaptureAddressInfo const &() const VULKAN_HPP_NOEXCEPT
29752     {
29753       return *reinterpret_cast<const VkDeviceMemoryOpaqueCaptureAddressInfo *>( this );
29754     }
29755 
operator VkDeviceMemoryOpaqueCaptureAddressInfo&VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo29756     operator VkDeviceMemoryOpaqueCaptureAddressInfo &() VULKAN_HPP_NOEXCEPT
29757     {
29758       return *reinterpret_cast<VkDeviceMemoryOpaqueCaptureAddressInfo *>( this );
29759     }
29760 
29761 #if defined( VULKAN_HPP_USE_REFLECT )
29762 #  if 14 <= VULKAN_HPP_CPP_VERSION
29763     auto
29764 #  else
29765     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceMemory const &>
29766 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo29767       reflect() const VULKAN_HPP_NOEXCEPT
29768     {
29769       return std::tie( sType, pNext, memory );
29770     }
29771 #endif
29772 
29773 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29774     auto operator<=>( DeviceMemoryOpaqueCaptureAddressInfo const & ) const = default;
29775 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo29776     bool operator==( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
29777     {
29778 #  if defined( VULKAN_HPP_USE_REFLECT )
29779       return this->reflect() == rhs.reflect();
29780 #  else
29781       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory );
29782 #  endif
29783     }
29784 
operator !=VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo29785     bool operator!=( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
29786     {
29787       return !operator==( rhs );
29788     }
29789 #endif
29790 
29791   public:
29792     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eDeviceMemoryOpaqueCaptureAddressInfo;
29793     const void *                        pNext  = {};
29794     VULKAN_HPP_NAMESPACE::DeviceMemory  memory = {};
29795   };
29796 
29797   template <>
29798   struct CppType<StructureType, StructureType::eDeviceMemoryOpaqueCaptureAddressInfo>
29799   {
29800     using Type = DeviceMemoryOpaqueCaptureAddressInfo;
29801   };
29802 
29803   using DeviceMemoryOpaqueCaptureAddressInfoKHR = DeviceMemoryOpaqueCaptureAddressInfo;
29804 
29805   struct DeviceMemoryOverallocationCreateInfoAMD
29806   {
29807     using NativeType = VkDeviceMemoryOverallocationCreateInfoAMD;
29808 
29809     static const bool                                  allowDuplicate = false;
29810     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceMemoryOverallocationCreateInfoAMD;
29811 
29812 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceMemoryOverallocationCreateInfoAMDVULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD29813     VULKAN_HPP_CONSTEXPR DeviceMemoryOverallocationCreateInfoAMD(
29814       VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD overallocationBehavior_ = VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD::eDefault,
29815       const void *                                          pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
29816       : pNext{ pNext_ }
29817       , overallocationBehavior{ overallocationBehavior_ }
29818     {
29819     }
29820 
29821     VULKAN_HPP_CONSTEXPR DeviceMemoryOverallocationCreateInfoAMD( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29822 
DeviceMemoryOverallocationCreateInfoAMDVULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD29823     DeviceMemoryOverallocationCreateInfoAMD( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
29824       : DeviceMemoryOverallocationCreateInfoAMD( *reinterpret_cast<DeviceMemoryOverallocationCreateInfoAMD const *>( &rhs ) )
29825     {
29826     }
29827 
29828     DeviceMemoryOverallocationCreateInfoAMD & operator=( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29829 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29830 
operator =VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD29831     DeviceMemoryOverallocationCreateInfoAMD & operator=( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
29832     {
29833       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD const *>( &rhs );
29834       return *this;
29835     }
29836 
29837 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD29838     VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOverallocationCreateInfoAMD & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
29839     {
29840       pNext = pNext_;
29841       return *this;
29842     }
29843 
29844     VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOverallocationCreateInfoAMD &
setOverallocationBehaviorVULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD29845       setOverallocationBehavior( VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD overallocationBehavior_ ) VULKAN_HPP_NOEXCEPT
29846     {
29847       overallocationBehavior = overallocationBehavior_;
29848       return *this;
29849     }
29850 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29851 
operator VkDeviceMemoryOverallocationCreateInfoAMD const&VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD29852     operator VkDeviceMemoryOverallocationCreateInfoAMD const &() const VULKAN_HPP_NOEXCEPT
29853     {
29854       return *reinterpret_cast<const VkDeviceMemoryOverallocationCreateInfoAMD *>( this );
29855     }
29856 
operator VkDeviceMemoryOverallocationCreateInfoAMD&VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD29857     operator VkDeviceMemoryOverallocationCreateInfoAMD &() VULKAN_HPP_NOEXCEPT
29858     {
29859       return *reinterpret_cast<VkDeviceMemoryOverallocationCreateInfoAMD *>( this );
29860     }
29861 
29862 #if defined( VULKAN_HPP_USE_REFLECT )
29863 #  if 14 <= VULKAN_HPP_CPP_VERSION
29864     auto
29865 #  else
29866     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD const &>
29867 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD29868       reflect() const VULKAN_HPP_NOEXCEPT
29869     {
29870       return std::tie( sType, pNext, overallocationBehavior );
29871     }
29872 #endif
29873 
29874 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29875     auto operator<=>( DeviceMemoryOverallocationCreateInfoAMD const & ) const = default;
29876 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD29877     bool operator==( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
29878     {
29879 #  if defined( VULKAN_HPP_USE_REFLECT )
29880       return this->reflect() == rhs.reflect();
29881 #  else
29882       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( overallocationBehavior == rhs.overallocationBehavior );
29883 #  endif
29884     }
29885 
operator !=VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD29886     bool operator!=( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
29887     {
29888       return !operator==( rhs );
29889     }
29890 #endif
29891 
29892   public:
29893     VULKAN_HPP_NAMESPACE::StructureType                   sType                  = StructureType::eDeviceMemoryOverallocationCreateInfoAMD;
29894     const void *                                          pNext                  = {};
29895     VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD overallocationBehavior = VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD::eDefault;
29896   };
29897 
29898   template <>
29899   struct CppType<StructureType, StructureType::eDeviceMemoryOverallocationCreateInfoAMD>
29900   {
29901     using Type = DeviceMemoryOverallocationCreateInfoAMD;
29902   };
29903 
29904   struct DeviceMemoryReportCallbackDataEXT
29905   {
29906     using NativeType = VkDeviceMemoryReportCallbackDataEXT;
29907 
29908     static const bool                                  allowDuplicate = false;
29909     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceMemoryReportCallbackDataEXT;
29910 
29911 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceMemoryReportCallbackDataEXTVULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT29912     VULKAN_HPP_CONSTEXPR DeviceMemoryReportCallbackDataEXT(
29913       VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT     flags_          = {},
29914       VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT type_           = VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT::eAllocate,
29915       uint64_t                                             memoryObjectId_ = {},
29916       VULKAN_HPP_NAMESPACE::DeviceSize                     size_           = {},
29917       VULKAN_HPP_NAMESPACE::ObjectType                     objectType_     = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown,
29918       uint64_t                                             objectHandle_   = {},
29919       uint32_t                                             heapIndex_      = {},
29920       void *                                               pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
29921       : pNext{ pNext_ }
29922       , flags{ flags_ }
29923       , type{ type_ }
29924       , memoryObjectId{ memoryObjectId_ }
29925       , size{ size_ }
29926       , objectType{ objectType_ }
29927       , objectHandle{ objectHandle_ }
29928       , heapIndex{ heapIndex_ }
29929     {
29930     }
29931 
29932     VULKAN_HPP_CONSTEXPR DeviceMemoryReportCallbackDataEXT( DeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29933 
DeviceMemoryReportCallbackDataEXTVULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT29934     DeviceMemoryReportCallbackDataEXT( VkDeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
29935       : DeviceMemoryReportCallbackDataEXT( *reinterpret_cast<DeviceMemoryReportCallbackDataEXT const *>( &rhs ) )
29936     {
29937     }
29938 
29939     DeviceMemoryReportCallbackDataEXT & operator=( DeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29940 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29941 
operator =VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT29942     DeviceMemoryReportCallbackDataEXT & operator=( VkDeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
29943     {
29944       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT const *>( &rhs );
29945       return *this;
29946     }
29947 
operator VkDeviceMemoryReportCallbackDataEXT const&VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT29948     operator VkDeviceMemoryReportCallbackDataEXT const &() const VULKAN_HPP_NOEXCEPT
29949     {
29950       return *reinterpret_cast<const VkDeviceMemoryReportCallbackDataEXT *>( this );
29951     }
29952 
operator VkDeviceMemoryReportCallbackDataEXT&VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT29953     operator VkDeviceMemoryReportCallbackDataEXT &() VULKAN_HPP_NOEXCEPT
29954     {
29955       return *reinterpret_cast<VkDeviceMemoryReportCallbackDataEXT *>( this );
29956     }
29957 
29958 #if defined( VULKAN_HPP_USE_REFLECT )
29959 #  if 14 <= VULKAN_HPP_CPP_VERSION
29960     auto
29961 #  else
29962     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
29963                void * const &,
29964                VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT const &,
29965                VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT const &,
29966                uint64_t const &,
29967                VULKAN_HPP_NAMESPACE::DeviceSize const &,
29968                VULKAN_HPP_NAMESPACE::ObjectType const &,
29969                uint64_t const &,
29970                uint32_t const &>
29971 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT29972       reflect() const VULKAN_HPP_NOEXCEPT
29973     {
29974       return std::tie( sType, pNext, flags, type, memoryObjectId, size, objectType, objectHandle, heapIndex );
29975     }
29976 #endif
29977 
29978 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
29979     auto operator<=>( DeviceMemoryReportCallbackDataEXT const & ) const = default;
29980 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT29981     bool operator==( DeviceMemoryReportCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
29982     {
29983 #  if defined( VULKAN_HPP_USE_REFLECT )
29984       return this->reflect() == rhs.reflect();
29985 #  else
29986       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( type == rhs.type ) && ( memoryObjectId == rhs.memoryObjectId ) &&
29987              ( size == rhs.size ) && ( objectType == rhs.objectType ) && ( objectHandle == rhs.objectHandle ) && ( heapIndex == rhs.heapIndex );
29988 #  endif
29989     }
29990 
operator !=VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT29991     bool operator!=( DeviceMemoryReportCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
29992     {
29993       return !operator==( rhs );
29994     }
29995 #endif
29996 
29997   public:
29998     VULKAN_HPP_NAMESPACE::StructureType                  sType          = StructureType::eDeviceMemoryReportCallbackDataEXT;
29999     void *                                               pNext          = {};
30000     VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT     flags          = {};
30001     VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT type           = VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT::eAllocate;
30002     uint64_t                                             memoryObjectId = {};
30003     VULKAN_HPP_NAMESPACE::DeviceSize                     size           = {};
30004     VULKAN_HPP_NAMESPACE::ObjectType                     objectType     = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown;
30005     uint64_t                                             objectHandle   = {};
30006     uint32_t                                             heapIndex      = {};
30007   };
30008 
30009   template <>
30010   struct CppType<StructureType, StructureType::eDeviceMemoryReportCallbackDataEXT>
30011   {
30012     using Type = DeviceMemoryReportCallbackDataEXT;
30013   };
30014 
30015 #if defined( VK_ENABLE_BETA_EXTENSIONS )
30016   union DeviceOrHostAddressConstAMDX
30017   {
30018     using NativeType = VkDeviceOrHostAddressConstAMDX;
30019 #  if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
30020 
DeviceOrHostAddressConstAMDX(VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_={} )30021     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstAMDX( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {} ) : deviceAddress( deviceAddress_ ) {}
30022 
DeviceOrHostAddressConstAMDX(const void * hostAddress_)30023     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstAMDX( const void * hostAddress_ ) : hostAddress( hostAddress_ ) {}
30024 #  endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
30025 
30026 #  if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setDeviceAddress(VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_)30027     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstAMDX & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
30028     {
30029       deviceAddress = deviceAddress_;
30030       return *this;
30031     }
30032 
setHostAddress(const void * hostAddress_)30033     VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstAMDX & setHostAddress( const void * hostAddress_ ) VULKAN_HPP_NOEXCEPT
30034     {
30035       hostAddress = hostAddress_;
30036       return *this;
30037     }
30038 #  endif /*VULKAN_HPP_NO_UNION_SETTERS*/
30039 
operator VkDeviceOrHostAddressConstAMDX const&() const30040     operator VkDeviceOrHostAddressConstAMDX const &() const
30041     {
30042       return *reinterpret_cast<const VkDeviceOrHostAddressConstAMDX *>( this );
30043     }
30044 
operator VkDeviceOrHostAddressConstAMDX&()30045     operator VkDeviceOrHostAddressConstAMDX &()
30046     {
30047       return *reinterpret_cast<VkDeviceOrHostAddressConstAMDX *>( this );
30048     }
30049 
30050 #  ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
30051     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress;
30052     const void *                        hostAddress;
30053 #  else
30054     VkDeviceAddress deviceAddress;
30055     const void *    hostAddress;
30056 #  endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
30057   };
30058 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
30059 
30060   struct DevicePrivateDataCreateInfo
30061   {
30062     using NativeType = VkDevicePrivateDataCreateInfo;
30063 
30064     static const bool                                  allowDuplicate = true;
30065     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDevicePrivateDataCreateInfo;
30066 
30067 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DevicePrivateDataCreateInfoVULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo30068     VULKAN_HPP_CONSTEXPR DevicePrivateDataCreateInfo( uint32_t privateDataSlotRequestCount_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
30069       : pNext{ pNext_ }
30070       , privateDataSlotRequestCount{ privateDataSlotRequestCount_ }
30071     {
30072     }
30073 
30074     VULKAN_HPP_CONSTEXPR DevicePrivateDataCreateInfo( DevicePrivateDataCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30075 
DevicePrivateDataCreateInfoVULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo30076     DevicePrivateDataCreateInfo( VkDevicePrivateDataCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
30077       : DevicePrivateDataCreateInfo( *reinterpret_cast<DevicePrivateDataCreateInfo const *>( &rhs ) )
30078     {
30079     }
30080 
30081     DevicePrivateDataCreateInfo & operator=( DevicePrivateDataCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30082 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30083 
operator =VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo30084     DevicePrivateDataCreateInfo & operator=( VkDevicePrivateDataCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
30085     {
30086       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo const *>( &rhs );
30087       return *this;
30088     }
30089 
30090 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo30091     VULKAN_HPP_CONSTEXPR_14 DevicePrivateDataCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
30092     {
30093       pNext = pNext_;
30094       return *this;
30095     }
30096 
setPrivateDataSlotRequestCountVULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo30097     VULKAN_HPP_CONSTEXPR_14 DevicePrivateDataCreateInfo & setPrivateDataSlotRequestCount( uint32_t privateDataSlotRequestCount_ ) VULKAN_HPP_NOEXCEPT
30098     {
30099       privateDataSlotRequestCount = privateDataSlotRequestCount_;
30100       return *this;
30101     }
30102 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30103 
operator VkDevicePrivateDataCreateInfo const&VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo30104     operator VkDevicePrivateDataCreateInfo const &() const VULKAN_HPP_NOEXCEPT
30105     {
30106       return *reinterpret_cast<const VkDevicePrivateDataCreateInfo *>( this );
30107     }
30108 
operator VkDevicePrivateDataCreateInfo&VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo30109     operator VkDevicePrivateDataCreateInfo &() VULKAN_HPP_NOEXCEPT
30110     {
30111       return *reinterpret_cast<VkDevicePrivateDataCreateInfo *>( this );
30112     }
30113 
30114 #if defined( VULKAN_HPP_USE_REFLECT )
30115 #  if 14 <= VULKAN_HPP_CPP_VERSION
30116     auto
30117 #  else
30118     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
30119 #  endif
reflectVULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo30120       reflect() const VULKAN_HPP_NOEXCEPT
30121     {
30122       return std::tie( sType, pNext, privateDataSlotRequestCount );
30123     }
30124 #endif
30125 
30126 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
30127     auto operator<=>( DevicePrivateDataCreateInfo const & ) const = default;
30128 #else
operator ==VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo30129     bool operator==( DevicePrivateDataCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
30130     {
30131 #  if defined( VULKAN_HPP_USE_REFLECT )
30132       return this->reflect() == rhs.reflect();
30133 #  else
30134       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( privateDataSlotRequestCount == rhs.privateDataSlotRequestCount );
30135 #  endif
30136     }
30137 
operator !=VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo30138     bool operator!=( DevicePrivateDataCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
30139     {
30140       return !operator==( rhs );
30141     }
30142 #endif
30143 
30144   public:
30145     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::eDevicePrivateDataCreateInfo;
30146     const void *                        pNext                       = {};
30147     uint32_t                            privateDataSlotRequestCount = {};
30148   };
30149 
30150   template <>
30151   struct CppType<StructureType, StructureType::eDevicePrivateDataCreateInfo>
30152   {
30153     using Type = DevicePrivateDataCreateInfo;
30154   };
30155 
30156   using DevicePrivateDataCreateInfoEXT = DevicePrivateDataCreateInfo;
30157 
30158   struct DeviceQueueGlobalPriorityCreateInfoKHR
30159   {
30160     using NativeType = VkDeviceQueueGlobalPriorityCreateInfoKHR;
30161 
30162     static const bool                                  allowDuplicate = false;
30163     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceQueueGlobalPriorityCreateInfoKHR;
30164 
30165 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
30166     VULKAN_HPP_CONSTEXPR
DeviceQueueGlobalPriorityCreateInfoKHRVULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoKHR30167       DeviceQueueGlobalPriorityCreateInfoKHR( VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR globalPriority_ = VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow,
30168                                               const void *                                 pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
30169       : pNext{ pNext_ }
30170       , globalPriority{ globalPriority_ }
30171     {
30172     }
30173 
30174     VULKAN_HPP_CONSTEXPR DeviceQueueGlobalPriorityCreateInfoKHR( DeviceQueueGlobalPriorityCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30175 
DeviceQueueGlobalPriorityCreateInfoKHRVULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoKHR30176     DeviceQueueGlobalPriorityCreateInfoKHR( VkDeviceQueueGlobalPriorityCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
30177       : DeviceQueueGlobalPriorityCreateInfoKHR( *reinterpret_cast<DeviceQueueGlobalPriorityCreateInfoKHR const *>( &rhs ) )
30178     {
30179     }
30180 
30181     DeviceQueueGlobalPriorityCreateInfoKHR & operator=( DeviceQueueGlobalPriorityCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30182 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30183 
operator =VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoKHR30184     DeviceQueueGlobalPriorityCreateInfoKHR & operator=( VkDeviceQueueGlobalPriorityCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
30185     {
30186       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoKHR const *>( &rhs );
30187       return *this;
30188     }
30189 
30190 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoKHR30191     VULKAN_HPP_CONSTEXPR_14 DeviceQueueGlobalPriorityCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
30192     {
30193       pNext = pNext_;
30194       return *this;
30195     }
30196 
30197     VULKAN_HPP_CONSTEXPR_14 DeviceQueueGlobalPriorityCreateInfoKHR &
setGlobalPriorityVULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoKHR30198       setGlobalPriority( VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR globalPriority_ ) VULKAN_HPP_NOEXCEPT
30199     {
30200       globalPriority = globalPriority_;
30201       return *this;
30202     }
30203 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30204 
operator VkDeviceQueueGlobalPriorityCreateInfoKHR const&VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoKHR30205     operator VkDeviceQueueGlobalPriorityCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
30206     {
30207       return *reinterpret_cast<const VkDeviceQueueGlobalPriorityCreateInfoKHR *>( this );
30208     }
30209 
operator VkDeviceQueueGlobalPriorityCreateInfoKHR&VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoKHR30210     operator VkDeviceQueueGlobalPriorityCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
30211     {
30212       return *reinterpret_cast<VkDeviceQueueGlobalPriorityCreateInfoKHR *>( this );
30213     }
30214 
30215 #if defined( VULKAN_HPP_USE_REFLECT )
30216 #  if 14 <= VULKAN_HPP_CPP_VERSION
30217     auto
30218 #  else
30219     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR const &>
30220 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoKHR30221       reflect() const VULKAN_HPP_NOEXCEPT
30222     {
30223       return std::tie( sType, pNext, globalPriority );
30224     }
30225 #endif
30226 
30227 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
30228     auto operator<=>( DeviceQueueGlobalPriorityCreateInfoKHR const & ) const = default;
30229 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoKHR30230     bool operator==( DeviceQueueGlobalPriorityCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
30231     {
30232 #  if defined( VULKAN_HPP_USE_REFLECT )
30233       return this->reflect() == rhs.reflect();
30234 #  else
30235       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( globalPriority == rhs.globalPriority );
30236 #  endif
30237     }
30238 
operator !=VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoKHR30239     bool operator!=( DeviceQueueGlobalPriorityCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
30240     {
30241       return !operator==( rhs );
30242     }
30243 #endif
30244 
30245   public:
30246     VULKAN_HPP_NAMESPACE::StructureType          sType          = StructureType::eDeviceQueueGlobalPriorityCreateInfoKHR;
30247     const void *                                 pNext          = {};
30248     VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR globalPriority = VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow;
30249   };
30250 
30251   template <>
30252   struct CppType<StructureType, StructureType::eDeviceQueueGlobalPriorityCreateInfoKHR>
30253   {
30254     using Type = DeviceQueueGlobalPriorityCreateInfoKHR;
30255   };
30256 
30257   using DeviceQueueGlobalPriorityCreateInfoEXT = DeviceQueueGlobalPriorityCreateInfoKHR;
30258 
30259   struct DeviceQueueInfo2
30260   {
30261     using NativeType = VkDeviceQueueInfo2;
30262 
30263     static const bool                                  allowDuplicate = false;
30264     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceQueueInfo2;
30265 
30266 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceQueueInfo2VULKAN_HPP_NAMESPACE::DeviceQueueInfo230267     VULKAN_HPP_CONSTEXPR DeviceQueueInfo2( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_            = {},
30268                                            uint32_t                                     queueFamilyIndex_ = {},
30269                                            uint32_t                                     queueIndex_       = {},
30270                                            const void *                                 pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
30271       : pNext{ pNext_ }
30272       , flags{ flags_ }
30273       , queueFamilyIndex{ queueFamilyIndex_ }
30274       , queueIndex{ queueIndex_ }
30275     {
30276     }
30277 
30278     VULKAN_HPP_CONSTEXPR DeviceQueueInfo2( DeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30279 
DeviceQueueInfo2VULKAN_HPP_NAMESPACE::DeviceQueueInfo230280     DeviceQueueInfo2( VkDeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT : DeviceQueueInfo2( *reinterpret_cast<DeviceQueueInfo2 const *>( &rhs ) ) {}
30281 
30282     DeviceQueueInfo2 & operator=( DeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30283 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30284 
operator =VULKAN_HPP_NAMESPACE::DeviceQueueInfo230285     DeviceQueueInfo2 & operator=( VkDeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
30286     {
30287       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 const *>( &rhs );
30288       return *this;
30289     }
30290 
30291 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceQueueInfo230292     VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
30293     {
30294       pNext = pNext_;
30295       return *this;
30296     }
30297 
setFlagsVULKAN_HPP_NAMESPACE::DeviceQueueInfo230298     VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setFlags( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
30299     {
30300       flags = flags_;
30301       return *this;
30302     }
30303 
setQueueFamilyIndexVULKAN_HPP_NAMESPACE::DeviceQueueInfo230304     VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
30305     {
30306       queueFamilyIndex = queueFamilyIndex_;
30307       return *this;
30308     }
30309 
setQueueIndexVULKAN_HPP_NAMESPACE::DeviceQueueInfo230310     VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setQueueIndex( uint32_t queueIndex_ ) VULKAN_HPP_NOEXCEPT
30311     {
30312       queueIndex = queueIndex_;
30313       return *this;
30314     }
30315 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30316 
operator VkDeviceQueueInfo2 const&VULKAN_HPP_NAMESPACE::DeviceQueueInfo230317     operator VkDeviceQueueInfo2 const &() const VULKAN_HPP_NOEXCEPT
30318     {
30319       return *reinterpret_cast<const VkDeviceQueueInfo2 *>( this );
30320     }
30321 
operator VkDeviceQueueInfo2&VULKAN_HPP_NAMESPACE::DeviceQueueInfo230322     operator VkDeviceQueueInfo2 &() VULKAN_HPP_NOEXCEPT
30323     {
30324       return *reinterpret_cast<VkDeviceQueueInfo2 *>( this );
30325     }
30326 
30327 #if defined( VULKAN_HPP_USE_REFLECT )
30328 #  if 14 <= VULKAN_HPP_CPP_VERSION
30329     auto
30330 #  else
30331     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
30332                const void * const &,
30333                VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags const &,
30334                uint32_t const &,
30335                uint32_t const &>
30336 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceQueueInfo230337       reflect() const VULKAN_HPP_NOEXCEPT
30338     {
30339       return std::tie( sType, pNext, flags, queueFamilyIndex, queueIndex );
30340     }
30341 #endif
30342 
30343 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
30344     auto operator<=>( DeviceQueueInfo2 const & ) const = default;
30345 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceQueueInfo230346     bool operator==( DeviceQueueInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
30347     {
30348 #  if defined( VULKAN_HPP_USE_REFLECT )
30349       return this->reflect() == rhs.reflect();
30350 #  else
30351       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( queueFamilyIndex == rhs.queueFamilyIndex ) &&
30352              ( queueIndex == rhs.queueIndex );
30353 #  endif
30354     }
30355 
operator !=VULKAN_HPP_NAMESPACE::DeviceQueueInfo230356     bool operator!=( DeviceQueueInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
30357     {
30358       return !operator==( rhs );
30359     }
30360 #endif
30361 
30362   public:
30363     VULKAN_HPP_NAMESPACE::StructureType          sType            = StructureType::eDeviceQueueInfo2;
30364     const void *                                 pNext            = {};
30365     VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags            = {};
30366     uint32_t                                     queueFamilyIndex = {};
30367     uint32_t                                     queueIndex       = {};
30368   };
30369 
30370   template <>
30371   struct CppType<StructureType, StructureType::eDeviceQueueInfo2>
30372   {
30373     using Type = DeviceQueueInfo2;
30374   };
30375 
30376   struct DeviceQueueShaderCoreControlCreateInfoARM
30377   {
30378     using NativeType = VkDeviceQueueShaderCoreControlCreateInfoARM;
30379 
30380     static const bool                                  allowDuplicate = false;
30381     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDeviceQueueShaderCoreControlCreateInfoARM;
30382 
30383 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceQueueShaderCoreControlCreateInfoARMVULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM30384     VULKAN_HPP_CONSTEXPR DeviceQueueShaderCoreControlCreateInfoARM( uint32_t shaderCoreCount_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
30385       : pNext{ pNext_ }
30386       , shaderCoreCount{ shaderCoreCount_ }
30387     {
30388     }
30389 
30390     VULKAN_HPP_CONSTEXPR DeviceQueueShaderCoreControlCreateInfoARM( DeviceQueueShaderCoreControlCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30391 
DeviceQueueShaderCoreControlCreateInfoARMVULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM30392     DeviceQueueShaderCoreControlCreateInfoARM( VkDeviceQueueShaderCoreControlCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
30393       : DeviceQueueShaderCoreControlCreateInfoARM( *reinterpret_cast<DeviceQueueShaderCoreControlCreateInfoARM const *>( &rhs ) )
30394     {
30395     }
30396 
30397     DeviceQueueShaderCoreControlCreateInfoARM & operator=( DeviceQueueShaderCoreControlCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30398 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30399 
operator =VULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM30400     DeviceQueueShaderCoreControlCreateInfoARM & operator=( VkDeviceQueueShaderCoreControlCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
30401     {
30402       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM const *>( &rhs );
30403       return *this;
30404     }
30405 
30406 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM30407     VULKAN_HPP_CONSTEXPR_14 DeviceQueueShaderCoreControlCreateInfoARM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
30408     {
30409       pNext = pNext_;
30410       return *this;
30411     }
30412 
setShaderCoreCountVULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM30413     VULKAN_HPP_CONSTEXPR_14 DeviceQueueShaderCoreControlCreateInfoARM & setShaderCoreCount( uint32_t shaderCoreCount_ ) VULKAN_HPP_NOEXCEPT
30414     {
30415       shaderCoreCount = shaderCoreCount_;
30416       return *this;
30417     }
30418 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30419 
operator VkDeviceQueueShaderCoreControlCreateInfoARM const&VULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM30420     operator VkDeviceQueueShaderCoreControlCreateInfoARM const &() const VULKAN_HPP_NOEXCEPT
30421     {
30422       return *reinterpret_cast<const VkDeviceQueueShaderCoreControlCreateInfoARM *>( this );
30423     }
30424 
operator VkDeviceQueueShaderCoreControlCreateInfoARM&VULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM30425     operator VkDeviceQueueShaderCoreControlCreateInfoARM &() VULKAN_HPP_NOEXCEPT
30426     {
30427       return *reinterpret_cast<VkDeviceQueueShaderCoreControlCreateInfoARM *>( this );
30428     }
30429 
30430 #if defined( VULKAN_HPP_USE_REFLECT )
30431 #  if 14 <= VULKAN_HPP_CPP_VERSION
30432     auto
30433 #  else
30434     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
30435 #  endif
reflectVULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM30436       reflect() const VULKAN_HPP_NOEXCEPT
30437     {
30438       return std::tie( sType, pNext, shaderCoreCount );
30439     }
30440 #endif
30441 
30442 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
30443     auto operator<=>( DeviceQueueShaderCoreControlCreateInfoARM const & ) const = default;
30444 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM30445     bool operator==( DeviceQueueShaderCoreControlCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
30446     {
30447 #  if defined( VULKAN_HPP_USE_REFLECT )
30448       return this->reflect() == rhs.reflect();
30449 #  else
30450       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderCoreCount == rhs.shaderCoreCount );
30451 #  endif
30452     }
30453 
operator !=VULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM30454     bool operator!=( DeviceQueueShaderCoreControlCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
30455     {
30456       return !operator==( rhs );
30457     }
30458 #endif
30459 
30460   public:
30461     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eDeviceQueueShaderCoreControlCreateInfoARM;
30462     void *                              pNext           = {};
30463     uint32_t                            shaderCoreCount = {};
30464   };
30465 
30466   template <>
30467   struct CppType<StructureType, StructureType::eDeviceQueueShaderCoreControlCreateInfoARM>
30468   {
30469     using Type = DeviceQueueShaderCoreControlCreateInfoARM;
30470   };
30471 
30472   struct DirectDriverLoadingInfoLUNARG
30473   {
30474     using NativeType = VkDirectDriverLoadingInfoLUNARG;
30475 
30476     static const bool                                  allowDuplicate = false;
30477     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDirectDriverLoadingInfoLUNARG;
30478 
30479 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DirectDriverLoadingInfoLUNARGVULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30480     VULKAN_HPP_CONSTEXPR DirectDriverLoadingInfoLUNARG( VULKAN_HPP_NAMESPACE::DirectDriverLoadingFlagsLUNARG flags_                  = {},
30481                                                         PFN_vkGetInstanceProcAddrLUNARG                      pfnGetInstanceProcAddr_ = {},
30482                                                         void *                                               pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
30483       : pNext{ pNext_ }
30484       , flags{ flags_ }
30485       , pfnGetInstanceProcAddr{ pfnGetInstanceProcAddr_ }
30486     {
30487     }
30488 
30489     VULKAN_HPP_CONSTEXPR DirectDriverLoadingInfoLUNARG( DirectDriverLoadingInfoLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30490 
DirectDriverLoadingInfoLUNARGVULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30491     DirectDriverLoadingInfoLUNARG( VkDirectDriverLoadingInfoLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT
30492       : DirectDriverLoadingInfoLUNARG( *reinterpret_cast<DirectDriverLoadingInfoLUNARG const *>( &rhs ) )
30493     {
30494     }
30495 
30496     DirectDriverLoadingInfoLUNARG & operator=( DirectDriverLoadingInfoLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30497 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30498 
operator =VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30499     DirectDriverLoadingInfoLUNARG & operator=( VkDirectDriverLoadingInfoLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT
30500     {
30501       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG const *>( &rhs );
30502       return *this;
30503     }
30504 
30505 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30506     VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingInfoLUNARG & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
30507     {
30508       pNext = pNext_;
30509       return *this;
30510     }
30511 
setFlagsVULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30512     VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingInfoLUNARG & setFlags( VULKAN_HPP_NAMESPACE::DirectDriverLoadingFlagsLUNARG flags_ ) VULKAN_HPP_NOEXCEPT
30513     {
30514       flags = flags_;
30515       return *this;
30516     }
30517 
30518     VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingInfoLUNARG &
setPfnGetInstanceProcAddrVULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30519       setPfnGetInstanceProcAddr( PFN_vkGetInstanceProcAddrLUNARG pfnGetInstanceProcAddr_ ) VULKAN_HPP_NOEXCEPT
30520     {
30521       pfnGetInstanceProcAddr = pfnGetInstanceProcAddr_;
30522       return *this;
30523     }
30524 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30525 
operator VkDirectDriverLoadingInfoLUNARG const&VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30526     operator VkDirectDriverLoadingInfoLUNARG const &() const VULKAN_HPP_NOEXCEPT
30527     {
30528       return *reinterpret_cast<const VkDirectDriverLoadingInfoLUNARG *>( this );
30529     }
30530 
operator VkDirectDriverLoadingInfoLUNARG&VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30531     operator VkDirectDriverLoadingInfoLUNARG &() VULKAN_HPP_NOEXCEPT
30532     {
30533       return *reinterpret_cast<VkDirectDriverLoadingInfoLUNARG *>( this );
30534     }
30535 
30536 #if defined( VULKAN_HPP_USE_REFLECT )
30537 #  if 14 <= VULKAN_HPP_CPP_VERSION
30538     auto
30539 #  else
30540     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
30541                void * const &,
30542                VULKAN_HPP_NAMESPACE::DirectDriverLoadingFlagsLUNARG const &,
30543                PFN_vkGetInstanceProcAddrLUNARG const &>
30544 #  endif
reflectVULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30545       reflect() const VULKAN_HPP_NOEXCEPT
30546     {
30547       return std::tie( sType, pNext, flags, pfnGetInstanceProcAddr );
30548     }
30549 #endif
30550 
operator ==VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30551     bool operator==( DirectDriverLoadingInfoLUNARG const & rhs ) const VULKAN_HPP_NOEXCEPT
30552     {
30553 #if defined( VULKAN_HPP_USE_REFLECT )
30554       return this->reflect() == rhs.reflect();
30555 #else
30556       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pfnGetInstanceProcAddr == rhs.pfnGetInstanceProcAddr );
30557 #endif
30558     }
30559 
operator !=VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG30560     bool operator!=( DirectDriverLoadingInfoLUNARG const & rhs ) const VULKAN_HPP_NOEXCEPT
30561     {
30562       return !operator==( rhs );
30563     }
30564 
30565   public:
30566     VULKAN_HPP_NAMESPACE::StructureType                  sType                  = StructureType::eDirectDriverLoadingInfoLUNARG;
30567     void *                                               pNext                  = {};
30568     VULKAN_HPP_NAMESPACE::DirectDriverLoadingFlagsLUNARG flags                  = {};
30569     PFN_vkGetInstanceProcAddrLUNARG                      pfnGetInstanceProcAddr = {};
30570   };
30571 
30572   template <>
30573   struct CppType<StructureType, StructureType::eDirectDriverLoadingInfoLUNARG>
30574   {
30575     using Type = DirectDriverLoadingInfoLUNARG;
30576   };
30577 
30578   struct DirectDriverLoadingListLUNARG
30579   {
30580     using NativeType = VkDirectDriverLoadingListLUNARG;
30581 
30582     static const bool                                  allowDuplicate = false;
30583     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDirectDriverLoadingListLUNARG;
30584 
30585 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DirectDriverLoadingListLUNARGVULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30586     VULKAN_HPP_CONSTEXPR DirectDriverLoadingListLUNARG(
30587       VULKAN_HPP_NAMESPACE::DirectDriverLoadingModeLUNARG         mode_        = VULKAN_HPP_NAMESPACE::DirectDriverLoadingModeLUNARG::eExclusive,
30588       uint32_t                                                    driverCount_ = {},
30589       const VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG * pDrivers_    = {},
30590       const void *                                                pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
30591       : pNext{ pNext_ }
30592       , mode{ mode_ }
30593       , driverCount{ driverCount_ }
30594       , pDrivers{ pDrivers_ }
30595     {
30596     }
30597 
30598     VULKAN_HPP_CONSTEXPR DirectDriverLoadingListLUNARG( DirectDriverLoadingListLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30599 
DirectDriverLoadingListLUNARGVULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30600     DirectDriverLoadingListLUNARG( VkDirectDriverLoadingListLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT
30601       : DirectDriverLoadingListLUNARG( *reinterpret_cast<DirectDriverLoadingListLUNARG const *>( &rhs ) )
30602     {
30603     }
30604 
30605 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DirectDriverLoadingListLUNARGVULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30606     DirectDriverLoadingListLUNARG( VULKAN_HPP_NAMESPACE::DirectDriverLoadingModeLUNARG                                                              mode_,
30607                                    VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG> const & drivers_,
30608                                    const void * pNext_ = nullptr )
30609       : pNext( pNext_ ), mode( mode_ ), driverCount( static_cast<uint32_t>( drivers_.size() ) ), pDrivers( drivers_.data() )
30610     {
30611     }
30612 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30613 
30614     DirectDriverLoadingListLUNARG & operator=( DirectDriverLoadingListLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30615 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30616 
operator =VULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30617     DirectDriverLoadingListLUNARG & operator=( VkDirectDriverLoadingListLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT
30618     {
30619       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG const *>( &rhs );
30620       return *this;
30621     }
30622 
30623 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30624     VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingListLUNARG & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
30625     {
30626       pNext = pNext_;
30627       return *this;
30628     }
30629 
setModeVULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30630     VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingListLUNARG & setMode( VULKAN_HPP_NAMESPACE::DirectDriverLoadingModeLUNARG mode_ ) VULKAN_HPP_NOEXCEPT
30631     {
30632       mode = mode_;
30633       return *this;
30634     }
30635 
setDriverCountVULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30636     VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingListLUNARG & setDriverCount( uint32_t driverCount_ ) VULKAN_HPP_NOEXCEPT
30637     {
30638       driverCount = driverCount_;
30639       return *this;
30640     }
30641 
30642     VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingListLUNARG &
setPDriversVULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30643       setPDrivers( const VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG * pDrivers_ ) VULKAN_HPP_NOEXCEPT
30644     {
30645       pDrivers = pDrivers_;
30646       return *this;
30647     }
30648 
30649 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDriversVULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30650     DirectDriverLoadingListLUNARG & setDrivers(
30651       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG> const & drivers_ ) VULKAN_HPP_NOEXCEPT
30652     {
30653       driverCount = static_cast<uint32_t>( drivers_.size() );
30654       pDrivers    = drivers_.data();
30655       return *this;
30656     }
30657 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30658 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30659 
operator VkDirectDriverLoadingListLUNARG const&VULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30660     operator VkDirectDriverLoadingListLUNARG const &() const VULKAN_HPP_NOEXCEPT
30661     {
30662       return *reinterpret_cast<const VkDirectDriverLoadingListLUNARG *>( this );
30663     }
30664 
operator VkDirectDriverLoadingListLUNARG&VULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30665     operator VkDirectDriverLoadingListLUNARG &() VULKAN_HPP_NOEXCEPT
30666     {
30667       return *reinterpret_cast<VkDirectDriverLoadingListLUNARG *>( this );
30668     }
30669 
30670 #if defined( VULKAN_HPP_USE_REFLECT )
30671 #  if 14 <= VULKAN_HPP_CPP_VERSION
30672     auto
30673 #  else
30674     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
30675                const void * const &,
30676                VULKAN_HPP_NAMESPACE::DirectDriverLoadingModeLUNARG const &,
30677                uint32_t const &,
30678                const VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG * const &>
30679 #  endif
reflectVULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30680       reflect() const VULKAN_HPP_NOEXCEPT
30681     {
30682       return std::tie( sType, pNext, mode, driverCount, pDrivers );
30683     }
30684 #endif
30685 
operator ==VULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30686     bool operator==( DirectDriverLoadingListLUNARG const & rhs ) const VULKAN_HPP_NOEXCEPT
30687     {
30688 #if defined( VULKAN_HPP_USE_REFLECT )
30689       return this->reflect() == rhs.reflect();
30690 #else
30691       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mode == rhs.mode ) && ( driverCount == rhs.driverCount ) && ( pDrivers == rhs.pDrivers );
30692 #endif
30693     }
30694 
operator !=VULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG30695     bool operator!=( DirectDriverLoadingListLUNARG const & rhs ) const VULKAN_HPP_NOEXCEPT
30696     {
30697       return !operator==( rhs );
30698     }
30699 
30700   public:
30701     VULKAN_HPP_NAMESPACE::StructureType                         sType       = StructureType::eDirectDriverLoadingListLUNARG;
30702     const void *                                                pNext       = {};
30703     VULKAN_HPP_NAMESPACE::DirectDriverLoadingModeLUNARG         mode        = VULKAN_HPP_NAMESPACE::DirectDriverLoadingModeLUNARG::eExclusive;
30704     uint32_t                                                    driverCount = {};
30705     const VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG * pDrivers    = {};
30706   };
30707 
30708   template <>
30709   struct CppType<StructureType, StructureType::eDirectDriverLoadingListLUNARG>
30710   {
30711     using Type = DirectDriverLoadingListLUNARG;
30712   };
30713 
30714 #if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
30715   struct DirectFBSurfaceCreateInfoEXT
30716   {
30717     using NativeType = VkDirectFBSurfaceCreateInfoEXT;
30718 
30719     static const bool                                  allowDuplicate = false;
30720     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDirectfbSurfaceCreateInfoEXT;
30721 
30722 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DirectFBSurfaceCreateInfoEXTVULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT30723     VULKAN_HPP_CONSTEXPR DirectFBSurfaceCreateInfoEXT( VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateFlagsEXT flags_   = {},
30724                                                        IDirectFB *                                         dfb_     = {},
30725                                                        IDirectFBSurface *                                  surface_ = {},
30726                                                        const void *                                        pNext_   = nullptr ) VULKAN_HPP_NOEXCEPT
30727       : pNext{ pNext_ }
30728       , flags{ flags_ }
30729       , dfb{ dfb_ }
30730       , surface{ surface_ }
30731     {
30732     }
30733 
30734     VULKAN_HPP_CONSTEXPR DirectFBSurfaceCreateInfoEXT( DirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30735 
DirectFBSurfaceCreateInfoEXTVULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT30736     DirectFBSurfaceCreateInfoEXT( VkDirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
30737       : DirectFBSurfaceCreateInfoEXT( *reinterpret_cast<DirectFBSurfaceCreateInfoEXT const *>( &rhs ) )
30738     {
30739     }
30740 
30741     DirectFBSurfaceCreateInfoEXT & operator=( DirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30742 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30743 
operator =VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT30744     DirectFBSurfaceCreateInfoEXT & operator=( VkDirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
30745     {
30746       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT const *>( &rhs );
30747       return *this;
30748     }
30749 
30750 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT30751     VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
30752     {
30753       pNext = pNext_;
30754       return *this;
30755     }
30756 
setFlagsVULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT30757     VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
30758     {
30759       flags = flags_;
30760       return *this;
30761     }
30762 
setDfbVULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT30763     VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT & setDfb( IDirectFB * dfb_ ) VULKAN_HPP_NOEXCEPT
30764     {
30765       dfb = dfb_;
30766       return *this;
30767     }
30768 
setSurfaceVULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT30769     VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT & setSurface( IDirectFBSurface * surface_ ) VULKAN_HPP_NOEXCEPT
30770     {
30771       surface = surface_;
30772       return *this;
30773     }
30774 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30775 
operator VkDirectFBSurfaceCreateInfoEXT const&VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT30776     operator VkDirectFBSurfaceCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
30777     {
30778       return *reinterpret_cast<const VkDirectFBSurfaceCreateInfoEXT *>( this );
30779     }
30780 
operator VkDirectFBSurfaceCreateInfoEXT&VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT30781     operator VkDirectFBSurfaceCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
30782     {
30783       return *reinterpret_cast<VkDirectFBSurfaceCreateInfoEXT *>( this );
30784     }
30785 
30786 #  if defined( VULKAN_HPP_USE_REFLECT )
30787 #    if 14 <= VULKAN_HPP_CPP_VERSION
30788     auto
30789 #    else
30790     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
30791                const void * const &,
30792                VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateFlagsEXT const &,
30793                IDirectFB * const &,
30794                IDirectFBSurface * const &>
30795 #    endif
reflectVULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT30796       reflect() const VULKAN_HPP_NOEXCEPT
30797     {
30798       return std::tie( sType, pNext, flags, dfb, surface );
30799     }
30800 #  endif
30801 
30802 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
30803     auto operator<=>( DirectFBSurfaceCreateInfoEXT const & ) const = default;
30804 #  else
operator ==VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT30805     bool operator==( DirectFBSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
30806     {
30807 #    if defined( VULKAN_HPP_USE_REFLECT )
30808       return this->reflect() == rhs.reflect();
30809 #    else
30810       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( dfb == rhs.dfb ) && ( surface == rhs.surface );
30811 #    endif
30812     }
30813 
operator !=VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT30814     bool operator!=( DirectFBSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
30815     {
30816       return !operator==( rhs );
30817     }
30818 #  endif
30819 
30820   public:
30821     VULKAN_HPP_NAMESPACE::StructureType                 sType   = StructureType::eDirectfbSurfaceCreateInfoEXT;
30822     const void *                                        pNext   = {};
30823     VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateFlagsEXT flags   = {};
30824     IDirectFB *                                         dfb     = {};
30825     IDirectFBSurface *                                  surface = {};
30826   };
30827 
30828   template <>
30829   struct CppType<StructureType, StructureType::eDirectfbSurfaceCreateInfoEXT>
30830   {
30831     using Type = DirectFBSurfaceCreateInfoEXT;
30832   };
30833 #endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
30834 
30835 #if defined( VK_ENABLE_BETA_EXTENSIONS )
30836   struct DispatchGraphCountInfoAMDX
30837   {
30838     using NativeType = VkDispatchGraphCountInfoAMDX;
30839 
30840 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DispatchGraphCountInfoAMDXVULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX30841     VULKAN_HPP_CONSTEXPR_14 DispatchGraphCountInfoAMDX( uint32_t                                           count_  = {},
30842                                                         VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstAMDX infos_  = {},
30843                                                         uint64_t                                           stride_ = {} ) VULKAN_HPP_NOEXCEPT
30844       : count{ count_ }
30845       , infos{ infos_ }
30846       , stride{ stride_ }
30847     {
30848     }
30849 
30850     VULKAN_HPP_CONSTEXPR_14 DispatchGraphCountInfoAMDX( DispatchGraphCountInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30851 
DispatchGraphCountInfoAMDXVULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX30852     DispatchGraphCountInfoAMDX( VkDispatchGraphCountInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
30853       : DispatchGraphCountInfoAMDX( *reinterpret_cast<DispatchGraphCountInfoAMDX const *>( &rhs ) )
30854     {
30855     }
30856 
30857     DispatchGraphCountInfoAMDX & operator=( DispatchGraphCountInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30858 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30859 
operator =VULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX30860     DispatchGraphCountInfoAMDX & operator=( VkDispatchGraphCountInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
30861     {
30862       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX const *>( &rhs );
30863       return *this;
30864     }
30865 
30866 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setCountVULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX30867     VULKAN_HPP_CONSTEXPR_14 DispatchGraphCountInfoAMDX & setCount( uint32_t count_ ) VULKAN_HPP_NOEXCEPT
30868     {
30869       count = count_;
30870       return *this;
30871     }
30872 
setInfosVULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX30873     VULKAN_HPP_CONSTEXPR_14 DispatchGraphCountInfoAMDX & setInfos( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstAMDX const & infos_ ) VULKAN_HPP_NOEXCEPT
30874     {
30875       infos = infos_;
30876       return *this;
30877     }
30878 
setStrideVULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX30879     VULKAN_HPP_CONSTEXPR_14 DispatchGraphCountInfoAMDX & setStride( uint64_t stride_ ) VULKAN_HPP_NOEXCEPT
30880     {
30881       stride = stride_;
30882       return *this;
30883     }
30884 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30885 
operator VkDispatchGraphCountInfoAMDX const&VULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX30886     operator VkDispatchGraphCountInfoAMDX const &() const VULKAN_HPP_NOEXCEPT
30887     {
30888       return *reinterpret_cast<const VkDispatchGraphCountInfoAMDX *>( this );
30889     }
30890 
operator VkDispatchGraphCountInfoAMDX&VULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX30891     operator VkDispatchGraphCountInfoAMDX &() VULKAN_HPP_NOEXCEPT
30892     {
30893       return *reinterpret_cast<VkDispatchGraphCountInfoAMDX *>( this );
30894     }
30895 
30896 #  if defined( VULKAN_HPP_USE_REFLECT )
30897 #    if 14 <= VULKAN_HPP_CPP_VERSION
30898     auto
30899 #    else
30900     std::tuple<uint32_t const &, VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstAMDX const &, uint64_t const &>
30901 #    endif
reflectVULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX30902       reflect() const VULKAN_HPP_NOEXCEPT
30903     {
30904       return std::tie( count, infos, stride );
30905     }
30906 #  endif
30907 
30908   public:
30909     uint32_t                                           count  = {};
30910     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstAMDX infos  = {};
30911     uint64_t                                           stride = {};
30912   };
30913 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
30914 
30915 #if defined( VK_ENABLE_BETA_EXTENSIONS )
30916   struct DispatchGraphInfoAMDX
30917   {
30918     using NativeType = VkDispatchGraphInfoAMDX;
30919 
30920 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DispatchGraphInfoAMDXVULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX30921     VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX( uint32_t                                           nodeIndex_     = {},
30922                                                    uint32_t                                           payloadCount_  = {},
30923                                                    VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstAMDX payloads_      = {},
30924                                                    uint64_t                                           payloadStride_ = {} ) VULKAN_HPP_NOEXCEPT
30925       : nodeIndex{ nodeIndex_ }
30926       , payloadCount{ payloadCount_ }
30927       , payloads{ payloads_ }
30928       , payloadStride{ payloadStride_ }
30929     {
30930     }
30931 
30932     VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX( DispatchGraphInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30933 
DispatchGraphInfoAMDXVULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX30934     DispatchGraphInfoAMDX( VkDispatchGraphInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
30935       : DispatchGraphInfoAMDX( *reinterpret_cast<DispatchGraphInfoAMDX const *>( &rhs ) )
30936     {
30937     }
30938 
30939     DispatchGraphInfoAMDX & operator=( DispatchGraphInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30940 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30941 
operator =VULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX30942     DispatchGraphInfoAMDX & operator=( VkDispatchGraphInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
30943     {
30944       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX const *>( &rhs );
30945       return *this;
30946     }
30947 
30948 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setNodeIndexVULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX30949     VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX & setNodeIndex( uint32_t nodeIndex_ ) VULKAN_HPP_NOEXCEPT
30950     {
30951       nodeIndex = nodeIndex_;
30952       return *this;
30953     }
30954 
setPayloadCountVULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX30955     VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX & setPayloadCount( uint32_t payloadCount_ ) VULKAN_HPP_NOEXCEPT
30956     {
30957       payloadCount = payloadCount_;
30958       return *this;
30959     }
30960 
setPayloadsVULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX30961     VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX & setPayloads( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstAMDX const & payloads_ ) VULKAN_HPP_NOEXCEPT
30962     {
30963       payloads = payloads_;
30964       return *this;
30965     }
30966 
setPayloadStrideVULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX30967     VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX & setPayloadStride( uint64_t payloadStride_ ) VULKAN_HPP_NOEXCEPT
30968     {
30969       payloadStride = payloadStride_;
30970       return *this;
30971     }
30972 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30973 
operator VkDispatchGraphInfoAMDX const&VULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX30974     operator VkDispatchGraphInfoAMDX const &() const VULKAN_HPP_NOEXCEPT
30975     {
30976       return *reinterpret_cast<const VkDispatchGraphInfoAMDX *>( this );
30977     }
30978 
operator VkDispatchGraphInfoAMDX&VULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX30979     operator VkDispatchGraphInfoAMDX &() VULKAN_HPP_NOEXCEPT
30980     {
30981       return *reinterpret_cast<VkDispatchGraphInfoAMDX *>( this );
30982     }
30983 
30984 #  if defined( VULKAN_HPP_USE_REFLECT )
30985 #    if 14 <= VULKAN_HPP_CPP_VERSION
30986     auto
30987 #    else
30988     std::tuple<uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstAMDX const &, uint64_t const &>
30989 #    endif
reflectVULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX30990       reflect() const VULKAN_HPP_NOEXCEPT
30991     {
30992       return std::tie( nodeIndex, payloadCount, payloads, payloadStride );
30993     }
30994 #  endif
30995 
30996   public:
30997     uint32_t                                           nodeIndex     = {};
30998     uint32_t                                           payloadCount  = {};
30999     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstAMDX payloads      = {};
31000     uint64_t                                           payloadStride = {};
31001   };
31002 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
31003 
31004   struct DispatchIndirectCommand
31005   {
31006     using NativeType = VkDispatchIndirectCommand;
31007 
31008 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DispatchIndirectCommandVULKAN_HPP_NAMESPACE::DispatchIndirectCommand31009     VULKAN_HPP_CONSTEXPR DispatchIndirectCommand( uint32_t x_ = {}, uint32_t y_ = {}, uint32_t z_ = {} ) VULKAN_HPP_NOEXCEPT
31010       : x{ x_ }
31011       , y{ y_ }
31012       , z{ z_ }
31013     {
31014     }
31015 
31016     VULKAN_HPP_CONSTEXPR DispatchIndirectCommand( DispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31017 
DispatchIndirectCommandVULKAN_HPP_NAMESPACE::DispatchIndirectCommand31018     DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
31019       : DispatchIndirectCommand( *reinterpret_cast<DispatchIndirectCommand const *>( &rhs ) )
31020     {
31021     }
31022 
31023     DispatchIndirectCommand & operator=( DispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31024 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31025 
operator =VULKAN_HPP_NAMESPACE::DispatchIndirectCommand31026     DispatchIndirectCommand & operator=( VkDispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
31027     {
31028       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DispatchIndirectCommand const *>( &rhs );
31029       return *this;
31030     }
31031 
31032 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::DispatchIndirectCommand31033     VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand & setX( uint32_t x_ ) VULKAN_HPP_NOEXCEPT
31034     {
31035       x = x_;
31036       return *this;
31037     }
31038 
setYVULKAN_HPP_NAMESPACE::DispatchIndirectCommand31039     VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand & setY( uint32_t y_ ) VULKAN_HPP_NOEXCEPT
31040     {
31041       y = y_;
31042       return *this;
31043     }
31044 
setZVULKAN_HPP_NAMESPACE::DispatchIndirectCommand31045     VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand & setZ( uint32_t z_ ) VULKAN_HPP_NOEXCEPT
31046     {
31047       z = z_;
31048       return *this;
31049     }
31050 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31051 
operator VkDispatchIndirectCommand const&VULKAN_HPP_NAMESPACE::DispatchIndirectCommand31052     operator VkDispatchIndirectCommand const &() const VULKAN_HPP_NOEXCEPT
31053     {
31054       return *reinterpret_cast<const VkDispatchIndirectCommand *>( this );
31055     }
31056 
operator VkDispatchIndirectCommand&VULKAN_HPP_NAMESPACE::DispatchIndirectCommand31057     operator VkDispatchIndirectCommand &() VULKAN_HPP_NOEXCEPT
31058     {
31059       return *reinterpret_cast<VkDispatchIndirectCommand *>( this );
31060     }
31061 
31062 #if defined( VULKAN_HPP_USE_REFLECT )
31063 #  if 14 <= VULKAN_HPP_CPP_VERSION
31064     auto
31065 #  else
31066     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
31067 #  endif
reflectVULKAN_HPP_NAMESPACE::DispatchIndirectCommand31068       reflect() const VULKAN_HPP_NOEXCEPT
31069     {
31070       return std::tie( x, y, z );
31071     }
31072 #endif
31073 
31074 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31075     auto operator<=>( DispatchIndirectCommand const & ) const = default;
31076 #else
operator ==VULKAN_HPP_NAMESPACE::DispatchIndirectCommand31077     bool operator==( DispatchIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
31078     {
31079 #  if defined( VULKAN_HPP_USE_REFLECT )
31080       return this->reflect() == rhs.reflect();
31081 #  else
31082       return ( x == rhs.x ) && ( y == rhs.y ) && ( z == rhs.z );
31083 #  endif
31084     }
31085 
operator !=VULKAN_HPP_NAMESPACE::DispatchIndirectCommand31086     bool operator!=( DispatchIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
31087     {
31088       return !operator==( rhs );
31089     }
31090 #endif
31091 
31092   public:
31093     uint32_t x = {};
31094     uint32_t y = {};
31095     uint32_t z = {};
31096   };
31097 
31098   struct DisplayEventInfoEXT
31099   {
31100     using NativeType = VkDisplayEventInfoEXT;
31101 
31102     static const bool                                  allowDuplicate = false;
31103     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayEventInfoEXT;
31104 
31105 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
31106     VULKAN_HPP_CONSTEXPR
DisplayEventInfoEXTVULKAN_HPP_NAMESPACE::DisplayEventInfoEXT31107       DisplayEventInfoEXT( VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT displayEvent_ = VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT::eFirstPixelOut,
31108                            const void *                              pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
31109       : pNext{ pNext_ }
31110       , displayEvent{ displayEvent_ }
31111     {
31112     }
31113 
31114     VULKAN_HPP_CONSTEXPR DisplayEventInfoEXT( DisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31115 
DisplayEventInfoEXTVULKAN_HPP_NAMESPACE::DisplayEventInfoEXT31116     DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : DisplayEventInfoEXT( *reinterpret_cast<DisplayEventInfoEXT const *>( &rhs ) )
31117     {
31118     }
31119 
31120     DisplayEventInfoEXT & operator=( DisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31121 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31122 
operator =VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT31123     DisplayEventInfoEXT & operator=( VkDisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
31124     {
31125       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT const *>( &rhs );
31126       return *this;
31127     }
31128 
31129 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplayEventInfoEXT31130     VULKAN_HPP_CONSTEXPR_14 DisplayEventInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
31131     {
31132       pNext = pNext_;
31133       return *this;
31134     }
31135 
setDisplayEventVULKAN_HPP_NAMESPACE::DisplayEventInfoEXT31136     VULKAN_HPP_CONSTEXPR_14 DisplayEventInfoEXT & setDisplayEvent( VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT displayEvent_ ) VULKAN_HPP_NOEXCEPT
31137     {
31138       displayEvent = displayEvent_;
31139       return *this;
31140     }
31141 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31142 
operator VkDisplayEventInfoEXT const&VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT31143     operator VkDisplayEventInfoEXT const &() const VULKAN_HPP_NOEXCEPT
31144     {
31145       return *reinterpret_cast<const VkDisplayEventInfoEXT *>( this );
31146     }
31147 
operator VkDisplayEventInfoEXT&VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT31148     operator VkDisplayEventInfoEXT &() VULKAN_HPP_NOEXCEPT
31149     {
31150       return *reinterpret_cast<VkDisplayEventInfoEXT *>( this );
31151     }
31152 
31153 #if defined( VULKAN_HPP_USE_REFLECT )
31154 #  if 14 <= VULKAN_HPP_CPP_VERSION
31155     auto
31156 #  else
31157     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT const &>
31158 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayEventInfoEXT31159       reflect() const VULKAN_HPP_NOEXCEPT
31160     {
31161       return std::tie( sType, pNext, displayEvent );
31162     }
31163 #endif
31164 
31165 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31166     auto operator<=>( DisplayEventInfoEXT const & ) const = default;
31167 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT31168     bool operator==( DisplayEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
31169     {
31170 #  if defined( VULKAN_HPP_USE_REFLECT )
31171       return this->reflect() == rhs.reflect();
31172 #  else
31173       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displayEvent == rhs.displayEvent );
31174 #  endif
31175     }
31176 
operator !=VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT31177     bool operator!=( DisplayEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
31178     {
31179       return !operator==( rhs );
31180     }
31181 #endif
31182 
31183   public:
31184     VULKAN_HPP_NAMESPACE::StructureType       sType        = StructureType::eDisplayEventInfoEXT;
31185     const void *                              pNext        = {};
31186     VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT displayEvent = VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT::eFirstPixelOut;
31187   };
31188 
31189   template <>
31190   struct CppType<StructureType, StructureType::eDisplayEventInfoEXT>
31191   {
31192     using Type = DisplayEventInfoEXT;
31193   };
31194 
31195   struct DisplayModeParametersKHR
31196   {
31197     using NativeType = VkDisplayModeParametersKHR;
31198 
31199 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayModeParametersKHRVULKAN_HPP_NAMESPACE::DisplayModeParametersKHR31200     VULKAN_HPP_CONSTEXPR DisplayModeParametersKHR( VULKAN_HPP_NAMESPACE::Extent2D visibleRegion_ = {}, uint32_t refreshRate_ = {} ) VULKAN_HPP_NOEXCEPT
31201       : visibleRegion{ visibleRegion_ }
31202       , refreshRate{ refreshRate_ }
31203     {
31204     }
31205 
31206     VULKAN_HPP_CONSTEXPR DisplayModeParametersKHR( DisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31207 
DisplayModeParametersKHRVULKAN_HPP_NAMESPACE::DisplayModeParametersKHR31208     DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT
31209       : DisplayModeParametersKHR( *reinterpret_cast<DisplayModeParametersKHR const *>( &rhs ) )
31210     {
31211     }
31212 
31213     DisplayModeParametersKHR & operator=( DisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31214 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31215 
operator =VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR31216     DisplayModeParametersKHR & operator=( VkDisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT
31217     {
31218       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const *>( &rhs );
31219       return *this;
31220     }
31221 
31222 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setVisibleRegionVULKAN_HPP_NAMESPACE::DisplayModeParametersKHR31223     VULKAN_HPP_CONSTEXPR_14 DisplayModeParametersKHR & setVisibleRegion( VULKAN_HPP_NAMESPACE::Extent2D const & visibleRegion_ ) VULKAN_HPP_NOEXCEPT
31224     {
31225       visibleRegion = visibleRegion_;
31226       return *this;
31227     }
31228 
setRefreshRateVULKAN_HPP_NAMESPACE::DisplayModeParametersKHR31229     VULKAN_HPP_CONSTEXPR_14 DisplayModeParametersKHR & setRefreshRate( uint32_t refreshRate_ ) VULKAN_HPP_NOEXCEPT
31230     {
31231       refreshRate = refreshRate_;
31232       return *this;
31233     }
31234 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31235 
operator VkDisplayModeParametersKHR const&VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR31236     operator VkDisplayModeParametersKHR const &() const VULKAN_HPP_NOEXCEPT
31237     {
31238       return *reinterpret_cast<const VkDisplayModeParametersKHR *>( this );
31239     }
31240 
operator VkDisplayModeParametersKHR&VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR31241     operator VkDisplayModeParametersKHR &() VULKAN_HPP_NOEXCEPT
31242     {
31243       return *reinterpret_cast<VkDisplayModeParametersKHR *>( this );
31244     }
31245 
31246 #if defined( VULKAN_HPP_USE_REFLECT )
31247 #  if 14 <= VULKAN_HPP_CPP_VERSION
31248     auto
31249 #  else
31250     std::tuple<VULKAN_HPP_NAMESPACE::Extent2D const &, uint32_t const &>
31251 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayModeParametersKHR31252       reflect() const VULKAN_HPP_NOEXCEPT
31253     {
31254       return std::tie( visibleRegion, refreshRate );
31255     }
31256 #endif
31257 
31258 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31259     auto operator<=>( DisplayModeParametersKHR const & ) const = default;
31260 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR31261     bool operator==( DisplayModeParametersKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31262     {
31263 #  if defined( VULKAN_HPP_USE_REFLECT )
31264       return this->reflect() == rhs.reflect();
31265 #  else
31266       return ( visibleRegion == rhs.visibleRegion ) && ( refreshRate == rhs.refreshRate );
31267 #  endif
31268     }
31269 
operator !=VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR31270     bool operator!=( DisplayModeParametersKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31271     {
31272       return !operator==( rhs );
31273     }
31274 #endif
31275 
31276   public:
31277     VULKAN_HPP_NAMESPACE::Extent2D visibleRegion = {};
31278     uint32_t                       refreshRate   = {};
31279   };
31280 
31281   struct DisplayModeCreateInfoKHR
31282   {
31283     using NativeType = VkDisplayModeCreateInfoKHR;
31284 
31285     static const bool                                  allowDuplicate = false;
31286     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayModeCreateInfoKHR;
31287 
31288 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayModeCreateInfoKHRVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31289     VULKAN_HPP_CONSTEXPR DisplayModeCreateInfoKHR( VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR flags_      = {},
31290                                                    VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR  parameters_ = {},
31291                                                    const void *                                    pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
31292       : pNext{ pNext_ }
31293       , flags{ flags_ }
31294       , parameters{ parameters_ }
31295     {
31296     }
31297 
31298     VULKAN_HPP_CONSTEXPR DisplayModeCreateInfoKHR( DisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31299 
DisplayModeCreateInfoKHRVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31300     DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
31301       : DisplayModeCreateInfoKHR( *reinterpret_cast<DisplayModeCreateInfoKHR const *>( &rhs ) )
31302     {
31303     }
31304 
31305     DisplayModeCreateInfoKHR & operator=( DisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31306 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31307 
operator =VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31308     DisplayModeCreateInfoKHR & operator=( VkDisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
31309     {
31310       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR const *>( &rhs );
31311       return *this;
31312     }
31313 
31314 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31315     VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
31316     {
31317       pNext = pNext_;
31318       return *this;
31319     }
31320 
setFlagsVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31321     VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
31322     {
31323       flags = flags_;
31324       return *this;
31325     }
31326 
setParametersVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31327     VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR & setParameters( VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const & parameters_ ) VULKAN_HPP_NOEXCEPT
31328     {
31329       parameters = parameters_;
31330       return *this;
31331     }
31332 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31333 
operator VkDisplayModeCreateInfoKHR const&VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31334     operator VkDisplayModeCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
31335     {
31336       return *reinterpret_cast<const VkDisplayModeCreateInfoKHR *>( this );
31337     }
31338 
operator VkDisplayModeCreateInfoKHR&VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31339     operator VkDisplayModeCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
31340     {
31341       return *reinterpret_cast<VkDisplayModeCreateInfoKHR *>( this );
31342     }
31343 
31344 #if defined( VULKAN_HPP_USE_REFLECT )
31345 #  if 14 <= VULKAN_HPP_CPP_VERSION
31346     auto
31347 #  else
31348     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
31349                const void * const &,
31350                VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR const &,
31351                VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const &>
31352 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31353       reflect() const VULKAN_HPP_NOEXCEPT
31354     {
31355       return std::tie( sType, pNext, flags, parameters );
31356     }
31357 #endif
31358 
31359 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31360     auto operator<=>( DisplayModeCreateInfoKHR const & ) const = default;
31361 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31362     bool operator==( DisplayModeCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31363     {
31364 #  if defined( VULKAN_HPP_USE_REFLECT )
31365       return this->reflect() == rhs.reflect();
31366 #  else
31367       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( parameters == rhs.parameters );
31368 #  endif
31369     }
31370 
operator !=VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR31371     bool operator!=( DisplayModeCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31372     {
31373       return !operator==( rhs );
31374     }
31375 #endif
31376 
31377   public:
31378     VULKAN_HPP_NAMESPACE::StructureType             sType      = StructureType::eDisplayModeCreateInfoKHR;
31379     const void *                                    pNext      = {};
31380     VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR flags      = {};
31381     VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR  parameters = {};
31382   };
31383 
31384   template <>
31385   struct CppType<StructureType, StructureType::eDisplayModeCreateInfoKHR>
31386   {
31387     using Type = DisplayModeCreateInfoKHR;
31388   };
31389 
31390   struct DisplayModePropertiesKHR
31391   {
31392     using NativeType = VkDisplayModePropertiesKHR;
31393 
31394 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayModePropertiesKHRVULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR31395     VULKAN_HPP_CONSTEXPR DisplayModePropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayModeKHR           displayMode_ = {},
31396                                                    VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR parameters_  = {} ) VULKAN_HPP_NOEXCEPT
31397       : displayMode{ displayMode_ }
31398       , parameters{ parameters_ }
31399     {
31400     }
31401 
31402     VULKAN_HPP_CONSTEXPR DisplayModePropertiesKHR( DisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31403 
DisplayModePropertiesKHRVULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR31404     DisplayModePropertiesKHR( VkDisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
31405       : DisplayModePropertiesKHR( *reinterpret_cast<DisplayModePropertiesKHR const *>( &rhs ) )
31406     {
31407     }
31408 
31409     DisplayModePropertiesKHR & operator=( DisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31410 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31411 
operator =VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR31412     DisplayModePropertiesKHR & operator=( VkDisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
31413     {
31414       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR const *>( &rhs );
31415       return *this;
31416     }
31417 
operator VkDisplayModePropertiesKHR const&VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR31418     operator VkDisplayModePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
31419     {
31420       return *reinterpret_cast<const VkDisplayModePropertiesKHR *>( this );
31421     }
31422 
operator VkDisplayModePropertiesKHR&VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR31423     operator VkDisplayModePropertiesKHR &() VULKAN_HPP_NOEXCEPT
31424     {
31425       return *reinterpret_cast<VkDisplayModePropertiesKHR *>( this );
31426     }
31427 
31428 #if defined( VULKAN_HPP_USE_REFLECT )
31429 #  if 14 <= VULKAN_HPP_CPP_VERSION
31430     auto
31431 #  else
31432     std::tuple<VULKAN_HPP_NAMESPACE::DisplayModeKHR const &, VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const &>
31433 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR31434       reflect() const VULKAN_HPP_NOEXCEPT
31435     {
31436       return std::tie( displayMode, parameters );
31437     }
31438 #endif
31439 
31440 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31441     auto operator<=>( DisplayModePropertiesKHR const & ) const = default;
31442 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR31443     bool operator==( DisplayModePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31444     {
31445 #  if defined( VULKAN_HPP_USE_REFLECT )
31446       return this->reflect() == rhs.reflect();
31447 #  else
31448       return ( displayMode == rhs.displayMode ) && ( parameters == rhs.parameters );
31449 #  endif
31450     }
31451 
operator !=VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR31452     bool operator!=( DisplayModePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31453     {
31454       return !operator==( rhs );
31455     }
31456 #endif
31457 
31458   public:
31459     VULKAN_HPP_NAMESPACE::DisplayModeKHR           displayMode = {};
31460     VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR parameters  = {};
31461   };
31462 
31463   struct DisplayModeProperties2KHR
31464   {
31465     using NativeType = VkDisplayModeProperties2KHR;
31466 
31467     static const bool                                  allowDuplicate = false;
31468     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayModeProperties2KHR;
31469 
31470 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayModeProperties2KHRVULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR31471     VULKAN_HPP_CONSTEXPR DisplayModeProperties2KHR( VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR displayModeProperties_ = {},
31472                                                     void *                                         pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
31473       : pNext{ pNext_ }
31474       , displayModeProperties{ displayModeProperties_ }
31475     {
31476     }
31477 
31478     VULKAN_HPP_CONSTEXPR DisplayModeProperties2KHR( DisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31479 
DisplayModeProperties2KHRVULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR31480     DisplayModeProperties2KHR( VkDisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
31481       : DisplayModeProperties2KHR( *reinterpret_cast<DisplayModeProperties2KHR const *>( &rhs ) )
31482     {
31483     }
31484 
31485     DisplayModeProperties2KHR & operator=( DisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31486 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31487 
operator =VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR31488     DisplayModeProperties2KHR & operator=( VkDisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
31489     {
31490       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR const *>( &rhs );
31491       return *this;
31492     }
31493 
operator VkDisplayModeProperties2KHR const&VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR31494     operator VkDisplayModeProperties2KHR const &() const VULKAN_HPP_NOEXCEPT
31495     {
31496       return *reinterpret_cast<const VkDisplayModeProperties2KHR *>( this );
31497     }
31498 
operator VkDisplayModeProperties2KHR&VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR31499     operator VkDisplayModeProperties2KHR &() VULKAN_HPP_NOEXCEPT
31500     {
31501       return *reinterpret_cast<VkDisplayModeProperties2KHR *>( this );
31502     }
31503 
31504 #if defined( VULKAN_HPP_USE_REFLECT )
31505 #  if 14 <= VULKAN_HPP_CPP_VERSION
31506     auto
31507 #  else
31508     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR const &>
31509 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR31510       reflect() const VULKAN_HPP_NOEXCEPT
31511     {
31512       return std::tie( sType, pNext, displayModeProperties );
31513     }
31514 #endif
31515 
31516 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31517     auto operator<=>( DisplayModeProperties2KHR const & ) const = default;
31518 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR31519     bool operator==( DisplayModeProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31520     {
31521 #  if defined( VULKAN_HPP_USE_REFLECT )
31522       return this->reflect() == rhs.reflect();
31523 #  else
31524       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displayModeProperties == rhs.displayModeProperties );
31525 #  endif
31526     }
31527 
operator !=VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR31528     bool operator!=( DisplayModeProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31529     {
31530       return !operator==( rhs );
31531     }
31532 #endif
31533 
31534   public:
31535     VULKAN_HPP_NAMESPACE::StructureType            sType                 = StructureType::eDisplayModeProperties2KHR;
31536     void *                                         pNext                 = {};
31537     VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR displayModeProperties = {};
31538   };
31539 
31540   template <>
31541   struct CppType<StructureType, StructureType::eDisplayModeProperties2KHR>
31542   {
31543     using Type = DisplayModeProperties2KHR;
31544   };
31545 
31546   struct DisplayNativeHdrSurfaceCapabilitiesAMD
31547   {
31548     using NativeType = VkDisplayNativeHdrSurfaceCapabilitiesAMD;
31549 
31550     static const bool                                  allowDuplicate = false;
31551     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayNativeHdrSurfaceCapabilitiesAMD;
31552 
31553 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayNativeHdrSurfaceCapabilitiesAMDVULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD31554     VULKAN_HPP_CONSTEXPR DisplayNativeHdrSurfaceCapabilitiesAMD( VULKAN_HPP_NAMESPACE::Bool32 localDimmingSupport_ = {},
31555                                                                  void *                       pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
31556       : pNext{ pNext_ }
31557       , localDimmingSupport{ localDimmingSupport_ }
31558     {
31559     }
31560 
31561     VULKAN_HPP_CONSTEXPR DisplayNativeHdrSurfaceCapabilitiesAMD( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31562 
DisplayNativeHdrSurfaceCapabilitiesAMDVULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD31563     DisplayNativeHdrSurfaceCapabilitiesAMD( VkDisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
31564       : DisplayNativeHdrSurfaceCapabilitiesAMD( *reinterpret_cast<DisplayNativeHdrSurfaceCapabilitiesAMD const *>( &rhs ) )
31565     {
31566     }
31567 
31568     DisplayNativeHdrSurfaceCapabilitiesAMD & operator=( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31569 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31570 
operator =VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD31571     DisplayNativeHdrSurfaceCapabilitiesAMD & operator=( VkDisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
31572     {
31573       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD const *>( &rhs );
31574       return *this;
31575     }
31576 
operator VkDisplayNativeHdrSurfaceCapabilitiesAMD const&VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD31577     operator VkDisplayNativeHdrSurfaceCapabilitiesAMD const &() const VULKAN_HPP_NOEXCEPT
31578     {
31579       return *reinterpret_cast<const VkDisplayNativeHdrSurfaceCapabilitiesAMD *>( this );
31580     }
31581 
operator VkDisplayNativeHdrSurfaceCapabilitiesAMD&VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD31582     operator VkDisplayNativeHdrSurfaceCapabilitiesAMD &() VULKAN_HPP_NOEXCEPT
31583     {
31584       return *reinterpret_cast<VkDisplayNativeHdrSurfaceCapabilitiesAMD *>( this );
31585     }
31586 
31587 #if defined( VULKAN_HPP_USE_REFLECT )
31588 #  if 14 <= VULKAN_HPP_CPP_VERSION
31589     auto
31590 #  else
31591     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
31592 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD31593       reflect() const VULKAN_HPP_NOEXCEPT
31594     {
31595       return std::tie( sType, pNext, localDimmingSupport );
31596     }
31597 #endif
31598 
31599 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31600     auto operator<=>( DisplayNativeHdrSurfaceCapabilitiesAMD const & ) const = default;
31601 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD31602     bool operator==( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
31603     {
31604 #  if defined( VULKAN_HPP_USE_REFLECT )
31605       return this->reflect() == rhs.reflect();
31606 #  else
31607       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( localDimmingSupport == rhs.localDimmingSupport );
31608 #  endif
31609     }
31610 
operator !=VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD31611     bool operator!=( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
31612     {
31613       return !operator==( rhs );
31614     }
31615 #endif
31616 
31617   public:
31618     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::eDisplayNativeHdrSurfaceCapabilitiesAMD;
31619     void *                              pNext               = {};
31620     VULKAN_HPP_NAMESPACE::Bool32        localDimmingSupport = {};
31621   };
31622 
31623   template <>
31624   struct CppType<StructureType, StructureType::eDisplayNativeHdrSurfaceCapabilitiesAMD>
31625   {
31626     using Type = DisplayNativeHdrSurfaceCapabilitiesAMD;
31627   };
31628 
31629   struct DisplayPlaneCapabilitiesKHR
31630   {
31631     using NativeType = VkDisplayPlaneCapabilitiesKHR;
31632 
31633 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPlaneCapabilitiesKHRVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR31634     VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilitiesKHR( VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagsKHR supportedAlpha_ = {},
31635                                                       VULKAN_HPP_NAMESPACE::Offset2D                  minSrcPosition_ = {},
31636                                                       VULKAN_HPP_NAMESPACE::Offset2D                  maxSrcPosition_ = {},
31637                                                       VULKAN_HPP_NAMESPACE::Extent2D                  minSrcExtent_   = {},
31638                                                       VULKAN_HPP_NAMESPACE::Extent2D                  maxSrcExtent_   = {},
31639                                                       VULKAN_HPP_NAMESPACE::Offset2D                  minDstPosition_ = {},
31640                                                       VULKAN_HPP_NAMESPACE::Offset2D                  maxDstPosition_ = {},
31641                                                       VULKAN_HPP_NAMESPACE::Extent2D                  minDstExtent_   = {},
31642                                                       VULKAN_HPP_NAMESPACE::Extent2D                  maxDstExtent_   = {} ) VULKAN_HPP_NOEXCEPT
31643       : supportedAlpha{ supportedAlpha_ }
31644       , minSrcPosition{ minSrcPosition_ }
31645       , maxSrcPosition{ maxSrcPosition_ }
31646       , minSrcExtent{ minSrcExtent_ }
31647       , maxSrcExtent{ maxSrcExtent_ }
31648       , minDstPosition{ minDstPosition_ }
31649       , maxDstPosition{ maxDstPosition_ }
31650       , minDstExtent{ minDstExtent_ }
31651       , maxDstExtent{ maxDstExtent_ }
31652     {
31653     }
31654 
31655     VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilitiesKHR( DisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31656 
DisplayPlaneCapabilitiesKHRVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR31657     DisplayPlaneCapabilitiesKHR( VkDisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
31658       : DisplayPlaneCapabilitiesKHR( *reinterpret_cast<DisplayPlaneCapabilitiesKHR const *>( &rhs ) )
31659     {
31660     }
31661 
31662     DisplayPlaneCapabilitiesKHR & operator=( DisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31663 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31664 
operator =VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR31665     DisplayPlaneCapabilitiesKHR & operator=( VkDisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
31666     {
31667       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR const *>( &rhs );
31668       return *this;
31669     }
31670 
operator VkDisplayPlaneCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR31671     operator VkDisplayPlaneCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
31672     {
31673       return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR *>( this );
31674     }
31675 
operator VkDisplayPlaneCapabilitiesKHR&VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR31676     operator VkDisplayPlaneCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
31677     {
31678       return *reinterpret_cast<VkDisplayPlaneCapabilitiesKHR *>( this );
31679     }
31680 
31681 #if defined( VULKAN_HPP_USE_REFLECT )
31682 #  if 14 <= VULKAN_HPP_CPP_VERSION
31683     auto
31684 #  else
31685     std::tuple<VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagsKHR const &,
31686                VULKAN_HPP_NAMESPACE::Offset2D const &,
31687                VULKAN_HPP_NAMESPACE::Offset2D const &,
31688                VULKAN_HPP_NAMESPACE::Extent2D const &,
31689                VULKAN_HPP_NAMESPACE::Extent2D const &,
31690                VULKAN_HPP_NAMESPACE::Offset2D const &,
31691                VULKAN_HPP_NAMESPACE::Offset2D const &,
31692                VULKAN_HPP_NAMESPACE::Extent2D const &,
31693                VULKAN_HPP_NAMESPACE::Extent2D const &>
31694 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR31695       reflect() const VULKAN_HPP_NOEXCEPT
31696     {
31697       return std::tie( supportedAlpha, minSrcPosition, maxSrcPosition, minSrcExtent, maxSrcExtent, minDstPosition, maxDstPosition, minDstExtent, maxDstExtent );
31698     }
31699 #endif
31700 
31701 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31702     auto operator<=>( DisplayPlaneCapabilitiesKHR const & ) const = default;
31703 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR31704     bool operator==( DisplayPlaneCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31705     {
31706 #  if defined( VULKAN_HPP_USE_REFLECT )
31707       return this->reflect() == rhs.reflect();
31708 #  else
31709       return ( supportedAlpha == rhs.supportedAlpha ) && ( minSrcPosition == rhs.minSrcPosition ) && ( maxSrcPosition == rhs.maxSrcPosition ) &&
31710              ( minSrcExtent == rhs.minSrcExtent ) && ( maxSrcExtent == rhs.maxSrcExtent ) && ( minDstPosition == rhs.minDstPosition ) &&
31711              ( maxDstPosition == rhs.maxDstPosition ) && ( minDstExtent == rhs.minDstExtent ) && ( maxDstExtent == rhs.maxDstExtent );
31712 #  endif
31713     }
31714 
operator !=VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR31715     bool operator!=( DisplayPlaneCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31716     {
31717       return !operator==( rhs );
31718     }
31719 #endif
31720 
31721   public:
31722     VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagsKHR supportedAlpha = {};
31723     VULKAN_HPP_NAMESPACE::Offset2D                  minSrcPosition = {};
31724     VULKAN_HPP_NAMESPACE::Offset2D                  maxSrcPosition = {};
31725     VULKAN_HPP_NAMESPACE::Extent2D                  minSrcExtent   = {};
31726     VULKAN_HPP_NAMESPACE::Extent2D                  maxSrcExtent   = {};
31727     VULKAN_HPP_NAMESPACE::Offset2D                  minDstPosition = {};
31728     VULKAN_HPP_NAMESPACE::Offset2D                  maxDstPosition = {};
31729     VULKAN_HPP_NAMESPACE::Extent2D                  minDstExtent   = {};
31730     VULKAN_HPP_NAMESPACE::Extent2D                  maxDstExtent   = {};
31731   };
31732 
31733   struct DisplayPlaneCapabilities2KHR
31734   {
31735     using NativeType = VkDisplayPlaneCapabilities2KHR;
31736 
31737     static const bool                                  allowDuplicate = false;
31738     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayPlaneCapabilities2KHR;
31739 
31740 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPlaneCapabilities2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR31741     VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilities2KHR( VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR capabilities_ = {},
31742                                                        void *                                            pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
31743       : pNext{ pNext_ }
31744       , capabilities{ capabilities_ }
31745     {
31746     }
31747 
31748     VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilities2KHR( DisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31749 
DisplayPlaneCapabilities2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR31750     DisplayPlaneCapabilities2KHR( VkDisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
31751       : DisplayPlaneCapabilities2KHR( *reinterpret_cast<DisplayPlaneCapabilities2KHR const *>( &rhs ) )
31752     {
31753     }
31754 
31755     DisplayPlaneCapabilities2KHR & operator=( DisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31756 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31757 
operator =VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR31758     DisplayPlaneCapabilities2KHR & operator=( VkDisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
31759     {
31760       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR const *>( &rhs );
31761       return *this;
31762     }
31763 
operator VkDisplayPlaneCapabilities2KHR const&VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR31764     operator VkDisplayPlaneCapabilities2KHR const &() const VULKAN_HPP_NOEXCEPT
31765     {
31766       return *reinterpret_cast<const VkDisplayPlaneCapabilities2KHR *>( this );
31767     }
31768 
operator VkDisplayPlaneCapabilities2KHR&VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR31769     operator VkDisplayPlaneCapabilities2KHR &() VULKAN_HPP_NOEXCEPT
31770     {
31771       return *reinterpret_cast<VkDisplayPlaneCapabilities2KHR *>( this );
31772     }
31773 
31774 #if defined( VULKAN_HPP_USE_REFLECT )
31775 #  if 14 <= VULKAN_HPP_CPP_VERSION
31776     auto
31777 #  else
31778     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR const &>
31779 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR31780       reflect() const VULKAN_HPP_NOEXCEPT
31781     {
31782       return std::tie( sType, pNext, capabilities );
31783     }
31784 #endif
31785 
31786 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31787     auto operator<=>( DisplayPlaneCapabilities2KHR const & ) const = default;
31788 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR31789     bool operator==( DisplayPlaneCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31790     {
31791 #  if defined( VULKAN_HPP_USE_REFLECT )
31792       return this->reflect() == rhs.reflect();
31793 #  else
31794       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( capabilities == rhs.capabilities );
31795 #  endif
31796     }
31797 
operator !=VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR31798     bool operator!=( DisplayPlaneCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31799     {
31800       return !operator==( rhs );
31801     }
31802 #endif
31803 
31804   public:
31805     VULKAN_HPP_NAMESPACE::StructureType               sType        = StructureType::eDisplayPlaneCapabilities2KHR;
31806     void *                                            pNext        = {};
31807     VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR capabilities = {};
31808   };
31809 
31810   template <>
31811   struct CppType<StructureType, StructureType::eDisplayPlaneCapabilities2KHR>
31812   {
31813     using Type = DisplayPlaneCapabilities2KHR;
31814   };
31815 
31816   struct DisplayPlaneInfo2KHR
31817   {
31818     using NativeType = VkDisplayPlaneInfo2KHR;
31819 
31820     static const bool                                  allowDuplicate = false;
31821     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayPlaneInfo2KHR;
31822 
31823 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
31824     VULKAN_HPP_CONSTEXPR
DisplayPlaneInfo2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR31825       DisplayPlaneInfo2KHR( VULKAN_HPP_NAMESPACE::DisplayModeKHR mode_ = {}, uint32_t planeIndex_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
31826       : pNext{ pNext_ }
31827       , mode{ mode_ }
31828       , planeIndex{ planeIndex_ }
31829     {
31830     }
31831 
31832     VULKAN_HPP_CONSTEXPR DisplayPlaneInfo2KHR( DisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31833 
DisplayPlaneInfo2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR31834     DisplayPlaneInfo2KHR( VkDisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
31835       : DisplayPlaneInfo2KHR( *reinterpret_cast<DisplayPlaneInfo2KHR const *>( &rhs ) )
31836     {
31837     }
31838 
31839     DisplayPlaneInfo2KHR & operator=( DisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31840 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31841 
operator =VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR31842     DisplayPlaneInfo2KHR & operator=( VkDisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
31843     {
31844       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR const *>( &rhs );
31845       return *this;
31846     }
31847 
31848 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR31849     VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
31850     {
31851       pNext = pNext_;
31852       return *this;
31853     }
31854 
setModeVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR31855     VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR & setMode( VULKAN_HPP_NAMESPACE::DisplayModeKHR mode_ ) VULKAN_HPP_NOEXCEPT
31856     {
31857       mode = mode_;
31858       return *this;
31859     }
31860 
setPlaneIndexVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR31861     VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR & setPlaneIndex( uint32_t planeIndex_ ) VULKAN_HPP_NOEXCEPT
31862     {
31863       planeIndex = planeIndex_;
31864       return *this;
31865     }
31866 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31867 
operator VkDisplayPlaneInfo2KHR const&VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR31868     operator VkDisplayPlaneInfo2KHR const &() const VULKAN_HPP_NOEXCEPT
31869     {
31870       return *reinterpret_cast<const VkDisplayPlaneInfo2KHR *>( this );
31871     }
31872 
operator VkDisplayPlaneInfo2KHR&VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR31873     operator VkDisplayPlaneInfo2KHR &() VULKAN_HPP_NOEXCEPT
31874     {
31875       return *reinterpret_cast<VkDisplayPlaneInfo2KHR *>( this );
31876     }
31877 
31878 #if defined( VULKAN_HPP_USE_REFLECT )
31879 #  if 14 <= VULKAN_HPP_CPP_VERSION
31880     auto
31881 #  else
31882     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DisplayModeKHR const &, uint32_t const &>
31883 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR31884       reflect() const VULKAN_HPP_NOEXCEPT
31885     {
31886       return std::tie( sType, pNext, mode, planeIndex );
31887     }
31888 #endif
31889 
31890 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31891     auto operator<=>( DisplayPlaneInfo2KHR const & ) const = default;
31892 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR31893     bool operator==( DisplayPlaneInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31894     {
31895 #  if defined( VULKAN_HPP_USE_REFLECT )
31896       return this->reflect() == rhs.reflect();
31897 #  else
31898       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mode == rhs.mode ) && ( planeIndex == rhs.planeIndex );
31899 #  endif
31900     }
31901 
operator !=VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR31902     bool operator!=( DisplayPlaneInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31903     {
31904       return !operator==( rhs );
31905     }
31906 #endif
31907 
31908   public:
31909     VULKAN_HPP_NAMESPACE::StructureType  sType      = StructureType::eDisplayPlaneInfo2KHR;
31910     const void *                         pNext      = {};
31911     VULKAN_HPP_NAMESPACE::DisplayModeKHR mode       = {};
31912     uint32_t                             planeIndex = {};
31913   };
31914 
31915   template <>
31916   struct CppType<StructureType, StructureType::eDisplayPlaneInfo2KHR>
31917   {
31918     using Type = DisplayPlaneInfo2KHR;
31919   };
31920 
31921   struct DisplayPlanePropertiesKHR
31922   {
31923     using NativeType = VkDisplayPlanePropertiesKHR;
31924 
31925 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPlanePropertiesKHRVULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR31926     VULKAN_HPP_CONSTEXPR DisplayPlanePropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayKHR currentDisplay_    = {},
31927                                                     uint32_t                         currentStackIndex_ = {} ) VULKAN_HPP_NOEXCEPT
31928       : currentDisplay{ currentDisplay_ }
31929       , currentStackIndex{ currentStackIndex_ }
31930     {
31931     }
31932 
31933     VULKAN_HPP_CONSTEXPR DisplayPlanePropertiesKHR( DisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31934 
DisplayPlanePropertiesKHRVULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR31935     DisplayPlanePropertiesKHR( VkDisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
31936       : DisplayPlanePropertiesKHR( *reinterpret_cast<DisplayPlanePropertiesKHR const *>( &rhs ) )
31937     {
31938     }
31939 
31940     DisplayPlanePropertiesKHR & operator=( DisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31941 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31942 
operator =VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR31943     DisplayPlanePropertiesKHR & operator=( VkDisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
31944     {
31945       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR const *>( &rhs );
31946       return *this;
31947     }
31948 
operator VkDisplayPlanePropertiesKHR const&VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR31949     operator VkDisplayPlanePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
31950     {
31951       return *reinterpret_cast<const VkDisplayPlanePropertiesKHR *>( this );
31952     }
31953 
operator VkDisplayPlanePropertiesKHR&VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR31954     operator VkDisplayPlanePropertiesKHR &() VULKAN_HPP_NOEXCEPT
31955     {
31956       return *reinterpret_cast<VkDisplayPlanePropertiesKHR *>( this );
31957     }
31958 
31959 #if defined( VULKAN_HPP_USE_REFLECT )
31960 #  if 14 <= VULKAN_HPP_CPP_VERSION
31961     auto
31962 #  else
31963     std::tuple<VULKAN_HPP_NAMESPACE::DisplayKHR const &, uint32_t const &>
31964 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR31965       reflect() const VULKAN_HPP_NOEXCEPT
31966     {
31967       return std::tie( currentDisplay, currentStackIndex );
31968     }
31969 #endif
31970 
31971 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
31972     auto operator<=>( DisplayPlanePropertiesKHR const & ) const = default;
31973 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR31974     bool operator==( DisplayPlanePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31975     {
31976 #  if defined( VULKAN_HPP_USE_REFLECT )
31977       return this->reflect() == rhs.reflect();
31978 #  else
31979       return ( currentDisplay == rhs.currentDisplay ) && ( currentStackIndex == rhs.currentStackIndex );
31980 #  endif
31981     }
31982 
operator !=VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR31983     bool operator!=( DisplayPlanePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31984     {
31985       return !operator==( rhs );
31986     }
31987 #endif
31988 
31989   public:
31990     VULKAN_HPP_NAMESPACE::DisplayKHR currentDisplay    = {};
31991     uint32_t                         currentStackIndex = {};
31992   };
31993 
31994   struct DisplayPlaneProperties2KHR
31995   {
31996     using NativeType = VkDisplayPlaneProperties2KHR;
31997 
31998     static const bool                                  allowDuplicate = false;
31999     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayPlaneProperties2KHR;
32000 
32001 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPlaneProperties2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR32002     VULKAN_HPP_CONSTEXPR DisplayPlaneProperties2KHR( VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR displayPlaneProperties_ = {},
32003                                                      void *                                          pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
32004       : pNext{ pNext_ }
32005       , displayPlaneProperties{ displayPlaneProperties_ }
32006     {
32007     }
32008 
32009     VULKAN_HPP_CONSTEXPR DisplayPlaneProperties2KHR( DisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32010 
DisplayPlaneProperties2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR32011     DisplayPlaneProperties2KHR( VkDisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
32012       : DisplayPlaneProperties2KHR( *reinterpret_cast<DisplayPlaneProperties2KHR const *>( &rhs ) )
32013     {
32014     }
32015 
32016     DisplayPlaneProperties2KHR & operator=( DisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32017 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32018 
operator =VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR32019     DisplayPlaneProperties2KHR & operator=( VkDisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
32020     {
32021       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR const *>( &rhs );
32022       return *this;
32023     }
32024 
operator VkDisplayPlaneProperties2KHR const&VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR32025     operator VkDisplayPlaneProperties2KHR const &() const VULKAN_HPP_NOEXCEPT
32026     {
32027       return *reinterpret_cast<const VkDisplayPlaneProperties2KHR *>( this );
32028     }
32029 
operator VkDisplayPlaneProperties2KHR&VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR32030     operator VkDisplayPlaneProperties2KHR &() VULKAN_HPP_NOEXCEPT
32031     {
32032       return *reinterpret_cast<VkDisplayPlaneProperties2KHR *>( this );
32033     }
32034 
32035 #if defined( VULKAN_HPP_USE_REFLECT )
32036 #  if 14 <= VULKAN_HPP_CPP_VERSION
32037     auto
32038 #  else
32039     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR const &>
32040 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR32041       reflect() const VULKAN_HPP_NOEXCEPT
32042     {
32043       return std::tie( sType, pNext, displayPlaneProperties );
32044     }
32045 #endif
32046 
32047 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32048     auto operator<=>( DisplayPlaneProperties2KHR const & ) const = default;
32049 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR32050     bool operator==( DisplayPlaneProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32051     {
32052 #  if defined( VULKAN_HPP_USE_REFLECT )
32053       return this->reflect() == rhs.reflect();
32054 #  else
32055       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displayPlaneProperties == rhs.displayPlaneProperties );
32056 #  endif
32057     }
32058 
operator !=VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR32059     bool operator!=( DisplayPlaneProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32060     {
32061       return !operator==( rhs );
32062     }
32063 #endif
32064 
32065   public:
32066     VULKAN_HPP_NAMESPACE::StructureType             sType                  = StructureType::eDisplayPlaneProperties2KHR;
32067     void *                                          pNext                  = {};
32068     VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR displayPlaneProperties = {};
32069   };
32070 
32071   template <>
32072   struct CppType<StructureType, StructureType::eDisplayPlaneProperties2KHR>
32073   {
32074     using Type = DisplayPlaneProperties2KHR;
32075   };
32076 
32077   struct DisplayPowerInfoEXT
32078   {
32079     using NativeType = VkDisplayPowerInfoEXT;
32080 
32081     static const bool                                  allowDuplicate = false;
32082     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayPowerInfoEXT;
32083 
32084 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPowerInfoEXTVULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT32085     VULKAN_HPP_CONSTEXPR DisplayPowerInfoEXT( VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT powerState_ = VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT::eOff,
32086                                               const void *                               pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
32087       : pNext{ pNext_ }
32088       , powerState{ powerState_ }
32089     {
32090     }
32091 
32092     VULKAN_HPP_CONSTEXPR DisplayPowerInfoEXT( DisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32093 
DisplayPowerInfoEXTVULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT32094     DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : DisplayPowerInfoEXT( *reinterpret_cast<DisplayPowerInfoEXT const *>( &rhs ) )
32095     {
32096     }
32097 
32098     DisplayPowerInfoEXT & operator=( DisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32099 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32100 
operator =VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT32101     DisplayPowerInfoEXT & operator=( VkDisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
32102     {
32103       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT const *>( &rhs );
32104       return *this;
32105     }
32106 
32107 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT32108     VULKAN_HPP_CONSTEXPR_14 DisplayPowerInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
32109     {
32110       pNext = pNext_;
32111       return *this;
32112     }
32113 
setPowerStateVULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT32114     VULKAN_HPP_CONSTEXPR_14 DisplayPowerInfoEXT & setPowerState( VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT powerState_ ) VULKAN_HPP_NOEXCEPT
32115     {
32116       powerState = powerState_;
32117       return *this;
32118     }
32119 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
32120 
operator VkDisplayPowerInfoEXT const&VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT32121     operator VkDisplayPowerInfoEXT const &() const VULKAN_HPP_NOEXCEPT
32122     {
32123       return *reinterpret_cast<const VkDisplayPowerInfoEXT *>( this );
32124     }
32125 
operator VkDisplayPowerInfoEXT&VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT32126     operator VkDisplayPowerInfoEXT &() VULKAN_HPP_NOEXCEPT
32127     {
32128       return *reinterpret_cast<VkDisplayPowerInfoEXT *>( this );
32129     }
32130 
32131 #if defined( VULKAN_HPP_USE_REFLECT )
32132 #  if 14 <= VULKAN_HPP_CPP_VERSION
32133     auto
32134 #  else
32135     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT const &>
32136 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT32137       reflect() const VULKAN_HPP_NOEXCEPT
32138     {
32139       return std::tie( sType, pNext, powerState );
32140     }
32141 #endif
32142 
32143 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32144     auto operator<=>( DisplayPowerInfoEXT const & ) const = default;
32145 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT32146     bool operator==( DisplayPowerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
32147     {
32148 #  if defined( VULKAN_HPP_USE_REFLECT )
32149       return this->reflect() == rhs.reflect();
32150 #  else
32151       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( powerState == rhs.powerState );
32152 #  endif
32153     }
32154 
operator !=VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT32155     bool operator!=( DisplayPowerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
32156     {
32157       return !operator==( rhs );
32158     }
32159 #endif
32160 
32161   public:
32162     VULKAN_HPP_NAMESPACE::StructureType        sType      = StructureType::eDisplayPowerInfoEXT;
32163     const void *                               pNext      = {};
32164     VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT powerState = VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT::eOff;
32165   };
32166 
32167   template <>
32168   struct CppType<StructureType, StructureType::eDisplayPowerInfoEXT>
32169   {
32170     using Type = DisplayPowerInfoEXT;
32171   };
32172 
32173   struct DisplayPresentInfoKHR
32174   {
32175     using NativeType = VkDisplayPresentInfoKHR;
32176 
32177     static const bool                                  allowDuplicate = false;
32178     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayPresentInfoKHR;
32179 
32180 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPresentInfoKHRVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32181     VULKAN_HPP_CONSTEXPR DisplayPresentInfoKHR( VULKAN_HPP_NAMESPACE::Rect2D srcRect_    = {},
32182                                                 VULKAN_HPP_NAMESPACE::Rect2D dstRect_    = {},
32183                                                 VULKAN_HPP_NAMESPACE::Bool32 persistent_ = {},
32184                                                 const void *                 pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
32185       : pNext{ pNext_ }
32186       , srcRect{ srcRect_ }
32187       , dstRect{ dstRect_ }
32188       , persistent{ persistent_ }
32189     {
32190     }
32191 
32192     VULKAN_HPP_CONSTEXPR DisplayPresentInfoKHR( DisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32193 
DisplayPresentInfoKHRVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32194     DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
32195       : DisplayPresentInfoKHR( *reinterpret_cast<DisplayPresentInfoKHR const *>( &rhs ) )
32196     {
32197     }
32198 
32199     DisplayPresentInfoKHR & operator=( DisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32200 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32201 
operator =VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32202     DisplayPresentInfoKHR & operator=( VkDisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
32203     {
32204       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR const *>( &rhs );
32205       return *this;
32206     }
32207 
32208 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32209     VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
32210     {
32211       pNext = pNext_;
32212       return *this;
32213     }
32214 
setSrcRectVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32215     VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & setSrcRect( VULKAN_HPP_NAMESPACE::Rect2D const & srcRect_ ) VULKAN_HPP_NOEXCEPT
32216     {
32217       srcRect = srcRect_;
32218       return *this;
32219     }
32220 
setDstRectVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32221     VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & setDstRect( VULKAN_HPP_NAMESPACE::Rect2D const & dstRect_ ) VULKAN_HPP_NOEXCEPT
32222     {
32223       dstRect = dstRect_;
32224       return *this;
32225     }
32226 
setPersistentVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32227     VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & setPersistent( VULKAN_HPP_NAMESPACE::Bool32 persistent_ ) VULKAN_HPP_NOEXCEPT
32228     {
32229       persistent = persistent_;
32230       return *this;
32231     }
32232 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
32233 
operator VkDisplayPresentInfoKHR const&VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32234     operator VkDisplayPresentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
32235     {
32236       return *reinterpret_cast<const VkDisplayPresentInfoKHR *>( this );
32237     }
32238 
operator VkDisplayPresentInfoKHR&VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32239     operator VkDisplayPresentInfoKHR &() VULKAN_HPP_NOEXCEPT
32240     {
32241       return *reinterpret_cast<VkDisplayPresentInfoKHR *>( this );
32242     }
32243 
32244 #if defined( VULKAN_HPP_USE_REFLECT )
32245 #  if 14 <= VULKAN_HPP_CPP_VERSION
32246     auto
32247 #  else
32248     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
32249                const void * const &,
32250                VULKAN_HPP_NAMESPACE::Rect2D const &,
32251                VULKAN_HPP_NAMESPACE::Rect2D const &,
32252                VULKAN_HPP_NAMESPACE::Bool32 const &>
32253 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32254       reflect() const VULKAN_HPP_NOEXCEPT
32255     {
32256       return std::tie( sType, pNext, srcRect, dstRect, persistent );
32257     }
32258 #endif
32259 
32260 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32261     auto operator<=>( DisplayPresentInfoKHR const & ) const = default;
32262 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32263     bool operator==( DisplayPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32264     {
32265 #  if defined( VULKAN_HPP_USE_REFLECT )
32266       return this->reflect() == rhs.reflect();
32267 #  else
32268       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcRect == rhs.srcRect ) && ( dstRect == rhs.dstRect ) && ( persistent == rhs.persistent );
32269 #  endif
32270     }
32271 
operator !=VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR32272     bool operator!=( DisplayPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32273     {
32274       return !operator==( rhs );
32275     }
32276 #endif
32277 
32278   public:
32279     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eDisplayPresentInfoKHR;
32280     const void *                        pNext      = {};
32281     VULKAN_HPP_NAMESPACE::Rect2D        srcRect    = {};
32282     VULKAN_HPP_NAMESPACE::Rect2D        dstRect    = {};
32283     VULKAN_HPP_NAMESPACE::Bool32        persistent = {};
32284   };
32285 
32286   template <>
32287   struct CppType<StructureType, StructureType::eDisplayPresentInfoKHR>
32288   {
32289     using Type = DisplayPresentInfoKHR;
32290   };
32291 
32292   struct DisplayPropertiesKHR
32293   {
32294     using NativeType = VkDisplayPropertiesKHR;
32295 
32296 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPropertiesKHRVULKAN_HPP_NAMESPACE::DisplayPropertiesKHR32297     VULKAN_HPP_CONSTEXPR DisplayPropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayKHR               display_              = {},
32298                                                const char *                                   displayName_          = {},
32299                                                VULKAN_HPP_NAMESPACE::Extent2D                 physicalDimensions_   = {},
32300                                                VULKAN_HPP_NAMESPACE::Extent2D                 physicalResolution_   = {},
32301                                                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms_  = {},
32302                                                VULKAN_HPP_NAMESPACE::Bool32                   planeReorderPossible_ = {},
32303                                                VULKAN_HPP_NAMESPACE::Bool32                   persistentContent_    = {} ) VULKAN_HPP_NOEXCEPT
32304       : display{ display_ }
32305       , displayName{ displayName_ }
32306       , physicalDimensions{ physicalDimensions_ }
32307       , physicalResolution{ physicalResolution_ }
32308       , supportedTransforms{ supportedTransforms_ }
32309       , planeReorderPossible{ planeReorderPossible_ }
32310       , persistentContent{ persistentContent_ }
32311     {
32312     }
32313 
32314     VULKAN_HPP_CONSTEXPR DisplayPropertiesKHR( DisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32315 
DisplayPropertiesKHRVULKAN_HPP_NAMESPACE::DisplayPropertiesKHR32316     DisplayPropertiesKHR( VkDisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
32317       : DisplayPropertiesKHR( *reinterpret_cast<DisplayPropertiesKHR const *>( &rhs ) )
32318     {
32319     }
32320 
32321     DisplayPropertiesKHR & operator=( DisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32322 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32323 
operator =VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR32324     DisplayPropertiesKHR & operator=( VkDisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
32325     {
32326       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR const *>( &rhs );
32327       return *this;
32328     }
32329 
operator VkDisplayPropertiesKHR const&VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR32330     operator VkDisplayPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
32331     {
32332       return *reinterpret_cast<const VkDisplayPropertiesKHR *>( this );
32333     }
32334 
operator VkDisplayPropertiesKHR&VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR32335     operator VkDisplayPropertiesKHR &() VULKAN_HPP_NOEXCEPT
32336     {
32337       return *reinterpret_cast<VkDisplayPropertiesKHR *>( this );
32338     }
32339 
32340 #if defined( VULKAN_HPP_USE_REFLECT )
32341 #  if 14 <= VULKAN_HPP_CPP_VERSION
32342     auto
32343 #  else
32344     std::tuple<VULKAN_HPP_NAMESPACE::DisplayKHR const &,
32345                const char * const &,
32346                VULKAN_HPP_NAMESPACE::Extent2D const &,
32347                VULKAN_HPP_NAMESPACE::Extent2D const &,
32348                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR const &,
32349                VULKAN_HPP_NAMESPACE::Bool32 const &,
32350                VULKAN_HPP_NAMESPACE::Bool32 const &>
32351 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayPropertiesKHR32352       reflect() const VULKAN_HPP_NOEXCEPT
32353     {
32354       return std::tie( display, displayName, physicalDimensions, physicalResolution, supportedTransforms, planeReorderPossible, persistentContent );
32355     }
32356 #endif
32357 
32358 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR32359     std::strong_ordering operator<=>( DisplayPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32360     {
32361       if ( auto cmp = display <=> rhs.display; cmp != 0 )
32362         return cmp;
32363       if ( displayName != rhs.displayName )
32364         if ( auto cmp = strcmp( displayName, rhs.displayName ); cmp != 0 )
32365           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
32366       if ( auto cmp = physicalDimensions <=> rhs.physicalDimensions; cmp != 0 )
32367         return cmp;
32368       if ( auto cmp = physicalResolution <=> rhs.physicalResolution; cmp != 0 )
32369         return cmp;
32370       if ( auto cmp = supportedTransforms <=> rhs.supportedTransforms; cmp != 0 )
32371         return cmp;
32372       if ( auto cmp = planeReorderPossible <=> rhs.planeReorderPossible; cmp != 0 )
32373         return cmp;
32374       if ( auto cmp = persistentContent <=> rhs.persistentContent; cmp != 0 )
32375         return cmp;
32376 
32377       return std::strong_ordering::equivalent;
32378     }
32379 #endif
32380 
operator ==VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR32381     bool operator==( DisplayPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32382     {
32383       return ( display == rhs.display ) && ( ( displayName == rhs.displayName ) || ( strcmp( displayName, rhs.displayName ) == 0 ) ) &&
32384              ( physicalDimensions == rhs.physicalDimensions ) && ( physicalResolution == rhs.physicalResolution ) &&
32385              ( supportedTransforms == rhs.supportedTransforms ) && ( planeReorderPossible == rhs.planeReorderPossible ) &&
32386              ( persistentContent == rhs.persistentContent );
32387     }
32388 
operator !=VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR32389     bool operator!=( DisplayPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32390     {
32391       return !operator==( rhs );
32392     }
32393 
32394   public:
32395     VULKAN_HPP_NAMESPACE::DisplayKHR               display              = {};
32396     const char *                                   displayName          = {};
32397     VULKAN_HPP_NAMESPACE::Extent2D                 physicalDimensions   = {};
32398     VULKAN_HPP_NAMESPACE::Extent2D                 physicalResolution   = {};
32399     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms  = {};
32400     VULKAN_HPP_NAMESPACE::Bool32                   planeReorderPossible = {};
32401     VULKAN_HPP_NAMESPACE::Bool32                   persistentContent    = {};
32402   };
32403 
32404   struct DisplayProperties2KHR
32405   {
32406     using NativeType = VkDisplayProperties2KHR;
32407 
32408     static const bool                                  allowDuplicate = false;
32409     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplayProperties2KHR;
32410 
32411 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayProperties2KHRVULKAN_HPP_NAMESPACE::DisplayProperties2KHR32412     VULKAN_HPP_CONSTEXPR DisplayProperties2KHR( VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR displayProperties_ = {},
32413                                                 void *                                     pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
32414       : pNext{ pNext_ }
32415       , displayProperties{ displayProperties_ }
32416     {
32417     }
32418 
32419     VULKAN_HPP_CONSTEXPR DisplayProperties2KHR( DisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32420 
DisplayProperties2KHRVULKAN_HPP_NAMESPACE::DisplayProperties2KHR32421     DisplayProperties2KHR( VkDisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
32422       : DisplayProperties2KHR( *reinterpret_cast<DisplayProperties2KHR const *>( &rhs ) )
32423     {
32424     }
32425 
32426     DisplayProperties2KHR & operator=( DisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32427 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32428 
operator =VULKAN_HPP_NAMESPACE::DisplayProperties2KHR32429     DisplayProperties2KHR & operator=( VkDisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
32430     {
32431       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayProperties2KHR const *>( &rhs );
32432       return *this;
32433     }
32434 
operator VkDisplayProperties2KHR const&VULKAN_HPP_NAMESPACE::DisplayProperties2KHR32435     operator VkDisplayProperties2KHR const &() const VULKAN_HPP_NOEXCEPT
32436     {
32437       return *reinterpret_cast<const VkDisplayProperties2KHR *>( this );
32438     }
32439 
operator VkDisplayProperties2KHR&VULKAN_HPP_NAMESPACE::DisplayProperties2KHR32440     operator VkDisplayProperties2KHR &() VULKAN_HPP_NOEXCEPT
32441     {
32442       return *reinterpret_cast<VkDisplayProperties2KHR *>( this );
32443     }
32444 
32445 #if defined( VULKAN_HPP_USE_REFLECT )
32446 #  if 14 <= VULKAN_HPP_CPP_VERSION
32447     auto
32448 #  else
32449     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR const &>
32450 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplayProperties2KHR32451       reflect() const VULKAN_HPP_NOEXCEPT
32452     {
32453       return std::tie( sType, pNext, displayProperties );
32454     }
32455 #endif
32456 
32457 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32458     auto operator<=>( DisplayProperties2KHR const & ) const = default;
32459 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayProperties2KHR32460     bool operator==( DisplayProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32461     {
32462 #  if defined( VULKAN_HPP_USE_REFLECT )
32463       return this->reflect() == rhs.reflect();
32464 #  else
32465       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displayProperties == rhs.displayProperties );
32466 #  endif
32467     }
32468 
operator !=VULKAN_HPP_NAMESPACE::DisplayProperties2KHR32469     bool operator!=( DisplayProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32470     {
32471       return !operator==( rhs );
32472     }
32473 #endif
32474 
32475   public:
32476     VULKAN_HPP_NAMESPACE::StructureType        sType             = StructureType::eDisplayProperties2KHR;
32477     void *                                     pNext             = {};
32478     VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR displayProperties = {};
32479   };
32480 
32481   template <>
32482   struct CppType<StructureType, StructureType::eDisplayProperties2KHR>
32483   {
32484     using Type = DisplayProperties2KHR;
32485   };
32486 
32487   struct DisplaySurfaceCreateInfoKHR
32488   {
32489     using NativeType = VkDisplaySurfaceCreateInfoKHR;
32490 
32491     static const bool                                  allowDuplicate = false;
32492     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDisplaySurfaceCreateInfoKHR;
32493 
32494 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
32495     VULKAN_HPP_CONSTEXPR
DisplaySurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32496       DisplaySurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR flags_           = {},
32497                                    VULKAN_HPP_NAMESPACE::DisplayModeKHR               displayMode_     = {},
32498                                    uint32_t                                           planeIndex_      = {},
32499                                    uint32_t                                           planeStackIndex_ = {},
32500                                    VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR  transform_ = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
32501                                    float                                              globalAlpha_ = {},
32502                                    VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR alphaMode_ = VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR::eOpaque,
32503                                    VULKAN_HPP_NAMESPACE::Extent2D                     imageExtent_ = {},
32504                                    const void *                                       pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
32505       : pNext{ pNext_ }
32506       , flags{ flags_ }
32507       , displayMode{ displayMode_ }
32508       , planeIndex{ planeIndex_ }
32509       , planeStackIndex{ planeStackIndex_ }
32510       , transform{ transform_ }
32511       , globalAlpha{ globalAlpha_ }
32512       , alphaMode{ alphaMode_ }
32513       , imageExtent{ imageExtent_ }
32514     {
32515     }
32516 
32517     VULKAN_HPP_CONSTEXPR DisplaySurfaceCreateInfoKHR( DisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32518 
DisplaySurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32519     DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
32520       : DisplaySurfaceCreateInfoKHR( *reinterpret_cast<DisplaySurfaceCreateInfoKHR const *>( &rhs ) )
32521     {
32522     }
32523 
32524     DisplaySurfaceCreateInfoKHR & operator=( DisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32525 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32526 
operator =VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32527     DisplaySurfaceCreateInfoKHR & operator=( VkDisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
32528     {
32529       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR const *>( &rhs );
32530       return *this;
32531     }
32532 
32533 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32534     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
32535     {
32536       pNext = pNext_;
32537       return *this;
32538     }
32539 
setFlagsVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32540     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
32541     {
32542       flags = flags_;
32543       return *this;
32544     }
32545 
setDisplayModeVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32546     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setDisplayMode( VULKAN_HPP_NAMESPACE::DisplayModeKHR displayMode_ ) VULKAN_HPP_NOEXCEPT
32547     {
32548       displayMode = displayMode_;
32549       return *this;
32550     }
32551 
setPlaneIndexVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32552     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setPlaneIndex( uint32_t planeIndex_ ) VULKAN_HPP_NOEXCEPT
32553     {
32554       planeIndex = planeIndex_;
32555       return *this;
32556     }
32557 
setPlaneStackIndexVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32558     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setPlaneStackIndex( uint32_t planeStackIndex_ ) VULKAN_HPP_NOEXCEPT
32559     {
32560       planeStackIndex = planeStackIndex_;
32561       return *this;
32562     }
32563 
setTransformVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32564     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ ) VULKAN_HPP_NOEXCEPT
32565     {
32566       transform = transform_;
32567       return *this;
32568     }
32569 
setGlobalAlphaVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32570     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setGlobalAlpha( float globalAlpha_ ) VULKAN_HPP_NOEXCEPT
32571     {
32572       globalAlpha = globalAlpha_;
32573       return *this;
32574     }
32575 
setAlphaModeVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32576     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setAlphaMode( VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR alphaMode_ ) VULKAN_HPP_NOEXCEPT
32577     {
32578       alphaMode = alphaMode_;
32579       return *this;
32580     }
32581 
setImageExtentVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32582     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setImageExtent( VULKAN_HPP_NAMESPACE::Extent2D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
32583     {
32584       imageExtent = imageExtent_;
32585       return *this;
32586     }
32587 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
32588 
operator VkDisplaySurfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32589     operator VkDisplaySurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
32590     {
32591       return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR *>( this );
32592     }
32593 
operator VkDisplaySurfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32594     operator VkDisplaySurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
32595     {
32596       return *reinterpret_cast<VkDisplaySurfaceCreateInfoKHR *>( this );
32597     }
32598 
32599 #if defined( VULKAN_HPP_USE_REFLECT )
32600 #  if 14 <= VULKAN_HPP_CPP_VERSION
32601     auto
32602 #  else
32603     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
32604                const void * const &,
32605                VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR const &,
32606                VULKAN_HPP_NAMESPACE::DisplayModeKHR const &,
32607                uint32_t const &,
32608                uint32_t const &,
32609                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &,
32610                float const &,
32611                VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR const &,
32612                VULKAN_HPP_NAMESPACE::Extent2D const &>
32613 #  endif
reflectVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32614       reflect() const VULKAN_HPP_NOEXCEPT
32615     {
32616       return std::tie( sType, pNext, flags, displayMode, planeIndex, planeStackIndex, transform, globalAlpha, alphaMode, imageExtent );
32617     }
32618 #endif
32619 
32620 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32621     auto operator<=>( DisplaySurfaceCreateInfoKHR const & ) const = default;
32622 #else
operator ==VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32623     bool operator==( DisplaySurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32624     {
32625 #  if defined( VULKAN_HPP_USE_REFLECT )
32626       return this->reflect() == rhs.reflect();
32627 #  else
32628       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( displayMode == rhs.displayMode ) &&
32629              ( planeIndex == rhs.planeIndex ) && ( planeStackIndex == rhs.planeStackIndex ) && ( transform == rhs.transform ) &&
32630              ( globalAlpha == rhs.globalAlpha ) && ( alphaMode == rhs.alphaMode ) && ( imageExtent == rhs.imageExtent );
32631 #  endif
32632     }
32633 
operator !=VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR32634     bool operator!=( DisplaySurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
32635     {
32636       return !operator==( rhs );
32637     }
32638 #endif
32639 
32640   public:
32641     VULKAN_HPP_NAMESPACE::StructureType                sType           = StructureType::eDisplaySurfaceCreateInfoKHR;
32642     const void *                                       pNext           = {};
32643     VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR flags           = {};
32644     VULKAN_HPP_NAMESPACE::DisplayModeKHR               displayMode     = {};
32645     uint32_t                                           planeIndex      = {};
32646     uint32_t                                           planeStackIndex = {};
32647     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR  transform       = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
32648     float                                              globalAlpha     = {};
32649     VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR alphaMode       = VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR::eOpaque;
32650     VULKAN_HPP_NAMESPACE::Extent2D                     imageExtent     = {};
32651   };
32652 
32653   template <>
32654   struct CppType<StructureType, StructureType::eDisplaySurfaceCreateInfoKHR>
32655   {
32656     using Type = DisplaySurfaceCreateInfoKHR;
32657   };
32658 
32659   struct DrawIndexedIndirectCommand
32660   {
32661     using NativeType = VkDrawIndexedIndirectCommand;
32662 
32663 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrawIndexedIndirectCommandVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand32664     VULKAN_HPP_CONSTEXPR DrawIndexedIndirectCommand( uint32_t indexCount_    = {},
32665                                                      uint32_t instanceCount_ = {},
32666                                                      uint32_t firstIndex_    = {},
32667                                                      int32_t  vertexOffset_  = {},
32668                                                      uint32_t firstInstance_ = {} ) VULKAN_HPP_NOEXCEPT
32669       : indexCount{ indexCount_ }
32670       , instanceCount{ instanceCount_ }
32671       , firstIndex{ firstIndex_ }
32672       , vertexOffset{ vertexOffset_ }
32673       , firstInstance{ firstInstance_ }
32674     {
32675     }
32676 
32677     VULKAN_HPP_CONSTEXPR DrawIndexedIndirectCommand( DrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32678 
DrawIndexedIndirectCommandVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand32679     DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
32680       : DrawIndexedIndirectCommand( *reinterpret_cast<DrawIndexedIndirectCommand const *>( &rhs ) )
32681     {
32682     }
32683 
32684     DrawIndexedIndirectCommand & operator=( DrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32685 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32686 
operator =VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand32687     DrawIndexedIndirectCommand & operator=( VkDrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
32688     {
32689       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand const *>( &rhs );
32690       return *this;
32691     }
32692 
32693 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setIndexCountVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand32694     VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setIndexCount( uint32_t indexCount_ ) VULKAN_HPP_NOEXCEPT
32695     {
32696       indexCount = indexCount_;
32697       return *this;
32698     }
32699 
setInstanceCountVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand32700     VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setInstanceCount( uint32_t instanceCount_ ) VULKAN_HPP_NOEXCEPT
32701     {
32702       instanceCount = instanceCount_;
32703       return *this;
32704     }
32705 
setFirstIndexVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand32706     VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setFirstIndex( uint32_t firstIndex_ ) VULKAN_HPP_NOEXCEPT
32707     {
32708       firstIndex = firstIndex_;
32709       return *this;
32710     }
32711 
setVertexOffsetVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand32712     VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setVertexOffset( int32_t vertexOffset_ ) VULKAN_HPP_NOEXCEPT
32713     {
32714       vertexOffset = vertexOffset_;
32715       return *this;
32716     }
32717 
setFirstInstanceVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand32718     VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setFirstInstance( uint32_t firstInstance_ ) VULKAN_HPP_NOEXCEPT
32719     {
32720       firstInstance = firstInstance_;
32721       return *this;
32722     }
32723 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
32724 
operator VkDrawIndexedIndirectCommand const&VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand32725     operator VkDrawIndexedIndirectCommand const &() const VULKAN_HPP_NOEXCEPT
32726     {
32727       return *reinterpret_cast<const VkDrawIndexedIndirectCommand *>( this );
32728     }
32729 
operator VkDrawIndexedIndirectCommand&VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand32730     operator VkDrawIndexedIndirectCommand &() VULKAN_HPP_NOEXCEPT
32731     {
32732       return *reinterpret_cast<VkDrawIndexedIndirectCommand *>( this );
32733     }
32734 
32735 #if defined( VULKAN_HPP_USE_REFLECT )
32736 #  if 14 <= VULKAN_HPP_CPP_VERSION
32737     auto
32738 #  else
32739     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &, int32_t const &, uint32_t const &>
32740 #  endif
reflectVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand32741       reflect() const VULKAN_HPP_NOEXCEPT
32742     {
32743       return std::tie( indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
32744     }
32745 #endif
32746 
32747 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32748     auto operator<=>( DrawIndexedIndirectCommand const & ) const = default;
32749 #else
operator ==VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand32750     bool operator==( DrawIndexedIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
32751     {
32752 #  if defined( VULKAN_HPP_USE_REFLECT )
32753       return this->reflect() == rhs.reflect();
32754 #  else
32755       return ( indexCount == rhs.indexCount ) && ( instanceCount == rhs.instanceCount ) && ( firstIndex == rhs.firstIndex ) &&
32756              ( vertexOffset == rhs.vertexOffset ) && ( firstInstance == rhs.firstInstance );
32757 #  endif
32758     }
32759 
operator !=VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand32760     bool operator!=( DrawIndexedIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
32761     {
32762       return !operator==( rhs );
32763     }
32764 #endif
32765 
32766   public:
32767     uint32_t indexCount    = {};
32768     uint32_t instanceCount = {};
32769     uint32_t firstIndex    = {};
32770     int32_t  vertexOffset  = {};
32771     uint32_t firstInstance = {};
32772   };
32773 
32774   struct DrawIndirectCommand
32775   {
32776     using NativeType = VkDrawIndirectCommand;
32777 
32778 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrawIndirectCommandVULKAN_HPP_NAMESPACE::DrawIndirectCommand32779     VULKAN_HPP_CONSTEXPR DrawIndirectCommand( uint32_t vertexCount_   = {},
32780                                               uint32_t instanceCount_ = {},
32781                                               uint32_t firstVertex_   = {},
32782                                               uint32_t firstInstance_ = {} ) VULKAN_HPP_NOEXCEPT
32783       : vertexCount{ vertexCount_ }
32784       , instanceCount{ instanceCount_ }
32785       , firstVertex{ firstVertex_ }
32786       , firstInstance{ firstInstance_ }
32787     {
32788     }
32789 
32790     VULKAN_HPP_CONSTEXPR DrawIndirectCommand( DrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32791 
DrawIndirectCommandVULKAN_HPP_NAMESPACE::DrawIndirectCommand32792     DrawIndirectCommand( VkDrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT : DrawIndirectCommand( *reinterpret_cast<DrawIndirectCommand const *>( &rhs ) )
32793     {
32794     }
32795 
32796     DrawIndirectCommand & operator=( DrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32797 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32798 
operator =VULKAN_HPP_NAMESPACE::DrawIndirectCommand32799     DrawIndirectCommand & operator=( VkDrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
32800     {
32801       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrawIndirectCommand const *>( &rhs );
32802       return *this;
32803     }
32804 
32805 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setVertexCountVULKAN_HPP_NAMESPACE::DrawIndirectCommand32806     VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setVertexCount( uint32_t vertexCount_ ) VULKAN_HPP_NOEXCEPT
32807     {
32808       vertexCount = vertexCount_;
32809       return *this;
32810     }
32811 
setInstanceCountVULKAN_HPP_NAMESPACE::DrawIndirectCommand32812     VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setInstanceCount( uint32_t instanceCount_ ) VULKAN_HPP_NOEXCEPT
32813     {
32814       instanceCount = instanceCount_;
32815       return *this;
32816     }
32817 
setFirstVertexVULKAN_HPP_NAMESPACE::DrawIndirectCommand32818     VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setFirstVertex( uint32_t firstVertex_ ) VULKAN_HPP_NOEXCEPT
32819     {
32820       firstVertex = firstVertex_;
32821       return *this;
32822     }
32823 
setFirstInstanceVULKAN_HPP_NAMESPACE::DrawIndirectCommand32824     VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setFirstInstance( uint32_t firstInstance_ ) VULKAN_HPP_NOEXCEPT
32825     {
32826       firstInstance = firstInstance_;
32827       return *this;
32828     }
32829 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
32830 
operator VkDrawIndirectCommand const&VULKAN_HPP_NAMESPACE::DrawIndirectCommand32831     operator VkDrawIndirectCommand const &() const VULKAN_HPP_NOEXCEPT
32832     {
32833       return *reinterpret_cast<const VkDrawIndirectCommand *>( this );
32834     }
32835 
operator VkDrawIndirectCommand&VULKAN_HPP_NAMESPACE::DrawIndirectCommand32836     operator VkDrawIndirectCommand &() VULKAN_HPP_NOEXCEPT
32837     {
32838       return *reinterpret_cast<VkDrawIndirectCommand *>( this );
32839     }
32840 
32841 #if defined( VULKAN_HPP_USE_REFLECT )
32842 #  if 14 <= VULKAN_HPP_CPP_VERSION
32843     auto
32844 #  else
32845     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &>
32846 #  endif
reflectVULKAN_HPP_NAMESPACE::DrawIndirectCommand32847       reflect() const VULKAN_HPP_NOEXCEPT
32848     {
32849       return std::tie( vertexCount, instanceCount, firstVertex, firstInstance );
32850     }
32851 #endif
32852 
32853 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32854     auto operator<=>( DrawIndirectCommand const & ) const = default;
32855 #else
operator ==VULKAN_HPP_NAMESPACE::DrawIndirectCommand32856     bool operator==( DrawIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
32857     {
32858 #  if defined( VULKAN_HPP_USE_REFLECT )
32859       return this->reflect() == rhs.reflect();
32860 #  else
32861       return ( vertexCount == rhs.vertexCount ) && ( instanceCount == rhs.instanceCount ) && ( firstVertex == rhs.firstVertex ) &&
32862              ( firstInstance == rhs.firstInstance );
32863 #  endif
32864     }
32865 
operator !=VULKAN_HPP_NAMESPACE::DrawIndirectCommand32866     bool operator!=( DrawIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
32867     {
32868       return !operator==( rhs );
32869     }
32870 #endif
32871 
32872   public:
32873     uint32_t vertexCount   = {};
32874     uint32_t instanceCount = {};
32875     uint32_t firstVertex   = {};
32876     uint32_t firstInstance = {};
32877   };
32878 
32879   struct DrawMeshTasksIndirectCommandEXT
32880   {
32881     using NativeType = VkDrawMeshTasksIndirectCommandEXT;
32882 
32883 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
32884     VULKAN_HPP_CONSTEXPR
DrawMeshTasksIndirectCommandEXTVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT32885       DrawMeshTasksIndirectCommandEXT( uint32_t groupCountX_ = {}, uint32_t groupCountY_ = {}, uint32_t groupCountZ_ = {} ) VULKAN_HPP_NOEXCEPT
32886       : groupCountX{ groupCountX_ }
32887       , groupCountY{ groupCountY_ }
32888       , groupCountZ{ groupCountZ_ }
32889     {
32890     }
32891 
32892     VULKAN_HPP_CONSTEXPR DrawMeshTasksIndirectCommandEXT( DrawMeshTasksIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32893 
DrawMeshTasksIndirectCommandEXTVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT32894     DrawMeshTasksIndirectCommandEXT( VkDrawMeshTasksIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT
32895       : DrawMeshTasksIndirectCommandEXT( *reinterpret_cast<DrawMeshTasksIndirectCommandEXT const *>( &rhs ) )
32896     {
32897     }
32898 
32899     DrawMeshTasksIndirectCommandEXT & operator=( DrawMeshTasksIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32900 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32901 
operator =VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT32902     DrawMeshTasksIndirectCommandEXT & operator=( VkDrawMeshTasksIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT
32903     {
32904       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT const *>( &rhs );
32905       return *this;
32906     }
32907 
32908 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setGroupCountXVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT32909     VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandEXT & setGroupCountX( uint32_t groupCountX_ ) VULKAN_HPP_NOEXCEPT
32910     {
32911       groupCountX = groupCountX_;
32912       return *this;
32913     }
32914 
setGroupCountYVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT32915     VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandEXT & setGroupCountY( uint32_t groupCountY_ ) VULKAN_HPP_NOEXCEPT
32916     {
32917       groupCountY = groupCountY_;
32918       return *this;
32919     }
32920 
setGroupCountZVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT32921     VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandEXT & setGroupCountZ( uint32_t groupCountZ_ ) VULKAN_HPP_NOEXCEPT
32922     {
32923       groupCountZ = groupCountZ_;
32924       return *this;
32925     }
32926 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
32927 
operator VkDrawMeshTasksIndirectCommandEXT const&VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT32928     operator VkDrawMeshTasksIndirectCommandEXT const &() const VULKAN_HPP_NOEXCEPT
32929     {
32930       return *reinterpret_cast<const VkDrawMeshTasksIndirectCommandEXT *>( this );
32931     }
32932 
operator VkDrawMeshTasksIndirectCommandEXT&VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT32933     operator VkDrawMeshTasksIndirectCommandEXT &() VULKAN_HPP_NOEXCEPT
32934     {
32935       return *reinterpret_cast<VkDrawMeshTasksIndirectCommandEXT *>( this );
32936     }
32937 
32938 #if defined( VULKAN_HPP_USE_REFLECT )
32939 #  if 14 <= VULKAN_HPP_CPP_VERSION
32940     auto
32941 #  else
32942     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
32943 #  endif
reflectVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT32944       reflect() const VULKAN_HPP_NOEXCEPT
32945     {
32946       return std::tie( groupCountX, groupCountY, groupCountZ );
32947     }
32948 #endif
32949 
32950 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
32951     auto operator<=>( DrawMeshTasksIndirectCommandEXT const & ) const = default;
32952 #else
operator ==VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT32953     bool operator==( DrawMeshTasksIndirectCommandEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
32954     {
32955 #  if defined( VULKAN_HPP_USE_REFLECT )
32956       return this->reflect() == rhs.reflect();
32957 #  else
32958       return ( groupCountX == rhs.groupCountX ) && ( groupCountY == rhs.groupCountY ) && ( groupCountZ == rhs.groupCountZ );
32959 #  endif
32960     }
32961 
operator !=VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT32962     bool operator!=( DrawMeshTasksIndirectCommandEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
32963     {
32964       return !operator==( rhs );
32965     }
32966 #endif
32967 
32968   public:
32969     uint32_t groupCountX = {};
32970     uint32_t groupCountY = {};
32971     uint32_t groupCountZ = {};
32972   };
32973 
32974   struct DrawMeshTasksIndirectCommandNV
32975   {
32976     using NativeType = VkDrawMeshTasksIndirectCommandNV;
32977 
32978 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrawMeshTasksIndirectCommandNVVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV32979     VULKAN_HPP_CONSTEXPR DrawMeshTasksIndirectCommandNV( uint32_t taskCount_ = {}, uint32_t firstTask_ = {} ) VULKAN_HPP_NOEXCEPT
32980       : taskCount{ taskCount_ }
32981       , firstTask{ firstTask_ }
32982     {
32983     }
32984 
32985     VULKAN_HPP_CONSTEXPR DrawMeshTasksIndirectCommandNV( DrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32986 
DrawMeshTasksIndirectCommandNVVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV32987     DrawMeshTasksIndirectCommandNV( VkDrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
32988       : DrawMeshTasksIndirectCommandNV( *reinterpret_cast<DrawMeshTasksIndirectCommandNV const *>( &rhs ) )
32989     {
32990     }
32991 
32992     DrawMeshTasksIndirectCommandNV & operator=( DrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32993 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32994 
operator =VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV32995     DrawMeshTasksIndirectCommandNV & operator=( VkDrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
32996     {
32997       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV const *>( &rhs );
32998       return *this;
32999     }
33000 
33001 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setTaskCountVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV33002     VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandNV & setTaskCount( uint32_t taskCount_ ) VULKAN_HPP_NOEXCEPT
33003     {
33004       taskCount = taskCount_;
33005       return *this;
33006     }
33007 
setFirstTaskVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV33008     VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandNV & setFirstTask( uint32_t firstTask_ ) VULKAN_HPP_NOEXCEPT
33009     {
33010       firstTask = firstTask_;
33011       return *this;
33012     }
33013 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
33014 
operator VkDrawMeshTasksIndirectCommandNV const&VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV33015     operator VkDrawMeshTasksIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT
33016     {
33017       return *reinterpret_cast<const VkDrawMeshTasksIndirectCommandNV *>( this );
33018     }
33019 
operator VkDrawMeshTasksIndirectCommandNV&VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV33020     operator VkDrawMeshTasksIndirectCommandNV &() VULKAN_HPP_NOEXCEPT
33021     {
33022       return *reinterpret_cast<VkDrawMeshTasksIndirectCommandNV *>( this );
33023     }
33024 
33025 #if defined( VULKAN_HPP_USE_REFLECT )
33026 #  if 14 <= VULKAN_HPP_CPP_VERSION
33027     auto
33028 #  else
33029     std::tuple<uint32_t const &, uint32_t const &>
33030 #  endif
reflectVULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV33031       reflect() const VULKAN_HPP_NOEXCEPT
33032     {
33033       return std::tie( taskCount, firstTask );
33034     }
33035 #endif
33036 
33037 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33038     auto operator<=>( DrawMeshTasksIndirectCommandNV const & ) const = default;
33039 #else
operator ==VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV33040     bool operator==( DrawMeshTasksIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
33041     {
33042 #  if defined( VULKAN_HPP_USE_REFLECT )
33043       return this->reflect() == rhs.reflect();
33044 #  else
33045       return ( taskCount == rhs.taskCount ) && ( firstTask == rhs.firstTask );
33046 #  endif
33047     }
33048 
operator !=VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV33049     bool operator!=( DrawMeshTasksIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
33050     {
33051       return !operator==( rhs );
33052     }
33053 #endif
33054 
33055   public:
33056     uint32_t taskCount = {};
33057     uint32_t firstTask = {};
33058   };
33059 
33060   struct DrmFormatModifierProperties2EXT
33061   {
33062     using NativeType = VkDrmFormatModifierProperties2EXT;
33063 
33064 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrmFormatModifierProperties2EXTVULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT33065     VULKAN_HPP_CONSTEXPR DrmFormatModifierProperties2EXT( uint64_t                                  drmFormatModifier_               = {},
33066                                                           uint32_t                                  drmFormatModifierPlaneCount_     = {},
33067                                                           VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 drmFormatModifierTilingFeatures_ = {} ) VULKAN_HPP_NOEXCEPT
33068       : drmFormatModifier{ drmFormatModifier_ }
33069       , drmFormatModifierPlaneCount{ drmFormatModifierPlaneCount_ }
33070       , drmFormatModifierTilingFeatures{ drmFormatModifierTilingFeatures_ }
33071     {
33072     }
33073 
33074     VULKAN_HPP_CONSTEXPR DrmFormatModifierProperties2EXT( DrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33075 
DrmFormatModifierProperties2EXTVULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT33076     DrmFormatModifierProperties2EXT( VkDrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
33077       : DrmFormatModifierProperties2EXT( *reinterpret_cast<DrmFormatModifierProperties2EXT const *>( &rhs ) )
33078     {
33079     }
33080 
33081     DrmFormatModifierProperties2EXT & operator=( DrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33082 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33083 
operator =VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT33084     DrmFormatModifierProperties2EXT & operator=( VkDrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
33085     {
33086       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT const *>( &rhs );
33087       return *this;
33088     }
33089 
operator VkDrmFormatModifierProperties2EXT const&VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT33090     operator VkDrmFormatModifierProperties2EXT const &() const VULKAN_HPP_NOEXCEPT
33091     {
33092       return *reinterpret_cast<const VkDrmFormatModifierProperties2EXT *>( this );
33093     }
33094 
operator VkDrmFormatModifierProperties2EXT&VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT33095     operator VkDrmFormatModifierProperties2EXT &() VULKAN_HPP_NOEXCEPT
33096     {
33097       return *reinterpret_cast<VkDrmFormatModifierProperties2EXT *>( this );
33098     }
33099 
33100 #if defined( VULKAN_HPP_USE_REFLECT )
33101 #  if 14 <= VULKAN_HPP_CPP_VERSION
33102     auto
33103 #  else
33104     std::tuple<uint64_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 const &>
33105 #  endif
reflectVULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT33106       reflect() const VULKAN_HPP_NOEXCEPT
33107     {
33108       return std::tie( drmFormatModifier, drmFormatModifierPlaneCount, drmFormatModifierTilingFeatures );
33109     }
33110 #endif
33111 
33112 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33113     auto operator<=>( DrmFormatModifierProperties2EXT const & ) const = default;
33114 #else
operator ==VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT33115     bool operator==( DrmFormatModifierProperties2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33116     {
33117 #  if defined( VULKAN_HPP_USE_REFLECT )
33118       return this->reflect() == rhs.reflect();
33119 #  else
33120       return ( drmFormatModifier == rhs.drmFormatModifier ) && ( drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount ) &&
33121              ( drmFormatModifierTilingFeatures == rhs.drmFormatModifierTilingFeatures );
33122 #  endif
33123     }
33124 
operator !=VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT33125     bool operator!=( DrmFormatModifierProperties2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33126     {
33127       return !operator==( rhs );
33128     }
33129 #endif
33130 
33131   public:
33132     uint64_t                                  drmFormatModifier               = {};
33133     uint32_t                                  drmFormatModifierPlaneCount     = {};
33134     VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 drmFormatModifierTilingFeatures = {};
33135   };
33136 
33137   struct DrmFormatModifierPropertiesEXT
33138   {
33139     using NativeType = VkDrmFormatModifierPropertiesEXT;
33140 
33141 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrmFormatModifierPropertiesEXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT33142     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesEXT( uint64_t                                 drmFormatModifier_               = {},
33143                                                          uint32_t                                 drmFormatModifierPlaneCount_     = {},
33144                                                          VULKAN_HPP_NAMESPACE::FormatFeatureFlags drmFormatModifierTilingFeatures_ = {} ) VULKAN_HPP_NOEXCEPT
33145       : drmFormatModifier{ drmFormatModifier_ }
33146       , drmFormatModifierPlaneCount{ drmFormatModifierPlaneCount_ }
33147       , drmFormatModifierTilingFeatures{ drmFormatModifierTilingFeatures_ }
33148     {
33149     }
33150 
33151     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesEXT( DrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33152 
DrmFormatModifierPropertiesEXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT33153     DrmFormatModifierPropertiesEXT( VkDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
33154       : DrmFormatModifierPropertiesEXT( *reinterpret_cast<DrmFormatModifierPropertiesEXT const *>( &rhs ) )
33155     {
33156     }
33157 
33158     DrmFormatModifierPropertiesEXT & operator=( DrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33159 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33160 
operator =VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT33161     DrmFormatModifierPropertiesEXT & operator=( VkDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
33162     {
33163       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT const *>( &rhs );
33164       return *this;
33165     }
33166 
operator VkDrmFormatModifierPropertiesEXT const&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT33167     operator VkDrmFormatModifierPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
33168     {
33169       return *reinterpret_cast<const VkDrmFormatModifierPropertiesEXT *>( this );
33170     }
33171 
operator VkDrmFormatModifierPropertiesEXT&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT33172     operator VkDrmFormatModifierPropertiesEXT &() VULKAN_HPP_NOEXCEPT
33173     {
33174       return *reinterpret_cast<VkDrmFormatModifierPropertiesEXT *>( this );
33175     }
33176 
33177 #if defined( VULKAN_HPP_USE_REFLECT )
33178 #  if 14 <= VULKAN_HPP_CPP_VERSION
33179     auto
33180 #  else
33181     std::tuple<uint64_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &>
33182 #  endif
reflectVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT33183       reflect() const VULKAN_HPP_NOEXCEPT
33184     {
33185       return std::tie( drmFormatModifier, drmFormatModifierPlaneCount, drmFormatModifierTilingFeatures );
33186     }
33187 #endif
33188 
33189 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33190     auto operator<=>( DrmFormatModifierPropertiesEXT const & ) const = default;
33191 #else
operator ==VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT33192     bool operator==( DrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33193     {
33194 #  if defined( VULKAN_HPP_USE_REFLECT )
33195       return this->reflect() == rhs.reflect();
33196 #  else
33197       return ( drmFormatModifier == rhs.drmFormatModifier ) && ( drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount ) &&
33198              ( drmFormatModifierTilingFeatures == rhs.drmFormatModifierTilingFeatures );
33199 #  endif
33200     }
33201 
operator !=VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT33202     bool operator!=( DrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33203     {
33204       return !operator==( rhs );
33205     }
33206 #endif
33207 
33208   public:
33209     uint64_t                                 drmFormatModifier               = {};
33210     uint32_t                                 drmFormatModifierPlaneCount     = {};
33211     VULKAN_HPP_NAMESPACE::FormatFeatureFlags drmFormatModifierTilingFeatures = {};
33212   };
33213 
33214   struct DrmFormatModifierPropertiesList2EXT
33215   {
33216     using NativeType = VkDrmFormatModifierPropertiesList2EXT;
33217 
33218     static const bool                                  allowDuplicate = false;
33219     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDrmFormatModifierPropertiesList2EXT;
33220 
33221 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrmFormatModifierPropertiesList2EXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT33222     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesList2EXT( uint32_t                                                drmFormatModifierCount_       = {},
33223                                                               VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT * pDrmFormatModifierProperties_ = {},
33224                                                               void *                                                  pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
33225       : pNext{ pNext_ }
33226       , drmFormatModifierCount{ drmFormatModifierCount_ }
33227       , pDrmFormatModifierProperties{ pDrmFormatModifierProperties_ }
33228     {
33229     }
33230 
33231     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesList2EXT( DrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33232 
DrmFormatModifierPropertiesList2EXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT33233     DrmFormatModifierPropertiesList2EXT( VkDrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
33234       : DrmFormatModifierPropertiesList2EXT( *reinterpret_cast<DrmFormatModifierPropertiesList2EXT const *>( &rhs ) )
33235     {
33236     }
33237 
33238 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DrmFormatModifierPropertiesList2EXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT33239     DrmFormatModifierPropertiesList2EXT(
33240       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT> const & drmFormatModifierProperties_,
33241       void *                                                                                                       pNext_ = nullptr )
33242       : pNext( pNext_ )
33243       , drmFormatModifierCount( static_cast<uint32_t>( drmFormatModifierProperties_.size() ) )
33244       , pDrmFormatModifierProperties( drmFormatModifierProperties_.data() )
33245     {
33246     }
33247 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33248 
33249     DrmFormatModifierPropertiesList2EXT & operator=( DrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33250 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33251 
operator =VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT33252     DrmFormatModifierPropertiesList2EXT & operator=( VkDrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
33253     {
33254       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT const *>( &rhs );
33255       return *this;
33256     }
33257 
operator VkDrmFormatModifierPropertiesList2EXT const&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT33258     operator VkDrmFormatModifierPropertiesList2EXT const &() const VULKAN_HPP_NOEXCEPT
33259     {
33260       return *reinterpret_cast<const VkDrmFormatModifierPropertiesList2EXT *>( this );
33261     }
33262 
operator VkDrmFormatModifierPropertiesList2EXT&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT33263     operator VkDrmFormatModifierPropertiesList2EXT &() VULKAN_HPP_NOEXCEPT
33264     {
33265       return *reinterpret_cast<VkDrmFormatModifierPropertiesList2EXT *>( this );
33266     }
33267 
33268 #if defined( VULKAN_HPP_USE_REFLECT )
33269 #  if 14 <= VULKAN_HPP_CPP_VERSION
33270     auto
33271 #  else
33272     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT * const &>
33273 #  endif
reflectVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT33274       reflect() const VULKAN_HPP_NOEXCEPT
33275     {
33276       return std::tie( sType, pNext, drmFormatModifierCount, pDrmFormatModifierProperties );
33277     }
33278 #endif
33279 
33280 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33281     auto operator<=>( DrmFormatModifierPropertiesList2EXT const & ) const = default;
33282 #else
operator ==VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT33283     bool operator==( DrmFormatModifierPropertiesList2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33284     {
33285 #  if defined( VULKAN_HPP_USE_REFLECT )
33286       return this->reflect() == rhs.reflect();
33287 #  else
33288       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( drmFormatModifierCount == rhs.drmFormatModifierCount ) &&
33289              ( pDrmFormatModifierProperties == rhs.pDrmFormatModifierProperties );
33290 #  endif
33291     }
33292 
operator !=VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT33293     bool operator!=( DrmFormatModifierPropertiesList2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33294     {
33295       return !operator==( rhs );
33296     }
33297 #endif
33298 
33299   public:
33300     VULKAN_HPP_NAMESPACE::StructureType                     sType                        = StructureType::eDrmFormatModifierPropertiesList2EXT;
33301     void *                                                  pNext                        = {};
33302     uint32_t                                                drmFormatModifierCount       = {};
33303     VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT * pDrmFormatModifierProperties = {};
33304   };
33305 
33306   template <>
33307   struct CppType<StructureType, StructureType::eDrmFormatModifierPropertiesList2EXT>
33308   {
33309     using Type = DrmFormatModifierPropertiesList2EXT;
33310   };
33311 
33312   struct DrmFormatModifierPropertiesListEXT
33313   {
33314     using NativeType = VkDrmFormatModifierPropertiesListEXT;
33315 
33316     static const bool                                  allowDuplicate = false;
33317     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eDrmFormatModifierPropertiesListEXT;
33318 
33319 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrmFormatModifierPropertiesListEXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT33320     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesListEXT( uint32_t                                               drmFormatModifierCount_       = {},
33321                                                              VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT * pDrmFormatModifierProperties_ = {},
33322                                                              void *                                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
33323       : pNext{ pNext_ }
33324       , drmFormatModifierCount{ drmFormatModifierCount_ }
33325       , pDrmFormatModifierProperties{ pDrmFormatModifierProperties_ }
33326     {
33327     }
33328 
33329     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesListEXT( DrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33330 
DrmFormatModifierPropertiesListEXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT33331     DrmFormatModifierPropertiesListEXT( VkDrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT
33332       : DrmFormatModifierPropertiesListEXT( *reinterpret_cast<DrmFormatModifierPropertiesListEXT const *>( &rhs ) )
33333     {
33334     }
33335 
33336 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DrmFormatModifierPropertiesListEXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT33337     DrmFormatModifierPropertiesListEXT(
33338       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT> const & drmFormatModifierProperties_,
33339       void *                                                                                                      pNext_ = nullptr )
33340       : pNext( pNext_ )
33341       , drmFormatModifierCount( static_cast<uint32_t>( drmFormatModifierProperties_.size() ) )
33342       , pDrmFormatModifierProperties( drmFormatModifierProperties_.data() )
33343     {
33344     }
33345 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33346 
33347     DrmFormatModifierPropertiesListEXT & operator=( DrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33348 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33349 
operator =VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT33350     DrmFormatModifierPropertiesListEXT & operator=( VkDrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT
33351     {
33352       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT const *>( &rhs );
33353       return *this;
33354     }
33355 
operator VkDrmFormatModifierPropertiesListEXT const&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT33356     operator VkDrmFormatModifierPropertiesListEXT const &() const VULKAN_HPP_NOEXCEPT
33357     {
33358       return *reinterpret_cast<const VkDrmFormatModifierPropertiesListEXT *>( this );
33359     }
33360 
operator VkDrmFormatModifierPropertiesListEXT&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT33361     operator VkDrmFormatModifierPropertiesListEXT &() VULKAN_HPP_NOEXCEPT
33362     {
33363       return *reinterpret_cast<VkDrmFormatModifierPropertiesListEXT *>( this );
33364     }
33365 
33366 #if defined( VULKAN_HPP_USE_REFLECT )
33367 #  if 14 <= VULKAN_HPP_CPP_VERSION
33368     auto
33369 #  else
33370     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT * const &>
33371 #  endif
reflectVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT33372       reflect() const VULKAN_HPP_NOEXCEPT
33373     {
33374       return std::tie( sType, pNext, drmFormatModifierCount, pDrmFormatModifierProperties );
33375     }
33376 #endif
33377 
33378 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33379     auto operator<=>( DrmFormatModifierPropertiesListEXT const & ) const = default;
33380 #else
operator ==VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT33381     bool operator==( DrmFormatModifierPropertiesListEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33382     {
33383 #  if defined( VULKAN_HPP_USE_REFLECT )
33384       return this->reflect() == rhs.reflect();
33385 #  else
33386       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( drmFormatModifierCount == rhs.drmFormatModifierCount ) &&
33387              ( pDrmFormatModifierProperties == rhs.pDrmFormatModifierProperties );
33388 #  endif
33389     }
33390 
operator !=VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT33391     bool operator!=( DrmFormatModifierPropertiesListEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33392     {
33393       return !operator==( rhs );
33394     }
33395 #endif
33396 
33397   public:
33398     VULKAN_HPP_NAMESPACE::StructureType                    sType                        = StructureType::eDrmFormatModifierPropertiesListEXT;
33399     void *                                                 pNext                        = {};
33400     uint32_t                                               drmFormatModifierCount       = {};
33401     VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT * pDrmFormatModifierProperties = {};
33402   };
33403 
33404   template <>
33405   struct CppType<StructureType, StructureType::eDrmFormatModifierPropertiesListEXT>
33406   {
33407     using Type = DrmFormatModifierPropertiesListEXT;
33408   };
33409 
33410   struct EventCreateInfo
33411   {
33412     using NativeType = VkEventCreateInfo;
33413 
33414     static const bool                                  allowDuplicate = false;
33415     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eEventCreateInfo;
33416 
33417 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
EventCreateInfoVULKAN_HPP_NAMESPACE::EventCreateInfo33418     VULKAN_HPP_CONSTEXPR EventCreateInfo( VULKAN_HPP_NAMESPACE::EventCreateFlags flags_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
33419       : pNext{ pNext_ }
33420       , flags{ flags_ }
33421     {
33422     }
33423 
33424     VULKAN_HPP_CONSTEXPR EventCreateInfo( EventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33425 
EventCreateInfoVULKAN_HPP_NAMESPACE::EventCreateInfo33426     EventCreateInfo( VkEventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : EventCreateInfo( *reinterpret_cast<EventCreateInfo const *>( &rhs ) ) {}
33427 
33428     EventCreateInfo & operator=( EventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33429 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33430 
operator =VULKAN_HPP_NAMESPACE::EventCreateInfo33431     EventCreateInfo & operator=( VkEventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
33432     {
33433       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::EventCreateInfo const *>( &rhs );
33434       return *this;
33435     }
33436 
33437 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::EventCreateInfo33438     VULKAN_HPP_CONSTEXPR_14 EventCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
33439     {
33440       pNext = pNext_;
33441       return *this;
33442     }
33443 
setFlagsVULKAN_HPP_NAMESPACE::EventCreateInfo33444     VULKAN_HPP_CONSTEXPR_14 EventCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::EventCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
33445     {
33446       flags = flags_;
33447       return *this;
33448     }
33449 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
33450 
operator VkEventCreateInfo const&VULKAN_HPP_NAMESPACE::EventCreateInfo33451     operator VkEventCreateInfo const &() const VULKAN_HPP_NOEXCEPT
33452     {
33453       return *reinterpret_cast<const VkEventCreateInfo *>( this );
33454     }
33455 
operator VkEventCreateInfo&VULKAN_HPP_NAMESPACE::EventCreateInfo33456     operator VkEventCreateInfo &() VULKAN_HPP_NOEXCEPT
33457     {
33458       return *reinterpret_cast<VkEventCreateInfo *>( this );
33459     }
33460 
33461 #if defined( VULKAN_HPP_USE_REFLECT )
33462 #  if 14 <= VULKAN_HPP_CPP_VERSION
33463     auto
33464 #  else
33465     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::EventCreateFlags const &>
33466 #  endif
reflectVULKAN_HPP_NAMESPACE::EventCreateInfo33467       reflect() const VULKAN_HPP_NOEXCEPT
33468     {
33469       return std::tie( sType, pNext, flags );
33470     }
33471 #endif
33472 
33473 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33474     auto operator<=>( EventCreateInfo const & ) const = default;
33475 #else
operator ==VULKAN_HPP_NAMESPACE::EventCreateInfo33476     bool operator==( EventCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
33477     {
33478 #  if defined( VULKAN_HPP_USE_REFLECT )
33479       return this->reflect() == rhs.reflect();
33480 #  else
33481       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
33482 #  endif
33483     }
33484 
operator !=VULKAN_HPP_NAMESPACE::EventCreateInfo33485     bool operator!=( EventCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
33486     {
33487       return !operator==( rhs );
33488     }
33489 #endif
33490 
33491   public:
33492     VULKAN_HPP_NAMESPACE::StructureType    sType = StructureType::eEventCreateInfo;
33493     const void *                           pNext = {};
33494     VULKAN_HPP_NAMESPACE::EventCreateFlags flags = {};
33495   };
33496 
33497   template <>
33498   struct CppType<StructureType, StructureType::eEventCreateInfo>
33499   {
33500     using Type = EventCreateInfo;
33501   };
33502 
33503   struct PipelineLibraryCreateInfoKHR
33504   {
33505     using NativeType = VkPipelineLibraryCreateInfoKHR;
33506 
33507     static const bool                                  allowDuplicate = false;
33508     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineLibraryCreateInfoKHR;
33509 
33510 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineLibraryCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33511     VULKAN_HPP_CONSTEXPR PipelineLibraryCreateInfoKHR( uint32_t                               libraryCount_ = {},
33512                                                        const VULKAN_HPP_NAMESPACE::Pipeline * pLibraries_   = {},
33513                                                        const void *                           pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
33514       : pNext{ pNext_ }
33515       , libraryCount{ libraryCount_ }
33516       , pLibraries{ pLibraries_ }
33517     {
33518     }
33519 
33520     VULKAN_HPP_CONSTEXPR PipelineLibraryCreateInfoKHR( PipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33521 
PipelineLibraryCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33522     PipelineLibraryCreateInfoKHR( VkPipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
33523       : PipelineLibraryCreateInfoKHR( *reinterpret_cast<PipelineLibraryCreateInfoKHR const *>( &rhs ) )
33524     {
33525     }
33526 
33527 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineLibraryCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33528     PipelineLibraryCreateInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Pipeline> const & libraries_,
33529                                   const void *                                                                                pNext_ = nullptr )
33530       : pNext( pNext_ ), libraryCount( static_cast<uint32_t>( libraries_.size() ) ), pLibraries( libraries_.data() )
33531     {
33532     }
33533 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33534 
33535     PipelineLibraryCreateInfoKHR & operator=( PipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33536 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33537 
operator =VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33538     PipelineLibraryCreateInfoKHR & operator=( VkPipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
33539     {
33540       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR const *>( &rhs );
33541       return *this;
33542     }
33543 
33544 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33545     VULKAN_HPP_CONSTEXPR_14 PipelineLibraryCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
33546     {
33547       pNext = pNext_;
33548       return *this;
33549     }
33550 
setLibraryCountVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33551     VULKAN_HPP_CONSTEXPR_14 PipelineLibraryCreateInfoKHR & setLibraryCount( uint32_t libraryCount_ ) VULKAN_HPP_NOEXCEPT
33552     {
33553       libraryCount = libraryCount_;
33554       return *this;
33555     }
33556 
setPLibrariesVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33557     VULKAN_HPP_CONSTEXPR_14 PipelineLibraryCreateInfoKHR & setPLibraries( const VULKAN_HPP_NAMESPACE::Pipeline * pLibraries_ ) VULKAN_HPP_NOEXCEPT
33558     {
33559       pLibraries = pLibraries_;
33560       return *this;
33561     }
33562 
33563 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
33564     PipelineLibraryCreateInfoKHR &
setLibrariesVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33565       setLibraries( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Pipeline> const & libraries_ ) VULKAN_HPP_NOEXCEPT
33566     {
33567       libraryCount = static_cast<uint32_t>( libraries_.size() );
33568       pLibraries   = libraries_.data();
33569       return *this;
33570     }
33571 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33572 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
33573 
operator VkPipelineLibraryCreateInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33574     operator VkPipelineLibraryCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
33575     {
33576       return *reinterpret_cast<const VkPipelineLibraryCreateInfoKHR *>( this );
33577     }
33578 
operator VkPipelineLibraryCreateInfoKHR&VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33579     operator VkPipelineLibraryCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
33580     {
33581       return *reinterpret_cast<VkPipelineLibraryCreateInfoKHR *>( this );
33582     }
33583 
33584 #if defined( VULKAN_HPP_USE_REFLECT )
33585 #  if 14 <= VULKAN_HPP_CPP_VERSION
33586     auto
33587 #  else
33588     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Pipeline * const &>
33589 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33590       reflect() const VULKAN_HPP_NOEXCEPT
33591     {
33592       return std::tie( sType, pNext, libraryCount, pLibraries );
33593     }
33594 #endif
33595 
33596 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33597     auto operator<=>( PipelineLibraryCreateInfoKHR const & ) const = default;
33598 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33599     bool operator==( PipelineLibraryCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
33600     {
33601 #  if defined( VULKAN_HPP_USE_REFLECT )
33602       return this->reflect() == rhs.reflect();
33603 #  else
33604       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( libraryCount == rhs.libraryCount ) && ( pLibraries == rhs.pLibraries );
33605 #  endif
33606     }
33607 
operator !=VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR33608     bool operator!=( PipelineLibraryCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
33609     {
33610       return !operator==( rhs );
33611     }
33612 #endif
33613 
33614   public:
33615     VULKAN_HPP_NAMESPACE::StructureType    sType        = StructureType::ePipelineLibraryCreateInfoKHR;
33616     const void *                           pNext        = {};
33617     uint32_t                               libraryCount = {};
33618     const VULKAN_HPP_NAMESPACE::Pipeline * pLibraries   = {};
33619   };
33620 
33621   template <>
33622   struct CppType<StructureType, StructureType::ePipelineLibraryCreateInfoKHR>
33623   {
33624     using Type = PipelineLibraryCreateInfoKHR;
33625   };
33626 
33627 #if defined( VK_ENABLE_BETA_EXTENSIONS )
33628   struct ExecutionGraphPipelineCreateInfoAMDX
33629   {
33630     using NativeType = VkExecutionGraphPipelineCreateInfoAMDX;
33631 
33632     static const bool                                  allowDuplicate = false;
33633     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExecutionGraphPipelineCreateInfoAMDX;
33634 
33635 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExecutionGraphPipelineCreateInfoAMDXVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33636     VULKAN_HPP_CONSTEXPR ExecutionGraphPipelineCreateInfoAMDX( VULKAN_HPP_NAMESPACE::PipelineCreateFlags                   flags_              = {},
33637                                                                uint32_t                                                    stageCount_         = {},
33638                                                                const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_            = {},
33639                                                                const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR *  pLibraryInfo_       = {},
33640                                                                VULKAN_HPP_NAMESPACE::PipelineLayout                        layout_             = {},
33641                                                                VULKAN_HPP_NAMESPACE::Pipeline                              basePipelineHandle_ = {},
33642                                                                int32_t                                                     basePipelineIndex_  = {},
33643                                                                const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
33644       : pNext{ pNext_ }
33645       , flags{ flags_ }
33646       , stageCount{ stageCount_ }
33647       , pStages{ pStages_ }
33648       , pLibraryInfo{ pLibraryInfo_ }
33649       , layout{ layout_ }
33650       , basePipelineHandle{ basePipelineHandle_ }
33651       , basePipelineIndex{ basePipelineIndex_ }
33652     {
33653     }
33654 
33655     VULKAN_HPP_CONSTEXPR ExecutionGraphPipelineCreateInfoAMDX( ExecutionGraphPipelineCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33656 
ExecutionGraphPipelineCreateInfoAMDXVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33657     ExecutionGraphPipelineCreateInfoAMDX( VkExecutionGraphPipelineCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
33658       : ExecutionGraphPipelineCreateInfoAMDX( *reinterpret_cast<ExecutionGraphPipelineCreateInfoAMDX const *>( &rhs ) )
33659     {
33660     }
33661 
33662 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ExecutionGraphPipelineCreateInfoAMDXVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33663     ExecutionGraphPipelineCreateInfoAMDX(
33664       VULKAN_HPP_NAMESPACE::PipelineCreateFlags                                                                        flags_,
33665       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_,
33666       const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR *                                                       pLibraryInfo_       = {},
33667       VULKAN_HPP_NAMESPACE::PipelineLayout                                                                             layout_             = {},
33668       VULKAN_HPP_NAMESPACE::Pipeline                                                                                   basePipelineHandle_ = {},
33669       int32_t                                                                                                          basePipelineIndex_  = {},
33670       const void *                                                                                                     pNext_              = nullptr )
33671       : pNext( pNext_ )
33672       , flags( flags_ )
33673       , stageCount( static_cast<uint32_t>( stages_.size() ) )
33674       , pStages( stages_.data() )
33675       , pLibraryInfo( pLibraryInfo_ )
33676       , layout( layout_ )
33677       , basePipelineHandle( basePipelineHandle_ )
33678       , basePipelineIndex( basePipelineIndex_ )
33679     {
33680     }
33681 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33682 
33683     ExecutionGraphPipelineCreateInfoAMDX & operator=( ExecutionGraphPipelineCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33684 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33685 
operator =VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33686     ExecutionGraphPipelineCreateInfoAMDX & operator=( VkExecutionGraphPipelineCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
33687     {
33688       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX const *>( &rhs );
33689       return *this;
33690     }
33691 
33692 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33693     VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
33694     {
33695       pNext = pNext_;
33696       return *this;
33697     }
33698 
setFlagsVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33699     VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX & setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
33700     {
33701       flags = flags_;
33702       return *this;
33703     }
33704 
setStageCountVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33705     VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT
33706     {
33707       stageCount = stageCount_;
33708       return *this;
33709     }
33710 
33711     VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX &
setPStagesVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33712       setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ ) VULKAN_HPP_NOEXCEPT
33713     {
33714       pStages = pStages_;
33715       return *this;
33716     }
33717 
33718 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
33719     ExecutionGraphPipelineCreateInfoAMDX &
setStagesVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33720       setStages( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_ ) VULKAN_HPP_NOEXCEPT
33721     {
33722       stageCount = static_cast<uint32_t>( stages_.size() );
33723       pStages    = stages_.data();
33724       return *this;
33725     }
33726 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
33727 
33728     VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX &
setPLibraryInfoVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33729       setPLibraryInfo( const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR * pLibraryInfo_ ) VULKAN_HPP_NOEXCEPT
33730     {
33731       pLibraryInfo = pLibraryInfo_;
33732       return *this;
33733     }
33734 
setLayoutVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33735     VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
33736     {
33737       layout = layout_;
33738       return *this;
33739     }
33740 
33741     VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX &
setBasePipelineHandleVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33742       setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT
33743     {
33744       basePipelineHandle = basePipelineHandle_;
33745       return *this;
33746     }
33747 
setBasePipelineIndexVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33748     VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX & setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT
33749     {
33750       basePipelineIndex = basePipelineIndex_;
33751       return *this;
33752     }
33753 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
33754 
operator VkExecutionGraphPipelineCreateInfoAMDX const&VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33755     operator VkExecutionGraphPipelineCreateInfoAMDX const &() const VULKAN_HPP_NOEXCEPT
33756     {
33757       return *reinterpret_cast<const VkExecutionGraphPipelineCreateInfoAMDX *>( this );
33758     }
33759 
operator VkExecutionGraphPipelineCreateInfoAMDX&VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33760     operator VkExecutionGraphPipelineCreateInfoAMDX &() VULKAN_HPP_NOEXCEPT
33761     {
33762       return *reinterpret_cast<VkExecutionGraphPipelineCreateInfoAMDX *>( this );
33763     }
33764 
33765 #  if defined( VULKAN_HPP_USE_REFLECT )
33766 #    if 14 <= VULKAN_HPP_CPP_VERSION
33767     auto
33768 #    else
33769     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
33770                const void * const &,
33771                VULKAN_HPP_NAMESPACE::PipelineCreateFlags const &,
33772                uint32_t const &,
33773                const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * const &,
33774                const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR * const &,
33775                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
33776                VULKAN_HPP_NAMESPACE::Pipeline const &,
33777                int32_t const &>
33778 #    endif
reflectVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33779       reflect() const VULKAN_HPP_NOEXCEPT
33780     {
33781       return std::tie( sType, pNext, flags, stageCount, pStages, pLibraryInfo, layout, basePipelineHandle, basePipelineIndex );
33782     }
33783 #  endif
33784 
33785 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33786     auto operator<=>( ExecutionGraphPipelineCreateInfoAMDX const & ) const = default;
33787 #  else
operator ==VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33788     bool operator==( ExecutionGraphPipelineCreateInfoAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
33789     {
33790 #    if defined( VULKAN_HPP_USE_REFLECT )
33791       return this->reflect() == rhs.reflect();
33792 #    else
33793       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stageCount == rhs.stageCount ) && ( pStages == rhs.pStages ) &&
33794              ( pLibraryInfo == rhs.pLibraryInfo ) && ( layout == rhs.layout ) && ( basePipelineHandle == rhs.basePipelineHandle ) &&
33795              ( basePipelineIndex == rhs.basePipelineIndex );
33796 #    endif
33797     }
33798 
operator !=VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX33799     bool operator!=( ExecutionGraphPipelineCreateInfoAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
33800     {
33801       return !operator==( rhs );
33802     }
33803 #  endif
33804 
33805   public:
33806     VULKAN_HPP_NAMESPACE::StructureType                         sType              = StructureType::eExecutionGraphPipelineCreateInfoAMDX;
33807     const void *                                                pNext              = {};
33808     VULKAN_HPP_NAMESPACE::PipelineCreateFlags                   flags              = {};
33809     uint32_t                                                    stageCount         = {};
33810     const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages            = {};
33811     const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR *  pLibraryInfo       = {};
33812     VULKAN_HPP_NAMESPACE::PipelineLayout                        layout             = {};
33813     VULKAN_HPP_NAMESPACE::Pipeline                              basePipelineHandle = {};
33814     int32_t                                                     basePipelineIndex  = {};
33815   };
33816 
33817   template <>
33818   struct CppType<StructureType, StructureType::eExecutionGraphPipelineCreateInfoAMDX>
33819   {
33820     using Type = ExecutionGraphPipelineCreateInfoAMDX;
33821   };
33822 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
33823 
33824 #if defined( VK_ENABLE_BETA_EXTENSIONS )
33825   struct ExecutionGraphPipelineScratchSizeAMDX
33826   {
33827     using NativeType = VkExecutionGraphPipelineScratchSizeAMDX;
33828 
33829     static const bool                                  allowDuplicate = false;
33830     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExecutionGraphPipelineScratchSizeAMDX;
33831 
33832 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExecutionGraphPipelineScratchSizeAMDXVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX33833     VULKAN_HPP_CONSTEXPR ExecutionGraphPipelineScratchSizeAMDX( VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
33834       : pNext{ pNext_ }
33835       , size{ size_ }
33836     {
33837     }
33838 
33839     VULKAN_HPP_CONSTEXPR ExecutionGraphPipelineScratchSizeAMDX( ExecutionGraphPipelineScratchSizeAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33840 
ExecutionGraphPipelineScratchSizeAMDXVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX33841     ExecutionGraphPipelineScratchSizeAMDX( VkExecutionGraphPipelineScratchSizeAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
33842       : ExecutionGraphPipelineScratchSizeAMDX( *reinterpret_cast<ExecutionGraphPipelineScratchSizeAMDX const *>( &rhs ) )
33843     {
33844     }
33845 
33846     ExecutionGraphPipelineScratchSizeAMDX & operator=( ExecutionGraphPipelineScratchSizeAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33847 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33848 
operator =VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX33849     ExecutionGraphPipelineScratchSizeAMDX & operator=( VkExecutionGraphPipelineScratchSizeAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
33850     {
33851       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX const *>( &rhs );
33852       return *this;
33853     }
33854 
33855 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX33856     VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineScratchSizeAMDX & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
33857     {
33858       pNext = pNext_;
33859       return *this;
33860     }
33861 
setSizeVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX33862     VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineScratchSizeAMDX & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
33863     {
33864       size = size_;
33865       return *this;
33866     }
33867 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
33868 
operator VkExecutionGraphPipelineScratchSizeAMDX const&VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX33869     operator VkExecutionGraphPipelineScratchSizeAMDX const &() const VULKAN_HPP_NOEXCEPT
33870     {
33871       return *reinterpret_cast<const VkExecutionGraphPipelineScratchSizeAMDX *>( this );
33872     }
33873 
operator VkExecutionGraphPipelineScratchSizeAMDX&VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX33874     operator VkExecutionGraphPipelineScratchSizeAMDX &() VULKAN_HPP_NOEXCEPT
33875     {
33876       return *reinterpret_cast<VkExecutionGraphPipelineScratchSizeAMDX *>( this );
33877     }
33878 
33879 #  if defined( VULKAN_HPP_USE_REFLECT )
33880 #    if 14 <= VULKAN_HPP_CPP_VERSION
33881     auto
33882 #    else
33883     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
33884 #    endif
reflectVULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX33885       reflect() const VULKAN_HPP_NOEXCEPT
33886     {
33887       return std::tie( sType, pNext, size );
33888     }
33889 #  endif
33890 
33891 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33892     auto operator<=>( ExecutionGraphPipelineScratchSizeAMDX const & ) const = default;
33893 #  else
operator ==VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX33894     bool operator==( ExecutionGraphPipelineScratchSizeAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
33895     {
33896 #    if defined( VULKAN_HPP_USE_REFLECT )
33897       return this->reflect() == rhs.reflect();
33898 #    else
33899       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( size == rhs.size );
33900 #    endif
33901     }
33902 
operator !=VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX33903     bool operator!=( ExecutionGraphPipelineScratchSizeAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
33904     {
33905       return !operator==( rhs );
33906     }
33907 #  endif
33908 
33909   public:
33910     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExecutionGraphPipelineScratchSizeAMDX;
33911     void *                              pNext = {};
33912     VULKAN_HPP_NAMESPACE::DeviceSize    size  = {};
33913   };
33914 
33915   template <>
33916   struct CppType<StructureType, StructureType::eExecutionGraphPipelineScratchSizeAMDX>
33917   {
33918     using Type = ExecutionGraphPipelineScratchSizeAMDX;
33919   };
33920 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
33921 
33922   struct ExportFenceCreateInfo
33923   {
33924     using NativeType = VkExportFenceCreateInfo;
33925 
33926     static const bool                                  allowDuplicate = false;
33927     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportFenceCreateInfo;
33928 
33929 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportFenceCreateInfoVULKAN_HPP_NAMESPACE::ExportFenceCreateInfo33930     VULKAN_HPP_CONSTEXPR ExportFenceCreateInfo( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags handleTypes_ = {},
33931                                                 const void *                                       pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
33932       : pNext{ pNext_ }
33933       , handleTypes{ handleTypes_ }
33934     {
33935     }
33936 
33937     VULKAN_HPP_CONSTEXPR ExportFenceCreateInfo( ExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33938 
ExportFenceCreateInfoVULKAN_HPP_NAMESPACE::ExportFenceCreateInfo33939     ExportFenceCreateInfo( VkExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
33940       : ExportFenceCreateInfo( *reinterpret_cast<ExportFenceCreateInfo const *>( &rhs ) )
33941     {
33942     }
33943 
33944     ExportFenceCreateInfo & operator=( ExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33945 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33946 
operator =VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo33947     ExportFenceCreateInfo & operator=( VkExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
33948     {
33949       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo const *>( &rhs );
33950       return *this;
33951     }
33952 
33953 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportFenceCreateInfo33954     VULKAN_HPP_CONSTEXPR_14 ExportFenceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
33955     {
33956       pNext = pNext_;
33957       return *this;
33958     }
33959 
setHandleTypesVULKAN_HPP_NAMESPACE::ExportFenceCreateInfo33960     VULKAN_HPP_CONSTEXPR_14 ExportFenceCreateInfo & setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT
33961     {
33962       handleTypes = handleTypes_;
33963       return *this;
33964     }
33965 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
33966 
operator VkExportFenceCreateInfo const&VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo33967     operator VkExportFenceCreateInfo const &() const VULKAN_HPP_NOEXCEPT
33968     {
33969       return *reinterpret_cast<const VkExportFenceCreateInfo *>( this );
33970     }
33971 
operator VkExportFenceCreateInfo&VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo33972     operator VkExportFenceCreateInfo &() VULKAN_HPP_NOEXCEPT
33973     {
33974       return *reinterpret_cast<VkExportFenceCreateInfo *>( this );
33975     }
33976 
33977 #if defined( VULKAN_HPP_USE_REFLECT )
33978 #  if 14 <= VULKAN_HPP_CPP_VERSION
33979     auto
33980 #  else
33981     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags const &>
33982 #  endif
reflectVULKAN_HPP_NAMESPACE::ExportFenceCreateInfo33983       reflect() const VULKAN_HPP_NOEXCEPT
33984     {
33985       return std::tie( sType, pNext, handleTypes );
33986     }
33987 #endif
33988 
33989 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
33990     auto operator<=>( ExportFenceCreateInfo const & ) const = default;
33991 #else
operator ==VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo33992     bool operator==( ExportFenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
33993     {
33994 #  if defined( VULKAN_HPP_USE_REFLECT )
33995       return this->reflect() == rhs.reflect();
33996 #  else
33997       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes );
33998 #  endif
33999     }
34000 
operator !=VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo34001     bool operator!=( ExportFenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
34002     {
34003       return !operator==( rhs );
34004     }
34005 #endif
34006 
34007   public:
34008     VULKAN_HPP_NAMESPACE::StructureType                sType       = StructureType::eExportFenceCreateInfo;
34009     const void *                                       pNext       = {};
34010     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags handleTypes = {};
34011   };
34012 
34013   template <>
34014   struct CppType<StructureType, StructureType::eExportFenceCreateInfo>
34015   {
34016     using Type = ExportFenceCreateInfo;
34017   };
34018 
34019   using ExportFenceCreateInfoKHR = ExportFenceCreateInfo;
34020 
34021 #if defined( VK_USE_PLATFORM_WIN32_KHR )
34022   struct ExportFenceWin32HandleInfoKHR
34023   {
34024     using NativeType = VkExportFenceWin32HandleInfoKHR;
34025 
34026     static const bool                                  allowDuplicate = false;
34027     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportFenceWin32HandleInfoKHR;
34028 
34029 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportFenceWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34030     VULKAN_HPP_CONSTEXPR ExportFenceWin32HandleInfoKHR( const SECURITY_ATTRIBUTES * pAttributes_ = {},
34031                                                         DWORD                       dwAccess_    = {},
34032                                                         LPCWSTR                     name_        = {},
34033                                                         const void *                pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
34034       : pNext{ pNext_ }
34035       , pAttributes{ pAttributes_ }
34036       , dwAccess{ dwAccess_ }
34037       , name{ name_ }
34038     {
34039     }
34040 
34041     VULKAN_HPP_CONSTEXPR ExportFenceWin32HandleInfoKHR( ExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34042 
ExportFenceWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34043     ExportFenceWin32HandleInfoKHR( VkExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
34044       : ExportFenceWin32HandleInfoKHR( *reinterpret_cast<ExportFenceWin32HandleInfoKHR const *>( &rhs ) )
34045     {
34046     }
34047 
34048     ExportFenceWin32HandleInfoKHR & operator=( ExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34049 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34050 
operator =VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34051     ExportFenceWin32HandleInfoKHR & operator=( VkExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
34052     {
34053       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR const *>( &rhs );
34054       return *this;
34055     }
34056 
34057 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34058     VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
34059     {
34060       pNext = pNext_;
34061       return *this;
34062     }
34063 
setPAttributesVULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34064     VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR & setPAttributes( const SECURITY_ATTRIBUTES * pAttributes_ ) VULKAN_HPP_NOEXCEPT
34065     {
34066       pAttributes = pAttributes_;
34067       return *this;
34068     }
34069 
setDwAccessVULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34070     VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR & setDwAccess( DWORD dwAccess_ ) VULKAN_HPP_NOEXCEPT
34071     {
34072       dwAccess = dwAccess_;
34073       return *this;
34074     }
34075 
setNameVULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34076     VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT
34077     {
34078       name = name_;
34079       return *this;
34080     }
34081 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34082 
operator VkExportFenceWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34083     operator VkExportFenceWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
34084     {
34085       return *reinterpret_cast<const VkExportFenceWin32HandleInfoKHR *>( this );
34086     }
34087 
operator VkExportFenceWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34088     operator VkExportFenceWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
34089     {
34090       return *reinterpret_cast<VkExportFenceWin32HandleInfoKHR *>( this );
34091     }
34092 
34093 #  if defined( VULKAN_HPP_USE_REFLECT )
34094 #    if 14 <= VULKAN_HPP_CPP_VERSION
34095     auto
34096 #    else
34097     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const SECURITY_ATTRIBUTES * const &, DWORD const &, LPCWSTR const &>
34098 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34099       reflect() const VULKAN_HPP_NOEXCEPT
34100     {
34101       return std::tie( sType, pNext, pAttributes, dwAccess, name );
34102     }
34103 #  endif
34104 
34105 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34106     auto operator<=>( ExportFenceWin32HandleInfoKHR const & ) const = default;
34107 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34108     bool operator==( ExportFenceWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
34109     {
34110 #    if defined( VULKAN_HPP_USE_REFLECT )
34111       return this->reflect() == rhs.reflect();
34112 #    else
34113       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pAttributes == rhs.pAttributes ) && ( dwAccess == rhs.dwAccess ) && ( name == rhs.name );
34114 #    endif
34115     }
34116 
operator !=VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR34117     bool operator!=( ExportFenceWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
34118     {
34119       return !operator==( rhs );
34120     }
34121 #  endif
34122 
34123   public:
34124     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eExportFenceWin32HandleInfoKHR;
34125     const void *                        pNext       = {};
34126     const SECURITY_ATTRIBUTES *         pAttributes = {};
34127     DWORD                               dwAccess    = {};
34128     LPCWSTR                             name        = {};
34129   };
34130 
34131   template <>
34132   struct CppType<StructureType, StructureType::eExportFenceWin32HandleInfoKHR>
34133   {
34134     using Type = ExportFenceWin32HandleInfoKHR;
34135   };
34136 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
34137 
34138   struct ExportMemoryAllocateInfo
34139   {
34140     using NativeType = VkExportMemoryAllocateInfo;
34141 
34142     static const bool                                  allowDuplicate = false;
34143     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMemoryAllocateInfo;
34144 
34145 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMemoryAllocateInfoVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo34146     VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfo( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ = {},
34147                                                    const void *                                        pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
34148       : pNext{ pNext_ }
34149       , handleTypes{ handleTypes_ }
34150     {
34151     }
34152 
34153     VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfo( ExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34154 
ExportMemoryAllocateInfoVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo34155     ExportMemoryAllocateInfo( VkExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
34156       : ExportMemoryAllocateInfo( *reinterpret_cast<ExportMemoryAllocateInfo const *>( &rhs ) )
34157     {
34158     }
34159 
34160     ExportMemoryAllocateInfo & operator=( ExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34161 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34162 
operator =VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo34163     ExportMemoryAllocateInfo & operator=( VkExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
34164     {
34165       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo const *>( &rhs );
34166       return *this;
34167     }
34168 
34169 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo34170     VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
34171     {
34172       pNext = pNext_;
34173       return *this;
34174     }
34175 
setHandleTypesVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo34176     VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfo & setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT
34177     {
34178       handleTypes = handleTypes_;
34179       return *this;
34180     }
34181 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34182 
operator VkExportMemoryAllocateInfo const&VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo34183     operator VkExportMemoryAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
34184     {
34185       return *reinterpret_cast<const VkExportMemoryAllocateInfo *>( this );
34186     }
34187 
operator VkExportMemoryAllocateInfo&VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo34188     operator VkExportMemoryAllocateInfo &() VULKAN_HPP_NOEXCEPT
34189     {
34190       return *reinterpret_cast<VkExportMemoryAllocateInfo *>( this );
34191     }
34192 
34193 #if defined( VULKAN_HPP_USE_REFLECT )
34194 #  if 14 <= VULKAN_HPP_CPP_VERSION
34195     auto
34196 #  else
34197     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags const &>
34198 #  endif
reflectVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo34199       reflect() const VULKAN_HPP_NOEXCEPT
34200     {
34201       return std::tie( sType, pNext, handleTypes );
34202     }
34203 #endif
34204 
34205 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34206     auto operator<=>( ExportMemoryAllocateInfo const & ) const = default;
34207 #else
operator ==VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo34208     bool operator==( ExportMemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
34209     {
34210 #  if defined( VULKAN_HPP_USE_REFLECT )
34211       return this->reflect() == rhs.reflect();
34212 #  else
34213       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes );
34214 #  endif
34215     }
34216 
operator !=VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo34217     bool operator!=( ExportMemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
34218     {
34219       return !operator==( rhs );
34220     }
34221 #endif
34222 
34223   public:
34224     VULKAN_HPP_NAMESPACE::StructureType                 sType       = StructureType::eExportMemoryAllocateInfo;
34225     const void *                                        pNext       = {};
34226     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes = {};
34227   };
34228 
34229   template <>
34230   struct CppType<StructureType, StructureType::eExportMemoryAllocateInfo>
34231   {
34232     using Type = ExportMemoryAllocateInfo;
34233   };
34234 
34235   using ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo;
34236 
34237   struct ExportMemoryAllocateInfoNV
34238   {
34239     using NativeType = VkExportMemoryAllocateInfoNV;
34240 
34241     static const bool                                  allowDuplicate = false;
34242     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMemoryAllocateInfoNV;
34243 
34244 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMemoryAllocateInfoNVVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV34245     VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfoNV( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes_ = {},
34246                                                      const void *                                          pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
34247       : pNext{ pNext_ }
34248       , handleTypes{ handleTypes_ }
34249     {
34250     }
34251 
34252     VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfoNV( ExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34253 
ExportMemoryAllocateInfoNVVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV34254     ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
34255       : ExportMemoryAllocateInfoNV( *reinterpret_cast<ExportMemoryAllocateInfoNV const *>( &rhs ) )
34256     {
34257     }
34258 
34259     ExportMemoryAllocateInfoNV & operator=( ExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34260 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34261 
operator =VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV34262     ExportMemoryAllocateInfoNV & operator=( VkExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
34263     {
34264       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV const *>( &rhs );
34265       return *this;
34266     }
34267 
34268 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV34269     VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
34270     {
34271       pNext = pNext_;
34272       return *this;
34273     }
34274 
34275     VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfoNV &
setHandleTypesVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV34276       setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes_ ) VULKAN_HPP_NOEXCEPT
34277     {
34278       handleTypes = handleTypes_;
34279       return *this;
34280     }
34281 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34282 
operator VkExportMemoryAllocateInfoNV const&VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV34283     operator VkExportMemoryAllocateInfoNV const &() const VULKAN_HPP_NOEXCEPT
34284     {
34285       return *reinterpret_cast<const VkExportMemoryAllocateInfoNV *>( this );
34286     }
34287 
operator VkExportMemoryAllocateInfoNV&VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV34288     operator VkExportMemoryAllocateInfoNV &() VULKAN_HPP_NOEXCEPT
34289     {
34290       return *reinterpret_cast<VkExportMemoryAllocateInfoNV *>( this );
34291     }
34292 
34293 #if defined( VULKAN_HPP_USE_REFLECT )
34294 #  if 14 <= VULKAN_HPP_CPP_VERSION
34295     auto
34296 #  else
34297     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV const &>
34298 #  endif
reflectVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV34299       reflect() const VULKAN_HPP_NOEXCEPT
34300     {
34301       return std::tie( sType, pNext, handleTypes );
34302     }
34303 #endif
34304 
34305 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34306     auto operator<=>( ExportMemoryAllocateInfoNV const & ) const = default;
34307 #else
operator ==VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV34308     bool operator==( ExportMemoryAllocateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
34309     {
34310 #  if defined( VULKAN_HPP_USE_REFLECT )
34311       return this->reflect() == rhs.reflect();
34312 #  else
34313       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes );
34314 #  endif
34315     }
34316 
operator !=VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV34317     bool operator!=( ExportMemoryAllocateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
34318     {
34319       return !operator==( rhs );
34320     }
34321 #endif
34322 
34323   public:
34324     VULKAN_HPP_NAMESPACE::StructureType                   sType       = StructureType::eExportMemoryAllocateInfoNV;
34325     const void *                                          pNext       = {};
34326     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes = {};
34327   };
34328 
34329   template <>
34330   struct CppType<StructureType, StructureType::eExportMemoryAllocateInfoNV>
34331   {
34332     using Type = ExportMemoryAllocateInfoNV;
34333   };
34334 
34335 #if defined( VK_USE_PLATFORM_WIN32_KHR )
34336   struct ExportMemoryWin32HandleInfoKHR
34337   {
34338     using NativeType = VkExportMemoryWin32HandleInfoKHR;
34339 
34340     static const bool                                  allowDuplicate = false;
34341     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMemoryWin32HandleInfoKHR;
34342 
34343 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMemoryWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34344     VULKAN_HPP_CONSTEXPR ExportMemoryWin32HandleInfoKHR( const SECURITY_ATTRIBUTES * pAttributes_ = {},
34345                                                          DWORD                       dwAccess_    = {},
34346                                                          LPCWSTR                     name_        = {},
34347                                                          const void *                pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
34348       : pNext{ pNext_ }
34349       , pAttributes{ pAttributes_ }
34350       , dwAccess{ dwAccess_ }
34351       , name{ name_ }
34352     {
34353     }
34354 
34355     VULKAN_HPP_CONSTEXPR ExportMemoryWin32HandleInfoKHR( ExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34356 
ExportMemoryWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34357     ExportMemoryWin32HandleInfoKHR( VkExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
34358       : ExportMemoryWin32HandleInfoKHR( *reinterpret_cast<ExportMemoryWin32HandleInfoKHR const *>( &rhs ) )
34359     {
34360     }
34361 
34362     ExportMemoryWin32HandleInfoKHR & operator=( ExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34363 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34364 
operator =VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34365     ExportMemoryWin32HandleInfoKHR & operator=( VkExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
34366     {
34367       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR const *>( &rhs );
34368       return *this;
34369     }
34370 
34371 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34372     VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
34373     {
34374       pNext = pNext_;
34375       return *this;
34376     }
34377 
setPAttributesVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34378     VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR & setPAttributes( const SECURITY_ATTRIBUTES * pAttributes_ ) VULKAN_HPP_NOEXCEPT
34379     {
34380       pAttributes = pAttributes_;
34381       return *this;
34382     }
34383 
setDwAccessVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34384     VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR & setDwAccess( DWORD dwAccess_ ) VULKAN_HPP_NOEXCEPT
34385     {
34386       dwAccess = dwAccess_;
34387       return *this;
34388     }
34389 
setNameVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34390     VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT
34391     {
34392       name = name_;
34393       return *this;
34394     }
34395 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34396 
operator VkExportMemoryWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34397     operator VkExportMemoryWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
34398     {
34399       return *reinterpret_cast<const VkExportMemoryWin32HandleInfoKHR *>( this );
34400     }
34401 
operator VkExportMemoryWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34402     operator VkExportMemoryWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
34403     {
34404       return *reinterpret_cast<VkExportMemoryWin32HandleInfoKHR *>( this );
34405     }
34406 
34407 #  if defined( VULKAN_HPP_USE_REFLECT )
34408 #    if 14 <= VULKAN_HPP_CPP_VERSION
34409     auto
34410 #    else
34411     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const SECURITY_ATTRIBUTES * const &, DWORD const &, LPCWSTR const &>
34412 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34413       reflect() const VULKAN_HPP_NOEXCEPT
34414     {
34415       return std::tie( sType, pNext, pAttributes, dwAccess, name );
34416     }
34417 #  endif
34418 
34419 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34420     auto operator<=>( ExportMemoryWin32HandleInfoKHR const & ) const = default;
34421 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34422     bool operator==( ExportMemoryWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
34423     {
34424 #    if defined( VULKAN_HPP_USE_REFLECT )
34425       return this->reflect() == rhs.reflect();
34426 #    else
34427       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pAttributes == rhs.pAttributes ) && ( dwAccess == rhs.dwAccess ) && ( name == rhs.name );
34428 #    endif
34429     }
34430 
operator !=VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR34431     bool operator!=( ExportMemoryWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
34432     {
34433       return !operator==( rhs );
34434     }
34435 #  endif
34436 
34437   public:
34438     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eExportMemoryWin32HandleInfoKHR;
34439     const void *                        pNext       = {};
34440     const SECURITY_ATTRIBUTES *         pAttributes = {};
34441     DWORD                               dwAccess    = {};
34442     LPCWSTR                             name        = {};
34443   };
34444 
34445   template <>
34446   struct CppType<StructureType, StructureType::eExportMemoryWin32HandleInfoKHR>
34447   {
34448     using Type = ExportMemoryWin32HandleInfoKHR;
34449   };
34450 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
34451 
34452 #if defined( VK_USE_PLATFORM_WIN32_KHR )
34453   struct ExportMemoryWin32HandleInfoNV
34454   {
34455     using NativeType = VkExportMemoryWin32HandleInfoNV;
34456 
34457     static const bool                                  allowDuplicate = false;
34458     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMemoryWin32HandleInfoNV;
34459 
34460 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
34461     VULKAN_HPP_CONSTEXPR
ExportMemoryWin32HandleInfoNVVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34462       ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES * pAttributes_ = {}, DWORD dwAccess_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
34463       : pNext{ pNext_ }
34464       , pAttributes{ pAttributes_ }
34465       , dwAccess{ dwAccess_ }
34466     {
34467     }
34468 
34469     VULKAN_HPP_CONSTEXPR ExportMemoryWin32HandleInfoNV( ExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34470 
ExportMemoryWin32HandleInfoNVVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34471     ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
34472       : ExportMemoryWin32HandleInfoNV( *reinterpret_cast<ExportMemoryWin32HandleInfoNV const *>( &rhs ) )
34473     {
34474     }
34475 
34476     ExportMemoryWin32HandleInfoNV & operator=( ExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34477 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34478 
operator =VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34479     ExportMemoryWin32HandleInfoNV & operator=( VkExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
34480     {
34481       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV const *>( &rhs );
34482       return *this;
34483     }
34484 
34485 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34486     VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
34487     {
34488       pNext = pNext_;
34489       return *this;
34490     }
34491 
setPAttributesVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34492     VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoNV & setPAttributes( const SECURITY_ATTRIBUTES * pAttributes_ ) VULKAN_HPP_NOEXCEPT
34493     {
34494       pAttributes = pAttributes_;
34495       return *this;
34496     }
34497 
setDwAccessVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34498     VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoNV & setDwAccess( DWORD dwAccess_ ) VULKAN_HPP_NOEXCEPT
34499     {
34500       dwAccess = dwAccess_;
34501       return *this;
34502     }
34503 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34504 
operator VkExportMemoryWin32HandleInfoNV const&VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34505     operator VkExportMemoryWin32HandleInfoNV const &() const VULKAN_HPP_NOEXCEPT
34506     {
34507       return *reinterpret_cast<const VkExportMemoryWin32HandleInfoNV *>( this );
34508     }
34509 
operator VkExportMemoryWin32HandleInfoNV&VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34510     operator VkExportMemoryWin32HandleInfoNV &() VULKAN_HPP_NOEXCEPT
34511     {
34512       return *reinterpret_cast<VkExportMemoryWin32HandleInfoNV *>( this );
34513     }
34514 
34515 #  if defined( VULKAN_HPP_USE_REFLECT )
34516 #    if 14 <= VULKAN_HPP_CPP_VERSION
34517     auto
34518 #    else
34519     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const SECURITY_ATTRIBUTES * const &, DWORD const &>
34520 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34521       reflect() const VULKAN_HPP_NOEXCEPT
34522     {
34523       return std::tie( sType, pNext, pAttributes, dwAccess );
34524     }
34525 #  endif
34526 
34527 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34528     auto operator<=>( ExportMemoryWin32HandleInfoNV const & ) const = default;
34529 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34530     bool operator==( ExportMemoryWin32HandleInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
34531     {
34532 #    if defined( VULKAN_HPP_USE_REFLECT )
34533       return this->reflect() == rhs.reflect();
34534 #    else
34535       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pAttributes == rhs.pAttributes ) && ( dwAccess == rhs.dwAccess );
34536 #    endif
34537     }
34538 
operator !=VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV34539     bool operator!=( ExportMemoryWin32HandleInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
34540     {
34541       return !operator==( rhs );
34542     }
34543 #  endif
34544 
34545   public:
34546     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eExportMemoryWin32HandleInfoNV;
34547     const void *                        pNext       = {};
34548     const SECURITY_ATTRIBUTES *         pAttributes = {};
34549     DWORD                               dwAccess    = {};
34550   };
34551 
34552   template <>
34553   struct CppType<StructureType, StructureType::eExportMemoryWin32HandleInfoNV>
34554   {
34555     using Type = ExportMemoryWin32HandleInfoNV;
34556   };
34557 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
34558 
34559 #if defined( VK_USE_PLATFORM_METAL_EXT )
34560   struct ExportMetalBufferInfoEXT
34561   {
34562     using NativeType = VkExportMetalBufferInfoEXT;
34563 
34564     static const bool                                  allowDuplicate = true;
34565     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMetalBufferInfoEXT;
34566 
34567 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMetalBufferInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34568     VULKAN_HPP_CONSTEXPR ExportMetalBufferInfoEXT( VULKAN_HPP_NAMESPACE::DeviceMemory memory_    = {},
34569                                                    MTLBuffer_id                       mtlBuffer_ = {},
34570                                                    const void *                       pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
34571       : pNext{ pNext_ }
34572       , memory{ memory_ }
34573       , mtlBuffer{ mtlBuffer_ }
34574     {
34575     }
34576 
34577     VULKAN_HPP_CONSTEXPR ExportMetalBufferInfoEXT( ExportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34578 
ExportMetalBufferInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34579     ExportMetalBufferInfoEXT( VkExportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
34580       : ExportMetalBufferInfoEXT( *reinterpret_cast<ExportMetalBufferInfoEXT const *>( &rhs ) )
34581     {
34582     }
34583 
34584     ExportMetalBufferInfoEXT & operator=( ExportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34585 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34586 
operator =VULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34587     ExportMetalBufferInfoEXT & operator=( VkExportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
34588     {
34589       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT const *>( &rhs );
34590       return *this;
34591     }
34592 
34593 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34594     VULKAN_HPP_CONSTEXPR_14 ExportMetalBufferInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
34595     {
34596       pNext = pNext_;
34597       return *this;
34598     }
34599 
setMemoryVULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34600     VULKAN_HPP_CONSTEXPR_14 ExportMetalBufferInfoEXT & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
34601     {
34602       memory = memory_;
34603       return *this;
34604     }
34605 
setMtlBufferVULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34606     VULKAN_HPP_CONSTEXPR_14 ExportMetalBufferInfoEXT & setMtlBuffer( MTLBuffer_id mtlBuffer_ ) VULKAN_HPP_NOEXCEPT
34607     {
34608       mtlBuffer = mtlBuffer_;
34609       return *this;
34610     }
34611 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34612 
operator VkExportMetalBufferInfoEXT const&VULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34613     operator VkExportMetalBufferInfoEXT const &() const VULKAN_HPP_NOEXCEPT
34614     {
34615       return *reinterpret_cast<const VkExportMetalBufferInfoEXT *>( this );
34616     }
34617 
operator VkExportMetalBufferInfoEXT&VULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34618     operator VkExportMetalBufferInfoEXT &() VULKAN_HPP_NOEXCEPT
34619     {
34620       return *reinterpret_cast<VkExportMetalBufferInfoEXT *>( this );
34621     }
34622 
34623 #  if defined( VULKAN_HPP_USE_REFLECT )
34624 #    if 14 <= VULKAN_HPP_CPP_VERSION
34625     auto
34626 #    else
34627     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceMemory const &, MTLBuffer_id const &>
34628 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34629       reflect() const VULKAN_HPP_NOEXCEPT
34630     {
34631       return std::tie( sType, pNext, memory, mtlBuffer );
34632     }
34633 #  endif
34634 
34635 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34636     auto operator<=>( ExportMetalBufferInfoEXT const & ) const = default;
34637 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34638     bool operator==( ExportMetalBufferInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
34639     {
34640 #    if defined( VULKAN_HPP_USE_REFLECT )
34641       return this->reflect() == rhs.reflect();
34642 #    else
34643       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && ( mtlBuffer == rhs.mtlBuffer );
34644 #    endif
34645     }
34646 
operator !=VULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT34647     bool operator!=( ExportMetalBufferInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
34648     {
34649       return !operator==( rhs );
34650     }
34651 #  endif
34652 
34653   public:
34654     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eExportMetalBufferInfoEXT;
34655     const void *                        pNext     = {};
34656     VULKAN_HPP_NAMESPACE::DeviceMemory  memory    = {};
34657     MTLBuffer_id                        mtlBuffer = {};
34658   };
34659 
34660   template <>
34661   struct CppType<StructureType, StructureType::eExportMetalBufferInfoEXT>
34662   {
34663     using Type = ExportMetalBufferInfoEXT;
34664   };
34665 #endif /*VK_USE_PLATFORM_METAL_EXT*/
34666 
34667 #if defined( VK_USE_PLATFORM_METAL_EXT )
34668   struct ExportMetalCommandQueueInfoEXT
34669   {
34670     using NativeType = VkExportMetalCommandQueueInfoEXT;
34671 
34672     static const bool                                  allowDuplicate = true;
34673     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMetalCommandQueueInfoEXT;
34674 
34675 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMetalCommandQueueInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT34676     VULKAN_HPP_CONSTEXPR ExportMetalCommandQueueInfoEXT( VULKAN_HPP_NAMESPACE::Queue queue_           = {},
34677                                                          MTLCommandQueue_id          mtlCommandQueue_ = {},
34678                                                          const void *                pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
34679       : pNext{ pNext_ }
34680       , queue{ queue_ }
34681       , mtlCommandQueue{ mtlCommandQueue_ }
34682     {
34683     }
34684 
34685     VULKAN_HPP_CONSTEXPR ExportMetalCommandQueueInfoEXT( ExportMetalCommandQueueInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34686 
ExportMetalCommandQueueInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT34687     ExportMetalCommandQueueInfoEXT( VkExportMetalCommandQueueInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
34688       : ExportMetalCommandQueueInfoEXT( *reinterpret_cast<ExportMetalCommandQueueInfoEXT const *>( &rhs ) )
34689     {
34690     }
34691 
34692     ExportMetalCommandQueueInfoEXT & operator=( ExportMetalCommandQueueInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34693 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34694 
operator =VULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT34695     ExportMetalCommandQueueInfoEXT & operator=( VkExportMetalCommandQueueInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
34696     {
34697       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT const *>( &rhs );
34698       return *this;
34699     }
34700 
34701 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT34702     VULKAN_HPP_CONSTEXPR_14 ExportMetalCommandQueueInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
34703     {
34704       pNext = pNext_;
34705       return *this;
34706     }
34707 
setQueueVULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT34708     VULKAN_HPP_CONSTEXPR_14 ExportMetalCommandQueueInfoEXT & setQueue( VULKAN_HPP_NAMESPACE::Queue queue_ ) VULKAN_HPP_NOEXCEPT
34709     {
34710       queue = queue_;
34711       return *this;
34712     }
34713 
setMtlCommandQueueVULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT34714     VULKAN_HPP_CONSTEXPR_14 ExportMetalCommandQueueInfoEXT & setMtlCommandQueue( MTLCommandQueue_id mtlCommandQueue_ ) VULKAN_HPP_NOEXCEPT
34715     {
34716       mtlCommandQueue = mtlCommandQueue_;
34717       return *this;
34718     }
34719 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34720 
operator VkExportMetalCommandQueueInfoEXT const&VULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT34721     operator VkExportMetalCommandQueueInfoEXT const &() const VULKAN_HPP_NOEXCEPT
34722     {
34723       return *reinterpret_cast<const VkExportMetalCommandQueueInfoEXT *>( this );
34724     }
34725 
operator VkExportMetalCommandQueueInfoEXT&VULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT34726     operator VkExportMetalCommandQueueInfoEXT &() VULKAN_HPP_NOEXCEPT
34727     {
34728       return *reinterpret_cast<VkExportMetalCommandQueueInfoEXT *>( this );
34729     }
34730 
34731 #  if defined( VULKAN_HPP_USE_REFLECT )
34732 #    if 14 <= VULKAN_HPP_CPP_VERSION
34733     auto
34734 #    else
34735     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Queue const &, MTLCommandQueue_id const &>
34736 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT34737       reflect() const VULKAN_HPP_NOEXCEPT
34738     {
34739       return std::tie( sType, pNext, queue, mtlCommandQueue );
34740     }
34741 #  endif
34742 
34743 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34744     auto operator<=>( ExportMetalCommandQueueInfoEXT const & ) const = default;
34745 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT34746     bool operator==( ExportMetalCommandQueueInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
34747     {
34748 #    if defined( VULKAN_HPP_USE_REFLECT )
34749       return this->reflect() == rhs.reflect();
34750 #    else
34751       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queue == rhs.queue ) && ( mtlCommandQueue == rhs.mtlCommandQueue );
34752 #    endif
34753     }
34754 
operator !=VULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT34755     bool operator!=( ExportMetalCommandQueueInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
34756     {
34757       return !operator==( rhs );
34758     }
34759 #  endif
34760 
34761   public:
34762     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eExportMetalCommandQueueInfoEXT;
34763     const void *                        pNext           = {};
34764     VULKAN_HPP_NAMESPACE::Queue         queue           = {};
34765     MTLCommandQueue_id                  mtlCommandQueue = {};
34766   };
34767 
34768   template <>
34769   struct CppType<StructureType, StructureType::eExportMetalCommandQueueInfoEXT>
34770   {
34771     using Type = ExportMetalCommandQueueInfoEXT;
34772   };
34773 #endif /*VK_USE_PLATFORM_METAL_EXT*/
34774 
34775 #if defined( VK_USE_PLATFORM_METAL_EXT )
34776   struct ExportMetalDeviceInfoEXT
34777   {
34778     using NativeType = VkExportMetalDeviceInfoEXT;
34779 
34780     static const bool                                  allowDuplicate = false;
34781     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMetalDeviceInfoEXT;
34782 
34783 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMetalDeviceInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT34784     VULKAN_HPP_CONSTEXPR ExportMetalDeviceInfoEXT( MTLDevice_id mtlDevice_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
34785       : pNext{ pNext_ }
34786       , mtlDevice{ mtlDevice_ }
34787     {
34788     }
34789 
34790     VULKAN_HPP_CONSTEXPR ExportMetalDeviceInfoEXT( ExportMetalDeviceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34791 
ExportMetalDeviceInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT34792     ExportMetalDeviceInfoEXT( VkExportMetalDeviceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
34793       : ExportMetalDeviceInfoEXT( *reinterpret_cast<ExportMetalDeviceInfoEXT const *>( &rhs ) )
34794     {
34795     }
34796 
34797     ExportMetalDeviceInfoEXT & operator=( ExportMetalDeviceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34798 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34799 
operator =VULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT34800     ExportMetalDeviceInfoEXT & operator=( VkExportMetalDeviceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
34801     {
34802       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT const *>( &rhs );
34803       return *this;
34804     }
34805 
34806 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT34807     VULKAN_HPP_CONSTEXPR_14 ExportMetalDeviceInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
34808     {
34809       pNext = pNext_;
34810       return *this;
34811     }
34812 
setMtlDeviceVULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT34813     VULKAN_HPP_CONSTEXPR_14 ExportMetalDeviceInfoEXT & setMtlDevice( MTLDevice_id mtlDevice_ ) VULKAN_HPP_NOEXCEPT
34814     {
34815       mtlDevice = mtlDevice_;
34816       return *this;
34817     }
34818 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34819 
operator VkExportMetalDeviceInfoEXT const&VULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT34820     operator VkExportMetalDeviceInfoEXT const &() const VULKAN_HPP_NOEXCEPT
34821     {
34822       return *reinterpret_cast<const VkExportMetalDeviceInfoEXT *>( this );
34823     }
34824 
operator VkExportMetalDeviceInfoEXT&VULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT34825     operator VkExportMetalDeviceInfoEXT &() VULKAN_HPP_NOEXCEPT
34826     {
34827       return *reinterpret_cast<VkExportMetalDeviceInfoEXT *>( this );
34828     }
34829 
34830 #  if defined( VULKAN_HPP_USE_REFLECT )
34831 #    if 14 <= VULKAN_HPP_CPP_VERSION
34832     auto
34833 #    else
34834     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, MTLDevice_id const &>
34835 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT34836       reflect() const VULKAN_HPP_NOEXCEPT
34837     {
34838       return std::tie( sType, pNext, mtlDevice );
34839     }
34840 #  endif
34841 
34842 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34843     auto operator<=>( ExportMetalDeviceInfoEXT const & ) const = default;
34844 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT34845     bool operator==( ExportMetalDeviceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
34846     {
34847 #    if defined( VULKAN_HPP_USE_REFLECT )
34848       return this->reflect() == rhs.reflect();
34849 #    else
34850       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mtlDevice == rhs.mtlDevice );
34851 #    endif
34852     }
34853 
operator !=VULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT34854     bool operator!=( ExportMetalDeviceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
34855     {
34856       return !operator==( rhs );
34857     }
34858 #  endif
34859 
34860   public:
34861     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eExportMetalDeviceInfoEXT;
34862     const void *                        pNext     = {};
34863     MTLDevice_id                        mtlDevice = {};
34864   };
34865 
34866   template <>
34867   struct CppType<StructureType, StructureType::eExportMetalDeviceInfoEXT>
34868   {
34869     using Type = ExportMetalDeviceInfoEXT;
34870   };
34871 #endif /*VK_USE_PLATFORM_METAL_EXT*/
34872 
34873 #if defined( VK_USE_PLATFORM_METAL_EXT )
34874   struct ExportMetalIOSurfaceInfoEXT
34875   {
34876     using NativeType = VkExportMetalIOSurfaceInfoEXT;
34877 
34878     static const bool                                  allowDuplicate = true;
34879     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMetalIoSurfaceInfoEXT;
34880 
34881 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
34882     VULKAN_HPP_CONSTEXPR
ExportMetalIOSurfaceInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT34883       ExportMetalIOSurfaceInfoEXT( VULKAN_HPP_NAMESPACE::Image image_ = {}, IOSurfaceRef ioSurface_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
34884       : pNext{ pNext_ }
34885       , image{ image_ }
34886       , ioSurface{ ioSurface_ }
34887     {
34888     }
34889 
34890     VULKAN_HPP_CONSTEXPR ExportMetalIOSurfaceInfoEXT( ExportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34891 
ExportMetalIOSurfaceInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT34892     ExportMetalIOSurfaceInfoEXT( VkExportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
34893       : ExportMetalIOSurfaceInfoEXT( *reinterpret_cast<ExportMetalIOSurfaceInfoEXT const *>( &rhs ) )
34894     {
34895     }
34896 
34897     ExportMetalIOSurfaceInfoEXT & operator=( ExportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34898 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34899 
operator =VULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT34900     ExportMetalIOSurfaceInfoEXT & operator=( VkExportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
34901     {
34902       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT const *>( &rhs );
34903       return *this;
34904     }
34905 
34906 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT34907     VULKAN_HPP_CONSTEXPR_14 ExportMetalIOSurfaceInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
34908     {
34909       pNext = pNext_;
34910       return *this;
34911     }
34912 
setImageVULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT34913     VULKAN_HPP_CONSTEXPR_14 ExportMetalIOSurfaceInfoEXT & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
34914     {
34915       image = image_;
34916       return *this;
34917     }
34918 
setIoSurfaceVULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT34919     VULKAN_HPP_CONSTEXPR_14 ExportMetalIOSurfaceInfoEXT & setIoSurface( IOSurfaceRef ioSurface_ ) VULKAN_HPP_NOEXCEPT
34920     {
34921       ioSurface = ioSurface_;
34922       return *this;
34923     }
34924 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34925 
operator VkExportMetalIOSurfaceInfoEXT const&VULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT34926     operator VkExportMetalIOSurfaceInfoEXT const &() const VULKAN_HPP_NOEXCEPT
34927     {
34928       return *reinterpret_cast<const VkExportMetalIOSurfaceInfoEXT *>( this );
34929     }
34930 
operator VkExportMetalIOSurfaceInfoEXT&VULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT34931     operator VkExportMetalIOSurfaceInfoEXT &() VULKAN_HPP_NOEXCEPT
34932     {
34933       return *reinterpret_cast<VkExportMetalIOSurfaceInfoEXT *>( this );
34934     }
34935 
34936 #  if defined( VULKAN_HPP_USE_REFLECT )
34937 #    if 14 <= VULKAN_HPP_CPP_VERSION
34938     auto
34939 #    else
34940     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Image const &, IOSurfaceRef const &>
34941 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT34942       reflect() const VULKAN_HPP_NOEXCEPT
34943     {
34944       return std::tie( sType, pNext, image, ioSurface );
34945     }
34946 #  endif
34947 
34948 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
34949     auto operator<=>( ExportMetalIOSurfaceInfoEXT const & ) const = default;
34950 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT34951     bool operator==( ExportMetalIOSurfaceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
34952     {
34953 #    if defined( VULKAN_HPP_USE_REFLECT )
34954       return this->reflect() == rhs.reflect();
34955 #    else
34956       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( ioSurface == rhs.ioSurface );
34957 #    endif
34958     }
34959 
operator !=VULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT34960     bool operator!=( ExportMetalIOSurfaceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
34961     {
34962       return !operator==( rhs );
34963     }
34964 #  endif
34965 
34966   public:
34967     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eExportMetalIoSurfaceInfoEXT;
34968     const void *                        pNext     = {};
34969     VULKAN_HPP_NAMESPACE::Image         image     = {};
34970     IOSurfaceRef                        ioSurface = {};
34971   };
34972 
34973   template <>
34974   struct CppType<StructureType, StructureType::eExportMetalIoSurfaceInfoEXT>
34975   {
34976     using Type = ExportMetalIOSurfaceInfoEXT;
34977   };
34978 #endif /*VK_USE_PLATFORM_METAL_EXT*/
34979 
34980 #if defined( VK_USE_PLATFORM_METAL_EXT )
34981   struct ExportMetalObjectCreateInfoEXT
34982   {
34983     using NativeType = VkExportMetalObjectCreateInfoEXT;
34984 
34985     static const bool                                  allowDuplicate = true;
34986     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMetalObjectCreateInfoEXT;
34987 
34988 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMetalObjectCreateInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT34989     VULKAN_HPP_CONSTEXPR ExportMetalObjectCreateInfoEXT(
34990       VULKAN_HPP_NAMESPACE::ExportMetalObjectTypeFlagBitsEXT exportObjectType_ = VULKAN_HPP_NAMESPACE::ExportMetalObjectTypeFlagBitsEXT::eMetalDevice,
34991       const void *                                           pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
34992       : pNext{ pNext_ }
34993       , exportObjectType{ exportObjectType_ }
34994     {
34995     }
34996 
34997     VULKAN_HPP_CONSTEXPR ExportMetalObjectCreateInfoEXT( ExportMetalObjectCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34998 
ExportMetalObjectCreateInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT34999     ExportMetalObjectCreateInfoEXT( VkExportMetalObjectCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35000       : ExportMetalObjectCreateInfoEXT( *reinterpret_cast<ExportMetalObjectCreateInfoEXT const *>( &rhs ) )
35001     {
35002     }
35003 
35004     ExportMetalObjectCreateInfoEXT & operator=( ExportMetalObjectCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35005 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35006 
operator =VULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT35007     ExportMetalObjectCreateInfoEXT & operator=( VkExportMetalObjectCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35008     {
35009       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT const *>( &rhs );
35010       return *this;
35011     }
35012 
35013 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT35014     VULKAN_HPP_CONSTEXPR_14 ExportMetalObjectCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35015     {
35016       pNext = pNext_;
35017       return *this;
35018     }
35019 
35020     VULKAN_HPP_CONSTEXPR_14 ExportMetalObjectCreateInfoEXT &
setExportObjectTypeVULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT35021       setExportObjectType( VULKAN_HPP_NAMESPACE::ExportMetalObjectTypeFlagBitsEXT exportObjectType_ ) VULKAN_HPP_NOEXCEPT
35022     {
35023       exportObjectType = exportObjectType_;
35024       return *this;
35025     }
35026 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35027 
operator VkExportMetalObjectCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT35028     operator VkExportMetalObjectCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
35029     {
35030       return *reinterpret_cast<const VkExportMetalObjectCreateInfoEXT *>( this );
35031     }
35032 
operator VkExportMetalObjectCreateInfoEXT&VULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT35033     operator VkExportMetalObjectCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
35034     {
35035       return *reinterpret_cast<VkExportMetalObjectCreateInfoEXT *>( this );
35036     }
35037 
35038 #  if defined( VULKAN_HPP_USE_REFLECT )
35039 #    if 14 <= VULKAN_HPP_CPP_VERSION
35040     auto
35041 #    else
35042     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExportMetalObjectTypeFlagBitsEXT const &>
35043 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT35044       reflect() const VULKAN_HPP_NOEXCEPT
35045     {
35046       return std::tie( sType, pNext, exportObjectType );
35047     }
35048 #  endif
35049 
35050 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35051     auto operator<=>( ExportMetalObjectCreateInfoEXT const & ) const = default;
35052 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT35053     bool operator==( ExportMetalObjectCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35054     {
35055 #    if defined( VULKAN_HPP_USE_REFLECT )
35056       return this->reflect() == rhs.reflect();
35057 #    else
35058       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( exportObjectType == rhs.exportObjectType );
35059 #    endif
35060     }
35061 
operator !=VULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT35062     bool operator!=( ExportMetalObjectCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35063     {
35064       return !operator==( rhs );
35065     }
35066 #  endif
35067 
35068   public:
35069     VULKAN_HPP_NAMESPACE::StructureType                    sType            = StructureType::eExportMetalObjectCreateInfoEXT;
35070     const void *                                           pNext            = {};
35071     VULKAN_HPP_NAMESPACE::ExportMetalObjectTypeFlagBitsEXT exportObjectType = VULKAN_HPP_NAMESPACE::ExportMetalObjectTypeFlagBitsEXT::eMetalDevice;
35072   };
35073 
35074   template <>
35075   struct CppType<StructureType, StructureType::eExportMetalObjectCreateInfoEXT>
35076   {
35077     using Type = ExportMetalObjectCreateInfoEXT;
35078   };
35079 #endif /*VK_USE_PLATFORM_METAL_EXT*/
35080 
35081 #if defined( VK_USE_PLATFORM_METAL_EXT )
35082   struct ExportMetalObjectsInfoEXT
35083   {
35084     using NativeType = VkExportMetalObjectsInfoEXT;
35085 
35086     static const bool                                  allowDuplicate = false;
35087     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMetalObjectsInfoEXT;
35088 
35089 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMetalObjectsInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT35090     VULKAN_HPP_CONSTEXPR ExportMetalObjectsInfoEXT( const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT : pNext{ pNext_ } {}
35091 
35092     VULKAN_HPP_CONSTEXPR ExportMetalObjectsInfoEXT( ExportMetalObjectsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35093 
ExportMetalObjectsInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT35094     ExportMetalObjectsInfoEXT( VkExportMetalObjectsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35095       : ExportMetalObjectsInfoEXT( *reinterpret_cast<ExportMetalObjectsInfoEXT const *>( &rhs ) )
35096     {
35097     }
35098 
35099     ExportMetalObjectsInfoEXT & operator=( ExportMetalObjectsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35100 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35101 
operator =VULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT35102     ExportMetalObjectsInfoEXT & operator=( VkExportMetalObjectsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35103     {
35104       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT const *>( &rhs );
35105       return *this;
35106     }
35107 
35108 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT35109     VULKAN_HPP_CONSTEXPR_14 ExportMetalObjectsInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35110     {
35111       pNext = pNext_;
35112       return *this;
35113     }
35114 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35115 
operator VkExportMetalObjectsInfoEXT const&VULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT35116     operator VkExportMetalObjectsInfoEXT const &() const VULKAN_HPP_NOEXCEPT
35117     {
35118       return *reinterpret_cast<const VkExportMetalObjectsInfoEXT *>( this );
35119     }
35120 
operator VkExportMetalObjectsInfoEXT&VULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT35121     operator VkExportMetalObjectsInfoEXT &() VULKAN_HPP_NOEXCEPT
35122     {
35123       return *reinterpret_cast<VkExportMetalObjectsInfoEXT *>( this );
35124     }
35125 
35126 #  if defined( VULKAN_HPP_USE_REFLECT )
35127 #    if 14 <= VULKAN_HPP_CPP_VERSION
35128     auto
35129 #    else
35130     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &>
35131 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT35132       reflect() const VULKAN_HPP_NOEXCEPT
35133     {
35134       return std::tie( sType, pNext );
35135     }
35136 #  endif
35137 
35138 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35139     auto operator<=>( ExportMetalObjectsInfoEXT const & ) const = default;
35140 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT35141     bool operator==( ExportMetalObjectsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35142     {
35143 #    if defined( VULKAN_HPP_USE_REFLECT )
35144       return this->reflect() == rhs.reflect();
35145 #    else
35146       return ( sType == rhs.sType ) && ( pNext == rhs.pNext );
35147 #    endif
35148     }
35149 
operator !=VULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT35150     bool operator!=( ExportMetalObjectsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35151     {
35152       return !operator==( rhs );
35153     }
35154 #  endif
35155 
35156   public:
35157     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportMetalObjectsInfoEXT;
35158     const void *                        pNext = {};
35159   };
35160 
35161   template <>
35162   struct CppType<StructureType, StructureType::eExportMetalObjectsInfoEXT>
35163   {
35164     using Type = ExportMetalObjectsInfoEXT;
35165   };
35166 #endif /*VK_USE_PLATFORM_METAL_EXT*/
35167 
35168 #if defined( VK_USE_PLATFORM_METAL_EXT )
35169   struct ExportMetalSharedEventInfoEXT
35170   {
35171     using NativeType = VkExportMetalSharedEventInfoEXT;
35172 
35173     static const bool                                  allowDuplicate = true;
35174     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMetalSharedEventInfoEXT;
35175 
35176 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMetalSharedEventInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35177     VULKAN_HPP_CONSTEXPR ExportMetalSharedEventInfoEXT( VULKAN_HPP_NAMESPACE::Semaphore semaphore_      = {},
35178                                                         VULKAN_HPP_NAMESPACE::Event     event_          = {},
35179                                                         MTLSharedEvent_id               mtlSharedEvent_ = {},
35180                                                         const void *                    pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
35181       : pNext{ pNext_ }
35182       , semaphore{ semaphore_ }
35183       , event{ event_ }
35184       , mtlSharedEvent{ mtlSharedEvent_ }
35185     {
35186     }
35187 
35188     VULKAN_HPP_CONSTEXPR ExportMetalSharedEventInfoEXT( ExportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35189 
ExportMetalSharedEventInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35190     ExportMetalSharedEventInfoEXT( VkExportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35191       : ExportMetalSharedEventInfoEXT( *reinterpret_cast<ExportMetalSharedEventInfoEXT const *>( &rhs ) )
35192     {
35193     }
35194 
35195     ExportMetalSharedEventInfoEXT & operator=( ExportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35196 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35197 
operator =VULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35198     ExportMetalSharedEventInfoEXT & operator=( VkExportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35199     {
35200       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT const *>( &rhs );
35201       return *this;
35202     }
35203 
35204 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35205     VULKAN_HPP_CONSTEXPR_14 ExportMetalSharedEventInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35206     {
35207       pNext = pNext_;
35208       return *this;
35209     }
35210 
setSemaphoreVULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35211     VULKAN_HPP_CONSTEXPR_14 ExportMetalSharedEventInfoEXT & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
35212     {
35213       semaphore = semaphore_;
35214       return *this;
35215     }
35216 
setEventVULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35217     VULKAN_HPP_CONSTEXPR_14 ExportMetalSharedEventInfoEXT & setEvent( VULKAN_HPP_NAMESPACE::Event event_ ) VULKAN_HPP_NOEXCEPT
35218     {
35219       event = event_;
35220       return *this;
35221     }
35222 
setMtlSharedEventVULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35223     VULKAN_HPP_CONSTEXPR_14 ExportMetalSharedEventInfoEXT & setMtlSharedEvent( MTLSharedEvent_id mtlSharedEvent_ ) VULKAN_HPP_NOEXCEPT
35224     {
35225       mtlSharedEvent = mtlSharedEvent_;
35226       return *this;
35227     }
35228 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35229 
operator VkExportMetalSharedEventInfoEXT const&VULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35230     operator VkExportMetalSharedEventInfoEXT const &() const VULKAN_HPP_NOEXCEPT
35231     {
35232       return *reinterpret_cast<const VkExportMetalSharedEventInfoEXT *>( this );
35233     }
35234 
operator VkExportMetalSharedEventInfoEXT&VULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35235     operator VkExportMetalSharedEventInfoEXT &() VULKAN_HPP_NOEXCEPT
35236     {
35237       return *reinterpret_cast<VkExportMetalSharedEventInfoEXT *>( this );
35238     }
35239 
35240 #  if defined( VULKAN_HPP_USE_REFLECT )
35241 #    if 14 <= VULKAN_HPP_CPP_VERSION
35242     auto
35243 #    else
35244     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
35245                const void * const &,
35246                VULKAN_HPP_NAMESPACE::Semaphore const &,
35247                VULKAN_HPP_NAMESPACE::Event const &,
35248                MTLSharedEvent_id const &>
35249 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35250       reflect() const VULKAN_HPP_NOEXCEPT
35251     {
35252       return std::tie( sType, pNext, semaphore, event, mtlSharedEvent );
35253     }
35254 #  endif
35255 
35256 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35257     auto operator<=>( ExportMetalSharedEventInfoEXT const & ) const = default;
35258 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35259     bool operator==( ExportMetalSharedEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35260     {
35261 #    if defined( VULKAN_HPP_USE_REFLECT )
35262       return this->reflect() == rhs.reflect();
35263 #    else
35264       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( event == rhs.event ) &&
35265              ( mtlSharedEvent == rhs.mtlSharedEvent );
35266 #    endif
35267     }
35268 
operator !=VULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT35269     bool operator!=( ExportMetalSharedEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35270     {
35271       return !operator==( rhs );
35272     }
35273 #  endif
35274 
35275   public:
35276     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eExportMetalSharedEventInfoEXT;
35277     const void *                        pNext          = {};
35278     VULKAN_HPP_NAMESPACE::Semaphore     semaphore      = {};
35279     VULKAN_HPP_NAMESPACE::Event         event          = {};
35280     MTLSharedEvent_id                   mtlSharedEvent = {};
35281   };
35282 
35283   template <>
35284   struct CppType<StructureType, StructureType::eExportMetalSharedEventInfoEXT>
35285   {
35286     using Type = ExportMetalSharedEventInfoEXT;
35287   };
35288 #endif /*VK_USE_PLATFORM_METAL_EXT*/
35289 
35290 #if defined( VK_USE_PLATFORM_METAL_EXT )
35291   struct ExportMetalTextureInfoEXT
35292   {
35293     using NativeType = VkExportMetalTextureInfoEXT;
35294 
35295     static const bool                                  allowDuplicate = true;
35296     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportMetalTextureInfoEXT;
35297 
35298 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMetalTextureInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35299     VULKAN_HPP_CONSTEXPR ExportMetalTextureInfoEXT( VULKAN_HPP_NAMESPACE::Image               image_      = {},
35300                                                     VULKAN_HPP_NAMESPACE::ImageView           imageView_  = {},
35301                                                     VULKAN_HPP_NAMESPACE::BufferView          bufferView_ = {},
35302                                                     VULKAN_HPP_NAMESPACE::ImageAspectFlagBits plane_      = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor,
35303                                                     MTLTexture_id                             mtlTexture_ = {},
35304                                                     const void *                              pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
35305       : pNext{ pNext_ }
35306       , image{ image_ }
35307       , imageView{ imageView_ }
35308       , bufferView{ bufferView_ }
35309       , plane{ plane_ }
35310       , mtlTexture{ mtlTexture_ }
35311     {
35312     }
35313 
35314     VULKAN_HPP_CONSTEXPR ExportMetalTextureInfoEXT( ExportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35315 
ExportMetalTextureInfoEXTVULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35316     ExportMetalTextureInfoEXT( VkExportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35317       : ExportMetalTextureInfoEXT( *reinterpret_cast<ExportMetalTextureInfoEXT const *>( &rhs ) )
35318     {
35319     }
35320 
35321     ExportMetalTextureInfoEXT & operator=( ExportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35322 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35323 
operator =VULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35324     ExportMetalTextureInfoEXT & operator=( VkExportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35325     {
35326       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT const *>( &rhs );
35327       return *this;
35328     }
35329 
35330 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35331     VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35332     {
35333       pNext = pNext_;
35334       return *this;
35335     }
35336 
setImageVULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35337     VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
35338     {
35339       image = image_;
35340       return *this;
35341     }
35342 
setImageViewVULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35343     VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT & setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT
35344     {
35345       imageView = imageView_;
35346       return *this;
35347     }
35348 
setBufferViewVULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35349     VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT & setBufferView( VULKAN_HPP_NAMESPACE::BufferView bufferView_ ) VULKAN_HPP_NOEXCEPT
35350     {
35351       bufferView = bufferView_;
35352       return *this;
35353     }
35354 
setPlaneVULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35355     VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT & setPlane( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits plane_ ) VULKAN_HPP_NOEXCEPT
35356     {
35357       plane = plane_;
35358       return *this;
35359     }
35360 
setMtlTextureVULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35361     VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT & setMtlTexture( MTLTexture_id mtlTexture_ ) VULKAN_HPP_NOEXCEPT
35362     {
35363       mtlTexture = mtlTexture_;
35364       return *this;
35365     }
35366 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35367 
operator VkExportMetalTextureInfoEXT const&VULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35368     operator VkExportMetalTextureInfoEXT const &() const VULKAN_HPP_NOEXCEPT
35369     {
35370       return *reinterpret_cast<const VkExportMetalTextureInfoEXT *>( this );
35371     }
35372 
operator VkExportMetalTextureInfoEXT&VULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35373     operator VkExportMetalTextureInfoEXT &() VULKAN_HPP_NOEXCEPT
35374     {
35375       return *reinterpret_cast<VkExportMetalTextureInfoEXT *>( this );
35376     }
35377 
35378 #  if defined( VULKAN_HPP_USE_REFLECT )
35379 #    if 14 <= VULKAN_HPP_CPP_VERSION
35380     auto
35381 #    else
35382     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
35383                const void * const &,
35384                VULKAN_HPP_NAMESPACE::Image const &,
35385                VULKAN_HPP_NAMESPACE::ImageView const &,
35386                VULKAN_HPP_NAMESPACE::BufferView const &,
35387                VULKAN_HPP_NAMESPACE::ImageAspectFlagBits const &,
35388                MTLTexture_id const &>
35389 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35390       reflect() const VULKAN_HPP_NOEXCEPT
35391     {
35392       return std::tie( sType, pNext, image, imageView, bufferView, plane, mtlTexture );
35393     }
35394 #  endif
35395 
35396 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35397     auto operator<=>( ExportMetalTextureInfoEXT const & ) const = default;
35398 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35399     bool operator==( ExportMetalTextureInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35400     {
35401 #    if defined( VULKAN_HPP_USE_REFLECT )
35402       return this->reflect() == rhs.reflect();
35403 #    else
35404       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( imageView == rhs.imageView ) && ( bufferView == rhs.bufferView ) &&
35405              ( plane == rhs.plane ) && ( mtlTexture == rhs.mtlTexture );
35406 #    endif
35407     }
35408 
operator !=VULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT35409     bool operator!=( ExportMetalTextureInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35410     {
35411       return !operator==( rhs );
35412     }
35413 #  endif
35414 
35415   public:
35416     VULKAN_HPP_NAMESPACE::StructureType       sType      = StructureType::eExportMetalTextureInfoEXT;
35417     const void *                              pNext      = {};
35418     VULKAN_HPP_NAMESPACE::Image               image      = {};
35419     VULKAN_HPP_NAMESPACE::ImageView           imageView  = {};
35420     VULKAN_HPP_NAMESPACE::BufferView          bufferView = {};
35421     VULKAN_HPP_NAMESPACE::ImageAspectFlagBits plane      = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor;
35422     MTLTexture_id                             mtlTexture = {};
35423   };
35424 
35425   template <>
35426   struct CppType<StructureType, StructureType::eExportMetalTextureInfoEXT>
35427   {
35428     using Type = ExportMetalTextureInfoEXT;
35429   };
35430 #endif /*VK_USE_PLATFORM_METAL_EXT*/
35431 
35432   struct ExportSemaphoreCreateInfo
35433   {
35434     using NativeType = VkExportSemaphoreCreateInfo;
35435 
35436     static const bool                                  allowDuplicate = false;
35437     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportSemaphoreCreateInfo;
35438 
35439 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportSemaphoreCreateInfoVULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo35440     VULKAN_HPP_CONSTEXPR ExportSemaphoreCreateInfo( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags handleTypes_ = {},
35441                                                     const void *                                           pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
35442       : pNext{ pNext_ }
35443       , handleTypes{ handleTypes_ }
35444     {
35445     }
35446 
35447     VULKAN_HPP_CONSTEXPR ExportSemaphoreCreateInfo( ExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35448 
ExportSemaphoreCreateInfoVULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo35449     ExportSemaphoreCreateInfo( VkExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
35450       : ExportSemaphoreCreateInfo( *reinterpret_cast<ExportSemaphoreCreateInfo const *>( &rhs ) )
35451     {
35452     }
35453 
35454     ExportSemaphoreCreateInfo & operator=( ExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35455 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35456 
operator =VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo35457     ExportSemaphoreCreateInfo & operator=( VkExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
35458     {
35459       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo const *>( &rhs );
35460       return *this;
35461     }
35462 
35463 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo35464     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35465     {
35466       pNext = pNext_;
35467       return *this;
35468     }
35469 
35470     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreCreateInfo &
setHandleTypesVULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo35471       setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT
35472     {
35473       handleTypes = handleTypes_;
35474       return *this;
35475     }
35476 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35477 
operator VkExportSemaphoreCreateInfo const&VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo35478     operator VkExportSemaphoreCreateInfo const &() const VULKAN_HPP_NOEXCEPT
35479     {
35480       return *reinterpret_cast<const VkExportSemaphoreCreateInfo *>( this );
35481     }
35482 
operator VkExportSemaphoreCreateInfo&VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo35483     operator VkExportSemaphoreCreateInfo &() VULKAN_HPP_NOEXCEPT
35484     {
35485       return *reinterpret_cast<VkExportSemaphoreCreateInfo *>( this );
35486     }
35487 
35488 #if defined( VULKAN_HPP_USE_REFLECT )
35489 #  if 14 <= VULKAN_HPP_CPP_VERSION
35490     auto
35491 #  else
35492     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags const &>
35493 #  endif
reflectVULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo35494       reflect() const VULKAN_HPP_NOEXCEPT
35495     {
35496       return std::tie( sType, pNext, handleTypes );
35497     }
35498 #endif
35499 
35500 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35501     auto operator<=>( ExportSemaphoreCreateInfo const & ) const = default;
35502 #else
operator ==VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo35503     bool operator==( ExportSemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
35504     {
35505 #  if defined( VULKAN_HPP_USE_REFLECT )
35506       return this->reflect() == rhs.reflect();
35507 #  else
35508       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes );
35509 #  endif
35510     }
35511 
operator !=VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo35512     bool operator!=( ExportSemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
35513     {
35514       return !operator==( rhs );
35515     }
35516 #endif
35517 
35518   public:
35519     VULKAN_HPP_NAMESPACE::StructureType                    sType       = StructureType::eExportSemaphoreCreateInfo;
35520     const void *                                           pNext       = {};
35521     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags handleTypes = {};
35522   };
35523 
35524   template <>
35525   struct CppType<StructureType, StructureType::eExportSemaphoreCreateInfo>
35526   {
35527     using Type = ExportSemaphoreCreateInfo;
35528   };
35529 
35530   using ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo;
35531 
35532 #if defined( VK_USE_PLATFORM_WIN32_KHR )
35533   struct ExportSemaphoreWin32HandleInfoKHR
35534   {
35535     using NativeType = VkExportSemaphoreWin32HandleInfoKHR;
35536 
35537     static const bool                                  allowDuplicate = false;
35538     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExportSemaphoreWin32HandleInfoKHR;
35539 
35540 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportSemaphoreWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35541     VULKAN_HPP_CONSTEXPR ExportSemaphoreWin32HandleInfoKHR( const SECURITY_ATTRIBUTES * pAttributes_ = {},
35542                                                             DWORD                       dwAccess_    = {},
35543                                                             LPCWSTR                     name_        = {},
35544                                                             const void *                pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
35545       : pNext{ pNext_ }
35546       , pAttributes{ pAttributes_ }
35547       , dwAccess{ dwAccess_ }
35548       , name{ name_ }
35549     {
35550     }
35551 
35552     VULKAN_HPP_CONSTEXPR ExportSemaphoreWin32HandleInfoKHR( ExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35553 
ExportSemaphoreWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35554     ExportSemaphoreWin32HandleInfoKHR( VkExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
35555       : ExportSemaphoreWin32HandleInfoKHR( *reinterpret_cast<ExportSemaphoreWin32HandleInfoKHR const *>( &rhs ) )
35556     {
35557     }
35558 
35559     ExportSemaphoreWin32HandleInfoKHR & operator=( ExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35560 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35561 
operator =VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35562     ExportSemaphoreWin32HandleInfoKHR & operator=( VkExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
35563     {
35564       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR const *>( &rhs );
35565       return *this;
35566     }
35567 
35568 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35569     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
35570     {
35571       pNext = pNext_;
35572       return *this;
35573     }
35574 
setPAttributesVULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35575     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR & setPAttributes( const SECURITY_ATTRIBUTES * pAttributes_ ) VULKAN_HPP_NOEXCEPT
35576     {
35577       pAttributes = pAttributes_;
35578       return *this;
35579     }
35580 
setDwAccessVULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35581     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR & setDwAccess( DWORD dwAccess_ ) VULKAN_HPP_NOEXCEPT
35582     {
35583       dwAccess = dwAccess_;
35584       return *this;
35585     }
35586 
setNameVULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35587     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT
35588     {
35589       name = name_;
35590       return *this;
35591     }
35592 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35593 
operator VkExportSemaphoreWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35594     operator VkExportSemaphoreWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
35595     {
35596       return *reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHR *>( this );
35597     }
35598 
operator VkExportSemaphoreWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35599     operator VkExportSemaphoreWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
35600     {
35601       return *reinterpret_cast<VkExportSemaphoreWin32HandleInfoKHR *>( this );
35602     }
35603 
35604 #  if defined( VULKAN_HPP_USE_REFLECT )
35605 #    if 14 <= VULKAN_HPP_CPP_VERSION
35606     auto
35607 #    else
35608     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const SECURITY_ATTRIBUTES * const &, DWORD const &, LPCWSTR const &>
35609 #    endif
reflectVULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35610       reflect() const VULKAN_HPP_NOEXCEPT
35611     {
35612       return std::tie( sType, pNext, pAttributes, dwAccess, name );
35613     }
35614 #  endif
35615 
35616 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35617     auto operator<=>( ExportSemaphoreWin32HandleInfoKHR const & ) const = default;
35618 #  else
operator ==VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35619     bool operator==( ExportSemaphoreWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
35620     {
35621 #    if defined( VULKAN_HPP_USE_REFLECT )
35622       return this->reflect() == rhs.reflect();
35623 #    else
35624       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pAttributes == rhs.pAttributes ) && ( dwAccess == rhs.dwAccess ) && ( name == rhs.name );
35625 #    endif
35626     }
35627 
operator !=VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR35628     bool operator!=( ExportSemaphoreWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
35629     {
35630       return !operator==( rhs );
35631     }
35632 #  endif
35633 
35634   public:
35635     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eExportSemaphoreWin32HandleInfoKHR;
35636     const void *                        pNext       = {};
35637     const SECURITY_ATTRIBUTES *         pAttributes = {};
35638     DWORD                               dwAccess    = {};
35639     LPCWSTR                             name        = {};
35640   };
35641 
35642   template <>
35643   struct CppType<StructureType, StructureType::eExportSemaphoreWin32HandleInfoKHR>
35644   {
35645     using Type = ExportSemaphoreWin32HandleInfoKHR;
35646   };
35647 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
35648 
35649   struct ExtensionProperties
35650   {
35651     using NativeType = VkExtensionProperties;
35652 
35653 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExtensionPropertiesVULKAN_HPP_NAMESPACE::ExtensionProperties35654     VULKAN_HPP_CONSTEXPR_14 ExtensionProperties( std::array<char, VK_MAX_EXTENSION_NAME_SIZE> const & extensionName_ = {},
35655                                                  uint32_t                                             specVersion_   = {} ) VULKAN_HPP_NOEXCEPT
35656       : extensionName{ extensionName_ }
35657       , specVersion{ specVersion_ }
35658     {
35659     }
35660 
35661     VULKAN_HPP_CONSTEXPR_14 ExtensionProperties( ExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35662 
ExtensionPropertiesVULKAN_HPP_NAMESPACE::ExtensionProperties35663     ExtensionProperties( VkExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT : ExtensionProperties( *reinterpret_cast<ExtensionProperties const *>( &rhs ) )
35664     {
35665     }
35666 
35667 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ExtensionPropertiesVULKAN_HPP_NAMESPACE::ExtensionProperties35668     ExtensionProperties( std::string const & extensionName_, uint32_t specVersion_ = {} ) : specVersion( specVersion_ )
35669     {
35670       VULKAN_HPP_ASSERT( extensionName_.size() < VK_MAX_EXTENSION_NAME_SIZE );
35671 #    if defined( WIN32 )
35672       strncpy_s( extensionName, VK_MAX_EXTENSION_NAME_SIZE, extensionName_.data(), extensionName_.size() );
35673 #    else
35674       strncpy( extensionName, extensionName_.data(), std::min<size_t>( VK_MAX_EXTENSION_NAME_SIZE, extensionName_.size() ) );
35675 #    endif
35676     }
35677 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
35678 
35679     ExtensionProperties & operator=( ExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35680 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35681 
operator =VULKAN_HPP_NAMESPACE::ExtensionProperties35682     ExtensionProperties & operator=( VkExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT
35683     {
35684       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExtensionProperties const *>( &rhs );
35685       return *this;
35686     }
35687 
operator VkExtensionProperties const&VULKAN_HPP_NAMESPACE::ExtensionProperties35688     operator VkExtensionProperties const &() const VULKAN_HPP_NOEXCEPT
35689     {
35690       return *reinterpret_cast<const VkExtensionProperties *>( this );
35691     }
35692 
operator VkExtensionProperties&VULKAN_HPP_NAMESPACE::ExtensionProperties35693     operator VkExtensionProperties &() VULKAN_HPP_NOEXCEPT
35694     {
35695       return *reinterpret_cast<VkExtensionProperties *>( this );
35696     }
35697 
35698 #if defined( VULKAN_HPP_USE_REFLECT )
35699 #  if 14 <= VULKAN_HPP_CPP_VERSION
35700     auto
35701 #  else
35702     std::tuple<VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> const &, uint32_t const &>
35703 #  endif
reflectVULKAN_HPP_NAMESPACE::ExtensionProperties35704       reflect() const VULKAN_HPP_NOEXCEPT
35705     {
35706       return std::tie( extensionName, specVersion );
35707     }
35708 #endif
35709 
35710 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::ExtensionProperties35711     std::strong_ordering operator<=>( ExtensionProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
35712     {
35713       if ( auto cmp = strcmp( extensionName, rhs.extensionName ); cmp != 0 )
35714         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
35715       if ( auto cmp = specVersion <=> rhs.specVersion; cmp != 0 )
35716         return cmp;
35717 
35718       return std::strong_ordering::equivalent;
35719     }
35720 #endif
35721 
operator ==VULKAN_HPP_NAMESPACE::ExtensionProperties35722     bool operator==( ExtensionProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
35723     {
35724       return ( strcmp( extensionName, rhs.extensionName ) == 0 ) && ( specVersion == rhs.specVersion );
35725     }
35726 
operator !=VULKAN_HPP_NAMESPACE::ExtensionProperties35727     bool operator!=( ExtensionProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
35728     {
35729       return !operator==( rhs );
35730     }
35731 
35732   public:
35733     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> extensionName = {};
35734     uint32_t                                                               specVersion   = {};
35735   };
35736 
35737   struct ExternalMemoryProperties
35738   {
35739     using NativeType = VkExternalMemoryProperties;
35740 
35741 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalMemoryPropertiesVULKAN_HPP_NAMESPACE::ExternalMemoryProperties35742     VULKAN_HPP_CONSTEXPR ExternalMemoryProperties( VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlags    externalMemoryFeatures_        = {},
35743                                                    VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags exportFromImportedHandleTypes_ = {},
35744                                                    VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags compatibleHandleTypes_         = {} ) VULKAN_HPP_NOEXCEPT
35745       : externalMemoryFeatures{ externalMemoryFeatures_ }
35746       , exportFromImportedHandleTypes{ exportFromImportedHandleTypes_ }
35747       , compatibleHandleTypes{ compatibleHandleTypes_ }
35748     {
35749     }
35750 
35751     VULKAN_HPP_CONSTEXPR ExternalMemoryProperties( ExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35752 
ExternalMemoryPropertiesVULKAN_HPP_NAMESPACE::ExternalMemoryProperties35753     ExternalMemoryProperties( VkExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
35754       : ExternalMemoryProperties( *reinterpret_cast<ExternalMemoryProperties const *>( &rhs ) )
35755     {
35756     }
35757 
35758     ExternalMemoryProperties & operator=( ExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35759 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35760 
operator =VULKAN_HPP_NAMESPACE::ExternalMemoryProperties35761     ExternalMemoryProperties & operator=( VkExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
35762     {
35763       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalMemoryProperties const *>( &rhs );
35764       return *this;
35765     }
35766 
operator VkExternalMemoryProperties const&VULKAN_HPP_NAMESPACE::ExternalMemoryProperties35767     operator VkExternalMemoryProperties const &() const VULKAN_HPP_NOEXCEPT
35768     {
35769       return *reinterpret_cast<const VkExternalMemoryProperties *>( this );
35770     }
35771 
operator VkExternalMemoryProperties&VULKAN_HPP_NAMESPACE::ExternalMemoryProperties35772     operator VkExternalMemoryProperties &() VULKAN_HPP_NOEXCEPT
35773     {
35774       return *reinterpret_cast<VkExternalMemoryProperties *>( this );
35775     }
35776 
35777 #if defined( VULKAN_HPP_USE_REFLECT )
35778 #  if 14 <= VULKAN_HPP_CPP_VERSION
35779     auto
35780 #  else
35781     std::tuple<VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlags const &,
35782                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags const &,
35783                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags const &>
35784 #  endif
reflectVULKAN_HPP_NAMESPACE::ExternalMemoryProperties35785       reflect() const VULKAN_HPP_NOEXCEPT
35786     {
35787       return std::tie( externalMemoryFeatures, exportFromImportedHandleTypes, compatibleHandleTypes );
35788     }
35789 #endif
35790 
35791 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35792     auto operator<=>( ExternalMemoryProperties const & ) const = default;
35793 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalMemoryProperties35794     bool operator==( ExternalMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
35795     {
35796 #  if defined( VULKAN_HPP_USE_REFLECT )
35797       return this->reflect() == rhs.reflect();
35798 #  else
35799       return ( externalMemoryFeatures == rhs.externalMemoryFeatures ) && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) &&
35800              ( compatibleHandleTypes == rhs.compatibleHandleTypes );
35801 #  endif
35802     }
35803 
operator !=VULKAN_HPP_NAMESPACE::ExternalMemoryProperties35804     bool operator!=( ExternalMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
35805     {
35806       return !operator==( rhs );
35807     }
35808 #endif
35809 
35810   public:
35811     VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlags    externalMemoryFeatures        = {};
35812     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags exportFromImportedHandleTypes = {};
35813     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags compatibleHandleTypes         = {};
35814   };
35815 
35816   using ExternalMemoryPropertiesKHR = ExternalMemoryProperties;
35817 
35818   struct ExternalBufferProperties
35819   {
35820     using NativeType = VkExternalBufferProperties;
35821 
35822     static const bool                                  allowDuplicate = false;
35823     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalBufferProperties;
35824 
35825 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalBufferPropertiesVULKAN_HPP_NAMESPACE::ExternalBufferProperties35826     VULKAN_HPP_CONSTEXPR ExternalBufferProperties( VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties_ = {},
35827                                                    void *                                         pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
35828       : pNext{ pNext_ }
35829       , externalMemoryProperties{ externalMemoryProperties_ }
35830     {
35831     }
35832 
35833     VULKAN_HPP_CONSTEXPR ExternalBufferProperties( ExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35834 
ExternalBufferPropertiesVULKAN_HPP_NAMESPACE::ExternalBufferProperties35835     ExternalBufferProperties( VkExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT
35836       : ExternalBufferProperties( *reinterpret_cast<ExternalBufferProperties const *>( &rhs ) )
35837     {
35838     }
35839 
35840     ExternalBufferProperties & operator=( ExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35841 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35842 
operator =VULKAN_HPP_NAMESPACE::ExternalBufferProperties35843     ExternalBufferProperties & operator=( VkExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT
35844     {
35845       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalBufferProperties const *>( &rhs );
35846       return *this;
35847     }
35848 
operator VkExternalBufferProperties const&VULKAN_HPP_NAMESPACE::ExternalBufferProperties35849     operator VkExternalBufferProperties const &() const VULKAN_HPP_NOEXCEPT
35850     {
35851       return *reinterpret_cast<const VkExternalBufferProperties *>( this );
35852     }
35853 
operator VkExternalBufferProperties&VULKAN_HPP_NAMESPACE::ExternalBufferProperties35854     operator VkExternalBufferProperties &() VULKAN_HPP_NOEXCEPT
35855     {
35856       return *reinterpret_cast<VkExternalBufferProperties *>( this );
35857     }
35858 
35859 #if defined( VULKAN_HPP_USE_REFLECT )
35860 #  if 14 <= VULKAN_HPP_CPP_VERSION
35861     auto
35862 #  else
35863     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryProperties const &>
35864 #  endif
reflectVULKAN_HPP_NAMESPACE::ExternalBufferProperties35865       reflect() const VULKAN_HPP_NOEXCEPT
35866     {
35867       return std::tie( sType, pNext, externalMemoryProperties );
35868     }
35869 #endif
35870 
35871 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35872     auto operator<=>( ExternalBufferProperties const & ) const = default;
35873 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalBufferProperties35874     bool operator==( ExternalBufferProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
35875     {
35876 #  if defined( VULKAN_HPP_USE_REFLECT )
35877       return this->reflect() == rhs.reflect();
35878 #  else
35879       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalMemoryProperties == rhs.externalMemoryProperties );
35880 #  endif
35881     }
35882 
operator !=VULKAN_HPP_NAMESPACE::ExternalBufferProperties35883     bool operator!=( ExternalBufferProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
35884     {
35885       return !operator==( rhs );
35886     }
35887 #endif
35888 
35889   public:
35890     VULKAN_HPP_NAMESPACE::StructureType            sType                    = StructureType::eExternalBufferProperties;
35891     void *                                         pNext                    = {};
35892     VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties = {};
35893   };
35894 
35895   template <>
35896   struct CppType<StructureType, StructureType::eExternalBufferProperties>
35897   {
35898     using Type = ExternalBufferProperties;
35899   };
35900 
35901   using ExternalBufferPropertiesKHR = ExternalBufferProperties;
35902 
35903   struct ExternalFenceProperties
35904   {
35905     using NativeType = VkExternalFenceProperties;
35906 
35907     static const bool                                  allowDuplicate = false;
35908     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalFenceProperties;
35909 
35910 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalFencePropertiesVULKAN_HPP_NAMESPACE::ExternalFenceProperties35911     VULKAN_HPP_CONSTEXPR ExternalFenceProperties( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags exportFromImportedHandleTypes_ = {},
35912                                                   VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags compatibleHandleTypes_         = {},
35913                                                   VULKAN_HPP_NAMESPACE::ExternalFenceFeatureFlags    externalFenceFeatures_         = {},
35914                                                   void *                                             pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
35915       : pNext{ pNext_ }
35916       , exportFromImportedHandleTypes{ exportFromImportedHandleTypes_ }
35917       , compatibleHandleTypes{ compatibleHandleTypes_ }
35918       , externalFenceFeatures{ externalFenceFeatures_ }
35919     {
35920     }
35921 
35922     VULKAN_HPP_CONSTEXPR ExternalFenceProperties( ExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35923 
ExternalFencePropertiesVULKAN_HPP_NAMESPACE::ExternalFenceProperties35924     ExternalFenceProperties( VkExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
35925       : ExternalFenceProperties( *reinterpret_cast<ExternalFenceProperties const *>( &rhs ) )
35926     {
35927     }
35928 
35929     ExternalFenceProperties & operator=( ExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35930 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35931 
operator =VULKAN_HPP_NAMESPACE::ExternalFenceProperties35932     ExternalFenceProperties & operator=( VkExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
35933     {
35934       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalFenceProperties const *>( &rhs );
35935       return *this;
35936     }
35937 
operator VkExternalFenceProperties const&VULKAN_HPP_NAMESPACE::ExternalFenceProperties35938     operator VkExternalFenceProperties const &() const VULKAN_HPP_NOEXCEPT
35939     {
35940       return *reinterpret_cast<const VkExternalFenceProperties *>( this );
35941     }
35942 
operator VkExternalFenceProperties&VULKAN_HPP_NAMESPACE::ExternalFenceProperties35943     operator VkExternalFenceProperties &() VULKAN_HPP_NOEXCEPT
35944     {
35945       return *reinterpret_cast<VkExternalFenceProperties *>( this );
35946     }
35947 
35948 #if defined( VULKAN_HPP_USE_REFLECT )
35949 #  if 14 <= VULKAN_HPP_CPP_VERSION
35950     auto
35951 #  else
35952     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
35953                void * const &,
35954                VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags const &,
35955                VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags const &,
35956                VULKAN_HPP_NAMESPACE::ExternalFenceFeatureFlags const &>
35957 #  endif
reflectVULKAN_HPP_NAMESPACE::ExternalFenceProperties35958       reflect() const VULKAN_HPP_NOEXCEPT
35959     {
35960       return std::tie( sType, pNext, exportFromImportedHandleTypes, compatibleHandleTypes, externalFenceFeatures );
35961     }
35962 #endif
35963 
35964 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
35965     auto operator<=>( ExternalFenceProperties const & ) const = default;
35966 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalFenceProperties35967     bool operator==( ExternalFenceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
35968     {
35969 #  if defined( VULKAN_HPP_USE_REFLECT )
35970       return this->reflect() == rhs.reflect();
35971 #  else
35972       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) &&
35973              ( compatibleHandleTypes == rhs.compatibleHandleTypes ) && ( externalFenceFeatures == rhs.externalFenceFeatures );
35974 #  endif
35975     }
35976 
operator !=VULKAN_HPP_NAMESPACE::ExternalFenceProperties35977     bool operator!=( ExternalFenceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
35978     {
35979       return !operator==( rhs );
35980     }
35981 #endif
35982 
35983   public:
35984     VULKAN_HPP_NAMESPACE::StructureType                sType                         = StructureType::eExternalFenceProperties;
35985     void *                                             pNext                         = {};
35986     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags exportFromImportedHandleTypes = {};
35987     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags compatibleHandleTypes         = {};
35988     VULKAN_HPP_NAMESPACE::ExternalFenceFeatureFlags    externalFenceFeatures         = {};
35989   };
35990 
35991   template <>
35992   struct CppType<StructureType, StructureType::eExternalFenceProperties>
35993   {
35994     using Type = ExternalFenceProperties;
35995   };
35996 
35997   using ExternalFencePropertiesKHR = ExternalFenceProperties;
35998 
35999 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
36000   struct ExternalFormatANDROID
36001   {
36002     using NativeType = VkExternalFormatANDROID;
36003 
36004     static const bool                                  allowDuplicate = false;
36005     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalFormatANDROID;
36006 
36007 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalFormatANDROIDVULKAN_HPP_NAMESPACE::ExternalFormatANDROID36008     VULKAN_HPP_CONSTEXPR ExternalFormatANDROID( uint64_t externalFormat_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
36009       : pNext{ pNext_ }
36010       , externalFormat{ externalFormat_ }
36011     {
36012     }
36013 
36014     VULKAN_HPP_CONSTEXPR ExternalFormatANDROID( ExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36015 
ExternalFormatANDROIDVULKAN_HPP_NAMESPACE::ExternalFormatANDROID36016     ExternalFormatANDROID( VkExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
36017       : ExternalFormatANDROID( *reinterpret_cast<ExternalFormatANDROID const *>( &rhs ) )
36018     {
36019     }
36020 
36021     ExternalFormatANDROID & operator=( ExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36022 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36023 
operator =VULKAN_HPP_NAMESPACE::ExternalFormatANDROID36024     ExternalFormatANDROID & operator=( VkExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
36025     {
36026       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalFormatANDROID const *>( &rhs );
36027       return *this;
36028     }
36029 
36030 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExternalFormatANDROID36031     VULKAN_HPP_CONSTEXPR_14 ExternalFormatANDROID & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
36032     {
36033       pNext = pNext_;
36034       return *this;
36035     }
36036 
setExternalFormatVULKAN_HPP_NAMESPACE::ExternalFormatANDROID36037     VULKAN_HPP_CONSTEXPR_14 ExternalFormatANDROID & setExternalFormat( uint64_t externalFormat_ ) VULKAN_HPP_NOEXCEPT
36038     {
36039       externalFormat = externalFormat_;
36040       return *this;
36041     }
36042 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36043 
operator VkExternalFormatANDROID const&VULKAN_HPP_NAMESPACE::ExternalFormatANDROID36044     operator VkExternalFormatANDROID const &() const VULKAN_HPP_NOEXCEPT
36045     {
36046       return *reinterpret_cast<const VkExternalFormatANDROID *>( this );
36047     }
36048 
operator VkExternalFormatANDROID&VULKAN_HPP_NAMESPACE::ExternalFormatANDROID36049     operator VkExternalFormatANDROID &() VULKAN_HPP_NOEXCEPT
36050     {
36051       return *reinterpret_cast<VkExternalFormatANDROID *>( this );
36052     }
36053 
36054 #  if defined( VULKAN_HPP_USE_REFLECT )
36055 #    if 14 <= VULKAN_HPP_CPP_VERSION
36056     auto
36057 #    else
36058     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint64_t const &>
36059 #    endif
reflectVULKAN_HPP_NAMESPACE::ExternalFormatANDROID36060       reflect() const VULKAN_HPP_NOEXCEPT
36061     {
36062       return std::tie( sType, pNext, externalFormat );
36063     }
36064 #  endif
36065 
36066 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36067     auto operator<=>( ExternalFormatANDROID const & ) const = default;
36068 #  else
operator ==VULKAN_HPP_NAMESPACE::ExternalFormatANDROID36069     bool operator==( ExternalFormatANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
36070     {
36071 #    if defined( VULKAN_HPP_USE_REFLECT )
36072       return this->reflect() == rhs.reflect();
36073 #    else
36074       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalFormat == rhs.externalFormat );
36075 #    endif
36076     }
36077 
operator !=VULKAN_HPP_NAMESPACE::ExternalFormatANDROID36078     bool operator!=( ExternalFormatANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
36079     {
36080       return !operator==( rhs );
36081     }
36082 #  endif
36083 
36084   public:
36085     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eExternalFormatANDROID;
36086     void *                              pNext          = {};
36087     uint64_t                            externalFormat = {};
36088   };
36089 
36090   template <>
36091   struct CppType<StructureType, StructureType::eExternalFormatANDROID>
36092   {
36093     using Type = ExternalFormatANDROID;
36094   };
36095 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
36096 
36097 #if defined( VK_USE_PLATFORM_SCREEN_QNX )
36098   struct ExternalFormatQNX
36099   {
36100     using NativeType = VkExternalFormatQNX;
36101 
36102     static const bool                                  allowDuplicate = false;
36103     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalFormatQNX;
36104 
36105 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalFormatQNXVULKAN_HPP_NAMESPACE::ExternalFormatQNX36106     VULKAN_HPP_CONSTEXPR ExternalFormatQNX( uint64_t externalFormat_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
36107       : pNext{ pNext_ }
36108       , externalFormat{ externalFormat_ }
36109     {
36110     }
36111 
36112     VULKAN_HPP_CONSTEXPR ExternalFormatQNX( ExternalFormatQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36113 
ExternalFormatQNXVULKAN_HPP_NAMESPACE::ExternalFormatQNX36114     ExternalFormatQNX( VkExternalFormatQNX const & rhs ) VULKAN_HPP_NOEXCEPT : ExternalFormatQNX( *reinterpret_cast<ExternalFormatQNX const *>( &rhs ) ) {}
36115 
36116     ExternalFormatQNX & operator=( ExternalFormatQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36117 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36118 
operator =VULKAN_HPP_NAMESPACE::ExternalFormatQNX36119     ExternalFormatQNX & operator=( VkExternalFormatQNX const & rhs ) VULKAN_HPP_NOEXCEPT
36120     {
36121       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalFormatQNX const *>( &rhs );
36122       return *this;
36123     }
36124 
36125 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExternalFormatQNX36126     VULKAN_HPP_CONSTEXPR_14 ExternalFormatQNX & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
36127     {
36128       pNext = pNext_;
36129       return *this;
36130     }
36131 
setExternalFormatVULKAN_HPP_NAMESPACE::ExternalFormatQNX36132     VULKAN_HPP_CONSTEXPR_14 ExternalFormatQNX & setExternalFormat( uint64_t externalFormat_ ) VULKAN_HPP_NOEXCEPT
36133     {
36134       externalFormat = externalFormat_;
36135       return *this;
36136     }
36137 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36138 
operator VkExternalFormatQNX const&VULKAN_HPP_NAMESPACE::ExternalFormatQNX36139     operator VkExternalFormatQNX const &() const VULKAN_HPP_NOEXCEPT
36140     {
36141       return *reinterpret_cast<const VkExternalFormatQNX *>( this );
36142     }
36143 
operator VkExternalFormatQNX&VULKAN_HPP_NAMESPACE::ExternalFormatQNX36144     operator VkExternalFormatQNX &() VULKAN_HPP_NOEXCEPT
36145     {
36146       return *reinterpret_cast<VkExternalFormatQNX *>( this );
36147     }
36148 
36149 #  if defined( VULKAN_HPP_USE_REFLECT )
36150 #    if 14 <= VULKAN_HPP_CPP_VERSION
36151     auto
36152 #    else
36153     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint64_t const &>
36154 #    endif
reflectVULKAN_HPP_NAMESPACE::ExternalFormatQNX36155       reflect() const VULKAN_HPP_NOEXCEPT
36156     {
36157       return std::tie( sType, pNext, externalFormat );
36158     }
36159 #  endif
36160 
36161 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36162     auto operator<=>( ExternalFormatQNX const & ) const = default;
36163 #  else
operator ==VULKAN_HPP_NAMESPACE::ExternalFormatQNX36164     bool operator==( ExternalFormatQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
36165     {
36166 #    if defined( VULKAN_HPP_USE_REFLECT )
36167       return this->reflect() == rhs.reflect();
36168 #    else
36169       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalFormat == rhs.externalFormat );
36170 #    endif
36171     }
36172 
operator !=VULKAN_HPP_NAMESPACE::ExternalFormatQNX36173     bool operator!=( ExternalFormatQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
36174     {
36175       return !operator==( rhs );
36176     }
36177 #  endif
36178 
36179   public:
36180     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eExternalFormatQNX;
36181     void *                              pNext          = {};
36182     uint64_t                            externalFormat = {};
36183   };
36184 
36185   template <>
36186   struct CppType<StructureType, StructureType::eExternalFormatQNX>
36187   {
36188     using Type = ExternalFormatQNX;
36189   };
36190 #endif /*VK_USE_PLATFORM_SCREEN_QNX*/
36191 
36192   struct ExternalImageFormatProperties
36193   {
36194     using NativeType = VkExternalImageFormatProperties;
36195 
36196     static const bool                                  allowDuplicate = false;
36197     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalImageFormatProperties;
36198 
36199 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalImageFormatPropertiesVULKAN_HPP_NAMESPACE::ExternalImageFormatProperties36200     VULKAN_HPP_CONSTEXPR ExternalImageFormatProperties( VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties_ = {},
36201                                                         void *                                         pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
36202       : pNext{ pNext_ }
36203       , externalMemoryProperties{ externalMemoryProperties_ }
36204     {
36205     }
36206 
36207     VULKAN_HPP_CONSTEXPR ExternalImageFormatProperties( ExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36208 
ExternalImageFormatPropertiesVULKAN_HPP_NAMESPACE::ExternalImageFormatProperties36209     ExternalImageFormatProperties( VkExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36210       : ExternalImageFormatProperties( *reinterpret_cast<ExternalImageFormatProperties const *>( &rhs ) )
36211     {
36212     }
36213 
36214     ExternalImageFormatProperties & operator=( ExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36215 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36216 
operator =VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties36217     ExternalImageFormatProperties & operator=( VkExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36218     {
36219       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties const *>( &rhs );
36220       return *this;
36221     }
36222 
operator VkExternalImageFormatProperties const&VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties36223     operator VkExternalImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT
36224     {
36225       return *reinterpret_cast<const VkExternalImageFormatProperties *>( this );
36226     }
36227 
operator VkExternalImageFormatProperties&VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties36228     operator VkExternalImageFormatProperties &() VULKAN_HPP_NOEXCEPT
36229     {
36230       return *reinterpret_cast<VkExternalImageFormatProperties *>( this );
36231     }
36232 
36233 #if defined( VULKAN_HPP_USE_REFLECT )
36234 #  if 14 <= VULKAN_HPP_CPP_VERSION
36235     auto
36236 #  else
36237     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryProperties const &>
36238 #  endif
reflectVULKAN_HPP_NAMESPACE::ExternalImageFormatProperties36239       reflect() const VULKAN_HPP_NOEXCEPT
36240     {
36241       return std::tie( sType, pNext, externalMemoryProperties );
36242     }
36243 #endif
36244 
36245 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36246     auto operator<=>( ExternalImageFormatProperties const & ) const = default;
36247 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties36248     bool operator==( ExternalImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36249     {
36250 #  if defined( VULKAN_HPP_USE_REFLECT )
36251       return this->reflect() == rhs.reflect();
36252 #  else
36253       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalMemoryProperties == rhs.externalMemoryProperties );
36254 #  endif
36255     }
36256 
operator !=VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties36257     bool operator!=( ExternalImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36258     {
36259       return !operator==( rhs );
36260     }
36261 #endif
36262 
36263   public:
36264     VULKAN_HPP_NAMESPACE::StructureType            sType                    = StructureType::eExternalImageFormatProperties;
36265     void *                                         pNext                    = {};
36266     VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties = {};
36267   };
36268 
36269   template <>
36270   struct CppType<StructureType, StructureType::eExternalImageFormatProperties>
36271   {
36272     using Type = ExternalImageFormatProperties;
36273   };
36274 
36275   using ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties;
36276 
36277   struct ImageFormatProperties
36278   {
36279     using NativeType = VkImageFormatProperties;
36280 
36281 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageFormatPropertiesVULKAN_HPP_NAMESPACE::ImageFormatProperties36282     VULKAN_HPP_CONSTEXPR ImageFormatProperties( VULKAN_HPP_NAMESPACE::Extent3D         maxExtent_       = {},
36283                                                 uint32_t                               maxMipLevels_    = {},
36284                                                 uint32_t                               maxArrayLayers_  = {},
36285                                                 VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts_    = {},
36286                                                 VULKAN_HPP_NAMESPACE::DeviceSize       maxResourceSize_ = {} ) VULKAN_HPP_NOEXCEPT
36287       : maxExtent{ maxExtent_ }
36288       , maxMipLevels{ maxMipLevels_ }
36289       , maxArrayLayers{ maxArrayLayers_ }
36290       , sampleCounts{ sampleCounts_ }
36291       , maxResourceSize{ maxResourceSize_ }
36292     {
36293     }
36294 
36295     VULKAN_HPP_CONSTEXPR ImageFormatProperties( ImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36296 
ImageFormatPropertiesVULKAN_HPP_NAMESPACE::ImageFormatProperties36297     ImageFormatProperties( VkImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36298       : ImageFormatProperties( *reinterpret_cast<ImageFormatProperties const *>( &rhs ) )
36299     {
36300     }
36301 
36302     ImageFormatProperties & operator=( ImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36303 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36304 
operator =VULKAN_HPP_NAMESPACE::ImageFormatProperties36305     ImageFormatProperties & operator=( VkImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36306     {
36307       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageFormatProperties const *>( &rhs );
36308       return *this;
36309     }
36310 
operator VkImageFormatProperties const&VULKAN_HPP_NAMESPACE::ImageFormatProperties36311     operator VkImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT
36312     {
36313       return *reinterpret_cast<const VkImageFormatProperties *>( this );
36314     }
36315 
operator VkImageFormatProperties&VULKAN_HPP_NAMESPACE::ImageFormatProperties36316     operator VkImageFormatProperties &() VULKAN_HPP_NOEXCEPT
36317     {
36318       return *reinterpret_cast<VkImageFormatProperties *>( this );
36319     }
36320 
36321 #if defined( VULKAN_HPP_USE_REFLECT )
36322 #  if 14 <= VULKAN_HPP_CPP_VERSION
36323     auto
36324 #  else
36325     std::tuple<VULKAN_HPP_NAMESPACE::Extent3D const &,
36326                uint32_t const &,
36327                uint32_t const &,
36328                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
36329                VULKAN_HPP_NAMESPACE::DeviceSize const &>
36330 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageFormatProperties36331       reflect() const VULKAN_HPP_NOEXCEPT
36332     {
36333       return std::tie( maxExtent, maxMipLevels, maxArrayLayers, sampleCounts, maxResourceSize );
36334     }
36335 #endif
36336 
36337 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36338     auto operator<=>( ImageFormatProperties const & ) const = default;
36339 #else
operator ==VULKAN_HPP_NAMESPACE::ImageFormatProperties36340     bool operator==( ImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36341     {
36342 #  if defined( VULKAN_HPP_USE_REFLECT )
36343       return this->reflect() == rhs.reflect();
36344 #  else
36345       return ( maxExtent == rhs.maxExtent ) && ( maxMipLevels == rhs.maxMipLevels ) && ( maxArrayLayers == rhs.maxArrayLayers ) &&
36346              ( sampleCounts == rhs.sampleCounts ) && ( maxResourceSize == rhs.maxResourceSize );
36347 #  endif
36348     }
36349 
operator !=VULKAN_HPP_NAMESPACE::ImageFormatProperties36350     bool operator!=( ImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36351     {
36352       return !operator==( rhs );
36353     }
36354 #endif
36355 
36356   public:
36357     VULKAN_HPP_NAMESPACE::Extent3D         maxExtent       = {};
36358     uint32_t                               maxMipLevels    = {};
36359     uint32_t                               maxArrayLayers  = {};
36360     VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts    = {};
36361     VULKAN_HPP_NAMESPACE::DeviceSize       maxResourceSize = {};
36362   };
36363 
36364   struct ExternalImageFormatPropertiesNV
36365   {
36366     using NativeType = VkExternalImageFormatPropertiesNV;
36367 
36368 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
36369     VULKAN_HPP_CONSTEXPR
ExternalImageFormatPropertiesNVVULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV36370       ExternalImageFormatPropertiesNV( VULKAN_HPP_NAMESPACE::ImageFormatProperties           imageFormatProperties_         = {},
36371                                        VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlagsNV    externalMemoryFeatures_        = {},
36372                                        VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes_ = {},
36373                                        VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes_         = {} ) VULKAN_HPP_NOEXCEPT
36374       : imageFormatProperties{ imageFormatProperties_ }
36375       , externalMemoryFeatures{ externalMemoryFeatures_ }
36376       , exportFromImportedHandleTypes{ exportFromImportedHandleTypes_ }
36377       , compatibleHandleTypes{ compatibleHandleTypes_ }
36378     {
36379     }
36380 
36381     VULKAN_HPP_CONSTEXPR ExternalImageFormatPropertiesNV( ExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36382 
ExternalImageFormatPropertiesNVVULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV36383     ExternalImageFormatPropertiesNV( VkExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
36384       : ExternalImageFormatPropertiesNV( *reinterpret_cast<ExternalImageFormatPropertiesNV const *>( &rhs ) )
36385     {
36386     }
36387 
36388     ExternalImageFormatPropertiesNV & operator=( ExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36389 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36390 
operator =VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV36391     ExternalImageFormatPropertiesNV & operator=( VkExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
36392     {
36393       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV const *>( &rhs );
36394       return *this;
36395     }
36396 
operator VkExternalImageFormatPropertiesNV const&VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV36397     operator VkExternalImageFormatPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
36398     {
36399       return *reinterpret_cast<const VkExternalImageFormatPropertiesNV *>( this );
36400     }
36401 
operator VkExternalImageFormatPropertiesNV&VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV36402     operator VkExternalImageFormatPropertiesNV &() VULKAN_HPP_NOEXCEPT
36403     {
36404       return *reinterpret_cast<VkExternalImageFormatPropertiesNV *>( this );
36405     }
36406 
36407 #if defined( VULKAN_HPP_USE_REFLECT )
36408 #  if 14 <= VULKAN_HPP_CPP_VERSION
36409     auto
36410 #  else
36411     std::tuple<VULKAN_HPP_NAMESPACE::ImageFormatProperties const &,
36412                VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlagsNV const &,
36413                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV const &,
36414                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV const &>
36415 #  endif
reflectVULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV36416       reflect() const VULKAN_HPP_NOEXCEPT
36417     {
36418       return std::tie( imageFormatProperties, externalMemoryFeatures, exportFromImportedHandleTypes, compatibleHandleTypes );
36419     }
36420 #endif
36421 
36422 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36423     auto operator<=>( ExternalImageFormatPropertiesNV const & ) const = default;
36424 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV36425     bool operator==( ExternalImageFormatPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
36426     {
36427 #  if defined( VULKAN_HPP_USE_REFLECT )
36428       return this->reflect() == rhs.reflect();
36429 #  else
36430       return ( imageFormatProperties == rhs.imageFormatProperties ) && ( externalMemoryFeatures == rhs.externalMemoryFeatures ) &&
36431              ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
36432 #  endif
36433     }
36434 
operator !=VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV36435     bool operator!=( ExternalImageFormatPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
36436     {
36437       return !operator==( rhs );
36438     }
36439 #endif
36440 
36441   public:
36442     VULKAN_HPP_NAMESPACE::ImageFormatProperties           imageFormatProperties         = {};
36443     VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlagsNV    externalMemoryFeatures        = {};
36444     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes = {};
36445     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes         = {};
36446   };
36447 
36448   struct ExternalMemoryAcquireUnmodifiedEXT
36449   {
36450     using NativeType = VkExternalMemoryAcquireUnmodifiedEXT;
36451 
36452     static const bool                                  allowDuplicate = false;
36453     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalMemoryAcquireUnmodifiedEXT;
36454 
36455 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalMemoryAcquireUnmodifiedEXTVULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT36456     VULKAN_HPP_CONSTEXPR ExternalMemoryAcquireUnmodifiedEXT( VULKAN_HPP_NAMESPACE::Bool32 acquireUnmodifiedMemory_ = {},
36457                                                              const void *                 pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
36458       : pNext{ pNext_ }
36459       , acquireUnmodifiedMemory{ acquireUnmodifiedMemory_ }
36460     {
36461     }
36462 
36463     VULKAN_HPP_CONSTEXPR ExternalMemoryAcquireUnmodifiedEXT( ExternalMemoryAcquireUnmodifiedEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36464 
ExternalMemoryAcquireUnmodifiedEXTVULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT36465     ExternalMemoryAcquireUnmodifiedEXT( VkExternalMemoryAcquireUnmodifiedEXT const & rhs ) VULKAN_HPP_NOEXCEPT
36466       : ExternalMemoryAcquireUnmodifiedEXT( *reinterpret_cast<ExternalMemoryAcquireUnmodifiedEXT const *>( &rhs ) )
36467     {
36468     }
36469 
36470     ExternalMemoryAcquireUnmodifiedEXT & operator=( ExternalMemoryAcquireUnmodifiedEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36471 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36472 
operator =VULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT36473     ExternalMemoryAcquireUnmodifiedEXT & operator=( VkExternalMemoryAcquireUnmodifiedEXT const & rhs ) VULKAN_HPP_NOEXCEPT
36474     {
36475       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT const *>( &rhs );
36476       return *this;
36477     }
36478 
36479 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT36480     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryAcquireUnmodifiedEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
36481     {
36482       pNext = pNext_;
36483       return *this;
36484     }
36485 
36486     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryAcquireUnmodifiedEXT &
setAcquireUnmodifiedMemoryVULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT36487       setAcquireUnmodifiedMemory( VULKAN_HPP_NAMESPACE::Bool32 acquireUnmodifiedMemory_ ) VULKAN_HPP_NOEXCEPT
36488     {
36489       acquireUnmodifiedMemory = acquireUnmodifiedMemory_;
36490       return *this;
36491     }
36492 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36493 
operator VkExternalMemoryAcquireUnmodifiedEXT const&VULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT36494     operator VkExternalMemoryAcquireUnmodifiedEXT const &() const VULKAN_HPP_NOEXCEPT
36495     {
36496       return *reinterpret_cast<const VkExternalMemoryAcquireUnmodifiedEXT *>( this );
36497     }
36498 
operator VkExternalMemoryAcquireUnmodifiedEXT&VULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT36499     operator VkExternalMemoryAcquireUnmodifiedEXT &() VULKAN_HPP_NOEXCEPT
36500     {
36501       return *reinterpret_cast<VkExternalMemoryAcquireUnmodifiedEXT *>( this );
36502     }
36503 
36504 #if defined( VULKAN_HPP_USE_REFLECT )
36505 #  if 14 <= VULKAN_HPP_CPP_VERSION
36506     auto
36507 #  else
36508     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
36509 #  endif
reflectVULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT36510       reflect() const VULKAN_HPP_NOEXCEPT
36511     {
36512       return std::tie( sType, pNext, acquireUnmodifiedMemory );
36513     }
36514 #endif
36515 
36516 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36517     auto operator<=>( ExternalMemoryAcquireUnmodifiedEXT const & ) const = default;
36518 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT36519     bool operator==( ExternalMemoryAcquireUnmodifiedEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
36520     {
36521 #  if defined( VULKAN_HPP_USE_REFLECT )
36522       return this->reflect() == rhs.reflect();
36523 #  else
36524       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( acquireUnmodifiedMemory == rhs.acquireUnmodifiedMemory );
36525 #  endif
36526     }
36527 
operator !=VULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT36528     bool operator!=( ExternalMemoryAcquireUnmodifiedEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
36529     {
36530       return !operator==( rhs );
36531     }
36532 #endif
36533 
36534   public:
36535     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::eExternalMemoryAcquireUnmodifiedEXT;
36536     const void *                        pNext                   = {};
36537     VULKAN_HPP_NAMESPACE::Bool32        acquireUnmodifiedMemory = {};
36538   };
36539 
36540   template <>
36541   struct CppType<StructureType, StructureType::eExternalMemoryAcquireUnmodifiedEXT>
36542   {
36543     using Type = ExternalMemoryAcquireUnmodifiedEXT;
36544   };
36545 
36546   struct ExternalMemoryBufferCreateInfo
36547   {
36548     using NativeType = VkExternalMemoryBufferCreateInfo;
36549 
36550     static const bool                                  allowDuplicate = false;
36551     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalMemoryBufferCreateInfo;
36552 
36553 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalMemoryBufferCreateInfoVULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo36554     VULKAN_HPP_CONSTEXPR ExternalMemoryBufferCreateInfo( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ = {},
36555                                                          const void *                                        pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
36556       : pNext{ pNext_ }
36557       , handleTypes{ handleTypes_ }
36558     {
36559     }
36560 
36561     VULKAN_HPP_CONSTEXPR ExternalMemoryBufferCreateInfo( ExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36562 
ExternalMemoryBufferCreateInfoVULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo36563     ExternalMemoryBufferCreateInfo( VkExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
36564       : ExternalMemoryBufferCreateInfo( *reinterpret_cast<ExternalMemoryBufferCreateInfo const *>( &rhs ) )
36565     {
36566     }
36567 
36568     ExternalMemoryBufferCreateInfo & operator=( ExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36569 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36570 
operator =VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo36571     ExternalMemoryBufferCreateInfo & operator=( VkExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
36572     {
36573       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo const *>( &rhs );
36574       return *this;
36575     }
36576 
36577 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo36578     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryBufferCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
36579     {
36580       pNext = pNext_;
36581       return *this;
36582     }
36583 
36584     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryBufferCreateInfo &
setHandleTypesVULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo36585       setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT
36586     {
36587       handleTypes = handleTypes_;
36588       return *this;
36589     }
36590 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36591 
operator VkExternalMemoryBufferCreateInfo const&VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo36592     operator VkExternalMemoryBufferCreateInfo const &() const VULKAN_HPP_NOEXCEPT
36593     {
36594       return *reinterpret_cast<const VkExternalMemoryBufferCreateInfo *>( this );
36595     }
36596 
operator VkExternalMemoryBufferCreateInfo&VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo36597     operator VkExternalMemoryBufferCreateInfo &() VULKAN_HPP_NOEXCEPT
36598     {
36599       return *reinterpret_cast<VkExternalMemoryBufferCreateInfo *>( this );
36600     }
36601 
36602 #if defined( VULKAN_HPP_USE_REFLECT )
36603 #  if 14 <= VULKAN_HPP_CPP_VERSION
36604     auto
36605 #  else
36606     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags const &>
36607 #  endif
reflectVULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo36608       reflect() const VULKAN_HPP_NOEXCEPT
36609     {
36610       return std::tie( sType, pNext, handleTypes );
36611     }
36612 #endif
36613 
36614 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36615     auto operator<=>( ExternalMemoryBufferCreateInfo const & ) const = default;
36616 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo36617     bool operator==( ExternalMemoryBufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
36618     {
36619 #  if defined( VULKAN_HPP_USE_REFLECT )
36620       return this->reflect() == rhs.reflect();
36621 #  else
36622       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes );
36623 #  endif
36624     }
36625 
operator !=VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo36626     bool operator!=( ExternalMemoryBufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
36627     {
36628       return !operator==( rhs );
36629     }
36630 #endif
36631 
36632   public:
36633     VULKAN_HPP_NAMESPACE::StructureType                 sType       = StructureType::eExternalMemoryBufferCreateInfo;
36634     const void *                                        pNext       = {};
36635     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes = {};
36636   };
36637 
36638   template <>
36639   struct CppType<StructureType, StructureType::eExternalMemoryBufferCreateInfo>
36640   {
36641     using Type = ExternalMemoryBufferCreateInfo;
36642   };
36643 
36644   using ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo;
36645 
36646   struct ExternalMemoryImageCreateInfo
36647   {
36648     using NativeType = VkExternalMemoryImageCreateInfo;
36649 
36650     static const bool                                  allowDuplicate = false;
36651     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalMemoryImageCreateInfo;
36652 
36653 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalMemoryImageCreateInfoVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo36654     VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfo( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ = {},
36655                                                         const void *                                        pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
36656       : pNext{ pNext_ }
36657       , handleTypes{ handleTypes_ }
36658     {
36659     }
36660 
36661     VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfo( ExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36662 
ExternalMemoryImageCreateInfoVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo36663     ExternalMemoryImageCreateInfo( VkExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
36664       : ExternalMemoryImageCreateInfo( *reinterpret_cast<ExternalMemoryImageCreateInfo const *>( &rhs ) )
36665     {
36666     }
36667 
36668     ExternalMemoryImageCreateInfo & operator=( ExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36669 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36670 
operator =VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo36671     ExternalMemoryImageCreateInfo & operator=( VkExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
36672     {
36673       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo const *>( &rhs );
36674       return *this;
36675     }
36676 
36677 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo36678     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
36679     {
36680       pNext = pNext_;
36681       return *this;
36682     }
36683 
36684     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfo &
setHandleTypesVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo36685       setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT
36686     {
36687       handleTypes = handleTypes_;
36688       return *this;
36689     }
36690 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36691 
operator VkExternalMemoryImageCreateInfo const&VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo36692     operator VkExternalMemoryImageCreateInfo const &() const VULKAN_HPP_NOEXCEPT
36693     {
36694       return *reinterpret_cast<const VkExternalMemoryImageCreateInfo *>( this );
36695     }
36696 
operator VkExternalMemoryImageCreateInfo&VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo36697     operator VkExternalMemoryImageCreateInfo &() VULKAN_HPP_NOEXCEPT
36698     {
36699       return *reinterpret_cast<VkExternalMemoryImageCreateInfo *>( this );
36700     }
36701 
36702 #if defined( VULKAN_HPP_USE_REFLECT )
36703 #  if 14 <= VULKAN_HPP_CPP_VERSION
36704     auto
36705 #  else
36706     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags const &>
36707 #  endif
reflectVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo36708       reflect() const VULKAN_HPP_NOEXCEPT
36709     {
36710       return std::tie( sType, pNext, handleTypes );
36711     }
36712 #endif
36713 
36714 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36715     auto operator<=>( ExternalMemoryImageCreateInfo const & ) const = default;
36716 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo36717     bool operator==( ExternalMemoryImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
36718     {
36719 #  if defined( VULKAN_HPP_USE_REFLECT )
36720       return this->reflect() == rhs.reflect();
36721 #  else
36722       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes );
36723 #  endif
36724     }
36725 
operator !=VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo36726     bool operator!=( ExternalMemoryImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
36727     {
36728       return !operator==( rhs );
36729     }
36730 #endif
36731 
36732   public:
36733     VULKAN_HPP_NAMESPACE::StructureType                 sType       = StructureType::eExternalMemoryImageCreateInfo;
36734     const void *                                        pNext       = {};
36735     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes = {};
36736   };
36737 
36738   template <>
36739   struct CppType<StructureType, StructureType::eExternalMemoryImageCreateInfo>
36740   {
36741     using Type = ExternalMemoryImageCreateInfo;
36742   };
36743 
36744   using ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo;
36745 
36746   struct ExternalMemoryImageCreateInfoNV
36747   {
36748     using NativeType = VkExternalMemoryImageCreateInfoNV;
36749 
36750     static const bool                                  allowDuplicate = false;
36751     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalMemoryImageCreateInfoNV;
36752 
36753 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalMemoryImageCreateInfoNVVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV36754     VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfoNV( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes_ = {},
36755                                                           const void *                                          pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
36756       : pNext{ pNext_ }
36757       , handleTypes{ handleTypes_ }
36758     {
36759     }
36760 
36761     VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfoNV( ExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36762 
ExternalMemoryImageCreateInfoNVVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV36763     ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
36764       : ExternalMemoryImageCreateInfoNV( *reinterpret_cast<ExternalMemoryImageCreateInfoNV const *>( &rhs ) )
36765     {
36766     }
36767 
36768     ExternalMemoryImageCreateInfoNV & operator=( ExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36769 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36770 
operator =VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV36771     ExternalMemoryImageCreateInfoNV & operator=( VkExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
36772     {
36773       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV const *>( &rhs );
36774       return *this;
36775     }
36776 
36777 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV36778     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
36779     {
36780       pNext = pNext_;
36781       return *this;
36782     }
36783 
36784     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfoNV &
setHandleTypesVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV36785       setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes_ ) VULKAN_HPP_NOEXCEPT
36786     {
36787       handleTypes = handleTypes_;
36788       return *this;
36789     }
36790 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36791 
operator VkExternalMemoryImageCreateInfoNV const&VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV36792     operator VkExternalMemoryImageCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
36793     {
36794       return *reinterpret_cast<const VkExternalMemoryImageCreateInfoNV *>( this );
36795     }
36796 
operator VkExternalMemoryImageCreateInfoNV&VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV36797     operator VkExternalMemoryImageCreateInfoNV &() VULKAN_HPP_NOEXCEPT
36798     {
36799       return *reinterpret_cast<VkExternalMemoryImageCreateInfoNV *>( this );
36800     }
36801 
36802 #if defined( VULKAN_HPP_USE_REFLECT )
36803 #  if 14 <= VULKAN_HPP_CPP_VERSION
36804     auto
36805 #  else
36806     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV const &>
36807 #  endif
reflectVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV36808       reflect() const VULKAN_HPP_NOEXCEPT
36809     {
36810       return std::tie( sType, pNext, handleTypes );
36811     }
36812 #endif
36813 
36814 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36815     auto operator<=>( ExternalMemoryImageCreateInfoNV const & ) const = default;
36816 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV36817     bool operator==( ExternalMemoryImageCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
36818     {
36819 #  if defined( VULKAN_HPP_USE_REFLECT )
36820       return this->reflect() == rhs.reflect();
36821 #  else
36822       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes );
36823 #  endif
36824     }
36825 
operator !=VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV36826     bool operator!=( ExternalMemoryImageCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
36827     {
36828       return !operator==( rhs );
36829     }
36830 #endif
36831 
36832   public:
36833     VULKAN_HPP_NAMESPACE::StructureType                   sType       = StructureType::eExternalMemoryImageCreateInfoNV;
36834     const void *                                          pNext       = {};
36835     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes = {};
36836   };
36837 
36838   template <>
36839   struct CppType<StructureType, StructureType::eExternalMemoryImageCreateInfoNV>
36840   {
36841     using Type = ExternalMemoryImageCreateInfoNV;
36842   };
36843 
36844   struct ExternalSemaphoreProperties
36845   {
36846     using NativeType = VkExternalSemaphoreProperties;
36847 
36848     static const bool                                  allowDuplicate = false;
36849     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eExternalSemaphoreProperties;
36850 
36851 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalSemaphorePropertiesVULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties36852     VULKAN_HPP_CONSTEXPR ExternalSemaphoreProperties( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes_ = {},
36853                                                       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags compatibleHandleTypes_         = {},
36854                                                       VULKAN_HPP_NAMESPACE::ExternalSemaphoreFeatureFlags    externalSemaphoreFeatures_     = {},
36855                                                       void *                                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
36856       : pNext{ pNext_ }
36857       , exportFromImportedHandleTypes{ exportFromImportedHandleTypes_ }
36858       , compatibleHandleTypes{ compatibleHandleTypes_ }
36859       , externalSemaphoreFeatures{ externalSemaphoreFeatures_ }
36860     {
36861     }
36862 
36863     VULKAN_HPP_CONSTEXPR ExternalSemaphoreProperties( ExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36864 
ExternalSemaphorePropertiesVULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties36865     ExternalSemaphoreProperties( VkExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36866       : ExternalSemaphoreProperties( *reinterpret_cast<ExternalSemaphoreProperties const *>( &rhs ) )
36867     {
36868     }
36869 
36870     ExternalSemaphoreProperties & operator=( ExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36871 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36872 
operator =VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties36873     ExternalSemaphoreProperties & operator=( VkExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36874     {
36875       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties const *>( &rhs );
36876       return *this;
36877     }
36878 
operator VkExternalSemaphoreProperties const&VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties36879     operator VkExternalSemaphoreProperties const &() const VULKAN_HPP_NOEXCEPT
36880     {
36881       return *reinterpret_cast<const VkExternalSemaphoreProperties *>( this );
36882     }
36883 
operator VkExternalSemaphoreProperties&VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties36884     operator VkExternalSemaphoreProperties &() VULKAN_HPP_NOEXCEPT
36885     {
36886       return *reinterpret_cast<VkExternalSemaphoreProperties *>( this );
36887     }
36888 
36889 #if defined( VULKAN_HPP_USE_REFLECT )
36890 #  if 14 <= VULKAN_HPP_CPP_VERSION
36891     auto
36892 #  else
36893     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
36894                void * const &,
36895                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags const &,
36896                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags const &,
36897                VULKAN_HPP_NAMESPACE::ExternalSemaphoreFeatureFlags const &>
36898 #  endif
reflectVULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties36899       reflect() const VULKAN_HPP_NOEXCEPT
36900     {
36901       return std::tie( sType, pNext, exportFromImportedHandleTypes, compatibleHandleTypes, externalSemaphoreFeatures );
36902     }
36903 #endif
36904 
36905 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
36906     auto operator<=>( ExternalSemaphoreProperties const & ) const = default;
36907 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties36908     bool operator==( ExternalSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36909     {
36910 #  if defined( VULKAN_HPP_USE_REFLECT )
36911       return this->reflect() == rhs.reflect();
36912 #  else
36913       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) &&
36914              ( compatibleHandleTypes == rhs.compatibleHandleTypes ) && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures );
36915 #  endif
36916     }
36917 
operator !=VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties36918     bool operator!=( ExternalSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36919     {
36920       return !operator==( rhs );
36921     }
36922 #endif
36923 
36924   public:
36925     VULKAN_HPP_NAMESPACE::StructureType                    sType                         = StructureType::eExternalSemaphoreProperties;
36926     void *                                                 pNext                         = {};
36927     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes = {};
36928     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags compatibleHandleTypes         = {};
36929     VULKAN_HPP_NAMESPACE::ExternalSemaphoreFeatureFlags    externalSemaphoreFeatures     = {};
36930   };
36931 
36932   template <>
36933   struct CppType<StructureType, StructureType::eExternalSemaphoreProperties>
36934   {
36935     using Type = ExternalSemaphoreProperties;
36936   };
36937 
36938   using ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties;
36939 
36940   struct FenceCreateInfo
36941   {
36942     using NativeType = VkFenceCreateInfo;
36943 
36944     static const bool                                  allowDuplicate = false;
36945     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFenceCreateInfo;
36946 
36947 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FenceCreateInfoVULKAN_HPP_NAMESPACE::FenceCreateInfo36948     VULKAN_HPP_CONSTEXPR FenceCreateInfo( VULKAN_HPP_NAMESPACE::FenceCreateFlags flags_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
36949       : pNext{ pNext_ }
36950       , flags{ flags_ }
36951     {
36952     }
36953 
36954     VULKAN_HPP_CONSTEXPR FenceCreateInfo( FenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36955 
FenceCreateInfoVULKAN_HPP_NAMESPACE::FenceCreateInfo36956     FenceCreateInfo( VkFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : FenceCreateInfo( *reinterpret_cast<FenceCreateInfo const *>( &rhs ) ) {}
36957 
36958     FenceCreateInfo & operator=( FenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36959 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36960 
operator =VULKAN_HPP_NAMESPACE::FenceCreateInfo36961     FenceCreateInfo & operator=( VkFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
36962     {
36963       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FenceCreateInfo const *>( &rhs );
36964       return *this;
36965     }
36966 
36967 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FenceCreateInfo36968     VULKAN_HPP_CONSTEXPR_14 FenceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
36969     {
36970       pNext = pNext_;
36971       return *this;
36972     }
36973 
setFlagsVULKAN_HPP_NAMESPACE::FenceCreateInfo36974     VULKAN_HPP_CONSTEXPR_14 FenceCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::FenceCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
36975     {
36976       flags = flags_;
36977       return *this;
36978     }
36979 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36980 
operator VkFenceCreateInfo const&VULKAN_HPP_NAMESPACE::FenceCreateInfo36981     operator VkFenceCreateInfo const &() const VULKAN_HPP_NOEXCEPT
36982     {
36983       return *reinterpret_cast<const VkFenceCreateInfo *>( this );
36984     }
36985 
operator VkFenceCreateInfo&VULKAN_HPP_NAMESPACE::FenceCreateInfo36986     operator VkFenceCreateInfo &() VULKAN_HPP_NOEXCEPT
36987     {
36988       return *reinterpret_cast<VkFenceCreateInfo *>( this );
36989     }
36990 
36991 #if defined( VULKAN_HPP_USE_REFLECT )
36992 #  if 14 <= VULKAN_HPP_CPP_VERSION
36993     auto
36994 #  else
36995     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::FenceCreateFlags const &>
36996 #  endif
reflectVULKAN_HPP_NAMESPACE::FenceCreateInfo36997       reflect() const VULKAN_HPP_NOEXCEPT
36998     {
36999       return std::tie( sType, pNext, flags );
37000     }
37001 #endif
37002 
37003 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37004     auto operator<=>( FenceCreateInfo const & ) const = default;
37005 #else
operator ==VULKAN_HPP_NAMESPACE::FenceCreateInfo37006     bool operator==( FenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
37007     {
37008 #  if defined( VULKAN_HPP_USE_REFLECT )
37009       return this->reflect() == rhs.reflect();
37010 #  else
37011       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
37012 #  endif
37013     }
37014 
operator !=VULKAN_HPP_NAMESPACE::FenceCreateInfo37015     bool operator!=( FenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
37016     {
37017       return !operator==( rhs );
37018     }
37019 #endif
37020 
37021   public:
37022     VULKAN_HPP_NAMESPACE::StructureType    sType = StructureType::eFenceCreateInfo;
37023     const void *                           pNext = {};
37024     VULKAN_HPP_NAMESPACE::FenceCreateFlags flags = {};
37025   };
37026 
37027   template <>
37028   struct CppType<StructureType, StructureType::eFenceCreateInfo>
37029   {
37030     using Type = FenceCreateInfo;
37031   };
37032 
37033   struct FenceGetFdInfoKHR
37034   {
37035     using NativeType = VkFenceGetFdInfoKHR;
37036 
37037     static const bool                                  allowDuplicate = false;
37038     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFenceGetFdInfoKHR;
37039 
37040 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
37041     VULKAN_HPP_CONSTEXPR
FenceGetFdInfoKHRVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37042       FenceGetFdInfoKHR( VULKAN_HPP_NAMESPACE::Fence                           fence_      = {},
37043                          VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd,
37044                          const void *                                          pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
37045       : pNext{ pNext_ }
37046       , fence{ fence_ }
37047       , handleType{ handleType_ }
37048     {
37049     }
37050 
37051     VULKAN_HPP_CONSTEXPR FenceGetFdInfoKHR( FenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37052 
FenceGetFdInfoKHRVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37053     FenceGetFdInfoKHR( VkFenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : FenceGetFdInfoKHR( *reinterpret_cast<FenceGetFdInfoKHR const *>( &rhs ) ) {}
37054 
37055     FenceGetFdInfoKHR & operator=( FenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37056 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37057 
operator =VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37058     FenceGetFdInfoKHR & operator=( VkFenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
37059     {
37060       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR const *>( &rhs );
37061       return *this;
37062     }
37063 
37064 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37065     VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
37066     {
37067       pNext = pNext_;
37068       return *this;
37069     }
37070 
setFenceVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37071     VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT
37072     {
37073       fence = fence_;
37074       return *this;
37075     }
37076 
setHandleTypeVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37077     VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
37078     {
37079       handleType = handleType_;
37080       return *this;
37081     }
37082 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37083 
operator VkFenceGetFdInfoKHR const&VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37084     operator VkFenceGetFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
37085     {
37086       return *reinterpret_cast<const VkFenceGetFdInfoKHR *>( this );
37087     }
37088 
operator VkFenceGetFdInfoKHR&VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37089     operator VkFenceGetFdInfoKHR &() VULKAN_HPP_NOEXCEPT
37090     {
37091       return *reinterpret_cast<VkFenceGetFdInfoKHR *>( this );
37092     }
37093 
37094 #if defined( VULKAN_HPP_USE_REFLECT )
37095 #  if 14 <= VULKAN_HPP_CPP_VERSION
37096     auto
37097 #  else
37098     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
37099                const void * const &,
37100                VULKAN_HPP_NAMESPACE::Fence const &,
37101                VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits const &>
37102 #  endif
reflectVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37103       reflect() const VULKAN_HPP_NOEXCEPT
37104     {
37105       return std::tie( sType, pNext, fence, handleType );
37106     }
37107 #endif
37108 
37109 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37110     auto operator<=>( FenceGetFdInfoKHR const & ) const = default;
37111 #else
operator ==VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37112     bool operator==( FenceGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
37113     {
37114 #  if defined( VULKAN_HPP_USE_REFLECT )
37115       return this->reflect() == rhs.reflect();
37116 #  else
37117       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fence == rhs.fence ) && ( handleType == rhs.handleType );
37118 #  endif
37119     }
37120 
operator !=VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR37121     bool operator!=( FenceGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
37122     {
37123       return !operator==( rhs );
37124     }
37125 #endif
37126 
37127   public:
37128     VULKAN_HPP_NAMESPACE::StructureType                   sType      = StructureType::eFenceGetFdInfoKHR;
37129     const void *                                          pNext      = {};
37130     VULKAN_HPP_NAMESPACE::Fence                           fence      = {};
37131     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
37132   };
37133 
37134   template <>
37135   struct CppType<StructureType, StructureType::eFenceGetFdInfoKHR>
37136   {
37137     using Type = FenceGetFdInfoKHR;
37138   };
37139 
37140 #if defined( VK_USE_PLATFORM_WIN32_KHR )
37141   struct FenceGetWin32HandleInfoKHR
37142   {
37143     using NativeType = VkFenceGetWin32HandleInfoKHR;
37144 
37145     static const bool                                  allowDuplicate = false;
37146     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFenceGetWin32HandleInfoKHR;
37147 
37148 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FenceGetWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37149     VULKAN_HPP_CONSTEXPR FenceGetWin32HandleInfoKHR(
37150       VULKAN_HPP_NAMESPACE::Fence                           fence_      = {},
37151       VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd,
37152       const void *                                          pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
37153       : pNext{ pNext_ }
37154       , fence{ fence_ }
37155       , handleType{ handleType_ }
37156     {
37157     }
37158 
37159     VULKAN_HPP_CONSTEXPR FenceGetWin32HandleInfoKHR( FenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37160 
FenceGetWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37161     FenceGetWin32HandleInfoKHR( VkFenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
37162       : FenceGetWin32HandleInfoKHR( *reinterpret_cast<FenceGetWin32HandleInfoKHR const *>( &rhs ) )
37163     {
37164     }
37165 
37166     FenceGetWin32HandleInfoKHR & operator=( FenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37167 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37168 
operator =VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37169     FenceGetWin32HandleInfoKHR & operator=( VkFenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
37170     {
37171       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR const *>( &rhs );
37172       return *this;
37173     }
37174 
37175 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37176     VULKAN_HPP_CONSTEXPR_14 FenceGetWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
37177     {
37178       pNext = pNext_;
37179       return *this;
37180     }
37181 
setFenceVULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37182     VULKAN_HPP_CONSTEXPR_14 FenceGetWin32HandleInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT
37183     {
37184       fence = fence_;
37185       return *this;
37186     }
37187 
setHandleTypeVULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37188     VULKAN_HPP_CONSTEXPR_14 FenceGetWin32HandleInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
37189     {
37190       handleType = handleType_;
37191       return *this;
37192     }
37193 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37194 
operator VkFenceGetWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37195     operator VkFenceGetWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
37196     {
37197       return *reinterpret_cast<const VkFenceGetWin32HandleInfoKHR *>( this );
37198     }
37199 
operator VkFenceGetWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37200     operator VkFenceGetWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
37201     {
37202       return *reinterpret_cast<VkFenceGetWin32HandleInfoKHR *>( this );
37203     }
37204 
37205 #  if defined( VULKAN_HPP_USE_REFLECT )
37206 #    if 14 <= VULKAN_HPP_CPP_VERSION
37207     auto
37208 #    else
37209     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
37210                const void * const &,
37211                VULKAN_HPP_NAMESPACE::Fence const &,
37212                VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits const &>
37213 #    endif
reflectVULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37214       reflect() const VULKAN_HPP_NOEXCEPT
37215     {
37216       return std::tie( sType, pNext, fence, handleType );
37217     }
37218 #  endif
37219 
37220 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37221     auto operator<=>( FenceGetWin32HandleInfoKHR const & ) const = default;
37222 #  else
operator ==VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37223     bool operator==( FenceGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
37224     {
37225 #    if defined( VULKAN_HPP_USE_REFLECT )
37226       return this->reflect() == rhs.reflect();
37227 #    else
37228       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fence == rhs.fence ) && ( handleType == rhs.handleType );
37229 #    endif
37230     }
37231 
operator !=VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR37232     bool operator!=( FenceGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
37233     {
37234       return !operator==( rhs );
37235     }
37236 #  endif
37237 
37238   public:
37239     VULKAN_HPP_NAMESPACE::StructureType                   sType      = StructureType::eFenceGetWin32HandleInfoKHR;
37240     const void *                                          pNext      = {};
37241     VULKAN_HPP_NAMESPACE::Fence                           fence      = {};
37242     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
37243   };
37244 
37245   template <>
37246   struct CppType<StructureType, StructureType::eFenceGetWin32HandleInfoKHR>
37247   {
37248     using Type = FenceGetWin32HandleInfoKHR;
37249   };
37250 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
37251 
37252   struct FilterCubicImageViewImageFormatPropertiesEXT
37253   {
37254     using NativeType = VkFilterCubicImageViewImageFormatPropertiesEXT;
37255 
37256     static const bool                                  allowDuplicate = false;
37257     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFilterCubicImageViewImageFormatPropertiesEXT;
37258 
37259 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FilterCubicImageViewImageFormatPropertiesEXTVULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT37260     VULKAN_HPP_CONSTEXPR FilterCubicImageViewImageFormatPropertiesEXT( VULKAN_HPP_NAMESPACE::Bool32 filterCubic_       = {},
37261                                                                        VULKAN_HPP_NAMESPACE::Bool32 filterCubicMinmax_ = {},
37262                                                                        void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
37263       : pNext{ pNext_ }
37264       , filterCubic{ filterCubic_ }
37265       , filterCubicMinmax{ filterCubicMinmax_ }
37266     {
37267     }
37268 
37269     VULKAN_HPP_CONSTEXPR FilterCubicImageViewImageFormatPropertiesEXT( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37270 
FilterCubicImageViewImageFormatPropertiesEXTVULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT37271     FilterCubicImageViewImageFormatPropertiesEXT( VkFilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
37272       : FilterCubicImageViewImageFormatPropertiesEXT( *reinterpret_cast<FilterCubicImageViewImageFormatPropertiesEXT const *>( &rhs ) )
37273     {
37274     }
37275 
37276     FilterCubicImageViewImageFormatPropertiesEXT & operator=( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37277 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37278 
operator =VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT37279     FilterCubicImageViewImageFormatPropertiesEXT & operator=( VkFilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
37280     {
37281       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT const *>( &rhs );
37282       return *this;
37283     }
37284 
operator VkFilterCubicImageViewImageFormatPropertiesEXT const&VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT37285     operator VkFilterCubicImageViewImageFormatPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
37286     {
37287       return *reinterpret_cast<const VkFilterCubicImageViewImageFormatPropertiesEXT *>( this );
37288     }
37289 
operator VkFilterCubicImageViewImageFormatPropertiesEXT&VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT37290     operator VkFilterCubicImageViewImageFormatPropertiesEXT &() VULKAN_HPP_NOEXCEPT
37291     {
37292       return *reinterpret_cast<VkFilterCubicImageViewImageFormatPropertiesEXT *>( this );
37293     }
37294 
37295 #if defined( VULKAN_HPP_USE_REFLECT )
37296 #  if 14 <= VULKAN_HPP_CPP_VERSION
37297     auto
37298 #  else
37299     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
37300 #  endif
reflectVULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT37301       reflect() const VULKAN_HPP_NOEXCEPT
37302     {
37303       return std::tie( sType, pNext, filterCubic, filterCubicMinmax );
37304     }
37305 #endif
37306 
37307 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37308     auto operator<=>( FilterCubicImageViewImageFormatPropertiesEXT const & ) const = default;
37309 #else
operator ==VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT37310     bool operator==( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
37311     {
37312 #  if defined( VULKAN_HPP_USE_REFLECT )
37313       return this->reflect() == rhs.reflect();
37314 #  else
37315       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( filterCubic == rhs.filterCubic ) && ( filterCubicMinmax == rhs.filterCubicMinmax );
37316 #  endif
37317     }
37318 
operator !=VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT37319     bool operator!=( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
37320     {
37321       return !operator==( rhs );
37322     }
37323 #endif
37324 
37325   public:
37326     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::eFilterCubicImageViewImageFormatPropertiesEXT;
37327     void *                              pNext             = {};
37328     VULKAN_HPP_NAMESPACE::Bool32        filterCubic       = {};
37329     VULKAN_HPP_NAMESPACE::Bool32        filterCubicMinmax = {};
37330   };
37331 
37332   template <>
37333   struct CppType<StructureType, StructureType::eFilterCubicImageViewImageFormatPropertiesEXT>
37334   {
37335     using Type = FilterCubicImageViewImageFormatPropertiesEXT;
37336   };
37337 
37338   struct FormatProperties
37339   {
37340     using NativeType = VkFormatProperties;
37341 
37342 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FormatPropertiesVULKAN_HPP_NAMESPACE::FormatProperties37343     VULKAN_HPP_CONSTEXPR FormatProperties( VULKAN_HPP_NAMESPACE::FormatFeatureFlags linearTilingFeatures_  = {},
37344                                            VULKAN_HPP_NAMESPACE::FormatFeatureFlags optimalTilingFeatures_ = {},
37345                                            VULKAN_HPP_NAMESPACE::FormatFeatureFlags bufferFeatures_        = {} ) VULKAN_HPP_NOEXCEPT
37346       : linearTilingFeatures{ linearTilingFeatures_ }
37347       , optimalTilingFeatures{ optimalTilingFeatures_ }
37348       , bufferFeatures{ bufferFeatures_ }
37349     {
37350     }
37351 
37352     VULKAN_HPP_CONSTEXPR FormatProperties( FormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37353 
FormatPropertiesVULKAN_HPP_NAMESPACE::FormatProperties37354     FormatProperties( VkFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT : FormatProperties( *reinterpret_cast<FormatProperties const *>( &rhs ) ) {}
37355 
37356     FormatProperties & operator=( FormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37357 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37358 
operator =VULKAN_HPP_NAMESPACE::FormatProperties37359     FormatProperties & operator=( VkFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
37360     {
37361       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FormatProperties const *>( &rhs );
37362       return *this;
37363     }
37364 
operator VkFormatProperties const&VULKAN_HPP_NAMESPACE::FormatProperties37365     operator VkFormatProperties const &() const VULKAN_HPP_NOEXCEPT
37366     {
37367       return *reinterpret_cast<const VkFormatProperties *>( this );
37368     }
37369 
operator VkFormatProperties&VULKAN_HPP_NAMESPACE::FormatProperties37370     operator VkFormatProperties &() VULKAN_HPP_NOEXCEPT
37371     {
37372       return *reinterpret_cast<VkFormatProperties *>( this );
37373     }
37374 
37375 #if defined( VULKAN_HPP_USE_REFLECT )
37376 #  if 14 <= VULKAN_HPP_CPP_VERSION
37377     auto
37378 #  else
37379     std::tuple<VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &,
37380                VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &,
37381                VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &>
37382 #  endif
reflectVULKAN_HPP_NAMESPACE::FormatProperties37383       reflect() const VULKAN_HPP_NOEXCEPT
37384     {
37385       return std::tie( linearTilingFeatures, optimalTilingFeatures, bufferFeatures );
37386     }
37387 #endif
37388 
37389 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37390     auto operator<=>( FormatProperties const & ) const = default;
37391 #else
operator ==VULKAN_HPP_NAMESPACE::FormatProperties37392     bool operator==( FormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
37393     {
37394 #  if defined( VULKAN_HPP_USE_REFLECT )
37395       return this->reflect() == rhs.reflect();
37396 #  else
37397       return ( linearTilingFeatures == rhs.linearTilingFeatures ) && ( optimalTilingFeatures == rhs.optimalTilingFeatures ) &&
37398              ( bufferFeatures == rhs.bufferFeatures );
37399 #  endif
37400     }
37401 
operator !=VULKAN_HPP_NAMESPACE::FormatProperties37402     bool operator!=( FormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
37403     {
37404       return !operator==( rhs );
37405     }
37406 #endif
37407 
37408   public:
37409     VULKAN_HPP_NAMESPACE::FormatFeatureFlags linearTilingFeatures  = {};
37410     VULKAN_HPP_NAMESPACE::FormatFeatureFlags optimalTilingFeatures = {};
37411     VULKAN_HPP_NAMESPACE::FormatFeatureFlags bufferFeatures        = {};
37412   };
37413 
37414   struct FormatProperties2
37415   {
37416     using NativeType = VkFormatProperties2;
37417 
37418     static const bool                                  allowDuplicate = false;
37419     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFormatProperties2;
37420 
37421 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FormatProperties2VULKAN_HPP_NAMESPACE::FormatProperties237422     VULKAN_HPP_CONSTEXPR FormatProperties2( VULKAN_HPP_NAMESPACE::FormatProperties formatProperties_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
37423       : pNext{ pNext_ }
37424       , formatProperties{ formatProperties_ }
37425     {
37426     }
37427 
37428     VULKAN_HPP_CONSTEXPR FormatProperties2( FormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37429 
FormatProperties2VULKAN_HPP_NAMESPACE::FormatProperties237430     FormatProperties2( VkFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT : FormatProperties2( *reinterpret_cast<FormatProperties2 const *>( &rhs ) ) {}
37431 
37432     FormatProperties2 & operator=( FormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37433 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37434 
operator =VULKAN_HPP_NAMESPACE::FormatProperties237435     FormatProperties2 & operator=( VkFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
37436     {
37437       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FormatProperties2 const *>( &rhs );
37438       return *this;
37439     }
37440 
operator VkFormatProperties2 const&VULKAN_HPP_NAMESPACE::FormatProperties237441     operator VkFormatProperties2 const &() const VULKAN_HPP_NOEXCEPT
37442     {
37443       return *reinterpret_cast<const VkFormatProperties2 *>( this );
37444     }
37445 
operator VkFormatProperties2&VULKAN_HPP_NAMESPACE::FormatProperties237446     operator VkFormatProperties2 &() VULKAN_HPP_NOEXCEPT
37447     {
37448       return *reinterpret_cast<VkFormatProperties2 *>( this );
37449     }
37450 
37451 #if defined( VULKAN_HPP_USE_REFLECT )
37452 #  if 14 <= VULKAN_HPP_CPP_VERSION
37453     auto
37454 #  else
37455     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::FormatProperties const &>
37456 #  endif
reflectVULKAN_HPP_NAMESPACE::FormatProperties237457       reflect() const VULKAN_HPP_NOEXCEPT
37458     {
37459       return std::tie( sType, pNext, formatProperties );
37460     }
37461 #endif
37462 
37463 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37464     auto operator<=>( FormatProperties2 const & ) const = default;
37465 #else
operator ==VULKAN_HPP_NAMESPACE::FormatProperties237466     bool operator==( FormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
37467     {
37468 #  if defined( VULKAN_HPP_USE_REFLECT )
37469       return this->reflect() == rhs.reflect();
37470 #  else
37471       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( formatProperties == rhs.formatProperties );
37472 #  endif
37473     }
37474 
operator !=VULKAN_HPP_NAMESPACE::FormatProperties237475     bool operator!=( FormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
37476     {
37477       return !operator==( rhs );
37478     }
37479 #endif
37480 
37481   public:
37482     VULKAN_HPP_NAMESPACE::StructureType    sType            = StructureType::eFormatProperties2;
37483     void *                                 pNext            = {};
37484     VULKAN_HPP_NAMESPACE::FormatProperties formatProperties = {};
37485   };
37486 
37487   template <>
37488   struct CppType<StructureType, StructureType::eFormatProperties2>
37489   {
37490     using Type = FormatProperties2;
37491   };
37492 
37493   using FormatProperties2KHR = FormatProperties2;
37494 
37495   struct FormatProperties3
37496   {
37497     using NativeType = VkFormatProperties3;
37498 
37499     static const bool                                  allowDuplicate = false;
37500     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFormatProperties3;
37501 
37502 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FormatProperties3VULKAN_HPP_NAMESPACE::FormatProperties337503     VULKAN_HPP_CONSTEXPR FormatProperties3( VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 linearTilingFeatures_  = {},
37504                                             VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 optimalTilingFeatures_ = {},
37505                                             VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 bufferFeatures_        = {},
37506                                             void *                                    pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
37507       : pNext{ pNext_ }
37508       , linearTilingFeatures{ linearTilingFeatures_ }
37509       , optimalTilingFeatures{ optimalTilingFeatures_ }
37510       , bufferFeatures{ bufferFeatures_ }
37511     {
37512     }
37513 
37514     VULKAN_HPP_CONSTEXPR FormatProperties3( FormatProperties3 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37515 
FormatProperties3VULKAN_HPP_NAMESPACE::FormatProperties337516     FormatProperties3( VkFormatProperties3 const & rhs ) VULKAN_HPP_NOEXCEPT : FormatProperties3( *reinterpret_cast<FormatProperties3 const *>( &rhs ) ) {}
37517 
37518     FormatProperties3 & operator=( FormatProperties3 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37519 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37520 
operator =VULKAN_HPP_NAMESPACE::FormatProperties337521     FormatProperties3 & operator=( VkFormatProperties3 const & rhs ) VULKAN_HPP_NOEXCEPT
37522     {
37523       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FormatProperties3 const *>( &rhs );
37524       return *this;
37525     }
37526 
operator VkFormatProperties3 const&VULKAN_HPP_NAMESPACE::FormatProperties337527     operator VkFormatProperties3 const &() const VULKAN_HPP_NOEXCEPT
37528     {
37529       return *reinterpret_cast<const VkFormatProperties3 *>( this );
37530     }
37531 
operator VkFormatProperties3&VULKAN_HPP_NAMESPACE::FormatProperties337532     operator VkFormatProperties3 &() VULKAN_HPP_NOEXCEPT
37533     {
37534       return *reinterpret_cast<VkFormatProperties3 *>( this );
37535     }
37536 
37537 #if defined( VULKAN_HPP_USE_REFLECT )
37538 #  if 14 <= VULKAN_HPP_CPP_VERSION
37539     auto
37540 #  else
37541     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
37542                void * const &,
37543                VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 const &,
37544                VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 const &,
37545                VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 const &>
37546 #  endif
reflectVULKAN_HPP_NAMESPACE::FormatProperties337547       reflect() const VULKAN_HPP_NOEXCEPT
37548     {
37549       return std::tie( sType, pNext, linearTilingFeatures, optimalTilingFeatures, bufferFeatures );
37550     }
37551 #endif
37552 
37553 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37554     auto operator<=>( FormatProperties3 const & ) const = default;
37555 #else
operator ==VULKAN_HPP_NAMESPACE::FormatProperties337556     bool operator==( FormatProperties3 const & rhs ) const VULKAN_HPP_NOEXCEPT
37557     {
37558 #  if defined( VULKAN_HPP_USE_REFLECT )
37559       return this->reflect() == rhs.reflect();
37560 #  else
37561       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( linearTilingFeatures == rhs.linearTilingFeatures ) &&
37562              ( optimalTilingFeatures == rhs.optimalTilingFeatures ) && ( bufferFeatures == rhs.bufferFeatures );
37563 #  endif
37564     }
37565 
operator !=VULKAN_HPP_NAMESPACE::FormatProperties337566     bool operator!=( FormatProperties3 const & rhs ) const VULKAN_HPP_NOEXCEPT
37567     {
37568       return !operator==( rhs );
37569     }
37570 #endif
37571 
37572   public:
37573     VULKAN_HPP_NAMESPACE::StructureType       sType                 = StructureType::eFormatProperties3;
37574     void *                                    pNext                 = {};
37575     VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 linearTilingFeatures  = {};
37576     VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 optimalTilingFeatures = {};
37577     VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 bufferFeatures        = {};
37578   };
37579 
37580   template <>
37581   struct CppType<StructureType, StructureType::eFormatProperties3>
37582   {
37583     using Type = FormatProperties3;
37584   };
37585 
37586   using FormatProperties3KHR = FormatProperties3;
37587 
37588   struct FragmentShadingRateAttachmentInfoKHR
37589   {
37590     using NativeType = VkFragmentShadingRateAttachmentInfoKHR;
37591 
37592     static const bool                                  allowDuplicate = false;
37593     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFragmentShadingRateAttachmentInfoKHR;
37594 
37595 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FragmentShadingRateAttachmentInfoKHRVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37596     VULKAN_HPP_CONSTEXPR FragmentShadingRateAttachmentInfoKHR( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pFragmentShadingRateAttachment_ = {},
37597                                                                VULKAN_HPP_NAMESPACE::Extent2D                     shadingRateAttachmentTexelSize_ = {},
37598                                                                const void *                                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
37599       : pNext{ pNext_ }
37600       , pFragmentShadingRateAttachment{ pFragmentShadingRateAttachment_ }
37601       , shadingRateAttachmentTexelSize{ shadingRateAttachmentTexelSize_ }
37602     {
37603     }
37604 
37605     VULKAN_HPP_CONSTEXPR FragmentShadingRateAttachmentInfoKHR( FragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37606 
FragmentShadingRateAttachmentInfoKHRVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37607     FragmentShadingRateAttachmentInfoKHR( VkFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
37608       : FragmentShadingRateAttachmentInfoKHR( *reinterpret_cast<FragmentShadingRateAttachmentInfoKHR const *>( &rhs ) )
37609     {
37610     }
37611 
37612     FragmentShadingRateAttachmentInfoKHR & operator=( FragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37613 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37614 
operator =VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37615     FragmentShadingRateAttachmentInfoKHR & operator=( VkFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
37616     {
37617       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR const *>( &rhs );
37618       return *this;
37619     }
37620 
37621 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37622     VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
37623     {
37624       pNext = pNext_;
37625       return *this;
37626     }
37627 
37628     VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR &
setPFragmentShadingRateAttachmentVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37629       setPFragmentShadingRateAttachment( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pFragmentShadingRateAttachment_ ) VULKAN_HPP_NOEXCEPT
37630     {
37631       pFragmentShadingRateAttachment = pFragmentShadingRateAttachment_;
37632       return *this;
37633     }
37634 
37635     VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR &
setShadingRateAttachmentTexelSizeVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37636       setShadingRateAttachmentTexelSize( VULKAN_HPP_NAMESPACE::Extent2D const & shadingRateAttachmentTexelSize_ ) VULKAN_HPP_NOEXCEPT
37637     {
37638       shadingRateAttachmentTexelSize = shadingRateAttachmentTexelSize_;
37639       return *this;
37640     }
37641 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37642 
operator VkFragmentShadingRateAttachmentInfoKHR const&VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37643     operator VkFragmentShadingRateAttachmentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
37644     {
37645       return *reinterpret_cast<const VkFragmentShadingRateAttachmentInfoKHR *>( this );
37646     }
37647 
operator VkFragmentShadingRateAttachmentInfoKHR&VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37648     operator VkFragmentShadingRateAttachmentInfoKHR &() VULKAN_HPP_NOEXCEPT
37649     {
37650       return *reinterpret_cast<VkFragmentShadingRateAttachmentInfoKHR *>( this );
37651     }
37652 
37653 #if defined( VULKAN_HPP_USE_REFLECT )
37654 #  if 14 <= VULKAN_HPP_CPP_VERSION
37655     auto
37656 #  else
37657     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
37658                const void * const &,
37659                const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &,
37660                VULKAN_HPP_NAMESPACE::Extent2D const &>
37661 #  endif
reflectVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37662       reflect() const VULKAN_HPP_NOEXCEPT
37663     {
37664       return std::tie( sType, pNext, pFragmentShadingRateAttachment, shadingRateAttachmentTexelSize );
37665     }
37666 #endif
37667 
37668 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37669     auto operator<=>( FragmentShadingRateAttachmentInfoKHR const & ) const = default;
37670 #else
operator ==VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37671     bool operator==( FragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
37672     {
37673 #  if defined( VULKAN_HPP_USE_REFLECT )
37674       return this->reflect() == rhs.reflect();
37675 #  else
37676       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pFragmentShadingRateAttachment == rhs.pFragmentShadingRateAttachment ) &&
37677              ( shadingRateAttachmentTexelSize == rhs.shadingRateAttachmentTexelSize );
37678 #  endif
37679     }
37680 
operator !=VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR37681     bool operator!=( FragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
37682     {
37683       return !operator==( rhs );
37684     }
37685 #endif
37686 
37687   public:
37688     VULKAN_HPP_NAMESPACE::StructureType                sType                          = StructureType::eFragmentShadingRateAttachmentInfoKHR;
37689     const void *                                       pNext                          = {};
37690     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pFragmentShadingRateAttachment = {};
37691     VULKAN_HPP_NAMESPACE::Extent2D                     shadingRateAttachmentTexelSize = {};
37692   };
37693 
37694   template <>
37695   struct CppType<StructureType, StructureType::eFragmentShadingRateAttachmentInfoKHR>
37696   {
37697     using Type = FragmentShadingRateAttachmentInfoKHR;
37698   };
37699 
37700   struct FrameBoundaryEXT
37701   {
37702     using NativeType = VkFrameBoundaryEXT;
37703 
37704     static const bool                                  allowDuplicate = false;
37705     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFrameBoundaryEXT;
37706 
37707 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FrameBoundaryEXTVULKAN_HPP_NAMESPACE::FrameBoundaryEXT37708     VULKAN_HPP_CONSTEXPR FrameBoundaryEXT( VULKAN_HPP_NAMESPACE::FrameBoundaryFlagsEXT flags_       = {},
37709                                            uint64_t                                    frameID_     = {},
37710                                            uint32_t                                    imageCount_  = {},
37711                                            const VULKAN_HPP_NAMESPACE::Image *         pImages_     = {},
37712                                            uint32_t                                    bufferCount_ = {},
37713                                            const VULKAN_HPP_NAMESPACE::Buffer *        pBuffers_    = {},
37714                                            uint64_t                                    tagName_     = {},
37715                                            size_t                                      tagSize_     = {},
37716                                            const void *                                pTag_        = {},
37717                                            const void *                                pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
37718       : pNext{ pNext_ }
37719       , flags{ flags_ }
37720       , frameID{ frameID_ }
37721       , imageCount{ imageCount_ }
37722       , pImages{ pImages_ }
37723       , bufferCount{ bufferCount_ }
37724       , pBuffers{ pBuffers_ }
37725       , tagName{ tagName_ }
37726       , tagSize{ tagSize_ }
37727       , pTag{ pTag_ }
37728     {
37729     }
37730 
37731     VULKAN_HPP_CONSTEXPR FrameBoundaryEXT( FrameBoundaryEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37732 
FrameBoundaryEXTVULKAN_HPP_NAMESPACE::FrameBoundaryEXT37733     FrameBoundaryEXT( VkFrameBoundaryEXT const & rhs ) VULKAN_HPP_NOEXCEPT : FrameBoundaryEXT( *reinterpret_cast<FrameBoundaryEXT const *>( &rhs ) ) {}
37734 
37735 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
37736     template <typename T>
FrameBoundaryEXTVULKAN_HPP_NAMESPACE::FrameBoundaryEXT37737     FrameBoundaryEXT( VULKAN_HPP_NAMESPACE::FrameBoundaryFlagsEXT                                               flags_,
37738                       uint64_t                                                                                  frameID_,
37739                       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Image> const &  images_,
37740                       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers_ = {},
37741                       uint64_t                                                                                  tagName_ = {},
37742                       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const &                            tag_     = {},
37743                       const void *                                                                              pNext_   = nullptr )
37744       : pNext( pNext_ )
37745       , flags( flags_ )
37746       , frameID( frameID_ )
37747       , imageCount( static_cast<uint32_t>( images_.size() ) )
37748       , pImages( images_.data() )
37749       , bufferCount( static_cast<uint32_t>( buffers_.size() ) )
37750       , pBuffers( buffers_.data() )
37751       , tagName( tagName_ )
37752       , tagSize( tag_.size() * sizeof( T ) )
37753       , pTag( tag_.data() )
37754     {
37755     }
37756 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37757 
37758     FrameBoundaryEXT & operator=( FrameBoundaryEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37759 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37760 
operator =VULKAN_HPP_NAMESPACE::FrameBoundaryEXT37761     FrameBoundaryEXT & operator=( VkFrameBoundaryEXT const & rhs ) VULKAN_HPP_NOEXCEPT
37762     {
37763       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FrameBoundaryEXT const *>( &rhs );
37764       return *this;
37765     }
37766 
37767 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FrameBoundaryEXT37768     VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
37769     {
37770       pNext = pNext_;
37771       return *this;
37772     }
37773 
setFlagsVULKAN_HPP_NAMESPACE::FrameBoundaryEXT37774     VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setFlags( VULKAN_HPP_NAMESPACE::FrameBoundaryFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
37775     {
37776       flags = flags_;
37777       return *this;
37778     }
37779 
setFrameIDVULKAN_HPP_NAMESPACE::FrameBoundaryEXT37780     VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setFrameID( uint64_t frameID_ ) VULKAN_HPP_NOEXCEPT
37781     {
37782       frameID = frameID_;
37783       return *this;
37784     }
37785 
setImageCountVULKAN_HPP_NAMESPACE::FrameBoundaryEXT37786     VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setImageCount( uint32_t imageCount_ ) VULKAN_HPP_NOEXCEPT
37787     {
37788       imageCount = imageCount_;
37789       return *this;
37790     }
37791 
setPImagesVULKAN_HPP_NAMESPACE::FrameBoundaryEXT37792     VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setPImages( const VULKAN_HPP_NAMESPACE::Image * pImages_ ) VULKAN_HPP_NOEXCEPT
37793     {
37794       pImages = pImages_;
37795       return *this;
37796     }
37797 
37798 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImagesVULKAN_HPP_NAMESPACE::FrameBoundaryEXT37799     FrameBoundaryEXT & setImages( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Image> const & images_ ) VULKAN_HPP_NOEXCEPT
37800     {
37801       imageCount = static_cast<uint32_t>( images_.size() );
37802       pImages    = images_.data();
37803       return *this;
37804     }
37805 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37806 
setBufferCountVULKAN_HPP_NAMESPACE::FrameBoundaryEXT37807     VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setBufferCount( uint32_t bufferCount_ ) VULKAN_HPP_NOEXCEPT
37808     {
37809       bufferCount = bufferCount_;
37810       return *this;
37811     }
37812 
setPBuffersVULKAN_HPP_NAMESPACE::FrameBoundaryEXT37813     VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setPBuffers( const VULKAN_HPP_NAMESPACE::Buffer * pBuffers_ ) VULKAN_HPP_NOEXCEPT
37814     {
37815       pBuffers = pBuffers_;
37816       return *this;
37817     }
37818 
37819 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setBuffersVULKAN_HPP_NAMESPACE::FrameBoundaryEXT37820     FrameBoundaryEXT & setBuffers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers_ ) VULKAN_HPP_NOEXCEPT
37821     {
37822       bufferCount = static_cast<uint32_t>( buffers_.size() );
37823       pBuffers    = buffers_.data();
37824       return *this;
37825     }
37826 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37827 
setTagNameVULKAN_HPP_NAMESPACE::FrameBoundaryEXT37828     VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setTagName( uint64_t tagName_ ) VULKAN_HPP_NOEXCEPT
37829     {
37830       tagName = tagName_;
37831       return *this;
37832     }
37833 
setTagSizeVULKAN_HPP_NAMESPACE::FrameBoundaryEXT37834     VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setTagSize( size_t tagSize_ ) VULKAN_HPP_NOEXCEPT
37835     {
37836       tagSize = tagSize_;
37837       return *this;
37838     }
37839 
setPTagVULKAN_HPP_NAMESPACE::FrameBoundaryEXT37840     VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setPTag( const void * pTag_ ) VULKAN_HPP_NOEXCEPT
37841     {
37842       pTag = pTag_;
37843       return *this;
37844     }
37845 
37846 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
37847     template <typename T>
setTagVULKAN_HPP_NAMESPACE::FrameBoundaryEXT37848     FrameBoundaryEXT & setTag( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & tag_ ) VULKAN_HPP_NOEXCEPT
37849     {
37850       tagSize = tag_.size() * sizeof( T );
37851       pTag    = tag_.data();
37852       return *this;
37853     }
37854 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37855 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37856 
operator VkFrameBoundaryEXT const&VULKAN_HPP_NAMESPACE::FrameBoundaryEXT37857     operator VkFrameBoundaryEXT const &() const VULKAN_HPP_NOEXCEPT
37858     {
37859       return *reinterpret_cast<const VkFrameBoundaryEXT *>( this );
37860     }
37861 
operator VkFrameBoundaryEXT&VULKAN_HPP_NAMESPACE::FrameBoundaryEXT37862     operator VkFrameBoundaryEXT &() VULKAN_HPP_NOEXCEPT
37863     {
37864       return *reinterpret_cast<VkFrameBoundaryEXT *>( this );
37865     }
37866 
37867 #if defined( VULKAN_HPP_USE_REFLECT )
37868 #  if 14 <= VULKAN_HPP_CPP_VERSION
37869     auto
37870 #  else
37871     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
37872                const void * const &,
37873                VULKAN_HPP_NAMESPACE::FrameBoundaryFlagsEXT const &,
37874                uint64_t const &,
37875                uint32_t const &,
37876                const VULKAN_HPP_NAMESPACE::Image * const &,
37877                uint32_t const &,
37878                const VULKAN_HPP_NAMESPACE::Buffer * const &,
37879                uint64_t const &,
37880                size_t const &,
37881                const void * const &>
37882 #  endif
reflectVULKAN_HPP_NAMESPACE::FrameBoundaryEXT37883       reflect() const VULKAN_HPP_NOEXCEPT
37884     {
37885       return std::tie( sType, pNext, flags, frameID, imageCount, pImages, bufferCount, pBuffers, tagName, tagSize, pTag );
37886     }
37887 #endif
37888 
37889 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
37890     auto operator<=>( FrameBoundaryEXT const & ) const = default;
37891 #else
operator ==VULKAN_HPP_NAMESPACE::FrameBoundaryEXT37892     bool operator==( FrameBoundaryEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
37893     {
37894 #  if defined( VULKAN_HPP_USE_REFLECT )
37895       return this->reflect() == rhs.reflect();
37896 #  else
37897       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( frameID == rhs.frameID ) && ( imageCount == rhs.imageCount ) &&
37898              ( pImages == rhs.pImages ) && ( bufferCount == rhs.bufferCount ) && ( pBuffers == rhs.pBuffers ) && ( tagName == rhs.tagName ) &&
37899              ( tagSize == rhs.tagSize ) && ( pTag == rhs.pTag );
37900 #  endif
37901     }
37902 
operator !=VULKAN_HPP_NAMESPACE::FrameBoundaryEXT37903     bool operator!=( FrameBoundaryEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
37904     {
37905       return !operator==( rhs );
37906     }
37907 #endif
37908 
37909   public:
37910     VULKAN_HPP_NAMESPACE::StructureType         sType       = StructureType::eFrameBoundaryEXT;
37911     const void *                                pNext       = {};
37912     VULKAN_HPP_NAMESPACE::FrameBoundaryFlagsEXT flags       = {};
37913     uint64_t                                    frameID     = {};
37914     uint32_t                                    imageCount  = {};
37915     const VULKAN_HPP_NAMESPACE::Image *         pImages     = {};
37916     uint32_t                                    bufferCount = {};
37917     const VULKAN_HPP_NAMESPACE::Buffer *        pBuffers    = {};
37918     uint64_t                                    tagName     = {};
37919     size_t                                      tagSize     = {};
37920     const void *                                pTag        = {};
37921   };
37922 
37923   template <>
37924   struct CppType<StructureType, StructureType::eFrameBoundaryEXT>
37925   {
37926     using Type = FrameBoundaryEXT;
37927   };
37928 
37929   struct FramebufferAttachmentImageInfo
37930   {
37931     using NativeType = VkFramebufferAttachmentImageInfo;
37932 
37933     static const bool                                  allowDuplicate = false;
37934     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFramebufferAttachmentImageInfo;
37935 
37936 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FramebufferAttachmentImageInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo37937     VULKAN_HPP_CONSTEXPR FramebufferAttachmentImageInfo( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_           = {},
37938                                                          VULKAN_HPP_NAMESPACE::ImageUsageFlags  usage_           = {},
37939                                                          uint32_t                               width_           = {},
37940                                                          uint32_t                               height_          = {},
37941                                                          uint32_t                               layerCount_      = {},
37942                                                          uint32_t                               viewFormatCount_ = {},
37943                                                          const VULKAN_HPP_NAMESPACE::Format *   pViewFormats_    = {},
37944                                                          const void *                           pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
37945       : pNext{ pNext_ }
37946       , flags{ flags_ }
37947       , usage{ usage_ }
37948       , width{ width_ }
37949       , height{ height_ }
37950       , layerCount{ layerCount_ }
37951       , viewFormatCount{ viewFormatCount_ }
37952       , pViewFormats{ pViewFormats_ }
37953     {
37954     }
37955 
37956     VULKAN_HPP_CONSTEXPR FramebufferAttachmentImageInfo( FramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37957 
FramebufferAttachmentImageInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo37958     FramebufferAttachmentImageInfo( VkFramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
37959       : FramebufferAttachmentImageInfo( *reinterpret_cast<FramebufferAttachmentImageInfo const *>( &rhs ) )
37960     {
37961     }
37962 
37963 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
FramebufferAttachmentImageInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo37964     FramebufferAttachmentImageInfo( VULKAN_HPP_NAMESPACE::ImageCreateFlags                                                    flags_,
37965                                     VULKAN_HPP_NAMESPACE::ImageUsageFlags                                                     usage_,
37966                                     uint32_t                                                                                  width_,
37967                                     uint32_t                                                                                  height_,
37968                                     uint32_t                                                                                  layerCount_,
37969                                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & viewFormats_,
37970                                     const void *                                                                              pNext_ = nullptr )
37971       : pNext( pNext_ )
37972       , flags( flags_ )
37973       , usage( usage_ )
37974       , width( width_ )
37975       , height( height_ )
37976       , layerCount( layerCount_ )
37977       , viewFormatCount( static_cast<uint32_t>( viewFormats_.size() ) )
37978       , pViewFormats( viewFormats_.data() )
37979     {
37980     }
37981 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
37982 
37983     FramebufferAttachmentImageInfo & operator=( FramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37984 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37985 
operator =VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo37986     FramebufferAttachmentImageInfo & operator=( VkFramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
37987     {
37988       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo const *>( &rhs );
37989       return *this;
37990     }
37991 
37992 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo37993     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
37994     {
37995       pNext = pNext_;
37996       return *this;
37997     }
37998 
setFlagsVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo37999     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setFlags( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
38000     {
38001       flags = flags_;
38002       return *this;
38003     }
38004 
setUsageVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38005     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
38006     {
38007       usage = usage_;
38008       return *this;
38009     }
38010 
setWidthVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38011     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
38012     {
38013       width = width_;
38014       return *this;
38015     }
38016 
setHeightVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38017     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
38018     {
38019       height = height_;
38020       return *this;
38021     }
38022 
setLayerCountVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38023     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
38024     {
38025       layerCount = layerCount_;
38026       return *this;
38027     }
38028 
setViewFormatCountVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38029     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setViewFormatCount( uint32_t viewFormatCount_ ) VULKAN_HPP_NOEXCEPT
38030     {
38031       viewFormatCount = viewFormatCount_;
38032       return *this;
38033     }
38034 
setPViewFormatsVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38035     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setPViewFormats( const VULKAN_HPP_NAMESPACE::Format * pViewFormats_ ) VULKAN_HPP_NOEXCEPT
38036     {
38037       pViewFormats = pViewFormats_;
38038       return *this;
38039     }
38040 
38041 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
38042     FramebufferAttachmentImageInfo &
setViewFormatsVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38043       setViewFormats( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & viewFormats_ ) VULKAN_HPP_NOEXCEPT
38044     {
38045       viewFormatCount = static_cast<uint32_t>( viewFormats_.size() );
38046       pViewFormats    = viewFormats_.data();
38047       return *this;
38048     }
38049 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38050 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
38051 
operator VkFramebufferAttachmentImageInfo const&VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38052     operator VkFramebufferAttachmentImageInfo const &() const VULKAN_HPP_NOEXCEPT
38053     {
38054       return *reinterpret_cast<const VkFramebufferAttachmentImageInfo *>( this );
38055     }
38056 
operator VkFramebufferAttachmentImageInfo&VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38057     operator VkFramebufferAttachmentImageInfo &() VULKAN_HPP_NOEXCEPT
38058     {
38059       return *reinterpret_cast<VkFramebufferAttachmentImageInfo *>( this );
38060     }
38061 
38062 #if defined( VULKAN_HPP_USE_REFLECT )
38063 #  if 14 <= VULKAN_HPP_CPP_VERSION
38064     auto
38065 #  else
38066     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
38067                const void * const &,
38068                VULKAN_HPP_NAMESPACE::ImageCreateFlags const &,
38069                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &,
38070                uint32_t const &,
38071                uint32_t const &,
38072                uint32_t const &,
38073                uint32_t const &,
38074                const VULKAN_HPP_NAMESPACE::Format * const &>
38075 #  endif
reflectVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38076       reflect() const VULKAN_HPP_NOEXCEPT
38077     {
38078       return std::tie( sType, pNext, flags, usage, width, height, layerCount, viewFormatCount, pViewFormats );
38079     }
38080 #endif
38081 
38082 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
38083     auto operator<=>( FramebufferAttachmentImageInfo const & ) const = default;
38084 #else
operator ==VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38085     bool operator==( FramebufferAttachmentImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
38086     {
38087 #  if defined( VULKAN_HPP_USE_REFLECT )
38088       return this->reflect() == rhs.reflect();
38089 #  else
38090       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( usage == rhs.usage ) && ( width == rhs.width ) &&
38091              ( height == rhs.height ) && ( layerCount == rhs.layerCount ) && ( viewFormatCount == rhs.viewFormatCount ) && ( pViewFormats == rhs.pViewFormats );
38092 #  endif
38093     }
38094 
operator !=VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo38095     bool operator!=( FramebufferAttachmentImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
38096     {
38097       return !operator==( rhs );
38098     }
38099 #endif
38100 
38101   public:
38102     VULKAN_HPP_NAMESPACE::StructureType    sType           = StructureType::eFramebufferAttachmentImageInfo;
38103     const void *                           pNext           = {};
38104     VULKAN_HPP_NAMESPACE::ImageCreateFlags flags           = {};
38105     VULKAN_HPP_NAMESPACE::ImageUsageFlags  usage           = {};
38106     uint32_t                               width           = {};
38107     uint32_t                               height          = {};
38108     uint32_t                               layerCount      = {};
38109     uint32_t                               viewFormatCount = {};
38110     const VULKAN_HPP_NAMESPACE::Format *   pViewFormats    = {};
38111   };
38112 
38113   template <>
38114   struct CppType<StructureType, StructureType::eFramebufferAttachmentImageInfo>
38115   {
38116     using Type = FramebufferAttachmentImageInfo;
38117   };
38118 
38119   using FramebufferAttachmentImageInfoKHR = FramebufferAttachmentImageInfo;
38120 
38121   struct FramebufferAttachmentsCreateInfo
38122   {
38123     using NativeType = VkFramebufferAttachmentsCreateInfo;
38124 
38125     static const bool                                  allowDuplicate = false;
38126     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFramebufferAttachmentsCreateInfo;
38127 
38128 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FramebufferAttachmentsCreateInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38129     VULKAN_HPP_CONSTEXPR FramebufferAttachmentsCreateInfo( uint32_t                                                     attachmentImageInfoCount_ = {},
38130                                                            const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo * pAttachmentImageInfos_    = {},
38131                                                            const void *                                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
38132       : pNext{ pNext_ }
38133       , attachmentImageInfoCount{ attachmentImageInfoCount_ }
38134       , pAttachmentImageInfos{ pAttachmentImageInfos_ }
38135     {
38136     }
38137 
38138     VULKAN_HPP_CONSTEXPR FramebufferAttachmentsCreateInfo( FramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38139 
FramebufferAttachmentsCreateInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38140     FramebufferAttachmentsCreateInfo( VkFramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
38141       : FramebufferAttachmentsCreateInfo( *reinterpret_cast<FramebufferAttachmentsCreateInfo const *>( &rhs ) )
38142     {
38143     }
38144 
38145 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
FramebufferAttachmentsCreateInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38146     FramebufferAttachmentsCreateInfo(
38147       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo> const & attachmentImageInfos_,
38148       const void *                                                                                                      pNext_ = nullptr )
38149       : pNext( pNext_ )
38150       , attachmentImageInfoCount( static_cast<uint32_t>( attachmentImageInfos_.size() ) )
38151       , pAttachmentImageInfos( attachmentImageInfos_.data() )
38152     {
38153     }
38154 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38155 
38156     FramebufferAttachmentsCreateInfo & operator=( FramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38157 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38158 
operator =VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38159     FramebufferAttachmentsCreateInfo & operator=( VkFramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
38160     {
38161       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo const *>( &rhs );
38162       return *this;
38163     }
38164 
38165 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38166     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
38167     {
38168       pNext = pNext_;
38169       return *this;
38170     }
38171 
setAttachmentImageInfoCountVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38172     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo & setAttachmentImageInfoCount( uint32_t attachmentImageInfoCount_ ) VULKAN_HPP_NOEXCEPT
38173     {
38174       attachmentImageInfoCount = attachmentImageInfoCount_;
38175       return *this;
38176     }
38177 
38178     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo &
setPAttachmentImageInfosVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38179       setPAttachmentImageInfos( const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo * pAttachmentImageInfos_ ) VULKAN_HPP_NOEXCEPT
38180     {
38181       pAttachmentImageInfos = pAttachmentImageInfos_;
38182       return *this;
38183     }
38184 
38185 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentImageInfosVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38186     FramebufferAttachmentsCreateInfo & setAttachmentImageInfos(
38187       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo> const & attachmentImageInfos_ )
38188       VULKAN_HPP_NOEXCEPT
38189     {
38190       attachmentImageInfoCount = static_cast<uint32_t>( attachmentImageInfos_.size() );
38191       pAttachmentImageInfos    = attachmentImageInfos_.data();
38192       return *this;
38193     }
38194 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38195 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
38196 
operator VkFramebufferAttachmentsCreateInfo const&VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38197     operator VkFramebufferAttachmentsCreateInfo const &() const VULKAN_HPP_NOEXCEPT
38198     {
38199       return *reinterpret_cast<const VkFramebufferAttachmentsCreateInfo *>( this );
38200     }
38201 
operator VkFramebufferAttachmentsCreateInfo&VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38202     operator VkFramebufferAttachmentsCreateInfo &() VULKAN_HPP_NOEXCEPT
38203     {
38204       return *reinterpret_cast<VkFramebufferAttachmentsCreateInfo *>( this );
38205     }
38206 
38207 #if defined( VULKAN_HPP_USE_REFLECT )
38208 #  if 14 <= VULKAN_HPP_CPP_VERSION
38209     auto
38210 #  else
38211     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
38212                const void * const &,
38213                uint32_t const &,
38214                const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo * const &>
38215 #  endif
reflectVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38216       reflect() const VULKAN_HPP_NOEXCEPT
38217     {
38218       return std::tie( sType, pNext, attachmentImageInfoCount, pAttachmentImageInfos );
38219     }
38220 #endif
38221 
38222 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
38223     auto operator<=>( FramebufferAttachmentsCreateInfo const & ) const = default;
38224 #else
operator ==VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38225     bool operator==( FramebufferAttachmentsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
38226     {
38227 #  if defined( VULKAN_HPP_USE_REFLECT )
38228       return this->reflect() == rhs.reflect();
38229 #  else
38230       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachmentImageInfoCount == rhs.attachmentImageInfoCount ) &&
38231              ( pAttachmentImageInfos == rhs.pAttachmentImageInfos );
38232 #  endif
38233     }
38234 
operator !=VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo38235     bool operator!=( FramebufferAttachmentsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
38236     {
38237       return !operator==( rhs );
38238     }
38239 #endif
38240 
38241   public:
38242     VULKAN_HPP_NAMESPACE::StructureType                          sType                    = StructureType::eFramebufferAttachmentsCreateInfo;
38243     const void *                                                 pNext                    = {};
38244     uint32_t                                                     attachmentImageInfoCount = {};
38245     const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo * pAttachmentImageInfos    = {};
38246   };
38247 
38248   template <>
38249   struct CppType<StructureType, StructureType::eFramebufferAttachmentsCreateInfo>
38250   {
38251     using Type = FramebufferAttachmentsCreateInfo;
38252   };
38253 
38254   using FramebufferAttachmentsCreateInfoKHR = FramebufferAttachmentsCreateInfo;
38255 
38256   struct FramebufferCreateInfo
38257   {
38258     using NativeType = VkFramebufferCreateInfo;
38259 
38260     static const bool                                  allowDuplicate = false;
38261     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFramebufferCreateInfo;
38262 
38263 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FramebufferCreateInfoVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38264     VULKAN_HPP_CONSTEXPR FramebufferCreateInfo( VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags_           = {},
38265                                                 VULKAN_HPP_NAMESPACE::RenderPass             renderPass_      = {},
38266                                                 uint32_t                                     attachmentCount_ = {},
38267                                                 const VULKAN_HPP_NAMESPACE::ImageView *      pAttachments_    = {},
38268                                                 uint32_t                                     width_           = {},
38269                                                 uint32_t                                     height_          = {},
38270                                                 uint32_t                                     layers_          = {},
38271                                                 const void *                                 pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
38272       : pNext{ pNext_ }
38273       , flags{ flags_ }
38274       , renderPass{ renderPass_ }
38275       , attachmentCount{ attachmentCount_ }
38276       , pAttachments{ pAttachments_ }
38277       , width{ width_ }
38278       , height{ height_ }
38279       , layers{ layers_ }
38280     {
38281     }
38282 
38283     VULKAN_HPP_CONSTEXPR FramebufferCreateInfo( FramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38284 
FramebufferCreateInfoVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38285     FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
38286       : FramebufferCreateInfo( *reinterpret_cast<FramebufferCreateInfo const *>( &rhs ) )
38287     {
38288     }
38289 
38290 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
FramebufferCreateInfoVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38291     FramebufferCreateInfo( VULKAN_HPP_NAMESPACE::FramebufferCreateFlags                                                 flags_,
38292                            VULKAN_HPP_NAMESPACE::RenderPass                                                             renderPass_,
38293                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageView> const & attachments_,
38294                            uint32_t                                                                                     width_  = {},
38295                            uint32_t                                                                                     height_ = {},
38296                            uint32_t                                                                                     layers_ = {},
38297                            const void *                                                                                 pNext_  = nullptr )
38298       : pNext( pNext_ )
38299       , flags( flags_ )
38300       , renderPass( renderPass_ )
38301       , attachmentCount( static_cast<uint32_t>( attachments_.size() ) )
38302       , pAttachments( attachments_.data() )
38303       , width( width_ )
38304       , height( height_ )
38305       , layers( layers_ )
38306     {
38307     }
38308 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38309 
38310     FramebufferCreateInfo & operator=( FramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38311 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38312 
operator =VULKAN_HPP_NAMESPACE::FramebufferCreateInfo38313     FramebufferCreateInfo & operator=( VkFramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
38314     {
38315       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FramebufferCreateInfo const *>( &rhs );
38316       return *this;
38317     }
38318 
38319 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38320     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
38321     {
38322       pNext = pNext_;
38323       return *this;
38324     }
38325 
setFlagsVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38326     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
38327     {
38328       flags = flags_;
38329       return *this;
38330     }
38331 
setRenderPassVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38332     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT
38333     {
38334       renderPass = renderPass_;
38335       return *this;
38336     }
38337 
setAttachmentCountVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38338     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
38339     {
38340       attachmentCount = attachmentCount_;
38341       return *this;
38342     }
38343 
setPAttachmentsVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38344     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setPAttachments( const VULKAN_HPP_NAMESPACE::ImageView * pAttachments_ ) VULKAN_HPP_NOEXCEPT
38345     {
38346       pAttachments = pAttachments_;
38347       return *this;
38348     }
38349 
38350 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
38351     FramebufferCreateInfo &
setAttachmentsVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38352       setAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageView> const & attachments_ ) VULKAN_HPP_NOEXCEPT
38353     {
38354       attachmentCount = static_cast<uint32_t>( attachments_.size() );
38355       pAttachments    = attachments_.data();
38356       return *this;
38357     }
38358 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38359 
setWidthVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38360     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
38361     {
38362       width = width_;
38363       return *this;
38364     }
38365 
setHeightVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38366     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
38367     {
38368       height = height_;
38369       return *this;
38370     }
38371 
setLayersVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38372     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setLayers( uint32_t layers_ ) VULKAN_HPP_NOEXCEPT
38373     {
38374       layers = layers_;
38375       return *this;
38376     }
38377 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
38378 
operator VkFramebufferCreateInfo const&VULKAN_HPP_NAMESPACE::FramebufferCreateInfo38379     operator VkFramebufferCreateInfo const &() const VULKAN_HPP_NOEXCEPT
38380     {
38381       return *reinterpret_cast<const VkFramebufferCreateInfo *>( this );
38382     }
38383 
operator VkFramebufferCreateInfo&VULKAN_HPP_NAMESPACE::FramebufferCreateInfo38384     operator VkFramebufferCreateInfo &() VULKAN_HPP_NOEXCEPT
38385     {
38386       return *reinterpret_cast<VkFramebufferCreateInfo *>( this );
38387     }
38388 
38389 #if defined( VULKAN_HPP_USE_REFLECT )
38390 #  if 14 <= VULKAN_HPP_CPP_VERSION
38391     auto
38392 #  else
38393     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
38394                const void * const &,
38395                VULKAN_HPP_NAMESPACE::FramebufferCreateFlags const &,
38396                VULKAN_HPP_NAMESPACE::RenderPass const &,
38397                uint32_t const &,
38398                const VULKAN_HPP_NAMESPACE::ImageView * const &,
38399                uint32_t const &,
38400                uint32_t const &,
38401                uint32_t const &>
38402 #  endif
reflectVULKAN_HPP_NAMESPACE::FramebufferCreateInfo38403       reflect() const VULKAN_HPP_NOEXCEPT
38404     {
38405       return std::tie( sType, pNext, flags, renderPass, attachmentCount, pAttachments, width, height, layers );
38406     }
38407 #endif
38408 
38409 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
38410     auto operator<=>( FramebufferCreateInfo const & ) const = default;
38411 #else
operator ==VULKAN_HPP_NAMESPACE::FramebufferCreateInfo38412     bool operator==( FramebufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
38413     {
38414 #  if defined( VULKAN_HPP_USE_REFLECT )
38415       return this->reflect() == rhs.reflect();
38416 #  else
38417       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( renderPass == rhs.renderPass ) &&
38418              ( attachmentCount == rhs.attachmentCount ) && ( pAttachments == rhs.pAttachments ) && ( width == rhs.width ) && ( height == rhs.height ) &&
38419              ( layers == rhs.layers );
38420 #  endif
38421     }
38422 
operator !=VULKAN_HPP_NAMESPACE::FramebufferCreateInfo38423     bool operator!=( FramebufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
38424     {
38425       return !operator==( rhs );
38426     }
38427 #endif
38428 
38429   public:
38430     VULKAN_HPP_NAMESPACE::StructureType          sType           = StructureType::eFramebufferCreateInfo;
38431     const void *                                 pNext           = {};
38432     VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags           = {};
38433     VULKAN_HPP_NAMESPACE::RenderPass             renderPass      = {};
38434     uint32_t                                     attachmentCount = {};
38435     const VULKAN_HPP_NAMESPACE::ImageView *      pAttachments    = {};
38436     uint32_t                                     width           = {};
38437     uint32_t                                     height          = {};
38438     uint32_t                                     layers          = {};
38439   };
38440 
38441   template <>
38442   struct CppType<StructureType, StructureType::eFramebufferCreateInfo>
38443   {
38444     using Type = FramebufferCreateInfo;
38445   };
38446 
38447   struct FramebufferMixedSamplesCombinationNV
38448   {
38449     using NativeType = VkFramebufferMixedSamplesCombinationNV;
38450 
38451     static const bool                                  allowDuplicate = false;
38452     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eFramebufferMixedSamplesCombinationNV;
38453 
38454 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FramebufferMixedSamplesCombinationNVVULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV38455     VULKAN_HPP_CONSTEXPR FramebufferMixedSamplesCombinationNV(
38456       VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode_ = VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge,
38457       VULKAN_HPP_NAMESPACE::SampleCountFlagBits     rasterizationSamples_  = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
38458       VULKAN_HPP_NAMESPACE::SampleCountFlags        depthStencilSamples_   = {},
38459       VULKAN_HPP_NAMESPACE::SampleCountFlags        colorSamples_          = {},
38460       void *                                        pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
38461       : pNext{ pNext_ }
38462       , coverageReductionMode{ coverageReductionMode_ }
38463       , rasterizationSamples{ rasterizationSamples_ }
38464       , depthStencilSamples{ depthStencilSamples_ }
38465       , colorSamples{ colorSamples_ }
38466     {
38467     }
38468 
38469     VULKAN_HPP_CONSTEXPR FramebufferMixedSamplesCombinationNV( FramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38470 
FramebufferMixedSamplesCombinationNVVULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV38471     FramebufferMixedSamplesCombinationNV( VkFramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT
38472       : FramebufferMixedSamplesCombinationNV( *reinterpret_cast<FramebufferMixedSamplesCombinationNV const *>( &rhs ) )
38473     {
38474     }
38475 
38476     FramebufferMixedSamplesCombinationNV & operator=( FramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38477 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38478 
operator =VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV38479     FramebufferMixedSamplesCombinationNV & operator=( VkFramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT
38480     {
38481       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV const *>( &rhs );
38482       return *this;
38483     }
38484 
operator VkFramebufferMixedSamplesCombinationNV const&VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV38485     operator VkFramebufferMixedSamplesCombinationNV const &() const VULKAN_HPP_NOEXCEPT
38486     {
38487       return *reinterpret_cast<const VkFramebufferMixedSamplesCombinationNV *>( this );
38488     }
38489 
operator VkFramebufferMixedSamplesCombinationNV&VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV38490     operator VkFramebufferMixedSamplesCombinationNV &() VULKAN_HPP_NOEXCEPT
38491     {
38492       return *reinterpret_cast<VkFramebufferMixedSamplesCombinationNV *>( this );
38493     }
38494 
38495 #if defined( VULKAN_HPP_USE_REFLECT )
38496 #  if 14 <= VULKAN_HPP_CPP_VERSION
38497     auto
38498 #  else
38499     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
38500                void * const &,
38501                VULKAN_HPP_NAMESPACE::CoverageReductionModeNV const &,
38502                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
38503                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
38504                VULKAN_HPP_NAMESPACE::SampleCountFlags const &>
38505 #  endif
reflectVULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV38506       reflect() const VULKAN_HPP_NOEXCEPT
38507     {
38508       return std::tie( sType, pNext, coverageReductionMode, rasterizationSamples, depthStencilSamples, colorSamples );
38509     }
38510 #endif
38511 
38512 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
38513     auto operator<=>( FramebufferMixedSamplesCombinationNV const & ) const = default;
38514 #else
operator ==VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV38515     bool operator==( FramebufferMixedSamplesCombinationNV const & rhs ) const VULKAN_HPP_NOEXCEPT
38516     {
38517 #  if defined( VULKAN_HPP_USE_REFLECT )
38518       return this->reflect() == rhs.reflect();
38519 #  else
38520       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( coverageReductionMode == rhs.coverageReductionMode ) &&
38521              ( rasterizationSamples == rhs.rasterizationSamples ) && ( depthStencilSamples == rhs.depthStencilSamples ) && ( colorSamples == rhs.colorSamples );
38522 #  endif
38523     }
38524 
operator !=VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV38525     bool operator!=( FramebufferMixedSamplesCombinationNV const & rhs ) const VULKAN_HPP_NOEXCEPT
38526     {
38527       return !operator==( rhs );
38528     }
38529 #endif
38530 
38531   public:
38532     VULKAN_HPP_NAMESPACE::StructureType           sType                 = StructureType::eFramebufferMixedSamplesCombinationNV;
38533     void *                                        pNext                 = {};
38534     VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode = VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge;
38535     VULKAN_HPP_NAMESPACE::SampleCountFlagBits     rasterizationSamples  = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
38536     VULKAN_HPP_NAMESPACE::SampleCountFlags        depthStencilSamples   = {};
38537     VULKAN_HPP_NAMESPACE::SampleCountFlags        colorSamples          = {};
38538   };
38539 
38540   template <>
38541   struct CppType<StructureType, StructureType::eFramebufferMixedSamplesCombinationNV>
38542   {
38543     using Type = FramebufferMixedSamplesCombinationNV;
38544   };
38545 
38546   struct IndirectCommandsStreamNV
38547   {
38548     using NativeType = VkIndirectCommandsStreamNV;
38549 
38550 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
IndirectCommandsStreamNVVULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV38551     VULKAN_HPP_CONSTEXPR IndirectCommandsStreamNV( VULKAN_HPP_NAMESPACE::Buffer     buffer_ = {},
38552                                                    VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {} ) VULKAN_HPP_NOEXCEPT
38553       : buffer{ buffer_ }
38554       , offset{ offset_ }
38555     {
38556     }
38557 
38558     VULKAN_HPP_CONSTEXPR IndirectCommandsStreamNV( IndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38559 
IndirectCommandsStreamNVVULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV38560     IndirectCommandsStreamNV( VkIndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT
38561       : IndirectCommandsStreamNV( *reinterpret_cast<IndirectCommandsStreamNV const *>( &rhs ) )
38562     {
38563     }
38564 
38565     IndirectCommandsStreamNV & operator=( IndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38566 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38567 
operator =VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV38568     IndirectCommandsStreamNV & operator=( VkIndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT
38569     {
38570       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV const *>( &rhs );
38571       return *this;
38572     }
38573 
38574 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBufferVULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV38575     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsStreamNV & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
38576     {
38577       buffer = buffer_;
38578       return *this;
38579     }
38580 
setOffsetVULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV38581     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsStreamNV & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
38582     {
38583       offset = offset_;
38584       return *this;
38585     }
38586 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
38587 
operator VkIndirectCommandsStreamNV const&VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV38588     operator VkIndirectCommandsStreamNV const &() const VULKAN_HPP_NOEXCEPT
38589     {
38590       return *reinterpret_cast<const VkIndirectCommandsStreamNV *>( this );
38591     }
38592 
operator VkIndirectCommandsStreamNV&VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV38593     operator VkIndirectCommandsStreamNV &() VULKAN_HPP_NOEXCEPT
38594     {
38595       return *reinterpret_cast<VkIndirectCommandsStreamNV *>( this );
38596     }
38597 
38598 #if defined( VULKAN_HPP_USE_REFLECT )
38599 #  if 14 <= VULKAN_HPP_CPP_VERSION
38600     auto
38601 #  else
38602     std::tuple<VULKAN_HPP_NAMESPACE::Buffer const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
38603 #  endif
reflectVULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV38604       reflect() const VULKAN_HPP_NOEXCEPT
38605     {
38606       return std::tie( buffer, offset );
38607     }
38608 #endif
38609 
38610 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
38611     auto operator<=>( IndirectCommandsStreamNV const & ) const = default;
38612 #else
operator ==VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV38613     bool operator==( IndirectCommandsStreamNV const & rhs ) const VULKAN_HPP_NOEXCEPT
38614     {
38615 #  if defined( VULKAN_HPP_USE_REFLECT )
38616       return this->reflect() == rhs.reflect();
38617 #  else
38618       return ( buffer == rhs.buffer ) && ( offset == rhs.offset );
38619 #  endif
38620     }
38621 
operator !=VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV38622     bool operator!=( IndirectCommandsStreamNV const & rhs ) const VULKAN_HPP_NOEXCEPT
38623     {
38624       return !operator==( rhs );
38625     }
38626 #endif
38627 
38628   public:
38629     VULKAN_HPP_NAMESPACE::Buffer     buffer = {};
38630     VULKAN_HPP_NAMESPACE::DeviceSize offset = {};
38631   };
38632 
38633   struct GeneratedCommandsInfoNV
38634   {
38635     using NativeType = VkGeneratedCommandsInfoNV;
38636 
38637     static const bool                                  allowDuplicate = false;
38638     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGeneratedCommandsInfoNV;
38639 
38640 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
38641     VULKAN_HPP_CONSTEXPR
GeneratedCommandsInfoNVVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38642       GeneratedCommandsInfoNV( VULKAN_HPP_NAMESPACE::PipelineBindPoint                pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
38643                                VULKAN_HPP_NAMESPACE::Pipeline                         pipeline_          = {},
38644                                VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV         indirectCommandsLayout_ = {},
38645                                uint32_t                                               streamCount_            = {},
38646                                const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV * pStreams_               = {},
38647                                uint32_t                                               sequencesCount_         = {},
38648                                VULKAN_HPP_NAMESPACE::Buffer                           preprocessBuffer_       = {},
38649                                VULKAN_HPP_NAMESPACE::DeviceSize                       preprocessOffset_       = {},
38650                                VULKAN_HPP_NAMESPACE::DeviceSize                       preprocessSize_         = {},
38651                                VULKAN_HPP_NAMESPACE::Buffer                           sequencesCountBuffer_   = {},
38652                                VULKAN_HPP_NAMESPACE::DeviceSize                       sequencesCountOffset_   = {},
38653                                VULKAN_HPP_NAMESPACE::Buffer                           sequencesIndexBuffer_   = {},
38654                                VULKAN_HPP_NAMESPACE::DeviceSize                       sequencesIndexOffset_   = {},
38655                                const void *                                           pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
38656       : pNext{ pNext_ }
38657       , pipelineBindPoint{ pipelineBindPoint_ }
38658       , pipeline{ pipeline_ }
38659       , indirectCommandsLayout{ indirectCommandsLayout_ }
38660       , streamCount{ streamCount_ }
38661       , pStreams{ pStreams_ }
38662       , sequencesCount{ sequencesCount_ }
38663       , preprocessBuffer{ preprocessBuffer_ }
38664       , preprocessOffset{ preprocessOffset_ }
38665       , preprocessSize{ preprocessSize_ }
38666       , sequencesCountBuffer{ sequencesCountBuffer_ }
38667       , sequencesCountOffset{ sequencesCountOffset_ }
38668       , sequencesIndexBuffer{ sequencesIndexBuffer_ }
38669       , sequencesIndexOffset{ sequencesIndexOffset_ }
38670     {
38671     }
38672 
38673     VULKAN_HPP_CONSTEXPR GeneratedCommandsInfoNV( GeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38674 
GeneratedCommandsInfoNVVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38675     GeneratedCommandsInfoNV( VkGeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
38676       : GeneratedCommandsInfoNV( *reinterpret_cast<GeneratedCommandsInfoNV const *>( &rhs ) )
38677     {
38678     }
38679 
38680 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
GeneratedCommandsInfoNVVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38681     GeneratedCommandsInfoNV( VULKAN_HPP_NAMESPACE::PipelineBindPoint        pipelineBindPoint_,
38682                              VULKAN_HPP_NAMESPACE::Pipeline                 pipeline_,
38683                              VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_,
38684                              VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV> const & streams_,
38685                              uint32_t                                                                                                    sequencesCount_   = {},
38686                              VULKAN_HPP_NAMESPACE::Buffer                                                                                preprocessBuffer_ = {},
38687                              VULKAN_HPP_NAMESPACE::DeviceSize                                                                            preprocessOffset_ = {},
38688                              VULKAN_HPP_NAMESPACE::DeviceSize                                                                            preprocessSize_   = {},
38689                              VULKAN_HPP_NAMESPACE::Buffer     sequencesCountBuffer_                                                                        = {},
38690                              VULKAN_HPP_NAMESPACE::DeviceSize sequencesCountOffset_                                                                        = {},
38691                              VULKAN_HPP_NAMESPACE::Buffer     sequencesIndexBuffer_                                                                        = {},
38692                              VULKAN_HPP_NAMESPACE::DeviceSize sequencesIndexOffset_                                                                        = {},
38693                              const void *                     pNext_ = nullptr )
38694       : pNext( pNext_ )
38695       , pipelineBindPoint( pipelineBindPoint_ )
38696       , pipeline( pipeline_ )
38697       , indirectCommandsLayout( indirectCommandsLayout_ )
38698       , streamCount( static_cast<uint32_t>( streams_.size() ) )
38699       , pStreams( streams_.data() )
38700       , sequencesCount( sequencesCount_ )
38701       , preprocessBuffer( preprocessBuffer_ )
38702       , preprocessOffset( preprocessOffset_ )
38703       , preprocessSize( preprocessSize_ )
38704       , sequencesCountBuffer( sequencesCountBuffer_ )
38705       , sequencesCountOffset( sequencesCountOffset_ )
38706       , sequencesIndexBuffer( sequencesIndexBuffer_ )
38707       , sequencesIndexOffset( sequencesIndexOffset_ )
38708     {
38709     }
38710 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38711 
38712     GeneratedCommandsInfoNV & operator=( GeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38713 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38714 
operator =VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38715     GeneratedCommandsInfoNV & operator=( VkGeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
38716     {
38717       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV const *>( &rhs );
38718       return *this;
38719     }
38720 
38721 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38722     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
38723     {
38724       pNext = pNext_;
38725       return *this;
38726     }
38727 
setPipelineBindPointVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38728     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
38729     {
38730       pipelineBindPoint = pipelineBindPoint_;
38731       return *this;
38732     }
38733 
setPipelineVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38734     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT
38735     {
38736       pipeline = pipeline_;
38737       return *this;
38738     }
38739 
38740     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV &
setIndirectCommandsLayoutVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38741       setIndirectCommandsLayout( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_ ) VULKAN_HPP_NOEXCEPT
38742     {
38743       indirectCommandsLayout = indirectCommandsLayout_;
38744       return *this;
38745     }
38746 
setStreamCountVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38747     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setStreamCount( uint32_t streamCount_ ) VULKAN_HPP_NOEXCEPT
38748     {
38749       streamCount = streamCount_;
38750       return *this;
38751     }
38752 
setPStreamsVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38753     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPStreams( const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV * pStreams_ ) VULKAN_HPP_NOEXCEPT
38754     {
38755       pStreams = pStreams_;
38756       return *this;
38757     }
38758 
38759 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
38760     GeneratedCommandsInfoNV &
setStreamsVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38761       setStreams( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV> const & streams_ ) VULKAN_HPP_NOEXCEPT
38762     {
38763       streamCount = static_cast<uint32_t>( streams_.size() );
38764       pStreams    = streams_.data();
38765       return *this;
38766     }
38767 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
38768 
setSequencesCountVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38769     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setSequencesCount( uint32_t sequencesCount_ ) VULKAN_HPP_NOEXCEPT
38770     {
38771       sequencesCount = sequencesCount_;
38772       return *this;
38773     }
38774 
setPreprocessBufferVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38775     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPreprocessBuffer( VULKAN_HPP_NAMESPACE::Buffer preprocessBuffer_ ) VULKAN_HPP_NOEXCEPT
38776     {
38777       preprocessBuffer = preprocessBuffer_;
38778       return *this;
38779     }
38780 
setPreprocessOffsetVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38781     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPreprocessOffset( VULKAN_HPP_NAMESPACE::DeviceSize preprocessOffset_ ) VULKAN_HPP_NOEXCEPT
38782     {
38783       preprocessOffset = preprocessOffset_;
38784       return *this;
38785     }
38786 
setPreprocessSizeVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38787     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPreprocessSize( VULKAN_HPP_NAMESPACE::DeviceSize preprocessSize_ ) VULKAN_HPP_NOEXCEPT
38788     {
38789       preprocessSize = preprocessSize_;
38790       return *this;
38791     }
38792 
setSequencesCountBufferVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38793     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setSequencesCountBuffer( VULKAN_HPP_NAMESPACE::Buffer sequencesCountBuffer_ ) VULKAN_HPP_NOEXCEPT
38794     {
38795       sequencesCountBuffer = sequencesCountBuffer_;
38796       return *this;
38797     }
38798 
setSequencesCountOffsetVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38799     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setSequencesCountOffset( VULKAN_HPP_NAMESPACE::DeviceSize sequencesCountOffset_ ) VULKAN_HPP_NOEXCEPT
38800     {
38801       sequencesCountOffset = sequencesCountOffset_;
38802       return *this;
38803     }
38804 
setSequencesIndexBufferVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38805     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setSequencesIndexBuffer( VULKAN_HPP_NAMESPACE::Buffer sequencesIndexBuffer_ ) VULKAN_HPP_NOEXCEPT
38806     {
38807       sequencesIndexBuffer = sequencesIndexBuffer_;
38808       return *this;
38809     }
38810 
setSequencesIndexOffsetVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38811     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setSequencesIndexOffset( VULKAN_HPP_NAMESPACE::DeviceSize sequencesIndexOffset_ ) VULKAN_HPP_NOEXCEPT
38812     {
38813       sequencesIndexOffset = sequencesIndexOffset_;
38814       return *this;
38815     }
38816 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
38817 
operator VkGeneratedCommandsInfoNV const&VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38818     operator VkGeneratedCommandsInfoNV const &() const VULKAN_HPP_NOEXCEPT
38819     {
38820       return *reinterpret_cast<const VkGeneratedCommandsInfoNV *>( this );
38821     }
38822 
operator VkGeneratedCommandsInfoNV&VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38823     operator VkGeneratedCommandsInfoNV &() VULKAN_HPP_NOEXCEPT
38824     {
38825       return *reinterpret_cast<VkGeneratedCommandsInfoNV *>( this );
38826     }
38827 
38828 #if defined( VULKAN_HPP_USE_REFLECT )
38829 #  if 14 <= VULKAN_HPP_CPP_VERSION
38830     auto
38831 #  else
38832     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
38833                const void * const &,
38834                VULKAN_HPP_NAMESPACE::PipelineBindPoint const &,
38835                VULKAN_HPP_NAMESPACE::Pipeline const &,
38836                VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV const &,
38837                uint32_t const &,
38838                const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV * const &,
38839                uint32_t const &,
38840                VULKAN_HPP_NAMESPACE::Buffer const &,
38841                VULKAN_HPP_NAMESPACE::DeviceSize const &,
38842                VULKAN_HPP_NAMESPACE::DeviceSize const &,
38843                VULKAN_HPP_NAMESPACE::Buffer const &,
38844                VULKAN_HPP_NAMESPACE::DeviceSize const &,
38845                VULKAN_HPP_NAMESPACE::Buffer const &,
38846                VULKAN_HPP_NAMESPACE::DeviceSize const &>
38847 #  endif
reflectVULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38848       reflect() const VULKAN_HPP_NOEXCEPT
38849     {
38850       return std::tie( sType,
38851                        pNext,
38852                        pipelineBindPoint,
38853                        pipeline,
38854                        indirectCommandsLayout,
38855                        streamCount,
38856                        pStreams,
38857                        sequencesCount,
38858                        preprocessBuffer,
38859                        preprocessOffset,
38860                        preprocessSize,
38861                        sequencesCountBuffer,
38862                        sequencesCountOffset,
38863                        sequencesIndexBuffer,
38864                        sequencesIndexOffset );
38865     }
38866 #endif
38867 
38868 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
38869     auto operator<=>( GeneratedCommandsInfoNV const & ) const = default;
38870 #else
operator ==VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38871     bool operator==( GeneratedCommandsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
38872     {
38873 #  if defined( VULKAN_HPP_USE_REFLECT )
38874       return this->reflect() == rhs.reflect();
38875 #  else
38876       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) && ( pipeline == rhs.pipeline ) &&
38877              ( indirectCommandsLayout == rhs.indirectCommandsLayout ) && ( streamCount == rhs.streamCount ) && ( pStreams == rhs.pStreams ) &&
38878              ( sequencesCount == rhs.sequencesCount ) && ( preprocessBuffer == rhs.preprocessBuffer ) && ( preprocessOffset == rhs.preprocessOffset ) &&
38879              ( preprocessSize == rhs.preprocessSize ) && ( sequencesCountBuffer == rhs.sequencesCountBuffer ) &&
38880              ( sequencesCountOffset == rhs.sequencesCountOffset ) && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer ) &&
38881              ( sequencesIndexOffset == rhs.sequencesIndexOffset );
38882 #  endif
38883     }
38884 
operator !=VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV38885     bool operator!=( GeneratedCommandsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
38886     {
38887       return !operator==( rhs );
38888     }
38889 #endif
38890 
38891   public:
38892     VULKAN_HPP_NAMESPACE::StructureType                    sType                  = StructureType::eGeneratedCommandsInfoNV;
38893     const void *                                           pNext                  = {};
38894     VULKAN_HPP_NAMESPACE::PipelineBindPoint                pipelineBindPoint      = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
38895     VULKAN_HPP_NAMESPACE::Pipeline                         pipeline               = {};
38896     VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV         indirectCommandsLayout = {};
38897     uint32_t                                               streamCount            = {};
38898     const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV * pStreams               = {};
38899     uint32_t                                               sequencesCount         = {};
38900     VULKAN_HPP_NAMESPACE::Buffer                           preprocessBuffer       = {};
38901     VULKAN_HPP_NAMESPACE::DeviceSize                       preprocessOffset       = {};
38902     VULKAN_HPP_NAMESPACE::DeviceSize                       preprocessSize         = {};
38903     VULKAN_HPP_NAMESPACE::Buffer                           sequencesCountBuffer   = {};
38904     VULKAN_HPP_NAMESPACE::DeviceSize                       sequencesCountOffset   = {};
38905     VULKAN_HPP_NAMESPACE::Buffer                           sequencesIndexBuffer   = {};
38906     VULKAN_HPP_NAMESPACE::DeviceSize                       sequencesIndexOffset   = {};
38907   };
38908 
38909   template <>
38910   struct CppType<StructureType, StructureType::eGeneratedCommandsInfoNV>
38911   {
38912     using Type = GeneratedCommandsInfoNV;
38913   };
38914 
38915   struct GeneratedCommandsMemoryRequirementsInfoNV
38916   {
38917     using NativeType = VkGeneratedCommandsMemoryRequirementsInfoNV;
38918 
38919     static const bool                                  allowDuplicate = false;
38920     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGeneratedCommandsMemoryRequirementsInfoNV;
38921 
38922 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GeneratedCommandsMemoryRequirementsInfoNVVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV38923     VULKAN_HPP_CONSTEXPR GeneratedCommandsMemoryRequirementsInfoNV(
38924       VULKAN_HPP_NAMESPACE::PipelineBindPoint        pipelineBindPoint_      = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
38925       VULKAN_HPP_NAMESPACE::Pipeline                 pipeline_               = {},
38926       VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_ = {},
38927       uint32_t                                       maxSequencesCount_      = {},
38928       const void *                                   pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
38929       : pNext{ pNext_ }
38930       , pipelineBindPoint{ pipelineBindPoint_ }
38931       , pipeline{ pipeline_ }
38932       , indirectCommandsLayout{ indirectCommandsLayout_ }
38933       , maxSequencesCount{ maxSequencesCount_ }
38934     {
38935     }
38936 
38937     VULKAN_HPP_CONSTEXPR GeneratedCommandsMemoryRequirementsInfoNV( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38938 
GeneratedCommandsMemoryRequirementsInfoNVVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV38939     GeneratedCommandsMemoryRequirementsInfoNV( VkGeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
38940       : GeneratedCommandsMemoryRequirementsInfoNV( *reinterpret_cast<GeneratedCommandsMemoryRequirementsInfoNV const *>( &rhs ) )
38941     {
38942     }
38943 
38944     GeneratedCommandsMemoryRequirementsInfoNV & operator=( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38945 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38946 
operator =VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV38947     GeneratedCommandsMemoryRequirementsInfoNV & operator=( VkGeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
38948     {
38949       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV const *>( &rhs );
38950       return *this;
38951     }
38952 
38953 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV38954     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
38955     {
38956       pNext = pNext_;
38957       return *this;
38958     }
38959 
38960     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV &
setPipelineBindPointVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV38961       setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
38962     {
38963       pipelineBindPoint = pipelineBindPoint_;
38964       return *this;
38965     }
38966 
setPipelineVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV38967     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV & setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT
38968     {
38969       pipeline = pipeline_;
38970       return *this;
38971     }
38972 
38973     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV &
setIndirectCommandsLayoutVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV38974       setIndirectCommandsLayout( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_ ) VULKAN_HPP_NOEXCEPT
38975     {
38976       indirectCommandsLayout = indirectCommandsLayout_;
38977       return *this;
38978     }
38979 
setMaxSequencesCountVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV38980     VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV & setMaxSequencesCount( uint32_t maxSequencesCount_ ) VULKAN_HPP_NOEXCEPT
38981     {
38982       maxSequencesCount = maxSequencesCount_;
38983       return *this;
38984     }
38985 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
38986 
operator VkGeneratedCommandsMemoryRequirementsInfoNV const&VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV38987     operator VkGeneratedCommandsMemoryRequirementsInfoNV const &() const VULKAN_HPP_NOEXCEPT
38988     {
38989       return *reinterpret_cast<const VkGeneratedCommandsMemoryRequirementsInfoNV *>( this );
38990     }
38991 
operator VkGeneratedCommandsMemoryRequirementsInfoNV&VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV38992     operator VkGeneratedCommandsMemoryRequirementsInfoNV &() VULKAN_HPP_NOEXCEPT
38993     {
38994       return *reinterpret_cast<VkGeneratedCommandsMemoryRequirementsInfoNV *>( this );
38995     }
38996 
38997 #if defined( VULKAN_HPP_USE_REFLECT )
38998 #  if 14 <= VULKAN_HPP_CPP_VERSION
38999     auto
39000 #  else
39001     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
39002                const void * const &,
39003                VULKAN_HPP_NAMESPACE::PipelineBindPoint const &,
39004                VULKAN_HPP_NAMESPACE::Pipeline const &,
39005                VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV const &,
39006                uint32_t const &>
39007 #  endif
reflectVULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV39008       reflect() const VULKAN_HPP_NOEXCEPT
39009     {
39010       return std::tie( sType, pNext, pipelineBindPoint, pipeline, indirectCommandsLayout, maxSequencesCount );
39011     }
39012 #endif
39013 
39014 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39015     auto operator<=>( GeneratedCommandsMemoryRequirementsInfoNV const & ) const = default;
39016 #else
operator ==VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV39017     bool operator==( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
39018     {
39019 #  if defined( VULKAN_HPP_USE_REFLECT )
39020       return this->reflect() == rhs.reflect();
39021 #  else
39022       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) && ( pipeline == rhs.pipeline ) &&
39023              ( indirectCommandsLayout == rhs.indirectCommandsLayout ) && ( maxSequencesCount == rhs.maxSequencesCount );
39024 #  endif
39025     }
39026 
operator !=VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV39027     bool operator!=( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
39028     {
39029       return !operator==( rhs );
39030     }
39031 #endif
39032 
39033   public:
39034     VULKAN_HPP_NAMESPACE::StructureType            sType                  = StructureType::eGeneratedCommandsMemoryRequirementsInfoNV;
39035     const void *                                   pNext                  = {};
39036     VULKAN_HPP_NAMESPACE::PipelineBindPoint        pipelineBindPoint      = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
39037     VULKAN_HPP_NAMESPACE::Pipeline                 pipeline               = {};
39038     VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout = {};
39039     uint32_t                                       maxSequencesCount      = {};
39040   };
39041 
39042   template <>
39043   struct CppType<StructureType, StructureType::eGeneratedCommandsMemoryRequirementsInfoNV>
39044   {
39045     using Type = GeneratedCommandsMemoryRequirementsInfoNV;
39046   };
39047 
39048   struct LatencyTimingsFrameReportNV
39049   {
39050     using NativeType = VkLatencyTimingsFrameReportNV;
39051 
39052     static const bool                                  allowDuplicate = false;
39053     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eLatencyTimingsFrameReportNV;
39054 
39055 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
LatencyTimingsFrameReportNVVULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV39056     VULKAN_HPP_CONSTEXPR LatencyTimingsFrameReportNV( uint64_t     presentID_                = {},
39057                                                       uint64_t     inputSampleTimeUs_        = {},
39058                                                       uint64_t     simStartTimeUs_           = {},
39059                                                       uint64_t     simEndTimeUs_             = {},
39060                                                       uint64_t     renderSubmitStartTimeUs_  = {},
39061                                                       uint64_t     renderSubmitEndTimeUs_    = {},
39062                                                       uint64_t     presentStartTimeUs_       = {},
39063                                                       uint64_t     presentEndTimeUs_         = {},
39064                                                       uint64_t     driverStartTimeUs_        = {},
39065                                                       uint64_t     driverEndTimeUs_          = {},
39066                                                       uint64_t     osRenderQueueStartTimeUs_ = {},
39067                                                       uint64_t     osRenderQueueEndTimeUs_   = {},
39068                                                       uint64_t     gpuRenderStartTimeUs_     = {},
39069                                                       uint64_t     gpuRenderEndTimeUs_       = {},
39070                                                       const void * pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
39071       : pNext{ pNext_ }
39072       , presentID{ presentID_ }
39073       , inputSampleTimeUs{ inputSampleTimeUs_ }
39074       , simStartTimeUs{ simStartTimeUs_ }
39075       , simEndTimeUs{ simEndTimeUs_ }
39076       , renderSubmitStartTimeUs{ renderSubmitStartTimeUs_ }
39077       , renderSubmitEndTimeUs{ renderSubmitEndTimeUs_ }
39078       , presentStartTimeUs{ presentStartTimeUs_ }
39079       , presentEndTimeUs{ presentEndTimeUs_ }
39080       , driverStartTimeUs{ driverStartTimeUs_ }
39081       , driverEndTimeUs{ driverEndTimeUs_ }
39082       , osRenderQueueStartTimeUs{ osRenderQueueStartTimeUs_ }
39083       , osRenderQueueEndTimeUs{ osRenderQueueEndTimeUs_ }
39084       , gpuRenderStartTimeUs{ gpuRenderStartTimeUs_ }
39085       , gpuRenderEndTimeUs{ gpuRenderEndTimeUs_ }
39086     {
39087     }
39088 
39089     VULKAN_HPP_CONSTEXPR LatencyTimingsFrameReportNV( LatencyTimingsFrameReportNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39090 
LatencyTimingsFrameReportNVVULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV39091     LatencyTimingsFrameReportNV( VkLatencyTimingsFrameReportNV const & rhs ) VULKAN_HPP_NOEXCEPT
39092       : LatencyTimingsFrameReportNV( *reinterpret_cast<LatencyTimingsFrameReportNV const *>( &rhs ) )
39093     {
39094     }
39095 
39096     LatencyTimingsFrameReportNV & operator=( LatencyTimingsFrameReportNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39097 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39098 
operator =VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV39099     LatencyTimingsFrameReportNV & operator=( VkLatencyTimingsFrameReportNV const & rhs ) VULKAN_HPP_NOEXCEPT
39100     {
39101       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV const *>( &rhs );
39102       return *this;
39103     }
39104 
operator VkLatencyTimingsFrameReportNV const&VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV39105     operator VkLatencyTimingsFrameReportNV const &() const VULKAN_HPP_NOEXCEPT
39106     {
39107       return *reinterpret_cast<const VkLatencyTimingsFrameReportNV *>( this );
39108     }
39109 
operator VkLatencyTimingsFrameReportNV&VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV39110     operator VkLatencyTimingsFrameReportNV &() VULKAN_HPP_NOEXCEPT
39111     {
39112       return *reinterpret_cast<VkLatencyTimingsFrameReportNV *>( this );
39113     }
39114 
39115 #if defined( VULKAN_HPP_USE_REFLECT )
39116 #  if 14 <= VULKAN_HPP_CPP_VERSION
39117     auto
39118 #  else
39119     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
39120                const void * const &,
39121                uint64_t const &,
39122                uint64_t const &,
39123                uint64_t const &,
39124                uint64_t const &,
39125                uint64_t const &,
39126                uint64_t const &,
39127                uint64_t const &,
39128                uint64_t const &,
39129                uint64_t const &,
39130                uint64_t const &,
39131                uint64_t const &,
39132                uint64_t const &,
39133                uint64_t const &,
39134                uint64_t const &>
39135 #  endif
reflectVULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV39136       reflect() const VULKAN_HPP_NOEXCEPT
39137     {
39138       return std::tie( sType,
39139                        pNext,
39140                        presentID,
39141                        inputSampleTimeUs,
39142                        simStartTimeUs,
39143                        simEndTimeUs,
39144                        renderSubmitStartTimeUs,
39145                        renderSubmitEndTimeUs,
39146                        presentStartTimeUs,
39147                        presentEndTimeUs,
39148                        driverStartTimeUs,
39149                        driverEndTimeUs,
39150                        osRenderQueueStartTimeUs,
39151                        osRenderQueueEndTimeUs,
39152                        gpuRenderStartTimeUs,
39153                        gpuRenderEndTimeUs );
39154     }
39155 #endif
39156 
39157 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39158     auto operator<=>( LatencyTimingsFrameReportNV const & ) const = default;
39159 #else
operator ==VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV39160     bool operator==( LatencyTimingsFrameReportNV const & rhs ) const VULKAN_HPP_NOEXCEPT
39161     {
39162 #  if defined( VULKAN_HPP_USE_REFLECT )
39163       return this->reflect() == rhs.reflect();
39164 #  else
39165       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentID == rhs.presentID ) && ( inputSampleTimeUs == rhs.inputSampleTimeUs ) &&
39166              ( simStartTimeUs == rhs.simStartTimeUs ) && ( simEndTimeUs == rhs.simEndTimeUs ) && ( renderSubmitStartTimeUs == rhs.renderSubmitStartTimeUs ) &&
39167              ( renderSubmitEndTimeUs == rhs.renderSubmitEndTimeUs ) && ( presentStartTimeUs == rhs.presentStartTimeUs ) &&
39168              ( presentEndTimeUs == rhs.presentEndTimeUs ) && ( driverStartTimeUs == rhs.driverStartTimeUs ) && ( driverEndTimeUs == rhs.driverEndTimeUs ) &&
39169              ( osRenderQueueStartTimeUs == rhs.osRenderQueueStartTimeUs ) && ( osRenderQueueEndTimeUs == rhs.osRenderQueueEndTimeUs ) &&
39170              ( gpuRenderStartTimeUs == rhs.gpuRenderStartTimeUs ) && ( gpuRenderEndTimeUs == rhs.gpuRenderEndTimeUs );
39171 #  endif
39172     }
39173 
operator !=VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV39174     bool operator!=( LatencyTimingsFrameReportNV const & rhs ) const VULKAN_HPP_NOEXCEPT
39175     {
39176       return !operator==( rhs );
39177     }
39178 #endif
39179 
39180   public:
39181     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::eLatencyTimingsFrameReportNV;
39182     const void *                        pNext                    = {};
39183     uint64_t                            presentID                = {};
39184     uint64_t                            inputSampleTimeUs        = {};
39185     uint64_t                            simStartTimeUs           = {};
39186     uint64_t                            simEndTimeUs             = {};
39187     uint64_t                            renderSubmitStartTimeUs  = {};
39188     uint64_t                            renderSubmitEndTimeUs    = {};
39189     uint64_t                            presentStartTimeUs       = {};
39190     uint64_t                            presentEndTimeUs         = {};
39191     uint64_t                            driverStartTimeUs        = {};
39192     uint64_t                            driverEndTimeUs          = {};
39193     uint64_t                            osRenderQueueStartTimeUs = {};
39194     uint64_t                            osRenderQueueEndTimeUs   = {};
39195     uint64_t                            gpuRenderStartTimeUs     = {};
39196     uint64_t                            gpuRenderEndTimeUs       = {};
39197   };
39198 
39199   template <>
39200   struct CppType<StructureType, StructureType::eLatencyTimingsFrameReportNV>
39201   {
39202     using Type = LatencyTimingsFrameReportNV;
39203   };
39204 
39205   struct GetLatencyMarkerInfoNV
39206   {
39207     using NativeType = VkGetLatencyMarkerInfoNV;
39208 
39209     static const bool                                  allowDuplicate = false;
39210     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGetLatencyMarkerInfoNV;
39211 
39212 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GetLatencyMarkerInfoNVVULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39213     VULKAN_HPP_CONSTEXPR GetLatencyMarkerInfoNV( uint32_t                                            timingCount_ = {},
39214                                                  VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV * pTimings_    = {},
39215                                                  const void *                                        pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
39216       : pNext{ pNext_ }
39217       , timingCount{ timingCount_ }
39218       , pTimings{ pTimings_ }
39219     {
39220     }
39221 
39222     VULKAN_HPP_CONSTEXPR GetLatencyMarkerInfoNV( GetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39223 
GetLatencyMarkerInfoNVVULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39224     GetLatencyMarkerInfoNV( VkGetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
39225       : GetLatencyMarkerInfoNV( *reinterpret_cast<GetLatencyMarkerInfoNV const *>( &rhs ) )
39226     {
39227     }
39228 
39229 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
GetLatencyMarkerInfoNVVULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39230     GetLatencyMarkerInfoNV( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV> const & timings_,
39231                             const void *                                                                                             pNext_ = nullptr )
39232       : pNext( pNext_ ), timingCount( static_cast<uint32_t>( timings_.size() ) ), pTimings( timings_.data() )
39233     {
39234     }
39235 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39236 
39237     GetLatencyMarkerInfoNV & operator=( GetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39238 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39239 
operator =VULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39240     GetLatencyMarkerInfoNV & operator=( VkGetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
39241     {
39242       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV const *>( &rhs );
39243       return *this;
39244     }
39245 
39246 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39247     VULKAN_HPP_CONSTEXPR_14 GetLatencyMarkerInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
39248     {
39249       pNext = pNext_;
39250       return *this;
39251     }
39252 
setTimingCountVULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39253     VULKAN_HPP_CONSTEXPR_14 GetLatencyMarkerInfoNV & setTimingCount( uint32_t timingCount_ ) VULKAN_HPP_NOEXCEPT
39254     {
39255       timingCount = timingCount_;
39256       return *this;
39257     }
39258 
setPTimingsVULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39259     VULKAN_HPP_CONSTEXPR_14 GetLatencyMarkerInfoNV & setPTimings( VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV * pTimings_ ) VULKAN_HPP_NOEXCEPT
39260     {
39261       pTimings = pTimings_;
39262       return *this;
39263     }
39264 
39265 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
39266     GetLatencyMarkerInfoNV &
setTimingsVULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39267       setTimings( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV> const & timings_ ) VULKAN_HPP_NOEXCEPT
39268     {
39269       timingCount = static_cast<uint32_t>( timings_.size() );
39270       pTimings    = timings_.data();
39271       return *this;
39272     }
39273 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39274 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39275 
operator VkGetLatencyMarkerInfoNV const&VULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39276     operator VkGetLatencyMarkerInfoNV const &() const VULKAN_HPP_NOEXCEPT
39277     {
39278       return *reinterpret_cast<const VkGetLatencyMarkerInfoNV *>( this );
39279     }
39280 
operator VkGetLatencyMarkerInfoNV&VULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39281     operator VkGetLatencyMarkerInfoNV &() VULKAN_HPP_NOEXCEPT
39282     {
39283       return *reinterpret_cast<VkGetLatencyMarkerInfoNV *>( this );
39284     }
39285 
39286 #if defined( VULKAN_HPP_USE_REFLECT )
39287 #  if 14 <= VULKAN_HPP_CPP_VERSION
39288     auto
39289 #  else
39290     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV * const &>
39291 #  endif
reflectVULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39292       reflect() const VULKAN_HPP_NOEXCEPT
39293     {
39294       return std::tie( sType, pNext, timingCount, pTimings );
39295     }
39296 #endif
39297 
39298 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39299     auto operator<=>( GetLatencyMarkerInfoNV const & ) const = default;
39300 #else
operator ==VULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39301     bool operator==( GetLatencyMarkerInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
39302     {
39303 #  if defined( VULKAN_HPP_USE_REFLECT )
39304       return this->reflect() == rhs.reflect();
39305 #  else
39306       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( timingCount == rhs.timingCount ) && ( pTimings == rhs.pTimings );
39307 #  endif
39308     }
39309 
operator !=VULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV39310     bool operator!=( GetLatencyMarkerInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
39311     {
39312       return !operator==( rhs );
39313     }
39314 #endif
39315 
39316   public:
39317     VULKAN_HPP_NAMESPACE::StructureType                 sType       = StructureType::eGetLatencyMarkerInfoNV;
39318     const void *                                        pNext       = {};
39319     uint32_t                                            timingCount = {};
39320     VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV * pTimings    = {};
39321   };
39322 
39323   template <>
39324   struct CppType<StructureType, StructureType::eGetLatencyMarkerInfoNV>
39325   {
39326     using Type = GetLatencyMarkerInfoNV;
39327   };
39328 
39329   struct VertexInputBindingDescription
39330   {
39331     using NativeType = VkVertexInputBindingDescription;
39332 
39333 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
39334     VULKAN_HPP_CONSTEXPR
VertexInputBindingDescriptionVULKAN_HPP_NAMESPACE::VertexInputBindingDescription39335       VertexInputBindingDescription( uint32_t                              binding_   = {},
39336                                      uint32_t                              stride_    = {},
39337                                      VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ = VULKAN_HPP_NAMESPACE::VertexInputRate::eVertex ) VULKAN_HPP_NOEXCEPT
39338       : binding{ binding_ }
39339       , stride{ stride_ }
39340       , inputRate{ inputRate_ }
39341     {
39342     }
39343 
39344     VULKAN_HPP_CONSTEXPR VertexInputBindingDescription( VertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39345 
VertexInputBindingDescriptionVULKAN_HPP_NAMESPACE::VertexInputBindingDescription39346     VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT
39347       : VertexInputBindingDescription( *reinterpret_cast<VertexInputBindingDescription const *>( &rhs ) )
39348     {
39349     }
39350 
39351     VertexInputBindingDescription & operator=( VertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39352 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39353 
operator =VULKAN_HPP_NAMESPACE::VertexInputBindingDescription39354     VertexInputBindingDescription & operator=( VkVertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT
39355     {
39356       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputBindingDescription const *>( &rhs );
39357       return *this;
39358     }
39359 
39360 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBindingVULKAN_HPP_NAMESPACE::VertexInputBindingDescription39361     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
39362     {
39363       binding = binding_;
39364       return *this;
39365     }
39366 
setStrideVULKAN_HPP_NAMESPACE::VertexInputBindingDescription39367     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT
39368     {
39369       stride = stride_;
39370       return *this;
39371     }
39372 
setInputRateVULKAN_HPP_NAMESPACE::VertexInputBindingDescription39373     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription & setInputRate( VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ ) VULKAN_HPP_NOEXCEPT
39374     {
39375       inputRate = inputRate_;
39376       return *this;
39377     }
39378 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39379 
operator VkVertexInputBindingDescription const&VULKAN_HPP_NAMESPACE::VertexInputBindingDescription39380     operator VkVertexInputBindingDescription const &() const VULKAN_HPP_NOEXCEPT
39381     {
39382       return *reinterpret_cast<const VkVertexInputBindingDescription *>( this );
39383     }
39384 
operator VkVertexInputBindingDescription&VULKAN_HPP_NAMESPACE::VertexInputBindingDescription39385     operator VkVertexInputBindingDescription &() VULKAN_HPP_NOEXCEPT
39386     {
39387       return *reinterpret_cast<VkVertexInputBindingDescription *>( this );
39388     }
39389 
39390 #if defined( VULKAN_HPP_USE_REFLECT )
39391 #  if 14 <= VULKAN_HPP_CPP_VERSION
39392     auto
39393 #  else
39394     std::tuple<uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::VertexInputRate const &>
39395 #  endif
reflectVULKAN_HPP_NAMESPACE::VertexInputBindingDescription39396       reflect() const VULKAN_HPP_NOEXCEPT
39397     {
39398       return std::tie( binding, stride, inputRate );
39399     }
39400 #endif
39401 
39402 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39403     auto operator<=>( VertexInputBindingDescription const & ) const = default;
39404 #else
operator ==VULKAN_HPP_NAMESPACE::VertexInputBindingDescription39405     bool operator==( VertexInputBindingDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
39406     {
39407 #  if defined( VULKAN_HPP_USE_REFLECT )
39408       return this->reflect() == rhs.reflect();
39409 #  else
39410       return ( binding == rhs.binding ) && ( stride == rhs.stride ) && ( inputRate == rhs.inputRate );
39411 #  endif
39412     }
39413 
operator !=VULKAN_HPP_NAMESPACE::VertexInputBindingDescription39414     bool operator!=( VertexInputBindingDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
39415     {
39416       return !operator==( rhs );
39417     }
39418 #endif
39419 
39420   public:
39421     uint32_t                              binding   = {};
39422     uint32_t                              stride    = {};
39423     VULKAN_HPP_NAMESPACE::VertexInputRate inputRate = VULKAN_HPP_NAMESPACE::VertexInputRate::eVertex;
39424   };
39425 
39426   struct VertexInputAttributeDescription
39427   {
39428     using NativeType = VkVertexInputAttributeDescription;
39429 
39430 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VertexInputAttributeDescriptionVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39431     VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription( uint32_t                     location_ = {},
39432                                                           uint32_t                     binding_  = {},
39433                                                           VULKAN_HPP_NAMESPACE::Format format_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
39434                                                           uint32_t                     offset_   = {} ) VULKAN_HPP_NOEXCEPT
39435       : location{ location_ }
39436       , binding{ binding_ }
39437       , format{ format_ }
39438       , offset{ offset_ }
39439     {
39440     }
39441 
39442     VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription( VertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39443 
VertexInputAttributeDescriptionVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39444     VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT
39445       : VertexInputAttributeDescription( *reinterpret_cast<VertexInputAttributeDescription const *>( &rhs ) )
39446     {
39447     }
39448 
39449     VertexInputAttributeDescription & operator=( VertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39450 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39451 
operator =VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39452     VertexInputAttributeDescription & operator=( VkVertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT
39453     {
39454       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription const *>( &rhs );
39455       return *this;
39456     }
39457 
39458 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setLocationVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39459     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setLocation( uint32_t location_ ) VULKAN_HPP_NOEXCEPT
39460     {
39461       location = location_;
39462       return *this;
39463     }
39464 
setBindingVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39465     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
39466     {
39467       binding = binding_;
39468       return *this;
39469     }
39470 
setFormatVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39471     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
39472     {
39473       format = format_;
39474       return *this;
39475     }
39476 
setOffsetVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39477     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT
39478     {
39479       offset = offset_;
39480       return *this;
39481     }
39482 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39483 
operator VkVertexInputAttributeDescription const&VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39484     operator VkVertexInputAttributeDescription const &() const VULKAN_HPP_NOEXCEPT
39485     {
39486       return *reinterpret_cast<const VkVertexInputAttributeDescription *>( this );
39487     }
39488 
operator VkVertexInputAttributeDescription&VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39489     operator VkVertexInputAttributeDescription &() VULKAN_HPP_NOEXCEPT
39490     {
39491       return *reinterpret_cast<VkVertexInputAttributeDescription *>( this );
39492     }
39493 
39494 #if defined( VULKAN_HPP_USE_REFLECT )
39495 #  if 14 <= VULKAN_HPP_CPP_VERSION
39496     auto
39497 #  else
39498     std::tuple<uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Format const &, uint32_t const &>
39499 #  endif
reflectVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39500       reflect() const VULKAN_HPP_NOEXCEPT
39501     {
39502       return std::tie( location, binding, format, offset );
39503     }
39504 #endif
39505 
39506 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39507     auto operator<=>( VertexInputAttributeDescription const & ) const = default;
39508 #else
operator ==VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39509     bool operator==( VertexInputAttributeDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
39510     {
39511 #  if defined( VULKAN_HPP_USE_REFLECT )
39512       return this->reflect() == rhs.reflect();
39513 #  else
39514       return ( location == rhs.location ) && ( binding == rhs.binding ) && ( format == rhs.format ) && ( offset == rhs.offset );
39515 #  endif
39516     }
39517 
operator !=VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription39518     bool operator!=( VertexInputAttributeDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
39519     {
39520       return !operator==( rhs );
39521     }
39522 #endif
39523 
39524   public:
39525     uint32_t                     location = {};
39526     uint32_t                     binding  = {};
39527     VULKAN_HPP_NAMESPACE::Format format   = VULKAN_HPP_NAMESPACE::Format::eUndefined;
39528     uint32_t                     offset   = {};
39529   };
39530 
39531   struct PipelineVertexInputStateCreateInfo
39532   {
39533     using NativeType = VkPipelineVertexInputStateCreateInfo;
39534 
39535     static const bool                                  allowDuplicate = false;
39536     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineVertexInputStateCreateInfo;
39537 
39538 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineVertexInputStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39539     VULKAN_HPP_CONSTEXPR PipelineVertexInputStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags   flags_                           = {},
39540                                                              uint32_t                                                    vertexBindingDescriptionCount_   = {},
39541                                                              const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription * pVertexBindingDescriptions_      = {},
39542                                                              uint32_t                                                    vertexAttributeDescriptionCount_ = {},
39543                                                              const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription * pVertexAttributeDescriptions_  = {},
39544                                                              const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
39545       : pNext{ pNext_ }
39546       , flags{ flags_ }
39547       , vertexBindingDescriptionCount{ vertexBindingDescriptionCount_ }
39548       , pVertexBindingDescriptions{ pVertexBindingDescriptions_ }
39549       , vertexAttributeDescriptionCount{ vertexAttributeDescriptionCount_ }
39550       , pVertexAttributeDescriptions{ pVertexAttributeDescriptions_ }
39551     {
39552     }
39553 
39554     VULKAN_HPP_CONSTEXPR PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39555 
PipelineVertexInputStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39556     PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
39557       : PipelineVertexInputStateCreateInfo( *reinterpret_cast<PipelineVertexInputStateCreateInfo const *>( &rhs ) )
39558     {
39559     }
39560 
39561 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineVertexInputStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39562     PipelineVertexInputStateCreateInfo(
39563       VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags                                                          flags_,
39564       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription> const &   vertexBindingDescriptions_,
39565       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription> const & vertexAttributeDescriptions_ = {},
39566       const void *                                                                                                       pNext_ = nullptr )
39567       : pNext( pNext_ )
39568       , flags( flags_ )
39569       , vertexBindingDescriptionCount( static_cast<uint32_t>( vertexBindingDescriptions_.size() ) )
39570       , pVertexBindingDescriptions( vertexBindingDescriptions_.data() )
39571       , vertexAttributeDescriptionCount( static_cast<uint32_t>( vertexAttributeDescriptions_.size() ) )
39572       , pVertexAttributeDescriptions( vertexAttributeDescriptions_.data() )
39573     {
39574     }
39575 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39576 
39577     PipelineVertexInputStateCreateInfo & operator=( PipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39578 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39579 
operator =VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39580     PipelineVertexInputStateCreateInfo & operator=( VkPipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
39581     {
39582       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo const *>( &rhs );
39583       return *this;
39584     }
39585 
39586 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39587     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
39588     {
39589       pNext = pNext_;
39590       return *this;
39591     }
39592 
39593     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39594       setFlags( VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
39595     {
39596       flags = flags_;
39597       return *this;
39598     }
39599 
setVertexBindingDescriptionCountVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39600     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ ) VULKAN_HPP_NOEXCEPT
39601     {
39602       vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
39603       return *this;
39604     }
39605 
39606     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo &
setPVertexBindingDescriptionsVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39607       setPVertexBindingDescriptions( const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription * pVertexBindingDescriptions_ ) VULKAN_HPP_NOEXCEPT
39608     {
39609       pVertexBindingDescriptions = pVertexBindingDescriptions_;
39610       return *this;
39611     }
39612 
39613 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setVertexBindingDescriptionsVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39614     PipelineVertexInputStateCreateInfo & setVertexBindingDescriptions(
39615       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription> const & vertexBindingDescriptions_ )
39616       VULKAN_HPP_NOEXCEPT
39617     {
39618       vertexBindingDescriptionCount = static_cast<uint32_t>( vertexBindingDescriptions_.size() );
39619       pVertexBindingDescriptions    = vertexBindingDescriptions_.data();
39620       return *this;
39621     }
39622 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39623 
39624     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo &
setVertexAttributeDescriptionCountVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39625       setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ ) VULKAN_HPP_NOEXCEPT
39626     {
39627       vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
39628       return *this;
39629     }
39630 
39631     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo &
setPVertexAttributeDescriptionsVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39632       setPVertexAttributeDescriptions( const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription * pVertexAttributeDescriptions_ ) VULKAN_HPP_NOEXCEPT
39633     {
39634       pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
39635       return *this;
39636     }
39637 
39638 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setVertexAttributeDescriptionsVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39639     PipelineVertexInputStateCreateInfo & setVertexAttributeDescriptions(
39640       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription> const & vertexAttributeDescriptions_ )
39641       VULKAN_HPP_NOEXCEPT
39642     {
39643       vertexAttributeDescriptionCount = static_cast<uint32_t>( vertexAttributeDescriptions_.size() );
39644       pVertexAttributeDescriptions    = vertexAttributeDescriptions_.data();
39645       return *this;
39646     }
39647 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39648 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39649 
operator VkPipelineVertexInputStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39650     operator VkPipelineVertexInputStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
39651     {
39652       return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo *>( this );
39653     }
39654 
operator VkPipelineVertexInputStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39655     operator VkPipelineVertexInputStateCreateInfo &() VULKAN_HPP_NOEXCEPT
39656     {
39657       return *reinterpret_cast<VkPipelineVertexInputStateCreateInfo *>( this );
39658     }
39659 
39660 #if defined( VULKAN_HPP_USE_REFLECT )
39661 #  if 14 <= VULKAN_HPP_CPP_VERSION
39662     auto
39663 #  else
39664     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
39665                const void * const &,
39666                VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags const &,
39667                uint32_t const &,
39668                const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription * const &,
39669                uint32_t const &,
39670                const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription * const &>
39671 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39672       reflect() const VULKAN_HPP_NOEXCEPT
39673     {
39674       return std::tie(
39675         sType, pNext, flags, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions );
39676     }
39677 #endif
39678 
39679 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39680     auto operator<=>( PipelineVertexInputStateCreateInfo const & ) const = default;
39681 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39682     bool operator==( PipelineVertexInputStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
39683     {
39684 #  if defined( VULKAN_HPP_USE_REFLECT )
39685       return this->reflect() == rhs.reflect();
39686 #  else
39687       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) &&
39688              ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount ) && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions ) &&
39689              ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount ) && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions );
39690 #  endif
39691     }
39692 
operator !=VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo39693     bool operator!=( PipelineVertexInputStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
39694     {
39695       return !operator==( rhs );
39696     }
39697 #endif
39698 
39699   public:
39700     VULKAN_HPP_NAMESPACE::StructureType                           sType                           = StructureType::ePipelineVertexInputStateCreateInfo;
39701     const void *                                                  pNext                           = {};
39702     VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags     flags                           = {};
39703     uint32_t                                                      vertexBindingDescriptionCount   = {};
39704     const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription *   pVertexBindingDescriptions      = {};
39705     uint32_t                                                      vertexAttributeDescriptionCount = {};
39706     const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription * pVertexAttributeDescriptions    = {};
39707   };
39708 
39709   template <>
39710   struct CppType<StructureType, StructureType::ePipelineVertexInputStateCreateInfo>
39711   {
39712     using Type = PipelineVertexInputStateCreateInfo;
39713   };
39714 
39715   struct PipelineInputAssemblyStateCreateInfo
39716   {
39717     using NativeType = VkPipelineInputAssemblyStateCreateInfo;
39718 
39719     static const bool                                  allowDuplicate = false;
39720     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineInputAssemblyStateCreateInfo;
39721 
39722 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
39723     VULKAN_HPP_CONSTEXPR
PipelineInputAssemblyStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo39724       PipelineInputAssemblyStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags flags_ = {},
39725                                             VULKAN_HPP_NAMESPACE::PrimitiveTopology topology_ = VULKAN_HPP_NAMESPACE::PrimitiveTopology::ePointList,
39726                                             VULKAN_HPP_NAMESPACE::Bool32            primitiveRestartEnable_ = {},
39727                                             const void *                            pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
39728       : pNext{ pNext_ }
39729       , flags{ flags_ }
39730       , topology{ topology_ }
39731       , primitiveRestartEnable{ primitiveRestartEnable_ }
39732     {
39733     }
39734 
39735     VULKAN_HPP_CONSTEXPR PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39736 
PipelineInputAssemblyStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo39737     PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
39738       : PipelineInputAssemblyStateCreateInfo( *reinterpret_cast<PipelineInputAssemblyStateCreateInfo const *>( &rhs ) )
39739     {
39740     }
39741 
39742     PipelineInputAssemblyStateCreateInfo & operator=( PipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39743 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39744 
operator =VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo39745     PipelineInputAssemblyStateCreateInfo & operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
39746     {
39747       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo const *>( &rhs );
39748       return *this;
39749     }
39750 
39751 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo39752     VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
39753     {
39754       pNext = pNext_;
39755       return *this;
39756     }
39757 
39758     VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo39759       setFlags( VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
39760     {
39761       flags = flags_;
39762       return *this;
39763     }
39764 
setTopologyVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo39765     VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo & setTopology( VULKAN_HPP_NAMESPACE::PrimitiveTopology topology_ ) VULKAN_HPP_NOEXCEPT
39766     {
39767       topology = topology_;
39768       return *this;
39769     }
39770 
39771     VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo &
setPrimitiveRestartEnableVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo39772       setPrimitiveRestartEnable( VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable_ ) VULKAN_HPP_NOEXCEPT
39773     {
39774       primitiveRestartEnable = primitiveRestartEnable_;
39775       return *this;
39776     }
39777 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39778 
operator VkPipelineInputAssemblyStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo39779     operator VkPipelineInputAssemblyStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
39780     {
39781       return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo *>( this );
39782     }
39783 
operator VkPipelineInputAssemblyStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo39784     operator VkPipelineInputAssemblyStateCreateInfo &() VULKAN_HPP_NOEXCEPT
39785     {
39786       return *reinterpret_cast<VkPipelineInputAssemblyStateCreateInfo *>( this );
39787     }
39788 
39789 #if defined( VULKAN_HPP_USE_REFLECT )
39790 #  if 14 <= VULKAN_HPP_CPP_VERSION
39791     auto
39792 #  else
39793     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
39794                const void * const &,
39795                VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags const &,
39796                VULKAN_HPP_NAMESPACE::PrimitiveTopology const &,
39797                VULKAN_HPP_NAMESPACE::Bool32 const &>
39798 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo39799       reflect() const VULKAN_HPP_NOEXCEPT
39800     {
39801       return std::tie( sType, pNext, flags, topology, primitiveRestartEnable );
39802     }
39803 #endif
39804 
39805 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39806     auto operator<=>( PipelineInputAssemblyStateCreateInfo const & ) const = default;
39807 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo39808     bool operator==( PipelineInputAssemblyStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
39809     {
39810 #  if defined( VULKAN_HPP_USE_REFLECT )
39811       return this->reflect() == rhs.reflect();
39812 #  else
39813       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( topology == rhs.topology ) &&
39814              ( primitiveRestartEnable == rhs.primitiveRestartEnable );
39815 #  endif
39816     }
39817 
operator !=VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo39818     bool operator!=( PipelineInputAssemblyStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
39819     {
39820       return !operator==( rhs );
39821     }
39822 #endif
39823 
39824   public:
39825     VULKAN_HPP_NAMESPACE::StructureType                         sType                  = StructureType::ePipelineInputAssemblyStateCreateInfo;
39826     const void *                                                pNext                  = {};
39827     VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags flags                  = {};
39828     VULKAN_HPP_NAMESPACE::PrimitiveTopology                     topology               = VULKAN_HPP_NAMESPACE::PrimitiveTopology::ePointList;
39829     VULKAN_HPP_NAMESPACE::Bool32                                primitiveRestartEnable = {};
39830   };
39831 
39832   template <>
39833   struct CppType<StructureType, StructureType::ePipelineInputAssemblyStateCreateInfo>
39834   {
39835     using Type = PipelineInputAssemblyStateCreateInfo;
39836   };
39837 
39838   struct PipelineTessellationStateCreateInfo
39839   {
39840     using NativeType = VkPipelineTessellationStateCreateInfo;
39841 
39842     static const bool                                  allowDuplicate = false;
39843     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineTessellationStateCreateInfo;
39844 
39845 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineTessellationStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo39846     VULKAN_HPP_CONSTEXPR PipelineTessellationStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags flags_              = {},
39847                                                               uint32_t                                                   patchControlPoints_ = {},
39848                                                               const void *                                               pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
39849       : pNext{ pNext_ }
39850       , flags{ flags_ }
39851       , patchControlPoints{ patchControlPoints_ }
39852     {
39853     }
39854 
39855     VULKAN_HPP_CONSTEXPR PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39856 
PipelineTessellationStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo39857     PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
39858       : PipelineTessellationStateCreateInfo( *reinterpret_cast<PipelineTessellationStateCreateInfo const *>( &rhs ) )
39859     {
39860     }
39861 
39862     PipelineTessellationStateCreateInfo & operator=( PipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39863 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39864 
operator =VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo39865     PipelineTessellationStateCreateInfo & operator=( VkPipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
39866     {
39867       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo const *>( &rhs );
39868       return *this;
39869     }
39870 
39871 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo39872     VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
39873     {
39874       pNext = pNext_;
39875       return *this;
39876     }
39877 
39878     VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo39879       setFlags( VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
39880     {
39881       flags = flags_;
39882       return *this;
39883     }
39884 
setPatchControlPointsVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo39885     VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo & setPatchControlPoints( uint32_t patchControlPoints_ ) VULKAN_HPP_NOEXCEPT
39886     {
39887       patchControlPoints = patchControlPoints_;
39888       return *this;
39889     }
39890 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39891 
operator VkPipelineTessellationStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo39892     operator VkPipelineTessellationStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
39893     {
39894       return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo *>( this );
39895     }
39896 
operator VkPipelineTessellationStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo39897     operator VkPipelineTessellationStateCreateInfo &() VULKAN_HPP_NOEXCEPT
39898     {
39899       return *reinterpret_cast<VkPipelineTessellationStateCreateInfo *>( this );
39900     }
39901 
39902 #if defined( VULKAN_HPP_USE_REFLECT )
39903 #  if 14 <= VULKAN_HPP_CPP_VERSION
39904     auto
39905 #  else
39906     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
39907                const void * const &,
39908                VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags const &,
39909                uint32_t const &>
39910 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo39911       reflect() const VULKAN_HPP_NOEXCEPT
39912     {
39913       return std::tie( sType, pNext, flags, patchControlPoints );
39914     }
39915 #endif
39916 
39917 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
39918     auto operator<=>( PipelineTessellationStateCreateInfo const & ) const = default;
39919 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo39920     bool operator==( PipelineTessellationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
39921     {
39922 #  if defined( VULKAN_HPP_USE_REFLECT )
39923       return this->reflect() == rhs.reflect();
39924 #  else
39925       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( patchControlPoints == rhs.patchControlPoints );
39926 #  endif
39927     }
39928 
operator !=VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo39929     bool operator!=( PipelineTessellationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
39930     {
39931       return !operator==( rhs );
39932     }
39933 #endif
39934 
39935   public:
39936     VULKAN_HPP_NAMESPACE::StructureType                        sType              = StructureType::ePipelineTessellationStateCreateInfo;
39937     const void *                                               pNext              = {};
39938     VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags flags              = {};
39939     uint32_t                                                   patchControlPoints = {};
39940   };
39941 
39942   template <>
39943   struct CppType<StructureType, StructureType::ePipelineTessellationStateCreateInfo>
39944   {
39945     using Type = PipelineTessellationStateCreateInfo;
39946   };
39947 
39948   struct PipelineViewportStateCreateInfo
39949   {
39950     using NativeType = VkPipelineViewportStateCreateInfo;
39951 
39952     static const bool                                  allowDuplicate = false;
39953     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineViewportStateCreateInfo;
39954 
39955 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineViewportStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo39956     VULKAN_HPP_CONSTEXPR PipelineViewportStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags_         = {},
39957                                                           uint32_t                                               viewportCount_ = {},
39958                                                           const VULKAN_HPP_NAMESPACE::Viewport *                 pViewports_    = {},
39959                                                           uint32_t                                               scissorCount_  = {},
39960                                                           const VULKAN_HPP_NAMESPACE::Rect2D *                   pScissors_     = {},
39961                                                           const void *                                           pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
39962       : pNext{ pNext_ }
39963       , flags{ flags_ }
39964       , viewportCount{ viewportCount_ }
39965       , pViewports{ pViewports_ }
39966       , scissorCount{ scissorCount_ }
39967       , pScissors{ pScissors_ }
39968     {
39969     }
39970 
39971     VULKAN_HPP_CONSTEXPR PipelineViewportStateCreateInfo( PipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39972 
PipelineViewportStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo39973     PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
39974       : PipelineViewportStateCreateInfo( *reinterpret_cast<PipelineViewportStateCreateInfo const *>( &rhs ) )
39975     {
39976     }
39977 
39978 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineViewportStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo39979     PipelineViewportStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags                                      flags_,
39980                                      VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports_,
39981                                      VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const &   scissors_ = {},
39982                                      const void *                                                                                pNext_    = nullptr )
39983       : pNext( pNext_ )
39984       , flags( flags_ )
39985       , viewportCount( static_cast<uint32_t>( viewports_.size() ) )
39986       , pViewports( viewports_.data() )
39987       , scissorCount( static_cast<uint32_t>( scissors_.size() ) )
39988       , pScissors( scissors_.data() )
39989     {
39990     }
39991 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
39992 
39993     PipelineViewportStateCreateInfo & operator=( PipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39994 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39995 
operator =VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo39996     PipelineViewportStateCreateInfo & operator=( VkPipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
39997     {
39998       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo const *>( &rhs );
39999       return *this;
40000     }
40001 
40002 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40003     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40004     {
40005       pNext = pNext_;
40006       return *this;
40007     }
40008 
setFlagsVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40009     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
40010     {
40011       flags = flags_;
40012       return *this;
40013     }
40014 
setViewportCountVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40015     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setViewportCount( uint32_t viewportCount_ ) VULKAN_HPP_NOEXCEPT
40016     {
40017       viewportCount = viewportCount_;
40018       return *this;
40019     }
40020 
setPViewportsVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40021     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setPViewports( const VULKAN_HPP_NAMESPACE::Viewport * pViewports_ ) VULKAN_HPP_NOEXCEPT
40022     {
40023       pViewports = pViewports_;
40024       return *this;
40025     }
40026 
40027 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
40028     PipelineViewportStateCreateInfo &
setViewportsVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40029       setViewports( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports_ ) VULKAN_HPP_NOEXCEPT
40030     {
40031       viewportCount = static_cast<uint32_t>( viewports_.size() );
40032       pViewports    = viewports_.data();
40033       return *this;
40034     }
40035 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40036 
setScissorCountVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40037     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setScissorCount( uint32_t scissorCount_ ) VULKAN_HPP_NOEXCEPT
40038     {
40039       scissorCount = scissorCount_;
40040       return *this;
40041     }
40042 
setPScissorsVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40043     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setPScissors( const VULKAN_HPP_NAMESPACE::Rect2D * pScissors_ ) VULKAN_HPP_NOEXCEPT
40044     {
40045       pScissors = pScissors_;
40046       return *this;
40047     }
40048 
40049 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
40050     PipelineViewportStateCreateInfo &
setScissorsVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40051       setScissors( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors_ ) VULKAN_HPP_NOEXCEPT
40052     {
40053       scissorCount = static_cast<uint32_t>( scissors_.size() );
40054       pScissors    = scissors_.data();
40055       return *this;
40056     }
40057 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40058 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40059 
operator VkPipelineViewportStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40060     operator VkPipelineViewportStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
40061     {
40062       return *reinterpret_cast<const VkPipelineViewportStateCreateInfo *>( this );
40063     }
40064 
operator VkPipelineViewportStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40065     operator VkPipelineViewportStateCreateInfo &() VULKAN_HPP_NOEXCEPT
40066     {
40067       return *reinterpret_cast<VkPipelineViewportStateCreateInfo *>( this );
40068     }
40069 
40070 #if defined( VULKAN_HPP_USE_REFLECT )
40071 #  if 14 <= VULKAN_HPP_CPP_VERSION
40072     auto
40073 #  else
40074     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
40075                const void * const &,
40076                VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags const &,
40077                uint32_t const &,
40078                const VULKAN_HPP_NAMESPACE::Viewport * const &,
40079                uint32_t const &,
40080                const VULKAN_HPP_NAMESPACE::Rect2D * const &>
40081 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40082       reflect() const VULKAN_HPP_NOEXCEPT
40083     {
40084       return std::tie( sType, pNext, flags, viewportCount, pViewports, scissorCount, pScissors );
40085     }
40086 #endif
40087 
40088 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40089     auto operator<=>( PipelineViewportStateCreateInfo const & ) const = default;
40090 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40091     bool operator==( PipelineViewportStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40092     {
40093 #  if defined( VULKAN_HPP_USE_REFLECT )
40094       return this->reflect() == rhs.reflect();
40095 #  else
40096       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( viewportCount == rhs.viewportCount ) &&
40097              ( pViewports == rhs.pViewports ) && ( scissorCount == rhs.scissorCount ) && ( pScissors == rhs.pScissors );
40098 #  endif
40099     }
40100 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo40101     bool operator!=( PipelineViewportStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40102     {
40103       return !operator==( rhs );
40104     }
40105 #endif
40106 
40107   public:
40108     VULKAN_HPP_NAMESPACE::StructureType                    sType         = StructureType::ePipelineViewportStateCreateInfo;
40109     const void *                                           pNext         = {};
40110     VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags         = {};
40111     uint32_t                                               viewportCount = {};
40112     const VULKAN_HPP_NAMESPACE::Viewport *                 pViewports    = {};
40113     uint32_t                                               scissorCount  = {};
40114     const VULKAN_HPP_NAMESPACE::Rect2D *                   pScissors     = {};
40115   };
40116 
40117   template <>
40118   struct CppType<StructureType, StructureType::ePipelineViewportStateCreateInfo>
40119   {
40120     using Type = PipelineViewportStateCreateInfo;
40121   };
40122 
40123   struct PipelineRasterizationStateCreateInfo
40124   {
40125     using NativeType = VkPipelineRasterizationStateCreateInfo;
40126 
40127     static const bool                                  allowDuplicate = false;
40128     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineRasterizationStateCreateInfo;
40129 
40130 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40131     VULKAN_HPP_CONSTEXPR PipelineRasterizationStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags flags_                   = {},
40132                                                                VULKAN_HPP_NAMESPACE::Bool32                                depthClampEnable_        = {},
40133                                                                VULKAN_HPP_NAMESPACE::Bool32                                rasterizerDiscardEnable_ = {},
40134                                                                VULKAN_HPP_NAMESPACE::PolygonMode   polygonMode_ = VULKAN_HPP_NAMESPACE::PolygonMode::eFill,
40135                                                                VULKAN_HPP_NAMESPACE::CullModeFlags cullMode_    = {},
40136                                                                VULKAN_HPP_NAMESPACE::FrontFace frontFace_ = VULKAN_HPP_NAMESPACE::FrontFace::eCounterClockwise,
40137                                                                VULKAN_HPP_NAMESPACE::Bool32    depthBiasEnable_         = {},
40138                                                                float                           depthBiasConstantFactor_ = {},
40139                                                                float                           depthBiasClamp_          = {},
40140                                                                float                           depthBiasSlopeFactor_    = {},
40141                                                                float                           lineWidth_               = {},
40142                                                                const void *                    pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
40143       : pNext{ pNext_ }
40144       , flags{ flags_ }
40145       , depthClampEnable{ depthClampEnable_ }
40146       , rasterizerDiscardEnable{ rasterizerDiscardEnable_ }
40147       , polygonMode{ polygonMode_ }
40148       , cullMode{ cullMode_ }
40149       , frontFace{ frontFace_ }
40150       , depthBiasEnable{ depthBiasEnable_ }
40151       , depthBiasConstantFactor{ depthBiasConstantFactor_ }
40152       , depthBiasClamp{ depthBiasClamp_ }
40153       , depthBiasSlopeFactor{ depthBiasSlopeFactor_ }
40154       , lineWidth{ lineWidth_ }
40155     {
40156     }
40157 
40158     VULKAN_HPP_CONSTEXPR PipelineRasterizationStateCreateInfo( PipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40159 
PipelineRasterizationStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40160     PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40161       : PipelineRasterizationStateCreateInfo( *reinterpret_cast<PipelineRasterizationStateCreateInfo const *>( &rhs ) )
40162     {
40163     }
40164 
40165     PipelineRasterizationStateCreateInfo & operator=( PipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40166 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40167 
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40168     PipelineRasterizationStateCreateInfo & operator=( VkPipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40169     {
40170       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo const *>( &rhs );
40171       return *this;
40172     }
40173 
40174 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40175     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40176     {
40177       pNext = pNext_;
40178       return *this;
40179     }
40180 
40181     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40182       setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
40183     {
40184       flags = flags_;
40185       return *this;
40186     }
40187 
setDepthClampEnableVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40188     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setDepthClampEnable( VULKAN_HPP_NAMESPACE::Bool32 depthClampEnable_ ) VULKAN_HPP_NOEXCEPT
40189     {
40190       depthClampEnable = depthClampEnable_;
40191       return *this;
40192     }
40193 
40194     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo &
setRasterizerDiscardEnableVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40195       setRasterizerDiscardEnable( VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable_ ) VULKAN_HPP_NOEXCEPT
40196     {
40197       rasterizerDiscardEnable = rasterizerDiscardEnable_;
40198       return *this;
40199     }
40200 
setPolygonModeVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40201     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setPolygonMode( VULKAN_HPP_NAMESPACE::PolygonMode polygonMode_ ) VULKAN_HPP_NOEXCEPT
40202     {
40203       polygonMode = polygonMode_;
40204       return *this;
40205     }
40206 
setCullModeVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40207     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setCullMode( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode_ ) VULKAN_HPP_NOEXCEPT
40208     {
40209       cullMode = cullMode_;
40210       return *this;
40211     }
40212 
setFrontFaceVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40213     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setFrontFace( VULKAN_HPP_NAMESPACE::FrontFace frontFace_ ) VULKAN_HPP_NOEXCEPT
40214     {
40215       frontFace = frontFace_;
40216       return *this;
40217     }
40218 
setDepthBiasEnableVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40219     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setDepthBiasEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable_ ) VULKAN_HPP_NOEXCEPT
40220     {
40221       depthBiasEnable = depthBiasEnable_;
40222       return *this;
40223     }
40224 
setDepthBiasConstantFactorVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40225     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setDepthBiasConstantFactor( float depthBiasConstantFactor_ ) VULKAN_HPP_NOEXCEPT
40226     {
40227       depthBiasConstantFactor = depthBiasConstantFactor_;
40228       return *this;
40229     }
40230 
setDepthBiasClampVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40231     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setDepthBiasClamp( float depthBiasClamp_ ) VULKAN_HPP_NOEXCEPT
40232     {
40233       depthBiasClamp = depthBiasClamp_;
40234       return *this;
40235     }
40236 
setDepthBiasSlopeFactorVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40237     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ ) VULKAN_HPP_NOEXCEPT
40238     {
40239       depthBiasSlopeFactor = depthBiasSlopeFactor_;
40240       return *this;
40241     }
40242 
setLineWidthVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40243     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setLineWidth( float lineWidth_ ) VULKAN_HPP_NOEXCEPT
40244     {
40245       lineWidth = lineWidth_;
40246       return *this;
40247     }
40248 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40249 
operator VkPipelineRasterizationStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40250     operator VkPipelineRasterizationStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
40251     {
40252       return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo *>( this );
40253     }
40254 
operator VkPipelineRasterizationStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40255     operator VkPipelineRasterizationStateCreateInfo &() VULKAN_HPP_NOEXCEPT
40256     {
40257       return *reinterpret_cast<VkPipelineRasterizationStateCreateInfo *>( this );
40258     }
40259 
40260 #if defined( VULKAN_HPP_USE_REFLECT )
40261 #  if 14 <= VULKAN_HPP_CPP_VERSION
40262     auto
40263 #  else
40264     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
40265                const void * const &,
40266                VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags const &,
40267                VULKAN_HPP_NAMESPACE::Bool32 const &,
40268                VULKAN_HPP_NAMESPACE::Bool32 const &,
40269                VULKAN_HPP_NAMESPACE::PolygonMode const &,
40270                VULKAN_HPP_NAMESPACE::CullModeFlags const &,
40271                VULKAN_HPP_NAMESPACE::FrontFace const &,
40272                VULKAN_HPP_NAMESPACE::Bool32 const &,
40273                float const &,
40274                float const &,
40275                float const &,
40276                float const &>
40277 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40278       reflect() const VULKAN_HPP_NOEXCEPT
40279     {
40280       return std::tie( sType,
40281                        pNext,
40282                        flags,
40283                        depthClampEnable,
40284                        rasterizerDiscardEnable,
40285                        polygonMode,
40286                        cullMode,
40287                        frontFace,
40288                        depthBiasEnable,
40289                        depthBiasConstantFactor,
40290                        depthBiasClamp,
40291                        depthBiasSlopeFactor,
40292                        lineWidth );
40293     }
40294 #endif
40295 
40296 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40297     auto operator<=>( PipelineRasterizationStateCreateInfo const & ) const = default;
40298 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40299     bool operator==( PipelineRasterizationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40300     {
40301 #  if defined( VULKAN_HPP_USE_REFLECT )
40302       return this->reflect() == rhs.reflect();
40303 #  else
40304       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( depthClampEnable == rhs.depthClampEnable ) &&
40305              ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable ) && ( polygonMode == rhs.polygonMode ) && ( cullMode == rhs.cullMode ) &&
40306              ( frontFace == rhs.frontFace ) && ( depthBiasEnable == rhs.depthBiasEnable ) && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor ) &&
40307              ( depthBiasClamp == rhs.depthBiasClamp ) && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor ) && ( lineWidth == rhs.lineWidth );
40308 #  endif
40309     }
40310 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo40311     bool operator!=( PipelineRasterizationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40312     {
40313       return !operator==( rhs );
40314     }
40315 #endif
40316 
40317   public:
40318     VULKAN_HPP_NAMESPACE::StructureType                         sType                   = StructureType::ePipelineRasterizationStateCreateInfo;
40319     const void *                                                pNext                   = {};
40320     VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags flags                   = {};
40321     VULKAN_HPP_NAMESPACE::Bool32                                depthClampEnable        = {};
40322     VULKAN_HPP_NAMESPACE::Bool32                                rasterizerDiscardEnable = {};
40323     VULKAN_HPP_NAMESPACE::PolygonMode                           polygonMode             = VULKAN_HPP_NAMESPACE::PolygonMode::eFill;
40324     VULKAN_HPP_NAMESPACE::CullModeFlags                         cullMode                = {};
40325     VULKAN_HPP_NAMESPACE::FrontFace                             frontFace               = VULKAN_HPP_NAMESPACE::FrontFace::eCounterClockwise;
40326     VULKAN_HPP_NAMESPACE::Bool32                                depthBiasEnable         = {};
40327     float                                                       depthBiasConstantFactor = {};
40328     float                                                       depthBiasClamp          = {};
40329     float                                                       depthBiasSlopeFactor    = {};
40330     float                                                       lineWidth               = {};
40331   };
40332 
40333   template <>
40334   struct CppType<StructureType, StructureType::ePipelineRasterizationStateCreateInfo>
40335   {
40336     using Type = PipelineRasterizationStateCreateInfo;
40337   };
40338 
40339   struct PipelineMultisampleStateCreateInfo
40340   {
40341     using NativeType = VkPipelineMultisampleStateCreateInfo;
40342 
40343     static const bool                                  allowDuplicate = false;
40344     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineMultisampleStateCreateInfo;
40345 
40346 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
40347     VULKAN_HPP_CONSTEXPR
PipelineMultisampleStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40348       PipelineMultisampleStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags flags_ = {},
40349                                           VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_  = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
40350                                           VULKAN_HPP_NAMESPACE::Bool32              sampleShadingEnable_   = {},
40351                                           float                                     minSampleShading_      = {},
40352                                           const VULKAN_HPP_NAMESPACE::SampleMask *  pSampleMask_           = {},
40353                                           VULKAN_HPP_NAMESPACE::Bool32              alphaToCoverageEnable_ = {},
40354                                           VULKAN_HPP_NAMESPACE::Bool32              alphaToOneEnable_      = {},
40355                                           const void *                              pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
40356       : pNext{ pNext_ }
40357       , flags{ flags_ }
40358       , rasterizationSamples{ rasterizationSamples_ }
40359       , sampleShadingEnable{ sampleShadingEnable_ }
40360       , minSampleShading{ minSampleShading_ }
40361       , pSampleMask{ pSampleMask_ }
40362       , alphaToCoverageEnable{ alphaToCoverageEnable_ }
40363       , alphaToOneEnable{ alphaToOneEnable_ }
40364     {
40365     }
40366 
40367     VULKAN_HPP_CONSTEXPR PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40368 
PipelineMultisampleStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40369     PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40370       : PipelineMultisampleStateCreateInfo( *reinterpret_cast<PipelineMultisampleStateCreateInfo const *>( &rhs ) )
40371     {
40372     }
40373 
40374     PipelineMultisampleStateCreateInfo & operator=( PipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40375 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40376 
operator =VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40377     PipelineMultisampleStateCreateInfo & operator=( VkPipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40378     {
40379       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo const *>( &rhs );
40380       return *this;
40381     }
40382 
40383 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40384     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40385     {
40386       pNext = pNext_;
40387       return *this;
40388     }
40389 
40390     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40391       setFlags( VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
40392     {
40393       flags = flags_;
40394       return *this;
40395     }
40396 
40397     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo &
setRasterizationSamplesVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40398       setRasterizationSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ ) VULKAN_HPP_NOEXCEPT
40399     {
40400       rasterizationSamples = rasterizationSamples_;
40401       return *this;
40402     }
40403 
setSampleShadingEnableVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40404     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setSampleShadingEnable( VULKAN_HPP_NAMESPACE::Bool32 sampleShadingEnable_ ) VULKAN_HPP_NOEXCEPT
40405     {
40406       sampleShadingEnable = sampleShadingEnable_;
40407       return *this;
40408     }
40409 
setMinSampleShadingVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40410     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setMinSampleShading( float minSampleShading_ ) VULKAN_HPP_NOEXCEPT
40411     {
40412       minSampleShading = minSampleShading_;
40413       return *this;
40414     }
40415 
setPSampleMaskVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40416     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setPSampleMask( const VULKAN_HPP_NAMESPACE::SampleMask * pSampleMask_ ) VULKAN_HPP_NOEXCEPT
40417     {
40418       pSampleMask = pSampleMask_;
40419       return *this;
40420     }
40421 
40422     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo &
setAlphaToCoverageEnableVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40423       setAlphaToCoverageEnable( VULKAN_HPP_NAMESPACE::Bool32 alphaToCoverageEnable_ ) VULKAN_HPP_NOEXCEPT
40424     {
40425       alphaToCoverageEnable = alphaToCoverageEnable_;
40426       return *this;
40427     }
40428 
setAlphaToOneEnableVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40429     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setAlphaToOneEnable( VULKAN_HPP_NAMESPACE::Bool32 alphaToOneEnable_ ) VULKAN_HPP_NOEXCEPT
40430     {
40431       alphaToOneEnable = alphaToOneEnable_;
40432       return *this;
40433     }
40434 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40435 
operator VkPipelineMultisampleStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40436     operator VkPipelineMultisampleStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
40437     {
40438       return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo *>( this );
40439     }
40440 
operator VkPipelineMultisampleStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40441     operator VkPipelineMultisampleStateCreateInfo &() VULKAN_HPP_NOEXCEPT
40442     {
40443       return *reinterpret_cast<VkPipelineMultisampleStateCreateInfo *>( this );
40444     }
40445 
40446 #if defined( VULKAN_HPP_USE_REFLECT )
40447 #  if 14 <= VULKAN_HPP_CPP_VERSION
40448     auto
40449 #  else
40450     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
40451                const void * const &,
40452                VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags const &,
40453                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
40454                VULKAN_HPP_NAMESPACE::Bool32 const &,
40455                float const &,
40456                const VULKAN_HPP_NAMESPACE::SampleMask * const &,
40457                VULKAN_HPP_NAMESPACE::Bool32 const &,
40458                VULKAN_HPP_NAMESPACE::Bool32 const &>
40459 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40460       reflect() const VULKAN_HPP_NOEXCEPT
40461     {
40462       return std::tie( sType, pNext, flags, rasterizationSamples, sampleShadingEnable, minSampleShading, pSampleMask, alphaToCoverageEnable, alphaToOneEnable );
40463     }
40464 #endif
40465 
40466 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40467     auto operator<=>( PipelineMultisampleStateCreateInfo const & ) const = default;
40468 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40469     bool operator==( PipelineMultisampleStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40470     {
40471 #  if defined( VULKAN_HPP_USE_REFLECT )
40472       return this->reflect() == rhs.reflect();
40473 #  else
40474       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( rasterizationSamples == rhs.rasterizationSamples ) &&
40475              ( sampleShadingEnable == rhs.sampleShadingEnable ) && ( minSampleShading == rhs.minSampleShading ) && ( pSampleMask == rhs.pSampleMask ) &&
40476              ( alphaToCoverageEnable == rhs.alphaToCoverageEnable ) && ( alphaToOneEnable == rhs.alphaToOneEnable );
40477 #  endif
40478     }
40479 
operator !=VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo40480     bool operator!=( PipelineMultisampleStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40481     {
40482       return !operator==( rhs );
40483     }
40484 #endif
40485 
40486   public:
40487     VULKAN_HPP_NAMESPACE::StructureType                       sType                 = StructureType::ePipelineMultisampleStateCreateInfo;
40488     const void *                                              pNext                 = {};
40489     VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags flags                 = {};
40490     VULKAN_HPP_NAMESPACE::SampleCountFlagBits                 rasterizationSamples  = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
40491     VULKAN_HPP_NAMESPACE::Bool32                              sampleShadingEnable   = {};
40492     float                                                     minSampleShading      = {};
40493     const VULKAN_HPP_NAMESPACE::SampleMask *                  pSampleMask           = {};
40494     VULKAN_HPP_NAMESPACE::Bool32                              alphaToCoverageEnable = {};
40495     VULKAN_HPP_NAMESPACE::Bool32                              alphaToOneEnable      = {};
40496   };
40497 
40498   template <>
40499   struct CppType<StructureType, StructureType::ePipelineMultisampleStateCreateInfo>
40500   {
40501     using Type = PipelineMultisampleStateCreateInfo;
40502   };
40503 
40504   struct StencilOpState
40505   {
40506     using NativeType = VkStencilOpState;
40507 
40508 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
StencilOpStateVULKAN_HPP_NAMESPACE::StencilOpState40509     VULKAN_HPP_CONSTEXPR StencilOpState( VULKAN_HPP_NAMESPACE::StencilOp failOp_      = VULKAN_HPP_NAMESPACE::StencilOp::eKeep,
40510                                          VULKAN_HPP_NAMESPACE::StencilOp passOp_      = VULKAN_HPP_NAMESPACE::StencilOp::eKeep,
40511                                          VULKAN_HPP_NAMESPACE::StencilOp depthFailOp_ = VULKAN_HPP_NAMESPACE::StencilOp::eKeep,
40512                                          VULKAN_HPP_NAMESPACE::CompareOp compareOp_   = VULKAN_HPP_NAMESPACE::CompareOp::eNever,
40513                                          uint32_t                        compareMask_ = {},
40514                                          uint32_t                        writeMask_   = {},
40515                                          uint32_t                        reference_   = {} ) VULKAN_HPP_NOEXCEPT
40516       : failOp{ failOp_ }
40517       , passOp{ passOp_ }
40518       , depthFailOp{ depthFailOp_ }
40519       , compareOp{ compareOp_ }
40520       , compareMask{ compareMask_ }
40521       , writeMask{ writeMask_ }
40522       , reference{ reference_ }
40523     {
40524     }
40525 
40526     VULKAN_HPP_CONSTEXPR StencilOpState( StencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40527 
StencilOpStateVULKAN_HPP_NAMESPACE::StencilOpState40528     StencilOpState( VkStencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT : StencilOpState( *reinterpret_cast<StencilOpState const *>( &rhs ) ) {}
40529 
40530     StencilOpState & operator=( StencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40531 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40532 
operator =VULKAN_HPP_NAMESPACE::StencilOpState40533     StencilOpState & operator=( VkStencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT
40534     {
40535       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::StencilOpState const *>( &rhs );
40536       return *this;
40537     }
40538 
40539 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFailOpVULKAN_HPP_NAMESPACE::StencilOpState40540     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setFailOp( VULKAN_HPP_NAMESPACE::StencilOp failOp_ ) VULKAN_HPP_NOEXCEPT
40541     {
40542       failOp = failOp_;
40543       return *this;
40544     }
40545 
setPassOpVULKAN_HPP_NAMESPACE::StencilOpState40546     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setPassOp( VULKAN_HPP_NAMESPACE::StencilOp passOp_ ) VULKAN_HPP_NOEXCEPT
40547     {
40548       passOp = passOp_;
40549       return *this;
40550     }
40551 
setDepthFailOpVULKAN_HPP_NAMESPACE::StencilOpState40552     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setDepthFailOp( VULKAN_HPP_NAMESPACE::StencilOp depthFailOp_ ) VULKAN_HPP_NOEXCEPT
40553     {
40554       depthFailOp = depthFailOp_;
40555       return *this;
40556     }
40557 
setCompareOpVULKAN_HPP_NAMESPACE::StencilOpState40558     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setCompareOp( VULKAN_HPP_NAMESPACE::CompareOp compareOp_ ) VULKAN_HPP_NOEXCEPT
40559     {
40560       compareOp = compareOp_;
40561       return *this;
40562     }
40563 
setCompareMaskVULKAN_HPP_NAMESPACE::StencilOpState40564     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setCompareMask( uint32_t compareMask_ ) VULKAN_HPP_NOEXCEPT
40565     {
40566       compareMask = compareMask_;
40567       return *this;
40568     }
40569 
setWriteMaskVULKAN_HPP_NAMESPACE::StencilOpState40570     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setWriteMask( uint32_t writeMask_ ) VULKAN_HPP_NOEXCEPT
40571     {
40572       writeMask = writeMask_;
40573       return *this;
40574     }
40575 
setReferenceVULKAN_HPP_NAMESPACE::StencilOpState40576     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setReference( uint32_t reference_ ) VULKAN_HPP_NOEXCEPT
40577     {
40578       reference = reference_;
40579       return *this;
40580     }
40581 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40582 
operator VkStencilOpState const&VULKAN_HPP_NAMESPACE::StencilOpState40583     operator VkStencilOpState const &() const VULKAN_HPP_NOEXCEPT
40584     {
40585       return *reinterpret_cast<const VkStencilOpState *>( this );
40586     }
40587 
operator VkStencilOpState&VULKAN_HPP_NAMESPACE::StencilOpState40588     operator VkStencilOpState &() VULKAN_HPP_NOEXCEPT
40589     {
40590       return *reinterpret_cast<VkStencilOpState *>( this );
40591     }
40592 
40593 #if defined( VULKAN_HPP_USE_REFLECT )
40594 #  if 14 <= VULKAN_HPP_CPP_VERSION
40595     auto
40596 #  else
40597     std::tuple<VULKAN_HPP_NAMESPACE::StencilOp const &,
40598                VULKAN_HPP_NAMESPACE::StencilOp const &,
40599                VULKAN_HPP_NAMESPACE::StencilOp const &,
40600                VULKAN_HPP_NAMESPACE::CompareOp const &,
40601                uint32_t const &,
40602                uint32_t const &,
40603                uint32_t const &>
40604 #  endif
reflectVULKAN_HPP_NAMESPACE::StencilOpState40605       reflect() const VULKAN_HPP_NOEXCEPT
40606     {
40607       return std::tie( failOp, passOp, depthFailOp, compareOp, compareMask, writeMask, reference );
40608     }
40609 #endif
40610 
40611 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40612     auto operator<=>( StencilOpState const & ) const = default;
40613 #else
operator ==VULKAN_HPP_NAMESPACE::StencilOpState40614     bool operator==( StencilOpState const & rhs ) const VULKAN_HPP_NOEXCEPT
40615     {
40616 #  if defined( VULKAN_HPP_USE_REFLECT )
40617       return this->reflect() == rhs.reflect();
40618 #  else
40619       return ( failOp == rhs.failOp ) && ( passOp == rhs.passOp ) && ( depthFailOp == rhs.depthFailOp ) && ( compareOp == rhs.compareOp ) &&
40620              ( compareMask == rhs.compareMask ) && ( writeMask == rhs.writeMask ) && ( reference == rhs.reference );
40621 #  endif
40622     }
40623 
operator !=VULKAN_HPP_NAMESPACE::StencilOpState40624     bool operator!=( StencilOpState const & rhs ) const VULKAN_HPP_NOEXCEPT
40625     {
40626       return !operator==( rhs );
40627     }
40628 #endif
40629 
40630   public:
40631     VULKAN_HPP_NAMESPACE::StencilOp failOp      = VULKAN_HPP_NAMESPACE::StencilOp::eKeep;
40632     VULKAN_HPP_NAMESPACE::StencilOp passOp      = VULKAN_HPP_NAMESPACE::StencilOp::eKeep;
40633     VULKAN_HPP_NAMESPACE::StencilOp depthFailOp = VULKAN_HPP_NAMESPACE::StencilOp::eKeep;
40634     VULKAN_HPP_NAMESPACE::CompareOp compareOp   = VULKAN_HPP_NAMESPACE::CompareOp::eNever;
40635     uint32_t                        compareMask = {};
40636     uint32_t                        writeMask   = {};
40637     uint32_t                        reference   = {};
40638   };
40639 
40640   struct PipelineDepthStencilStateCreateInfo
40641   {
40642     using NativeType = VkPipelineDepthStencilStateCreateInfo;
40643 
40644     static const bool                                  allowDuplicate = false;
40645     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineDepthStencilStateCreateInfo;
40646 
40647 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineDepthStencilStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40648     VULKAN_HPP_CONSTEXPR PipelineDepthStencilStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags flags_            = {},
40649                                                               VULKAN_HPP_NAMESPACE::Bool32                               depthTestEnable_  = {},
40650                                                               VULKAN_HPP_NAMESPACE::Bool32                               depthWriteEnable_ = {},
40651                                                               VULKAN_HPP_NAMESPACE::CompareOp      depthCompareOp_ = VULKAN_HPP_NAMESPACE::CompareOp::eNever,
40652                                                               VULKAN_HPP_NAMESPACE::Bool32         depthBoundsTestEnable_ = {},
40653                                                               VULKAN_HPP_NAMESPACE::Bool32         stencilTestEnable_     = {},
40654                                                               VULKAN_HPP_NAMESPACE::StencilOpState front_                 = {},
40655                                                               VULKAN_HPP_NAMESPACE::StencilOpState back_                  = {},
40656                                                               float                                minDepthBounds_        = {},
40657                                                               float                                maxDepthBounds_        = {},
40658                                                               const void *                         pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
40659       : pNext{ pNext_ }
40660       , flags{ flags_ }
40661       , depthTestEnable{ depthTestEnable_ }
40662       , depthWriteEnable{ depthWriteEnable_ }
40663       , depthCompareOp{ depthCompareOp_ }
40664       , depthBoundsTestEnable{ depthBoundsTestEnable_ }
40665       , stencilTestEnable{ stencilTestEnable_ }
40666       , front{ front_ }
40667       , back{ back_ }
40668       , minDepthBounds{ minDepthBounds_ }
40669       , maxDepthBounds{ maxDepthBounds_ }
40670     {
40671     }
40672 
40673     VULKAN_HPP_CONSTEXPR PipelineDepthStencilStateCreateInfo( PipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40674 
PipelineDepthStencilStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40675     PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40676       : PipelineDepthStencilStateCreateInfo( *reinterpret_cast<PipelineDepthStencilStateCreateInfo const *>( &rhs ) )
40677     {
40678     }
40679 
40680     PipelineDepthStencilStateCreateInfo & operator=( PipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40681 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40682 
operator =VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40683     PipelineDepthStencilStateCreateInfo & operator=( VkPipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40684     {
40685       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo const *>( &rhs );
40686       return *this;
40687     }
40688 
40689 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40690     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40691     {
40692       pNext = pNext_;
40693       return *this;
40694     }
40695 
40696     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo &
setFlagsVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40697       setFlags( VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
40698     {
40699       flags = flags_;
40700       return *this;
40701     }
40702 
setDepthTestEnableVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40703     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setDepthTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable_ ) VULKAN_HPP_NOEXCEPT
40704     {
40705       depthTestEnable = depthTestEnable_;
40706       return *this;
40707     }
40708 
setDepthWriteEnableVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40709     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setDepthWriteEnable( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable_ ) VULKAN_HPP_NOEXCEPT
40710     {
40711       depthWriteEnable = depthWriteEnable_;
40712       return *this;
40713     }
40714 
setDepthCompareOpVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40715     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setDepthCompareOp( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp_ ) VULKAN_HPP_NOEXCEPT
40716     {
40717       depthCompareOp = depthCompareOp_;
40718       return *this;
40719     }
40720 
40721     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo &
setDepthBoundsTestEnableVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40722       setDepthBoundsTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable_ ) VULKAN_HPP_NOEXCEPT
40723     {
40724       depthBoundsTestEnable = depthBoundsTestEnable_;
40725       return *this;
40726     }
40727 
setStencilTestEnableVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40728     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setStencilTestEnable( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable_ ) VULKAN_HPP_NOEXCEPT
40729     {
40730       stencilTestEnable = stencilTestEnable_;
40731       return *this;
40732     }
40733 
setFrontVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40734     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setFront( VULKAN_HPP_NAMESPACE::StencilOpState const & front_ ) VULKAN_HPP_NOEXCEPT
40735     {
40736       front = front_;
40737       return *this;
40738     }
40739 
setBackVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40740     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setBack( VULKAN_HPP_NAMESPACE::StencilOpState const & back_ ) VULKAN_HPP_NOEXCEPT
40741     {
40742       back = back_;
40743       return *this;
40744     }
40745 
setMinDepthBoundsVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40746     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setMinDepthBounds( float minDepthBounds_ ) VULKAN_HPP_NOEXCEPT
40747     {
40748       minDepthBounds = minDepthBounds_;
40749       return *this;
40750     }
40751 
setMaxDepthBoundsVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40752     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setMaxDepthBounds( float maxDepthBounds_ ) VULKAN_HPP_NOEXCEPT
40753     {
40754       maxDepthBounds = maxDepthBounds_;
40755       return *this;
40756     }
40757 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40758 
operator VkPipelineDepthStencilStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40759     operator VkPipelineDepthStencilStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
40760     {
40761       return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo *>( this );
40762     }
40763 
operator VkPipelineDepthStencilStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40764     operator VkPipelineDepthStencilStateCreateInfo &() VULKAN_HPP_NOEXCEPT
40765     {
40766       return *reinterpret_cast<VkPipelineDepthStencilStateCreateInfo *>( this );
40767     }
40768 
40769 #if defined( VULKAN_HPP_USE_REFLECT )
40770 #  if 14 <= VULKAN_HPP_CPP_VERSION
40771     auto
40772 #  else
40773     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
40774                const void * const &,
40775                VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags const &,
40776                VULKAN_HPP_NAMESPACE::Bool32 const &,
40777                VULKAN_HPP_NAMESPACE::Bool32 const &,
40778                VULKAN_HPP_NAMESPACE::CompareOp const &,
40779                VULKAN_HPP_NAMESPACE::Bool32 const &,
40780                VULKAN_HPP_NAMESPACE::Bool32 const &,
40781                VULKAN_HPP_NAMESPACE::StencilOpState const &,
40782                VULKAN_HPP_NAMESPACE::StencilOpState const &,
40783                float const &,
40784                float const &>
40785 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40786       reflect() const VULKAN_HPP_NOEXCEPT
40787     {
40788       return std::tie( sType,
40789                        pNext,
40790                        flags,
40791                        depthTestEnable,
40792                        depthWriteEnable,
40793                        depthCompareOp,
40794                        depthBoundsTestEnable,
40795                        stencilTestEnable,
40796                        front,
40797                        back,
40798                        minDepthBounds,
40799                        maxDepthBounds );
40800     }
40801 #endif
40802 
40803 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40804     auto operator<=>( PipelineDepthStencilStateCreateInfo const & ) const = default;
40805 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40806     bool operator==( PipelineDepthStencilStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40807     {
40808 #  if defined( VULKAN_HPP_USE_REFLECT )
40809       return this->reflect() == rhs.reflect();
40810 #  else
40811       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( depthTestEnable == rhs.depthTestEnable ) &&
40812              ( depthWriteEnable == rhs.depthWriteEnable ) && ( depthCompareOp == rhs.depthCompareOp ) &&
40813              ( depthBoundsTestEnable == rhs.depthBoundsTestEnable ) && ( stencilTestEnable == rhs.stencilTestEnable ) && ( front == rhs.front ) &&
40814              ( back == rhs.back ) && ( minDepthBounds == rhs.minDepthBounds ) && ( maxDepthBounds == rhs.maxDepthBounds );
40815 #  endif
40816     }
40817 
operator !=VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo40818     bool operator!=( PipelineDepthStencilStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40819     {
40820       return !operator==( rhs );
40821     }
40822 #endif
40823 
40824   public:
40825     VULKAN_HPP_NAMESPACE::StructureType                        sType                 = StructureType::ePipelineDepthStencilStateCreateInfo;
40826     const void *                                               pNext                 = {};
40827     VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags flags                 = {};
40828     VULKAN_HPP_NAMESPACE::Bool32                               depthTestEnable       = {};
40829     VULKAN_HPP_NAMESPACE::Bool32                               depthWriteEnable      = {};
40830     VULKAN_HPP_NAMESPACE::CompareOp                            depthCompareOp        = VULKAN_HPP_NAMESPACE::CompareOp::eNever;
40831     VULKAN_HPP_NAMESPACE::Bool32                               depthBoundsTestEnable = {};
40832     VULKAN_HPP_NAMESPACE::Bool32                               stencilTestEnable     = {};
40833     VULKAN_HPP_NAMESPACE::StencilOpState                       front                 = {};
40834     VULKAN_HPP_NAMESPACE::StencilOpState                       back                  = {};
40835     float                                                      minDepthBounds        = {};
40836     float                                                      maxDepthBounds        = {};
40837   };
40838 
40839   template <>
40840   struct CppType<StructureType, StructureType::ePipelineDepthStencilStateCreateInfo>
40841   {
40842     using Type = PipelineDepthStencilStateCreateInfo;
40843   };
40844 
40845   struct PipelineColorBlendAttachmentState
40846   {
40847     using NativeType = VkPipelineColorBlendAttachmentState;
40848 
40849 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineColorBlendAttachmentStateVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState40850     VULKAN_HPP_CONSTEXPR PipelineColorBlendAttachmentState( VULKAN_HPP_NAMESPACE::Bool32      blendEnable_         = {},
40851                                                             VULKAN_HPP_NAMESPACE::BlendFactor srcColorBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero,
40852                                                             VULKAN_HPP_NAMESPACE::BlendFactor dstColorBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero,
40853                                                             VULKAN_HPP_NAMESPACE::BlendOp     colorBlendOp_        = VULKAN_HPP_NAMESPACE::BlendOp::eAdd,
40854                                                             VULKAN_HPP_NAMESPACE::BlendFactor srcAlphaBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero,
40855                                                             VULKAN_HPP_NAMESPACE::BlendFactor dstAlphaBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero,
40856                                                             VULKAN_HPP_NAMESPACE::BlendOp     alphaBlendOp_        = VULKAN_HPP_NAMESPACE::BlendOp::eAdd,
40857                                                             VULKAN_HPP_NAMESPACE::ColorComponentFlags colorWriteMask_ = {} ) VULKAN_HPP_NOEXCEPT
40858       : blendEnable{ blendEnable_ }
40859       , srcColorBlendFactor{ srcColorBlendFactor_ }
40860       , dstColorBlendFactor{ dstColorBlendFactor_ }
40861       , colorBlendOp{ colorBlendOp_ }
40862       , srcAlphaBlendFactor{ srcAlphaBlendFactor_ }
40863       , dstAlphaBlendFactor{ dstAlphaBlendFactor_ }
40864       , alphaBlendOp{ alphaBlendOp_ }
40865       , colorWriteMask{ colorWriteMask_ }
40866     {
40867     }
40868 
40869     VULKAN_HPP_CONSTEXPR PipelineColorBlendAttachmentState( PipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40870 
PipelineColorBlendAttachmentStateVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState40871     PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT
40872       : PipelineColorBlendAttachmentState( *reinterpret_cast<PipelineColorBlendAttachmentState const *>( &rhs ) )
40873     {
40874     }
40875 
40876     PipelineColorBlendAttachmentState & operator=( PipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40877 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40878 
operator =VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState40879     PipelineColorBlendAttachmentState & operator=( VkPipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT
40880     {
40881       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState const *>( &rhs );
40882       return *this;
40883     }
40884 
40885 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBlendEnableVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState40886     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setBlendEnable( VULKAN_HPP_NAMESPACE::Bool32 blendEnable_ ) VULKAN_HPP_NOEXCEPT
40887     {
40888       blendEnable = blendEnable_;
40889       return *this;
40890     }
40891 
40892     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState &
setSrcColorBlendFactorVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState40893       setSrcColorBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor srcColorBlendFactor_ ) VULKAN_HPP_NOEXCEPT
40894     {
40895       srcColorBlendFactor = srcColorBlendFactor_;
40896       return *this;
40897     }
40898 
40899     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState &
setDstColorBlendFactorVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState40900       setDstColorBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor dstColorBlendFactor_ ) VULKAN_HPP_NOEXCEPT
40901     {
40902       dstColorBlendFactor = dstColorBlendFactor_;
40903       return *this;
40904     }
40905 
setColorBlendOpVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState40906     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setColorBlendOp( VULKAN_HPP_NAMESPACE::BlendOp colorBlendOp_ ) VULKAN_HPP_NOEXCEPT
40907     {
40908       colorBlendOp = colorBlendOp_;
40909       return *this;
40910     }
40911 
40912     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState &
setSrcAlphaBlendFactorVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState40913       setSrcAlphaBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor srcAlphaBlendFactor_ ) VULKAN_HPP_NOEXCEPT
40914     {
40915       srcAlphaBlendFactor = srcAlphaBlendFactor_;
40916       return *this;
40917     }
40918 
40919     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState &
setDstAlphaBlendFactorVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState40920       setDstAlphaBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor dstAlphaBlendFactor_ ) VULKAN_HPP_NOEXCEPT
40921     {
40922       dstAlphaBlendFactor = dstAlphaBlendFactor_;
40923       return *this;
40924     }
40925 
setAlphaBlendOpVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState40926     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setAlphaBlendOp( VULKAN_HPP_NAMESPACE::BlendOp alphaBlendOp_ ) VULKAN_HPP_NOEXCEPT
40927     {
40928       alphaBlendOp = alphaBlendOp_;
40929       return *this;
40930     }
40931 
40932     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState &
setColorWriteMaskVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState40933       setColorWriteMask( VULKAN_HPP_NAMESPACE::ColorComponentFlags colorWriteMask_ ) VULKAN_HPP_NOEXCEPT
40934     {
40935       colorWriteMask = colorWriteMask_;
40936       return *this;
40937     }
40938 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40939 
operator VkPipelineColorBlendAttachmentState const&VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState40940     operator VkPipelineColorBlendAttachmentState const &() const VULKAN_HPP_NOEXCEPT
40941     {
40942       return *reinterpret_cast<const VkPipelineColorBlendAttachmentState *>( this );
40943     }
40944 
operator VkPipelineColorBlendAttachmentState&VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState40945     operator VkPipelineColorBlendAttachmentState &() VULKAN_HPP_NOEXCEPT
40946     {
40947       return *reinterpret_cast<VkPipelineColorBlendAttachmentState *>( this );
40948     }
40949 
40950 #if defined( VULKAN_HPP_USE_REFLECT )
40951 #  if 14 <= VULKAN_HPP_CPP_VERSION
40952     auto
40953 #  else
40954     std::tuple<VULKAN_HPP_NAMESPACE::Bool32 const &,
40955                VULKAN_HPP_NAMESPACE::BlendFactor const &,
40956                VULKAN_HPP_NAMESPACE::BlendFactor const &,
40957                VULKAN_HPP_NAMESPACE::BlendOp const &,
40958                VULKAN_HPP_NAMESPACE::BlendFactor const &,
40959                VULKAN_HPP_NAMESPACE::BlendFactor const &,
40960                VULKAN_HPP_NAMESPACE::BlendOp const &,
40961                VULKAN_HPP_NAMESPACE::ColorComponentFlags const &>
40962 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState40963       reflect() const VULKAN_HPP_NOEXCEPT
40964     {
40965       return std::tie(
40966         blendEnable, srcColorBlendFactor, dstColorBlendFactor, colorBlendOp, srcAlphaBlendFactor, dstAlphaBlendFactor, alphaBlendOp, colorWriteMask );
40967     }
40968 #endif
40969 
40970 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
40971     auto operator<=>( PipelineColorBlendAttachmentState const & ) const = default;
40972 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState40973     bool operator==( PipelineColorBlendAttachmentState const & rhs ) const VULKAN_HPP_NOEXCEPT
40974     {
40975 #  if defined( VULKAN_HPP_USE_REFLECT )
40976       return this->reflect() == rhs.reflect();
40977 #  else
40978       return ( blendEnable == rhs.blendEnable ) && ( srcColorBlendFactor == rhs.srcColorBlendFactor ) && ( dstColorBlendFactor == rhs.dstColorBlendFactor ) &&
40979              ( colorBlendOp == rhs.colorBlendOp ) && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor ) && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor ) &&
40980              ( alphaBlendOp == rhs.alphaBlendOp ) && ( colorWriteMask == rhs.colorWriteMask );
40981 #  endif
40982     }
40983 
operator !=VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState40984     bool operator!=( PipelineColorBlendAttachmentState const & rhs ) const VULKAN_HPP_NOEXCEPT
40985     {
40986       return !operator==( rhs );
40987     }
40988 #endif
40989 
40990   public:
40991     VULKAN_HPP_NAMESPACE::Bool32              blendEnable         = {};
40992     VULKAN_HPP_NAMESPACE::BlendFactor         srcColorBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
40993     VULKAN_HPP_NAMESPACE::BlendFactor         dstColorBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
40994     VULKAN_HPP_NAMESPACE::BlendOp             colorBlendOp        = VULKAN_HPP_NAMESPACE::BlendOp::eAdd;
40995     VULKAN_HPP_NAMESPACE::BlendFactor         srcAlphaBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
40996     VULKAN_HPP_NAMESPACE::BlendFactor         dstAlphaBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
40997     VULKAN_HPP_NAMESPACE::BlendOp             alphaBlendOp        = VULKAN_HPP_NAMESPACE::BlendOp::eAdd;
40998     VULKAN_HPP_NAMESPACE::ColorComponentFlags colorWriteMask      = {};
40999   };
41000 
41001   struct PipelineColorBlendStateCreateInfo
41002   {
41003     using NativeType = VkPipelineColorBlendStateCreateInfo;
41004 
41005     static const bool                                  allowDuplicate = false;
41006     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineColorBlendStateCreateInfo;
41007 
41008 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineColorBlendStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41009     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags flags_         = {},
41010                                                                VULKAN_HPP_NAMESPACE::Bool32                             logicOpEnable_ = {},
41011                                                                VULKAN_HPP_NAMESPACE::LogicOp logicOp_         = VULKAN_HPP_NAMESPACE::LogicOp::eClear,
41012                                                                uint32_t                      attachmentCount_ = {},
41013                                                                const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState * pAttachments_   = {},
41014                                                                std::array<float, 4> const &                                    blendConstants_ = {},
41015                                                                const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
41016       : pNext{ pNext_ }
41017       , flags{ flags_ }
41018       , logicOpEnable{ logicOpEnable_ }
41019       , logicOp{ logicOp_ }
41020       , attachmentCount{ attachmentCount_ }
41021       , pAttachments{ pAttachments_ }
41022       , blendConstants{ blendConstants_ }
41023     {
41024     }
41025 
41026     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo( PipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41027 
PipelineColorBlendStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41028     PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
41029       : PipelineColorBlendStateCreateInfo( *reinterpret_cast<PipelineColorBlendStateCreateInfo const *>( &rhs ) )
41030     {
41031     }
41032 
41033 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineColorBlendStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41034     PipelineColorBlendStateCreateInfo(
41035       VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags                                                             flags_,
41036       VULKAN_HPP_NAMESPACE::Bool32                                                                                         logicOpEnable_,
41037       VULKAN_HPP_NAMESPACE::LogicOp                                                                                        logicOp_,
41038       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState> const & attachments_,
41039       std::array<float, 4> const &                                                                                         blendConstants_ = {},
41040       const void *                                                                                                         pNext_          = nullptr )
41041       : pNext( pNext_ )
41042       , flags( flags_ )
41043       , logicOpEnable( logicOpEnable_ )
41044       , logicOp( logicOp_ )
41045       , attachmentCount( static_cast<uint32_t>( attachments_.size() ) )
41046       , pAttachments( attachments_.data() )
41047       , blendConstants( blendConstants_ )
41048     {
41049     }
41050 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41051 
41052     PipelineColorBlendStateCreateInfo & operator=( PipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41053 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41054 
operator =VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41055     PipelineColorBlendStateCreateInfo & operator=( VkPipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
41056     {
41057       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo const *>( &rhs );
41058       return *this;
41059     }
41060 
41061 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41062     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
41063     {
41064       pNext = pNext_;
41065       return *this;
41066     }
41067 
setFlagsVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41068     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
41069     {
41070       flags = flags_;
41071       return *this;
41072     }
41073 
setLogicOpEnableVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41074     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setLogicOpEnable( VULKAN_HPP_NAMESPACE::Bool32 logicOpEnable_ ) VULKAN_HPP_NOEXCEPT
41075     {
41076       logicOpEnable = logicOpEnable_;
41077       return *this;
41078     }
41079 
setLogicOpVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41080     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setLogicOp( VULKAN_HPP_NAMESPACE::LogicOp logicOp_ ) VULKAN_HPP_NOEXCEPT
41081     {
41082       logicOp = logicOp_;
41083       return *this;
41084     }
41085 
setAttachmentCountVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41086     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
41087     {
41088       attachmentCount = attachmentCount_;
41089       return *this;
41090     }
41091 
41092     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo &
setPAttachmentsVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41093       setPAttachments( const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState * pAttachments_ ) VULKAN_HPP_NOEXCEPT
41094     {
41095       pAttachments = pAttachments_;
41096       return *this;
41097     }
41098 
41099 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentsVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41100     PipelineColorBlendStateCreateInfo & setAttachments(
41101       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState> const & attachments_ ) VULKAN_HPP_NOEXCEPT
41102     {
41103       attachmentCount = static_cast<uint32_t>( attachments_.size() );
41104       pAttachments    = attachments_.data();
41105       return *this;
41106     }
41107 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41108 
setBlendConstantsVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41109     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setBlendConstants( std::array<float, 4> blendConstants_ ) VULKAN_HPP_NOEXCEPT
41110     {
41111       blendConstants = blendConstants_;
41112       return *this;
41113     }
41114 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41115 
operator VkPipelineColorBlendStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41116     operator VkPipelineColorBlendStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
41117     {
41118       return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo *>( this );
41119     }
41120 
operator VkPipelineColorBlendStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41121     operator VkPipelineColorBlendStateCreateInfo &() VULKAN_HPP_NOEXCEPT
41122     {
41123       return *reinterpret_cast<VkPipelineColorBlendStateCreateInfo *>( this );
41124     }
41125 
41126 #if defined( VULKAN_HPP_USE_REFLECT )
41127 #  if 14 <= VULKAN_HPP_CPP_VERSION
41128     auto
41129 #  else
41130     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
41131                const void * const &,
41132                VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags const &,
41133                VULKAN_HPP_NAMESPACE::Bool32 const &,
41134                VULKAN_HPP_NAMESPACE::LogicOp const &,
41135                uint32_t const &,
41136                const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState * const &,
41137                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> const &>
41138 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41139       reflect() const VULKAN_HPP_NOEXCEPT
41140     {
41141       return std::tie( sType, pNext, flags, logicOpEnable, logicOp, attachmentCount, pAttachments, blendConstants );
41142     }
41143 #endif
41144 
41145 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
41146     auto operator<=>( PipelineColorBlendStateCreateInfo const & ) const = default;
41147 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41148     bool operator==( PipelineColorBlendStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
41149     {
41150 #  if defined( VULKAN_HPP_USE_REFLECT )
41151       return this->reflect() == rhs.reflect();
41152 #  else
41153       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( logicOpEnable == rhs.logicOpEnable ) &&
41154              ( logicOp == rhs.logicOp ) && ( attachmentCount == rhs.attachmentCount ) && ( pAttachments == rhs.pAttachments ) &&
41155              ( blendConstants == rhs.blendConstants );
41156 #  endif
41157     }
41158 
operator !=VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo41159     bool operator!=( PipelineColorBlendStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
41160     {
41161       return !operator==( rhs );
41162     }
41163 #endif
41164 
41165   public:
41166     VULKAN_HPP_NAMESPACE::StructureType                             sType           = StructureType::ePipelineColorBlendStateCreateInfo;
41167     const void *                                                    pNext           = {};
41168     VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags        flags           = {};
41169     VULKAN_HPP_NAMESPACE::Bool32                                    logicOpEnable   = {};
41170     VULKAN_HPP_NAMESPACE::LogicOp                                   logicOp         = VULKAN_HPP_NAMESPACE::LogicOp::eClear;
41171     uint32_t                                                        attachmentCount = {};
41172     const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState * pAttachments    = {};
41173     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4>                  blendConstants  = {};
41174   };
41175 
41176   template <>
41177   struct CppType<StructureType, StructureType::ePipelineColorBlendStateCreateInfo>
41178   {
41179     using Type = PipelineColorBlendStateCreateInfo;
41180   };
41181 
41182   struct PipelineDynamicStateCreateInfo
41183   {
41184     using NativeType = VkPipelineDynamicStateCreateInfo;
41185 
41186     static const bool                                  allowDuplicate = false;
41187     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineDynamicStateCreateInfo;
41188 
41189 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineDynamicStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41190     VULKAN_HPP_CONSTEXPR PipelineDynamicStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags_             = {},
41191                                                          uint32_t                                              dynamicStateCount_ = {},
41192                                                          const VULKAN_HPP_NAMESPACE::DynamicState *            pDynamicStates_    = {},
41193                                                          const void *                                          pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
41194       : pNext{ pNext_ }
41195       , flags{ flags_ }
41196       , dynamicStateCount{ dynamicStateCount_ }
41197       , pDynamicStates{ pDynamicStates_ }
41198     {
41199     }
41200 
41201     VULKAN_HPP_CONSTEXPR PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41202 
PipelineDynamicStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41203     PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
41204       : PipelineDynamicStateCreateInfo( *reinterpret_cast<PipelineDynamicStateCreateInfo const *>( &rhs ) )
41205     {
41206     }
41207 
41208 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineDynamicStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41209     PipelineDynamicStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags                                           flags_,
41210                                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DynamicState> const & dynamicStates_,
41211                                     const void *                                                                                    pNext_ = nullptr )
41212       : pNext( pNext_ ), flags( flags_ ), dynamicStateCount( static_cast<uint32_t>( dynamicStates_.size() ) ), pDynamicStates( dynamicStates_.data() )
41213     {
41214     }
41215 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41216 
41217     PipelineDynamicStateCreateInfo & operator=( PipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41218 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41219 
operator =VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41220     PipelineDynamicStateCreateInfo & operator=( VkPipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
41221     {
41222       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo const *>( &rhs );
41223       return *this;
41224     }
41225 
41226 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41227     VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
41228     {
41229       pNext = pNext_;
41230       return *this;
41231     }
41232 
setFlagsVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41233     VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
41234     {
41235       flags = flags_;
41236       return *this;
41237     }
41238 
setDynamicStateCountVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41239     VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & setDynamicStateCount( uint32_t dynamicStateCount_ ) VULKAN_HPP_NOEXCEPT
41240     {
41241       dynamicStateCount = dynamicStateCount_;
41242       return *this;
41243     }
41244 
setPDynamicStatesVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41245     VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & setPDynamicStates( const VULKAN_HPP_NAMESPACE::DynamicState * pDynamicStates_ ) VULKAN_HPP_NOEXCEPT
41246     {
41247       pDynamicStates = pDynamicStates_;
41248       return *this;
41249     }
41250 
41251 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
41252     PipelineDynamicStateCreateInfo &
setDynamicStatesVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41253       setDynamicStates( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DynamicState> const & dynamicStates_ ) VULKAN_HPP_NOEXCEPT
41254     {
41255       dynamicStateCount = static_cast<uint32_t>( dynamicStates_.size() );
41256       pDynamicStates    = dynamicStates_.data();
41257       return *this;
41258     }
41259 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41260 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41261 
operator VkPipelineDynamicStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41262     operator VkPipelineDynamicStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
41263     {
41264       return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo *>( this );
41265     }
41266 
operator VkPipelineDynamicStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41267     operator VkPipelineDynamicStateCreateInfo &() VULKAN_HPP_NOEXCEPT
41268     {
41269       return *reinterpret_cast<VkPipelineDynamicStateCreateInfo *>( this );
41270     }
41271 
41272 #if defined( VULKAN_HPP_USE_REFLECT )
41273 #  if 14 <= VULKAN_HPP_CPP_VERSION
41274     auto
41275 #  else
41276     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
41277                const void * const &,
41278                VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags const &,
41279                uint32_t const &,
41280                const VULKAN_HPP_NAMESPACE::DynamicState * const &>
41281 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41282       reflect() const VULKAN_HPP_NOEXCEPT
41283     {
41284       return std::tie( sType, pNext, flags, dynamicStateCount, pDynamicStates );
41285     }
41286 #endif
41287 
41288 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
41289     auto operator<=>( PipelineDynamicStateCreateInfo const & ) const = default;
41290 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41291     bool operator==( PipelineDynamicStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
41292     {
41293 #  if defined( VULKAN_HPP_USE_REFLECT )
41294       return this->reflect() == rhs.reflect();
41295 #  else
41296       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( dynamicStateCount == rhs.dynamicStateCount ) &&
41297              ( pDynamicStates == rhs.pDynamicStates );
41298 #  endif
41299     }
41300 
operator !=VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo41301     bool operator!=( PipelineDynamicStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
41302     {
41303       return !operator==( rhs );
41304     }
41305 #endif
41306 
41307   public:
41308     VULKAN_HPP_NAMESPACE::StructureType                   sType             = StructureType::ePipelineDynamicStateCreateInfo;
41309     const void *                                          pNext             = {};
41310     VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags             = {};
41311     uint32_t                                              dynamicStateCount = {};
41312     const VULKAN_HPP_NAMESPACE::DynamicState *            pDynamicStates    = {};
41313   };
41314 
41315   template <>
41316   struct CppType<StructureType, StructureType::ePipelineDynamicStateCreateInfo>
41317   {
41318     using Type = PipelineDynamicStateCreateInfo;
41319   };
41320 
41321   struct GraphicsPipelineCreateInfo
41322   {
41323     using NativeType = VkGraphicsPipelineCreateInfo;
41324 
41325     static const bool                                  allowDuplicate = false;
41326     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGraphicsPipelineCreateInfo;
41327 
41328 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GraphicsPipelineCreateInfoVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41329     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCreateFlags                          flags_               = {},
41330                                                         uint32_t                                                           stageCount_          = {},
41331                                                         const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo *        pStages_             = {},
41332                                                         const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo *   pVertexInputState_   = {},
41333                                                         const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * pInputAssemblyState_ = {},
41334                                                         const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo *  pTessellationState_  = {},
41335                                                         const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo *      pViewportState_      = {},
41336                                                         const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * pRasterizationState_ = {},
41337                                                         const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo *   pMultisampleState_   = {},
41338                                                         const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo *  pDepthStencilState_  = {},
41339                                                         const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo *    pColorBlendState_    = {},
41340                                                         const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo *       pDynamicState_       = {},
41341                                                         VULKAN_HPP_NAMESPACE::PipelineLayout                               layout_              = {},
41342                                                         VULKAN_HPP_NAMESPACE::RenderPass                                   renderPass_          = {},
41343                                                         uint32_t                                                           subpass_             = {},
41344                                                         VULKAN_HPP_NAMESPACE::Pipeline                                     basePipelineHandle_  = {},
41345                                                         int32_t                                                            basePipelineIndex_   = {},
41346                                                         const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
41347       : pNext{ pNext_ }
41348       , flags{ flags_ }
41349       , stageCount{ stageCount_ }
41350       , pStages{ pStages_ }
41351       , pVertexInputState{ pVertexInputState_ }
41352       , pInputAssemblyState{ pInputAssemblyState_ }
41353       , pTessellationState{ pTessellationState_ }
41354       , pViewportState{ pViewportState_ }
41355       , pRasterizationState{ pRasterizationState_ }
41356       , pMultisampleState{ pMultisampleState_ }
41357       , pDepthStencilState{ pDepthStencilState_ }
41358       , pColorBlendState{ pColorBlendState_ }
41359       , pDynamicState{ pDynamicState_ }
41360       , layout{ layout_ }
41361       , renderPass{ renderPass_ }
41362       , subpass{ subpass_ }
41363       , basePipelineHandle{ basePipelineHandle_ }
41364       , basePipelineIndex{ basePipelineIndex_ }
41365     {
41366     }
41367 
41368     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo( GraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41369 
GraphicsPipelineCreateInfoVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41370     GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
41371       : GraphicsPipelineCreateInfo( *reinterpret_cast<GraphicsPipelineCreateInfo const *>( &rhs ) )
41372     {
41373     }
41374 
41375 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
GraphicsPipelineCreateInfoVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41376     GraphicsPipelineCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCreateFlags                                                                        flags_,
41377                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_,
41378                                 const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo *   pVertexInputState_   = {},
41379                                 const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * pInputAssemblyState_ = {},
41380                                 const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo *  pTessellationState_  = {},
41381                                 const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo *      pViewportState_      = {},
41382                                 const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * pRasterizationState_ = {},
41383                                 const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo *   pMultisampleState_   = {},
41384                                 const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo *  pDepthStencilState_  = {},
41385                                 const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo *    pColorBlendState_    = {},
41386                                 const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo *       pDynamicState_       = {},
41387                                 VULKAN_HPP_NAMESPACE::PipelineLayout                               layout_              = {},
41388                                 VULKAN_HPP_NAMESPACE::RenderPass                                   renderPass_          = {},
41389                                 uint32_t                                                           subpass_             = {},
41390                                 VULKAN_HPP_NAMESPACE::Pipeline                                     basePipelineHandle_  = {},
41391                                 int32_t                                                            basePipelineIndex_   = {},
41392                                 const void *                                                       pNext_               = nullptr )
41393       : pNext( pNext_ )
41394       , flags( flags_ )
41395       , stageCount( static_cast<uint32_t>( stages_.size() ) )
41396       , pStages( stages_.data() )
41397       , pVertexInputState( pVertexInputState_ )
41398       , pInputAssemblyState( pInputAssemblyState_ )
41399       , pTessellationState( pTessellationState_ )
41400       , pViewportState( pViewportState_ )
41401       , pRasterizationState( pRasterizationState_ )
41402       , pMultisampleState( pMultisampleState_ )
41403       , pDepthStencilState( pDepthStencilState_ )
41404       , pColorBlendState( pColorBlendState_ )
41405       , pDynamicState( pDynamicState_ )
41406       , layout( layout_ )
41407       , renderPass( renderPass_ )
41408       , subpass( subpass_ )
41409       , basePipelineHandle( basePipelineHandle_ )
41410       , basePipelineIndex( basePipelineIndex_ )
41411     {
41412     }
41413 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41414 
41415     GraphicsPipelineCreateInfo & operator=( GraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41416 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41417 
operator =VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41418     GraphicsPipelineCreateInfo & operator=( VkGraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
41419     {
41420       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo const *>( &rhs );
41421       return *this;
41422     }
41423 
41424 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41425     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
41426     {
41427       pNext = pNext_;
41428       return *this;
41429     }
41430 
setFlagsVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41431     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
41432     {
41433       flags = flags_;
41434       return *this;
41435     }
41436 
setStageCountVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41437     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT
41438     {
41439       stageCount = stageCount_;
41440       return *this;
41441     }
41442 
setPStagesVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41443     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ ) VULKAN_HPP_NOEXCEPT
41444     {
41445       pStages = pStages_;
41446       return *this;
41447     }
41448 
41449 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
41450     GraphicsPipelineCreateInfo &
setStagesVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41451       setStages( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_ ) VULKAN_HPP_NOEXCEPT
41452     {
41453       stageCount = static_cast<uint32_t>( stages_.size() );
41454       pStages    = stages_.data();
41455       return *this;
41456     }
41457 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41458 
41459     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setPVertexInputStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41460       setPVertexInputState( const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * pVertexInputState_ ) VULKAN_HPP_NOEXCEPT
41461     {
41462       pVertexInputState = pVertexInputState_;
41463       return *this;
41464     }
41465 
41466     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setPInputAssemblyStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41467       setPInputAssemblyState( const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * pInputAssemblyState_ ) VULKAN_HPP_NOEXCEPT
41468     {
41469       pInputAssemblyState = pInputAssemblyState_;
41470       return *this;
41471     }
41472 
41473     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setPTessellationStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41474       setPTessellationState( const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState_ ) VULKAN_HPP_NOEXCEPT
41475     {
41476       pTessellationState = pTessellationState_;
41477       return *this;
41478     }
41479 
41480     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setPViewportStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41481       setPViewportState( const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo * pViewportState_ ) VULKAN_HPP_NOEXCEPT
41482     {
41483       pViewportState = pViewportState_;
41484       return *this;
41485     }
41486 
41487     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setPRasterizationStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41488       setPRasterizationState( const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * pRasterizationState_ ) VULKAN_HPP_NOEXCEPT
41489     {
41490       pRasterizationState = pRasterizationState_;
41491       return *this;
41492     }
41493 
41494     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setPMultisampleStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41495       setPMultisampleState( const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo * pMultisampleState_ ) VULKAN_HPP_NOEXCEPT
41496     {
41497       pMultisampleState = pMultisampleState_;
41498       return *this;
41499     }
41500 
41501     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setPDepthStencilStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41502       setPDepthStencilState( const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo * pDepthStencilState_ ) VULKAN_HPP_NOEXCEPT
41503     {
41504       pDepthStencilState = pDepthStencilState_;
41505       return *this;
41506     }
41507 
41508     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setPColorBlendStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41509       setPColorBlendState( const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo * pColorBlendState_ ) VULKAN_HPP_NOEXCEPT
41510     {
41511       pColorBlendState = pColorBlendState_;
41512       return *this;
41513     }
41514 
41515     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo &
setPDynamicStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41516       setPDynamicState( const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * pDynamicState_ ) VULKAN_HPP_NOEXCEPT
41517     {
41518       pDynamicState = pDynamicState_;
41519       return *this;
41520     }
41521 
setLayoutVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41522     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
41523     {
41524       layout = layout_;
41525       return *this;
41526     }
41527 
setRenderPassVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41528     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT
41529     {
41530       renderPass = renderPass_;
41531       return *this;
41532     }
41533 
setSubpassVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41534     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setSubpass( uint32_t subpass_ ) VULKAN_HPP_NOEXCEPT
41535     {
41536       subpass = subpass_;
41537       return *this;
41538     }
41539 
setBasePipelineHandleVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41540     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT
41541     {
41542       basePipelineHandle = basePipelineHandle_;
41543       return *this;
41544     }
41545 
setBasePipelineIndexVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41546     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT
41547     {
41548       basePipelineIndex = basePipelineIndex_;
41549       return *this;
41550     }
41551 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41552 
operator VkGraphicsPipelineCreateInfo const&VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41553     operator VkGraphicsPipelineCreateInfo const &() const VULKAN_HPP_NOEXCEPT
41554     {
41555       return *reinterpret_cast<const VkGraphicsPipelineCreateInfo *>( this );
41556     }
41557 
operator VkGraphicsPipelineCreateInfo&VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41558     operator VkGraphicsPipelineCreateInfo &() VULKAN_HPP_NOEXCEPT
41559     {
41560       return *reinterpret_cast<VkGraphicsPipelineCreateInfo *>( this );
41561     }
41562 
41563 #if defined( VULKAN_HPP_USE_REFLECT )
41564 #  if 14 <= VULKAN_HPP_CPP_VERSION
41565     auto
41566 #  else
41567     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
41568                const void * const &,
41569                VULKAN_HPP_NAMESPACE::PipelineCreateFlags const &,
41570                uint32_t const &,
41571                const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * const &,
41572                const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * const &,
41573                const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * const &,
41574                const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * const &,
41575                const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo * const &,
41576                const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * const &,
41577                const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo * const &,
41578                const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo * const &,
41579                const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo * const &,
41580                const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * const &,
41581                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
41582                VULKAN_HPP_NAMESPACE::RenderPass const &,
41583                uint32_t const &,
41584                VULKAN_HPP_NAMESPACE::Pipeline const &,
41585                int32_t const &>
41586 #  endif
reflectVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41587       reflect() const VULKAN_HPP_NOEXCEPT
41588     {
41589       return std::tie( sType,
41590                        pNext,
41591                        flags,
41592                        stageCount,
41593                        pStages,
41594                        pVertexInputState,
41595                        pInputAssemblyState,
41596                        pTessellationState,
41597                        pViewportState,
41598                        pRasterizationState,
41599                        pMultisampleState,
41600                        pDepthStencilState,
41601                        pColorBlendState,
41602                        pDynamicState,
41603                        layout,
41604                        renderPass,
41605                        subpass,
41606                        basePipelineHandle,
41607                        basePipelineIndex );
41608     }
41609 #endif
41610 
41611 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
41612     auto operator<=>( GraphicsPipelineCreateInfo const & ) const = default;
41613 #else
operator ==VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41614     bool operator==( GraphicsPipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
41615     {
41616 #  if defined( VULKAN_HPP_USE_REFLECT )
41617       return this->reflect() == rhs.reflect();
41618 #  else
41619       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stageCount == rhs.stageCount ) && ( pStages == rhs.pStages ) &&
41620              ( pVertexInputState == rhs.pVertexInputState ) && ( pInputAssemblyState == rhs.pInputAssemblyState ) &&
41621              ( pTessellationState == rhs.pTessellationState ) && ( pViewportState == rhs.pViewportState ) &&
41622              ( pRasterizationState == rhs.pRasterizationState ) && ( pMultisampleState == rhs.pMultisampleState ) &&
41623              ( pDepthStencilState == rhs.pDepthStencilState ) && ( pColorBlendState == rhs.pColorBlendState ) && ( pDynamicState == rhs.pDynamicState ) &&
41624              ( layout == rhs.layout ) && ( renderPass == rhs.renderPass ) && ( subpass == rhs.subpass ) && ( basePipelineHandle == rhs.basePipelineHandle ) &&
41625              ( basePipelineIndex == rhs.basePipelineIndex );
41626 #  endif
41627     }
41628 
operator !=VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo41629     bool operator!=( GraphicsPipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
41630     {
41631       return !operator==( rhs );
41632     }
41633 #endif
41634 
41635   public:
41636     VULKAN_HPP_NAMESPACE::StructureType                                sType               = StructureType::eGraphicsPipelineCreateInfo;
41637     const void *                                                       pNext               = {};
41638     VULKAN_HPP_NAMESPACE::PipelineCreateFlags                          flags               = {};
41639     uint32_t                                                           stageCount          = {};
41640     const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo *        pStages             = {};
41641     const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo *   pVertexInputState   = {};
41642     const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * pInputAssemblyState = {};
41643     const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo *  pTessellationState  = {};
41644     const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo *      pViewportState      = {};
41645     const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * pRasterizationState = {};
41646     const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo *   pMultisampleState   = {};
41647     const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo *  pDepthStencilState  = {};
41648     const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo *    pColorBlendState    = {};
41649     const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo *       pDynamicState       = {};
41650     VULKAN_HPP_NAMESPACE::PipelineLayout                               layout              = {};
41651     VULKAN_HPP_NAMESPACE::RenderPass                                   renderPass          = {};
41652     uint32_t                                                           subpass             = {};
41653     VULKAN_HPP_NAMESPACE::Pipeline                                     basePipelineHandle  = {};
41654     int32_t                                                            basePipelineIndex   = {};
41655   };
41656 
41657   template <>
41658   struct CppType<StructureType, StructureType::eGraphicsPipelineCreateInfo>
41659   {
41660     using Type = GraphicsPipelineCreateInfo;
41661   };
41662 
41663   struct GraphicsPipelineLibraryCreateInfoEXT
41664   {
41665     using NativeType = VkGraphicsPipelineLibraryCreateInfoEXT;
41666 
41667     static const bool                                  allowDuplicate = false;
41668     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGraphicsPipelineLibraryCreateInfoEXT;
41669 
41670 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GraphicsPipelineLibraryCreateInfoEXTVULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT41671     VULKAN_HPP_CONSTEXPR GraphicsPipelineLibraryCreateInfoEXT( VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryFlagsEXT flags_ = {},
41672                                                                const void *                                          pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
41673       : pNext{ pNext_ }
41674       , flags{ flags_ }
41675     {
41676     }
41677 
41678     VULKAN_HPP_CONSTEXPR GraphicsPipelineLibraryCreateInfoEXT( GraphicsPipelineLibraryCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41679 
GraphicsPipelineLibraryCreateInfoEXTVULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT41680     GraphicsPipelineLibraryCreateInfoEXT( VkGraphicsPipelineLibraryCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
41681       : GraphicsPipelineLibraryCreateInfoEXT( *reinterpret_cast<GraphicsPipelineLibraryCreateInfoEXT const *>( &rhs ) )
41682     {
41683     }
41684 
41685     GraphicsPipelineLibraryCreateInfoEXT & operator=( GraphicsPipelineLibraryCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41686 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41687 
operator =VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT41688     GraphicsPipelineLibraryCreateInfoEXT & operator=( VkGraphicsPipelineLibraryCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
41689     {
41690       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT const *>( &rhs );
41691       return *this;
41692     }
41693 
41694 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT41695     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineLibraryCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
41696     {
41697       pNext = pNext_;
41698       return *this;
41699     }
41700 
setFlagsVULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT41701     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineLibraryCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
41702     {
41703       flags = flags_;
41704       return *this;
41705     }
41706 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41707 
operator VkGraphicsPipelineLibraryCreateInfoEXT const&VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT41708     operator VkGraphicsPipelineLibraryCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
41709     {
41710       return *reinterpret_cast<const VkGraphicsPipelineLibraryCreateInfoEXT *>( this );
41711     }
41712 
operator VkGraphicsPipelineLibraryCreateInfoEXT&VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT41713     operator VkGraphicsPipelineLibraryCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
41714     {
41715       return *reinterpret_cast<VkGraphicsPipelineLibraryCreateInfoEXT *>( this );
41716     }
41717 
41718 #if defined( VULKAN_HPP_USE_REFLECT )
41719 #  if 14 <= VULKAN_HPP_CPP_VERSION
41720     auto
41721 #  else
41722     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryFlagsEXT const &>
41723 #  endif
reflectVULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT41724       reflect() const VULKAN_HPP_NOEXCEPT
41725     {
41726       return std::tie( sType, pNext, flags );
41727     }
41728 #endif
41729 
41730 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
41731     auto operator<=>( GraphicsPipelineLibraryCreateInfoEXT const & ) const = default;
41732 #else
operator ==VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT41733     bool operator==( GraphicsPipelineLibraryCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
41734     {
41735 #  if defined( VULKAN_HPP_USE_REFLECT )
41736       return this->reflect() == rhs.reflect();
41737 #  else
41738       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
41739 #  endif
41740     }
41741 
operator !=VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT41742     bool operator!=( GraphicsPipelineLibraryCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
41743     {
41744       return !operator==( rhs );
41745     }
41746 #endif
41747 
41748   public:
41749     VULKAN_HPP_NAMESPACE::StructureType                   sType = StructureType::eGraphicsPipelineLibraryCreateInfoEXT;
41750     const void *                                          pNext = {};
41751     VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryFlagsEXT flags = {};
41752   };
41753 
41754   template <>
41755   struct CppType<StructureType, StructureType::eGraphicsPipelineLibraryCreateInfoEXT>
41756   {
41757     using Type = GraphicsPipelineLibraryCreateInfoEXT;
41758   };
41759 
41760   struct GraphicsShaderGroupCreateInfoNV
41761   {
41762     using NativeType = VkGraphicsShaderGroupCreateInfoNV;
41763 
41764     static const bool                                  allowDuplicate = false;
41765     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGraphicsShaderGroupCreateInfoNV;
41766 
41767 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GraphicsShaderGroupCreateInfoNVVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV41768     VULKAN_HPP_CONSTEXPR GraphicsShaderGroupCreateInfoNV( uint32_t                                                          stageCount_         = {},
41769                                                           const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo *       pStages_            = {},
41770                                                           const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo *  pVertexInputState_  = {},
41771                                                           const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState_ = {},
41772                                                           const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
41773       : pNext{ pNext_ }
41774       , stageCount{ stageCount_ }
41775       , pStages{ pStages_ }
41776       , pVertexInputState{ pVertexInputState_ }
41777       , pTessellationState{ pTessellationState_ }
41778     {
41779     }
41780 
41781     VULKAN_HPP_CONSTEXPR GraphicsShaderGroupCreateInfoNV( GraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41782 
GraphicsShaderGroupCreateInfoNVVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV41783     GraphicsShaderGroupCreateInfoNV( VkGraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
41784       : GraphicsShaderGroupCreateInfoNV( *reinterpret_cast<GraphicsShaderGroupCreateInfoNV const *>( &rhs ) )
41785     {
41786     }
41787 
41788 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
GraphicsShaderGroupCreateInfoNVVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV41789     GraphicsShaderGroupCreateInfoNV( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_,
41790                                      const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo *  pVertexInputState_  = {},
41791                                      const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState_ = {},
41792                                      const void *                                                      pNext_              = nullptr )
41793       : pNext( pNext_ )
41794       , stageCount( static_cast<uint32_t>( stages_.size() ) )
41795       , pStages( stages_.data() )
41796       , pVertexInputState( pVertexInputState_ )
41797       , pTessellationState( pTessellationState_ )
41798     {
41799     }
41800 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41801 
41802     GraphicsShaderGroupCreateInfoNV & operator=( GraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41803 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41804 
operator =VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV41805     GraphicsShaderGroupCreateInfoNV & operator=( VkGraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
41806     {
41807       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV const *>( &rhs );
41808       return *this;
41809     }
41810 
41811 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV41812     VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
41813     {
41814       pNext = pNext_;
41815       return *this;
41816     }
41817 
setStageCountVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV41818     VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT
41819     {
41820       stageCount = stageCount_;
41821       return *this;
41822     }
41823 
41824     VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV &
setPStagesVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV41825       setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ ) VULKAN_HPP_NOEXCEPT
41826     {
41827       pStages = pStages_;
41828       return *this;
41829     }
41830 
41831 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
41832     GraphicsShaderGroupCreateInfoNV &
setStagesVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV41833       setStages( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_ ) VULKAN_HPP_NOEXCEPT
41834     {
41835       stageCount = static_cast<uint32_t>( stages_.size() );
41836       pStages    = stages_.data();
41837       return *this;
41838     }
41839 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41840 
41841     VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV &
setPVertexInputStateVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV41842       setPVertexInputState( const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * pVertexInputState_ ) VULKAN_HPP_NOEXCEPT
41843     {
41844       pVertexInputState = pVertexInputState_;
41845       return *this;
41846     }
41847 
41848     VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV &
setPTessellationStateVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV41849       setPTessellationState( const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState_ ) VULKAN_HPP_NOEXCEPT
41850     {
41851       pTessellationState = pTessellationState_;
41852       return *this;
41853     }
41854 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41855 
operator VkGraphicsShaderGroupCreateInfoNV const&VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV41856     operator VkGraphicsShaderGroupCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
41857     {
41858       return *reinterpret_cast<const VkGraphicsShaderGroupCreateInfoNV *>( this );
41859     }
41860 
operator VkGraphicsShaderGroupCreateInfoNV&VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV41861     operator VkGraphicsShaderGroupCreateInfoNV &() VULKAN_HPP_NOEXCEPT
41862     {
41863       return *reinterpret_cast<VkGraphicsShaderGroupCreateInfoNV *>( this );
41864     }
41865 
41866 #if defined( VULKAN_HPP_USE_REFLECT )
41867 #  if 14 <= VULKAN_HPP_CPP_VERSION
41868     auto
41869 #  else
41870     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
41871                const void * const &,
41872                uint32_t const &,
41873                const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * const &,
41874                const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * const &,
41875                const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * const &>
41876 #  endif
reflectVULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV41877       reflect() const VULKAN_HPP_NOEXCEPT
41878     {
41879       return std::tie( sType, pNext, stageCount, pStages, pVertexInputState, pTessellationState );
41880     }
41881 #endif
41882 
41883 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
41884     auto operator<=>( GraphicsShaderGroupCreateInfoNV const & ) const = default;
41885 #else
operator ==VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV41886     bool operator==( GraphicsShaderGroupCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
41887     {
41888 #  if defined( VULKAN_HPP_USE_REFLECT )
41889       return this->reflect() == rhs.reflect();
41890 #  else
41891       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stageCount == rhs.stageCount ) && ( pStages == rhs.pStages ) &&
41892              ( pVertexInputState == rhs.pVertexInputState ) && ( pTessellationState == rhs.pTessellationState );
41893 #  endif
41894     }
41895 
operator !=VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV41896     bool operator!=( GraphicsShaderGroupCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
41897     {
41898       return !operator==( rhs );
41899     }
41900 #endif
41901 
41902   public:
41903     VULKAN_HPP_NAMESPACE::StructureType                               sType              = StructureType::eGraphicsShaderGroupCreateInfoNV;
41904     const void *                                                      pNext              = {};
41905     uint32_t                                                          stageCount         = {};
41906     const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo *       pStages            = {};
41907     const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo *  pVertexInputState  = {};
41908     const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState = {};
41909   };
41910 
41911   template <>
41912   struct CppType<StructureType, StructureType::eGraphicsShaderGroupCreateInfoNV>
41913   {
41914     using Type = GraphicsShaderGroupCreateInfoNV;
41915   };
41916 
41917   struct GraphicsPipelineShaderGroupsCreateInfoNV
41918   {
41919     using NativeType = VkGraphicsPipelineShaderGroupsCreateInfoNV;
41920 
41921     static const bool                                  allowDuplicate = false;
41922     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eGraphicsPipelineShaderGroupsCreateInfoNV;
41923 
41924 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GraphicsPipelineShaderGroupsCreateInfoNVVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV41925     VULKAN_HPP_CONSTEXPR GraphicsPipelineShaderGroupsCreateInfoNV( uint32_t                                                      groupCount_    = {},
41926                                                                    const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV * pGroups_       = {},
41927                                                                    uint32_t                                                      pipelineCount_ = {},
41928                                                                    const VULKAN_HPP_NAMESPACE::Pipeline *                        pPipelines_    = {},
41929                                                                    const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
41930       : pNext{ pNext_ }
41931       , groupCount{ groupCount_ }
41932       , pGroups{ pGroups_ }
41933       , pipelineCount{ pipelineCount_ }
41934       , pPipelines{ pPipelines_ }
41935     {
41936     }
41937 
41938     VULKAN_HPP_CONSTEXPR GraphicsPipelineShaderGroupsCreateInfoNV( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41939 
GraphicsPipelineShaderGroupsCreateInfoNVVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV41940     GraphicsPipelineShaderGroupsCreateInfoNV( VkGraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
41941       : GraphicsPipelineShaderGroupsCreateInfoNV( *reinterpret_cast<GraphicsPipelineShaderGroupsCreateInfoNV const *>( &rhs ) )
41942     {
41943     }
41944 
41945 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
GraphicsPipelineShaderGroupsCreateInfoNVVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV41946     GraphicsPipelineShaderGroupsCreateInfoNV(
41947       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV> const & groups_,
41948       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Pipeline> const &                        pipelines_ = {},
41949       const void *                                                                                                       pNext_     = nullptr )
41950       : pNext( pNext_ )
41951       , groupCount( static_cast<uint32_t>( groups_.size() ) )
41952       , pGroups( groups_.data() )
41953       , pipelineCount( static_cast<uint32_t>( pipelines_.size() ) )
41954       , pPipelines( pipelines_.data() )
41955     {
41956     }
41957 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41958 
41959     GraphicsPipelineShaderGroupsCreateInfoNV & operator=( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41960 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41961 
operator =VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV41962     GraphicsPipelineShaderGroupsCreateInfoNV & operator=( VkGraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
41963     {
41964       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV const *>( &rhs );
41965       return *this;
41966     }
41967 
41968 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV41969     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
41970     {
41971       pNext = pNext_;
41972       return *this;
41973     }
41974 
setGroupCountVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV41975     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV & setGroupCount( uint32_t groupCount_ ) VULKAN_HPP_NOEXCEPT
41976     {
41977       groupCount = groupCount_;
41978       return *this;
41979     }
41980 
41981     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV &
setPGroupsVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV41982       setPGroups( const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV * pGroups_ ) VULKAN_HPP_NOEXCEPT
41983     {
41984       pGroups = pGroups_;
41985       return *this;
41986     }
41987 
41988 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setGroupsVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV41989     GraphicsPipelineShaderGroupsCreateInfoNV & setGroups(
41990       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV> const & groups_ ) VULKAN_HPP_NOEXCEPT
41991     {
41992       groupCount = static_cast<uint32_t>( groups_.size() );
41993       pGroups    = groups_.data();
41994       return *this;
41995     }
41996 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41997 
setPipelineCountVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV41998     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV & setPipelineCount( uint32_t pipelineCount_ ) VULKAN_HPP_NOEXCEPT
41999     {
42000       pipelineCount = pipelineCount_;
42001       return *this;
42002     }
42003 
setPPipelinesVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42004     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV & setPPipelines( const VULKAN_HPP_NAMESPACE::Pipeline * pPipelines_ ) VULKAN_HPP_NOEXCEPT
42005     {
42006       pPipelines = pPipelines_;
42007       return *this;
42008     }
42009 
42010 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
42011     GraphicsPipelineShaderGroupsCreateInfoNV &
setPipelinesVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42012       setPipelines( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Pipeline> const & pipelines_ ) VULKAN_HPP_NOEXCEPT
42013     {
42014       pipelineCount = static_cast<uint32_t>( pipelines_.size() );
42015       pPipelines    = pipelines_.data();
42016       return *this;
42017     }
42018 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
42019 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42020 
operator VkGraphicsPipelineShaderGroupsCreateInfoNV const&VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42021     operator VkGraphicsPipelineShaderGroupsCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
42022     {
42023       return *reinterpret_cast<const VkGraphicsPipelineShaderGroupsCreateInfoNV *>( this );
42024     }
42025 
operator VkGraphicsPipelineShaderGroupsCreateInfoNV&VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42026     operator VkGraphicsPipelineShaderGroupsCreateInfoNV &() VULKAN_HPP_NOEXCEPT
42027     {
42028       return *reinterpret_cast<VkGraphicsPipelineShaderGroupsCreateInfoNV *>( this );
42029     }
42030 
42031 #if defined( VULKAN_HPP_USE_REFLECT )
42032 #  if 14 <= VULKAN_HPP_CPP_VERSION
42033     auto
42034 #  else
42035     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
42036                const void * const &,
42037                uint32_t const &,
42038                const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV * const &,
42039                uint32_t const &,
42040                const VULKAN_HPP_NAMESPACE::Pipeline * const &>
42041 #  endif
reflectVULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42042       reflect() const VULKAN_HPP_NOEXCEPT
42043     {
42044       return std::tie( sType, pNext, groupCount, pGroups, pipelineCount, pPipelines );
42045     }
42046 #endif
42047 
42048 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42049     auto operator<=>( GraphicsPipelineShaderGroupsCreateInfoNV const & ) const = default;
42050 #else
operator ==VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42051     bool operator==( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
42052     {
42053 #  if defined( VULKAN_HPP_USE_REFLECT )
42054       return this->reflect() == rhs.reflect();
42055 #  else
42056       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( groupCount == rhs.groupCount ) && ( pGroups == rhs.pGroups ) &&
42057              ( pipelineCount == rhs.pipelineCount ) && ( pPipelines == rhs.pPipelines );
42058 #  endif
42059     }
42060 
operator !=VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV42061     bool operator!=( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
42062     {
42063       return !operator==( rhs );
42064     }
42065 #endif
42066 
42067   public:
42068     VULKAN_HPP_NAMESPACE::StructureType                           sType         = StructureType::eGraphicsPipelineShaderGroupsCreateInfoNV;
42069     const void *                                                  pNext         = {};
42070     uint32_t                                                      groupCount    = {};
42071     const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV * pGroups       = {};
42072     uint32_t                                                      pipelineCount = {};
42073     const VULKAN_HPP_NAMESPACE::Pipeline *                        pPipelines    = {};
42074   };
42075 
42076   template <>
42077   struct CppType<StructureType, StructureType::eGraphicsPipelineShaderGroupsCreateInfoNV>
42078   {
42079     using Type = GraphicsPipelineShaderGroupsCreateInfoNV;
42080   };
42081 
42082   struct XYColorEXT
42083   {
42084     using NativeType = VkXYColorEXT;
42085 
42086 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
XYColorEXTVULKAN_HPP_NAMESPACE::XYColorEXT42087     VULKAN_HPP_CONSTEXPR XYColorEXT( float x_ = {}, float y_ = {} ) VULKAN_HPP_NOEXCEPT
42088       : x{ x_ }
42089       , y{ y_ }
42090     {
42091     }
42092 
42093     VULKAN_HPP_CONSTEXPR XYColorEXT( XYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42094 
XYColorEXTVULKAN_HPP_NAMESPACE::XYColorEXT42095     XYColorEXT( VkXYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT : XYColorEXT( *reinterpret_cast<XYColorEXT const *>( &rhs ) ) {}
42096 
42097     XYColorEXT & operator=( XYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42098 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42099 
operator =VULKAN_HPP_NAMESPACE::XYColorEXT42100     XYColorEXT & operator=( VkXYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42101     {
42102       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::XYColorEXT const *>( &rhs );
42103       return *this;
42104     }
42105 
42106 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::XYColorEXT42107     VULKAN_HPP_CONSTEXPR_14 XYColorEXT & setX( float x_ ) VULKAN_HPP_NOEXCEPT
42108     {
42109       x = x_;
42110       return *this;
42111     }
42112 
setYVULKAN_HPP_NAMESPACE::XYColorEXT42113     VULKAN_HPP_CONSTEXPR_14 XYColorEXT & setY( float y_ ) VULKAN_HPP_NOEXCEPT
42114     {
42115       y = y_;
42116       return *this;
42117     }
42118 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42119 
operator VkXYColorEXT const&VULKAN_HPP_NAMESPACE::XYColorEXT42120     operator VkXYColorEXT const &() const VULKAN_HPP_NOEXCEPT
42121     {
42122       return *reinterpret_cast<const VkXYColorEXT *>( this );
42123     }
42124 
operator VkXYColorEXT&VULKAN_HPP_NAMESPACE::XYColorEXT42125     operator VkXYColorEXT &() VULKAN_HPP_NOEXCEPT
42126     {
42127       return *reinterpret_cast<VkXYColorEXT *>( this );
42128     }
42129 
42130 #if defined( VULKAN_HPP_USE_REFLECT )
42131 #  if 14 <= VULKAN_HPP_CPP_VERSION
42132     auto
42133 #  else
42134     std::tuple<float const &, float const &>
42135 #  endif
reflectVULKAN_HPP_NAMESPACE::XYColorEXT42136       reflect() const VULKAN_HPP_NOEXCEPT
42137     {
42138       return std::tie( x, y );
42139     }
42140 #endif
42141 
42142 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42143     auto operator<=>( XYColorEXT const & ) const = default;
42144 #else
operator ==VULKAN_HPP_NAMESPACE::XYColorEXT42145     bool operator==( XYColorEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42146     {
42147 #  if defined( VULKAN_HPP_USE_REFLECT )
42148       return this->reflect() == rhs.reflect();
42149 #  else
42150       return ( x == rhs.x ) && ( y == rhs.y );
42151 #  endif
42152     }
42153 
operator !=VULKAN_HPP_NAMESPACE::XYColorEXT42154     bool operator!=( XYColorEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42155     {
42156       return !operator==( rhs );
42157     }
42158 #endif
42159 
42160   public:
42161     float x = {};
42162     float y = {};
42163   };
42164 
42165   struct HdrMetadataEXT
42166   {
42167     using NativeType = VkHdrMetadataEXT;
42168 
42169     static const bool                                  allowDuplicate = false;
42170     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eHdrMetadataEXT;
42171 
42172 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
HdrMetadataEXTVULKAN_HPP_NAMESPACE::HdrMetadataEXT42173     VULKAN_HPP_CONSTEXPR HdrMetadataEXT( VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryRed_         = {},
42174                                          VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryGreen_       = {},
42175                                          VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryBlue_        = {},
42176                                          VULKAN_HPP_NAMESPACE::XYColorEXT whitePoint_                = {},
42177                                          float                            maxLuminance_              = {},
42178                                          float                            minLuminance_              = {},
42179                                          float                            maxContentLightLevel_      = {},
42180                                          float                            maxFrameAverageLightLevel_ = {},
42181                                          const void *                     pNext_                     = nullptr ) VULKAN_HPP_NOEXCEPT
42182       : pNext{ pNext_ }
42183       , displayPrimaryRed{ displayPrimaryRed_ }
42184       , displayPrimaryGreen{ displayPrimaryGreen_ }
42185       , displayPrimaryBlue{ displayPrimaryBlue_ }
42186       , whitePoint{ whitePoint_ }
42187       , maxLuminance{ maxLuminance_ }
42188       , minLuminance{ minLuminance_ }
42189       , maxContentLightLevel{ maxContentLightLevel_ }
42190       , maxFrameAverageLightLevel{ maxFrameAverageLightLevel_ }
42191     {
42192     }
42193 
42194     VULKAN_HPP_CONSTEXPR HdrMetadataEXT( HdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42195 
HdrMetadataEXTVULKAN_HPP_NAMESPACE::HdrMetadataEXT42196     HdrMetadataEXT( VkHdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT : HdrMetadataEXT( *reinterpret_cast<HdrMetadataEXT const *>( &rhs ) ) {}
42197 
42198     HdrMetadataEXT & operator=( HdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42199 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42200 
operator =VULKAN_HPP_NAMESPACE::HdrMetadataEXT42201     HdrMetadataEXT & operator=( VkHdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42202     {
42203       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::HdrMetadataEXT const *>( &rhs );
42204       return *this;
42205     }
42206 
42207 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::HdrMetadataEXT42208     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
42209     {
42210       pNext = pNext_;
42211       return *this;
42212     }
42213 
setDisplayPrimaryRedVULKAN_HPP_NAMESPACE::HdrMetadataEXT42214     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setDisplayPrimaryRed( VULKAN_HPP_NAMESPACE::XYColorEXT const & displayPrimaryRed_ ) VULKAN_HPP_NOEXCEPT
42215     {
42216       displayPrimaryRed = displayPrimaryRed_;
42217       return *this;
42218     }
42219 
setDisplayPrimaryGreenVULKAN_HPP_NAMESPACE::HdrMetadataEXT42220     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setDisplayPrimaryGreen( VULKAN_HPP_NAMESPACE::XYColorEXT const & displayPrimaryGreen_ ) VULKAN_HPP_NOEXCEPT
42221     {
42222       displayPrimaryGreen = displayPrimaryGreen_;
42223       return *this;
42224     }
42225 
setDisplayPrimaryBlueVULKAN_HPP_NAMESPACE::HdrMetadataEXT42226     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setDisplayPrimaryBlue( VULKAN_HPP_NAMESPACE::XYColorEXT const & displayPrimaryBlue_ ) VULKAN_HPP_NOEXCEPT
42227     {
42228       displayPrimaryBlue = displayPrimaryBlue_;
42229       return *this;
42230     }
42231 
setWhitePointVULKAN_HPP_NAMESPACE::HdrMetadataEXT42232     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setWhitePoint( VULKAN_HPP_NAMESPACE::XYColorEXT const & whitePoint_ ) VULKAN_HPP_NOEXCEPT
42233     {
42234       whitePoint = whitePoint_;
42235       return *this;
42236     }
42237 
setMaxLuminanceVULKAN_HPP_NAMESPACE::HdrMetadataEXT42238     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMaxLuminance( float maxLuminance_ ) VULKAN_HPP_NOEXCEPT
42239     {
42240       maxLuminance = maxLuminance_;
42241       return *this;
42242     }
42243 
setMinLuminanceVULKAN_HPP_NAMESPACE::HdrMetadataEXT42244     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMinLuminance( float minLuminance_ ) VULKAN_HPP_NOEXCEPT
42245     {
42246       minLuminance = minLuminance_;
42247       return *this;
42248     }
42249 
setMaxContentLightLevelVULKAN_HPP_NAMESPACE::HdrMetadataEXT42250     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMaxContentLightLevel( float maxContentLightLevel_ ) VULKAN_HPP_NOEXCEPT
42251     {
42252       maxContentLightLevel = maxContentLightLevel_;
42253       return *this;
42254     }
42255 
setMaxFrameAverageLightLevelVULKAN_HPP_NAMESPACE::HdrMetadataEXT42256     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ ) VULKAN_HPP_NOEXCEPT
42257     {
42258       maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
42259       return *this;
42260     }
42261 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42262 
operator VkHdrMetadataEXT const&VULKAN_HPP_NAMESPACE::HdrMetadataEXT42263     operator VkHdrMetadataEXT const &() const VULKAN_HPP_NOEXCEPT
42264     {
42265       return *reinterpret_cast<const VkHdrMetadataEXT *>( this );
42266     }
42267 
operator VkHdrMetadataEXT&VULKAN_HPP_NAMESPACE::HdrMetadataEXT42268     operator VkHdrMetadataEXT &() VULKAN_HPP_NOEXCEPT
42269     {
42270       return *reinterpret_cast<VkHdrMetadataEXT *>( this );
42271     }
42272 
42273 #if defined( VULKAN_HPP_USE_REFLECT )
42274 #  if 14 <= VULKAN_HPP_CPP_VERSION
42275     auto
42276 #  else
42277     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
42278                const void * const &,
42279                VULKAN_HPP_NAMESPACE::XYColorEXT const &,
42280                VULKAN_HPP_NAMESPACE::XYColorEXT const &,
42281                VULKAN_HPP_NAMESPACE::XYColorEXT const &,
42282                VULKAN_HPP_NAMESPACE::XYColorEXT const &,
42283                float const &,
42284                float const &,
42285                float const &,
42286                float const &>
42287 #  endif
reflectVULKAN_HPP_NAMESPACE::HdrMetadataEXT42288       reflect() const VULKAN_HPP_NOEXCEPT
42289     {
42290       return std::tie( sType,
42291                        pNext,
42292                        displayPrimaryRed,
42293                        displayPrimaryGreen,
42294                        displayPrimaryBlue,
42295                        whitePoint,
42296                        maxLuminance,
42297                        minLuminance,
42298                        maxContentLightLevel,
42299                        maxFrameAverageLightLevel );
42300     }
42301 #endif
42302 
42303 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42304     auto operator<=>( HdrMetadataEXT const & ) const = default;
42305 #else
operator ==VULKAN_HPP_NAMESPACE::HdrMetadataEXT42306     bool operator==( HdrMetadataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42307     {
42308 #  if defined( VULKAN_HPP_USE_REFLECT )
42309       return this->reflect() == rhs.reflect();
42310 #  else
42311       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displayPrimaryRed == rhs.displayPrimaryRed ) &&
42312              ( displayPrimaryGreen == rhs.displayPrimaryGreen ) && ( displayPrimaryBlue == rhs.displayPrimaryBlue ) && ( whitePoint == rhs.whitePoint ) &&
42313              ( maxLuminance == rhs.maxLuminance ) && ( minLuminance == rhs.minLuminance ) && ( maxContentLightLevel == rhs.maxContentLightLevel ) &&
42314              ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel );
42315 #  endif
42316     }
42317 
operator !=VULKAN_HPP_NAMESPACE::HdrMetadataEXT42318     bool operator!=( HdrMetadataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42319     {
42320       return !operator==( rhs );
42321     }
42322 #endif
42323 
42324   public:
42325     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::eHdrMetadataEXT;
42326     const void *                        pNext                     = {};
42327     VULKAN_HPP_NAMESPACE::XYColorEXT    displayPrimaryRed         = {};
42328     VULKAN_HPP_NAMESPACE::XYColorEXT    displayPrimaryGreen       = {};
42329     VULKAN_HPP_NAMESPACE::XYColorEXT    displayPrimaryBlue        = {};
42330     VULKAN_HPP_NAMESPACE::XYColorEXT    whitePoint                = {};
42331     float                               maxLuminance              = {};
42332     float                               minLuminance              = {};
42333     float                               maxContentLightLevel      = {};
42334     float                               maxFrameAverageLightLevel = {};
42335   };
42336 
42337   template <>
42338   struct CppType<StructureType, StructureType::eHdrMetadataEXT>
42339   {
42340     using Type = HdrMetadataEXT;
42341   };
42342 
42343   struct HeadlessSurfaceCreateInfoEXT
42344   {
42345     using NativeType = VkHeadlessSurfaceCreateInfoEXT;
42346 
42347     static const bool                                  allowDuplicate = false;
42348     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eHeadlessSurfaceCreateInfoEXT;
42349 
42350 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
HeadlessSurfaceCreateInfoEXTVULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT42351     VULKAN_HPP_CONSTEXPR HeadlessSurfaceCreateInfoEXT( VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT flags_ = {},
42352                                                        const void *                                        pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
42353       : pNext{ pNext_ }
42354       , flags{ flags_ }
42355     {
42356     }
42357 
42358     VULKAN_HPP_CONSTEXPR HeadlessSurfaceCreateInfoEXT( HeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42359 
HeadlessSurfaceCreateInfoEXTVULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT42360     HeadlessSurfaceCreateInfoEXT( VkHeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42361       : HeadlessSurfaceCreateInfoEXT( *reinterpret_cast<HeadlessSurfaceCreateInfoEXT const *>( &rhs ) )
42362     {
42363     }
42364 
42365     HeadlessSurfaceCreateInfoEXT & operator=( HeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42366 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42367 
operator =VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT42368     HeadlessSurfaceCreateInfoEXT & operator=( VkHeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42369     {
42370       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT const *>( &rhs );
42371       return *this;
42372     }
42373 
42374 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT42375     VULKAN_HPP_CONSTEXPR_14 HeadlessSurfaceCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
42376     {
42377       pNext = pNext_;
42378       return *this;
42379     }
42380 
setFlagsVULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT42381     VULKAN_HPP_CONSTEXPR_14 HeadlessSurfaceCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
42382     {
42383       flags = flags_;
42384       return *this;
42385     }
42386 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42387 
operator VkHeadlessSurfaceCreateInfoEXT const&VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT42388     operator VkHeadlessSurfaceCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
42389     {
42390       return *reinterpret_cast<const VkHeadlessSurfaceCreateInfoEXT *>( this );
42391     }
42392 
operator VkHeadlessSurfaceCreateInfoEXT&VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT42393     operator VkHeadlessSurfaceCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
42394     {
42395       return *reinterpret_cast<VkHeadlessSurfaceCreateInfoEXT *>( this );
42396     }
42397 
42398 #if defined( VULKAN_HPP_USE_REFLECT )
42399 #  if 14 <= VULKAN_HPP_CPP_VERSION
42400     auto
42401 #  else
42402     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT const &>
42403 #  endif
reflectVULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT42404       reflect() const VULKAN_HPP_NOEXCEPT
42405     {
42406       return std::tie( sType, pNext, flags );
42407     }
42408 #endif
42409 
42410 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42411     auto operator<=>( HeadlessSurfaceCreateInfoEXT const & ) const = default;
42412 #else
operator ==VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT42413     bool operator==( HeadlessSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42414     {
42415 #  if defined( VULKAN_HPP_USE_REFLECT )
42416       return this->reflect() == rhs.reflect();
42417 #  else
42418       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
42419 #  endif
42420     }
42421 
operator !=VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT42422     bool operator!=( HeadlessSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42423     {
42424       return !operator==( rhs );
42425     }
42426 #endif
42427 
42428   public:
42429     VULKAN_HPP_NAMESPACE::StructureType                 sType = StructureType::eHeadlessSurfaceCreateInfoEXT;
42430     const void *                                        pNext = {};
42431     VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT flags = {};
42432   };
42433 
42434   template <>
42435   struct CppType<StructureType, StructureType::eHeadlessSurfaceCreateInfoEXT>
42436   {
42437     using Type = HeadlessSurfaceCreateInfoEXT;
42438   };
42439 
42440   struct HostImageCopyDevicePerformanceQueryEXT
42441   {
42442     using NativeType = VkHostImageCopyDevicePerformanceQueryEXT;
42443 
42444     static const bool                                  allowDuplicate = false;
42445     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eHostImageCopyDevicePerformanceQueryEXT;
42446 
42447 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
HostImageCopyDevicePerformanceQueryEXTVULKAN_HPP_NAMESPACE::HostImageCopyDevicePerformanceQueryEXT42448     VULKAN_HPP_CONSTEXPR HostImageCopyDevicePerformanceQueryEXT( VULKAN_HPP_NAMESPACE::Bool32 optimalDeviceAccess_   = {},
42449                                                                  VULKAN_HPP_NAMESPACE::Bool32 identicalMemoryLayout_ = {},
42450                                                                  void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
42451       : pNext{ pNext_ }
42452       , optimalDeviceAccess{ optimalDeviceAccess_ }
42453       , identicalMemoryLayout{ identicalMemoryLayout_ }
42454     {
42455     }
42456 
42457     VULKAN_HPP_CONSTEXPR HostImageCopyDevicePerformanceQueryEXT( HostImageCopyDevicePerformanceQueryEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42458 
HostImageCopyDevicePerformanceQueryEXTVULKAN_HPP_NAMESPACE::HostImageCopyDevicePerformanceQueryEXT42459     HostImageCopyDevicePerformanceQueryEXT( VkHostImageCopyDevicePerformanceQueryEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42460       : HostImageCopyDevicePerformanceQueryEXT( *reinterpret_cast<HostImageCopyDevicePerformanceQueryEXT const *>( &rhs ) )
42461     {
42462     }
42463 
42464     HostImageCopyDevicePerformanceQueryEXT & operator=( HostImageCopyDevicePerformanceQueryEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42465 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42466 
operator =VULKAN_HPP_NAMESPACE::HostImageCopyDevicePerformanceQueryEXT42467     HostImageCopyDevicePerformanceQueryEXT & operator=( VkHostImageCopyDevicePerformanceQueryEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42468     {
42469       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::HostImageCopyDevicePerformanceQueryEXT const *>( &rhs );
42470       return *this;
42471     }
42472 
operator VkHostImageCopyDevicePerformanceQueryEXT const&VULKAN_HPP_NAMESPACE::HostImageCopyDevicePerformanceQueryEXT42473     operator VkHostImageCopyDevicePerformanceQueryEXT const &() const VULKAN_HPP_NOEXCEPT
42474     {
42475       return *reinterpret_cast<const VkHostImageCopyDevicePerformanceQueryEXT *>( this );
42476     }
42477 
operator VkHostImageCopyDevicePerformanceQueryEXT&VULKAN_HPP_NAMESPACE::HostImageCopyDevicePerformanceQueryEXT42478     operator VkHostImageCopyDevicePerformanceQueryEXT &() VULKAN_HPP_NOEXCEPT
42479     {
42480       return *reinterpret_cast<VkHostImageCopyDevicePerformanceQueryEXT *>( this );
42481     }
42482 
42483 #if defined( VULKAN_HPP_USE_REFLECT )
42484 #  if 14 <= VULKAN_HPP_CPP_VERSION
42485     auto
42486 #  else
42487     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
42488 #  endif
reflectVULKAN_HPP_NAMESPACE::HostImageCopyDevicePerformanceQueryEXT42489       reflect() const VULKAN_HPP_NOEXCEPT
42490     {
42491       return std::tie( sType, pNext, optimalDeviceAccess, identicalMemoryLayout );
42492     }
42493 #endif
42494 
42495 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42496     auto operator<=>( HostImageCopyDevicePerformanceQueryEXT const & ) const = default;
42497 #else
operator ==VULKAN_HPP_NAMESPACE::HostImageCopyDevicePerformanceQueryEXT42498     bool operator==( HostImageCopyDevicePerformanceQueryEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42499     {
42500 #  if defined( VULKAN_HPP_USE_REFLECT )
42501       return this->reflect() == rhs.reflect();
42502 #  else
42503       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( optimalDeviceAccess == rhs.optimalDeviceAccess ) &&
42504              ( identicalMemoryLayout == rhs.identicalMemoryLayout );
42505 #  endif
42506     }
42507 
operator !=VULKAN_HPP_NAMESPACE::HostImageCopyDevicePerformanceQueryEXT42508     bool operator!=( HostImageCopyDevicePerformanceQueryEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42509     {
42510       return !operator==( rhs );
42511     }
42512 #endif
42513 
42514   public:
42515     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::eHostImageCopyDevicePerformanceQueryEXT;
42516     void *                              pNext                 = {};
42517     VULKAN_HPP_NAMESPACE::Bool32        optimalDeviceAccess   = {};
42518     VULKAN_HPP_NAMESPACE::Bool32        identicalMemoryLayout = {};
42519   };
42520 
42521   template <>
42522   struct CppType<StructureType, StructureType::eHostImageCopyDevicePerformanceQueryEXT>
42523   {
42524     using Type = HostImageCopyDevicePerformanceQueryEXT;
42525   };
42526 
42527   struct HostImageLayoutTransitionInfoEXT
42528   {
42529     using NativeType = VkHostImageLayoutTransitionInfoEXT;
42530 
42531     static const bool                                  allowDuplicate = false;
42532     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eHostImageLayoutTransitionInfoEXT;
42533 
42534 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
HostImageLayoutTransitionInfoEXTVULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfoEXT42535     VULKAN_HPP_CONSTEXPR HostImageLayoutTransitionInfoEXT( VULKAN_HPP_NAMESPACE::Image       image_     = {},
42536                                                            VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
42537                                                            VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
42538                                                            VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange_ = {},
42539                                                            const void *                                pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
42540       : pNext{ pNext_ }
42541       , image{ image_ }
42542       , oldLayout{ oldLayout_ }
42543       , newLayout{ newLayout_ }
42544       , subresourceRange{ subresourceRange_ }
42545     {
42546     }
42547 
42548     VULKAN_HPP_CONSTEXPR HostImageLayoutTransitionInfoEXT( HostImageLayoutTransitionInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42549 
HostImageLayoutTransitionInfoEXTVULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfoEXT42550     HostImageLayoutTransitionInfoEXT( VkHostImageLayoutTransitionInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42551       : HostImageLayoutTransitionInfoEXT( *reinterpret_cast<HostImageLayoutTransitionInfoEXT const *>( &rhs ) )
42552     {
42553     }
42554 
42555     HostImageLayoutTransitionInfoEXT & operator=( HostImageLayoutTransitionInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42556 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42557 
operator =VULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfoEXT42558     HostImageLayoutTransitionInfoEXT & operator=( VkHostImageLayoutTransitionInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42559     {
42560       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfoEXT const *>( &rhs );
42561       return *this;
42562     }
42563 
42564 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfoEXT42565     VULKAN_HPP_CONSTEXPR_14 HostImageLayoutTransitionInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
42566     {
42567       pNext = pNext_;
42568       return *this;
42569     }
42570 
setImageVULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfoEXT42571     VULKAN_HPP_CONSTEXPR_14 HostImageLayoutTransitionInfoEXT & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
42572     {
42573       image = image_;
42574       return *this;
42575     }
42576 
setOldLayoutVULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfoEXT42577     VULKAN_HPP_CONSTEXPR_14 HostImageLayoutTransitionInfoEXT & setOldLayout( VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ ) VULKAN_HPP_NOEXCEPT
42578     {
42579       oldLayout = oldLayout_;
42580       return *this;
42581     }
42582 
setNewLayoutVULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfoEXT42583     VULKAN_HPP_CONSTEXPR_14 HostImageLayoutTransitionInfoEXT & setNewLayout( VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ ) VULKAN_HPP_NOEXCEPT
42584     {
42585       newLayout = newLayout_;
42586       return *this;
42587     }
42588 
42589     VULKAN_HPP_CONSTEXPR_14 HostImageLayoutTransitionInfoEXT &
setSubresourceRangeVULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfoEXT42590       setSubresourceRange( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & subresourceRange_ ) VULKAN_HPP_NOEXCEPT
42591     {
42592       subresourceRange = subresourceRange_;
42593       return *this;
42594     }
42595 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42596 
operator VkHostImageLayoutTransitionInfoEXT const&VULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfoEXT42597     operator VkHostImageLayoutTransitionInfoEXT const &() const VULKAN_HPP_NOEXCEPT
42598     {
42599       return *reinterpret_cast<const VkHostImageLayoutTransitionInfoEXT *>( this );
42600     }
42601 
operator VkHostImageLayoutTransitionInfoEXT&VULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfoEXT42602     operator VkHostImageLayoutTransitionInfoEXT &() VULKAN_HPP_NOEXCEPT
42603     {
42604       return *reinterpret_cast<VkHostImageLayoutTransitionInfoEXT *>( this );
42605     }
42606 
42607 #if defined( VULKAN_HPP_USE_REFLECT )
42608 #  if 14 <= VULKAN_HPP_CPP_VERSION
42609     auto
42610 #  else
42611     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
42612                const void * const &,
42613                VULKAN_HPP_NAMESPACE::Image const &,
42614                VULKAN_HPP_NAMESPACE::ImageLayout const &,
42615                VULKAN_HPP_NAMESPACE::ImageLayout const &,
42616                VULKAN_HPP_NAMESPACE::ImageSubresourceRange const &>
42617 #  endif
reflectVULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfoEXT42618       reflect() const VULKAN_HPP_NOEXCEPT
42619     {
42620       return std::tie( sType, pNext, image, oldLayout, newLayout, subresourceRange );
42621     }
42622 #endif
42623 
42624 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42625     auto operator<=>( HostImageLayoutTransitionInfoEXT const & ) const = default;
42626 #else
operator ==VULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfoEXT42627     bool operator==( HostImageLayoutTransitionInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42628     {
42629 #  if defined( VULKAN_HPP_USE_REFLECT )
42630       return this->reflect() == rhs.reflect();
42631 #  else
42632       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( oldLayout == rhs.oldLayout ) && ( newLayout == rhs.newLayout ) &&
42633              ( subresourceRange == rhs.subresourceRange );
42634 #  endif
42635     }
42636 
operator !=VULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfoEXT42637     bool operator!=( HostImageLayoutTransitionInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42638     {
42639       return !operator==( rhs );
42640     }
42641 #endif
42642 
42643   public:
42644     VULKAN_HPP_NAMESPACE::StructureType         sType            = StructureType::eHostImageLayoutTransitionInfoEXT;
42645     const void *                                pNext            = {};
42646     VULKAN_HPP_NAMESPACE::Image                 image            = {};
42647     VULKAN_HPP_NAMESPACE::ImageLayout           oldLayout        = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
42648     VULKAN_HPP_NAMESPACE::ImageLayout           newLayout        = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
42649     VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange = {};
42650   };
42651 
42652   template <>
42653   struct CppType<StructureType, StructureType::eHostImageLayoutTransitionInfoEXT>
42654   {
42655     using Type = HostImageLayoutTransitionInfoEXT;
42656   };
42657 
42658 #if defined( VK_USE_PLATFORM_IOS_MVK )
42659   struct IOSSurfaceCreateInfoMVK
42660   {
42661     using NativeType = VkIOSSurfaceCreateInfoMVK;
42662 
42663     static const bool                                  allowDuplicate = false;
42664     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eIosSurfaceCreateInfoMVK;
42665 
42666 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
IOSSurfaceCreateInfoMVKVULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK42667     VULKAN_HPP_CONSTEXPR IOSSurfaceCreateInfoMVK( VULKAN_HPP_NAMESPACE::IOSSurfaceCreateFlagsMVK flags_ = {},
42668                                                   const void *                                   pView_ = {},
42669                                                   const void *                                   pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
42670       : pNext{ pNext_ }
42671       , flags{ flags_ }
42672       , pView{ pView_ }
42673     {
42674     }
42675 
42676     VULKAN_HPP_CONSTEXPR IOSSurfaceCreateInfoMVK( IOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42677 
IOSSurfaceCreateInfoMVKVULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK42678     IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT
42679       : IOSSurfaceCreateInfoMVK( *reinterpret_cast<IOSSurfaceCreateInfoMVK const *>( &rhs ) )
42680     {
42681     }
42682 
42683     IOSSurfaceCreateInfoMVK & operator=( IOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42684 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42685 
operator =VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK42686     IOSSurfaceCreateInfoMVK & operator=( VkIOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT
42687     {
42688       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK const *>( &rhs );
42689       return *this;
42690     }
42691 
42692 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK42693     VULKAN_HPP_CONSTEXPR_14 IOSSurfaceCreateInfoMVK & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
42694     {
42695       pNext = pNext_;
42696       return *this;
42697     }
42698 
setFlagsVULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK42699     VULKAN_HPP_CONSTEXPR_14 IOSSurfaceCreateInfoMVK & setFlags( VULKAN_HPP_NAMESPACE::IOSSurfaceCreateFlagsMVK flags_ ) VULKAN_HPP_NOEXCEPT
42700     {
42701       flags = flags_;
42702       return *this;
42703     }
42704 
setPViewVULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK42705     VULKAN_HPP_CONSTEXPR_14 IOSSurfaceCreateInfoMVK & setPView( const void * pView_ ) VULKAN_HPP_NOEXCEPT
42706     {
42707       pView = pView_;
42708       return *this;
42709     }
42710 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42711 
operator VkIOSSurfaceCreateInfoMVK const&VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK42712     operator VkIOSSurfaceCreateInfoMVK const &() const VULKAN_HPP_NOEXCEPT
42713     {
42714       return *reinterpret_cast<const VkIOSSurfaceCreateInfoMVK *>( this );
42715     }
42716 
operator VkIOSSurfaceCreateInfoMVK&VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK42717     operator VkIOSSurfaceCreateInfoMVK &() VULKAN_HPP_NOEXCEPT
42718     {
42719       return *reinterpret_cast<VkIOSSurfaceCreateInfoMVK *>( this );
42720     }
42721 
42722 #  if defined( VULKAN_HPP_USE_REFLECT )
42723 #    if 14 <= VULKAN_HPP_CPP_VERSION
42724     auto
42725 #    else
42726     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::IOSSurfaceCreateFlagsMVK const &, const void * const &>
42727 #    endif
reflectVULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK42728       reflect() const VULKAN_HPP_NOEXCEPT
42729     {
42730       return std::tie( sType, pNext, flags, pView );
42731     }
42732 #  endif
42733 
42734 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42735     auto operator<=>( IOSSurfaceCreateInfoMVK const & ) const = default;
42736 #  else
operator ==VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK42737     bool operator==( IOSSurfaceCreateInfoMVK const & rhs ) const VULKAN_HPP_NOEXCEPT
42738     {
42739 #    if defined( VULKAN_HPP_USE_REFLECT )
42740       return this->reflect() == rhs.reflect();
42741 #    else
42742       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pView == rhs.pView );
42743 #    endif
42744     }
42745 
operator !=VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK42746     bool operator!=( IOSSurfaceCreateInfoMVK const & rhs ) const VULKAN_HPP_NOEXCEPT
42747     {
42748       return !operator==( rhs );
42749     }
42750 #  endif
42751 
42752   public:
42753     VULKAN_HPP_NAMESPACE::StructureType            sType = StructureType::eIosSurfaceCreateInfoMVK;
42754     const void *                                   pNext = {};
42755     VULKAN_HPP_NAMESPACE::IOSSurfaceCreateFlagsMVK flags = {};
42756     const void *                                   pView = {};
42757   };
42758 
42759   template <>
42760   struct CppType<StructureType, StructureType::eIosSurfaceCreateInfoMVK>
42761   {
42762     using Type = IOSSurfaceCreateInfoMVK;
42763   };
42764 #endif /*VK_USE_PLATFORM_IOS_MVK*/
42765 
42766   struct ImageAlignmentControlCreateInfoMESA
42767   {
42768     using NativeType = VkImageAlignmentControlCreateInfoMESA;
42769 
42770     static const bool                                  allowDuplicate = false;
42771     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageAlignmentControlCreateInfoMESA;
42772 
42773 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageAlignmentControlCreateInfoMESAVULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA42774     VULKAN_HPP_CONSTEXPR ImageAlignmentControlCreateInfoMESA( uint32_t maximumRequestedAlignment_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
42775       : pNext{ pNext_ }
42776       , maximumRequestedAlignment{ maximumRequestedAlignment_ }
42777     {
42778     }
42779 
42780     VULKAN_HPP_CONSTEXPR ImageAlignmentControlCreateInfoMESA( ImageAlignmentControlCreateInfoMESA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42781 
ImageAlignmentControlCreateInfoMESAVULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA42782     ImageAlignmentControlCreateInfoMESA( VkImageAlignmentControlCreateInfoMESA const & rhs ) VULKAN_HPP_NOEXCEPT
42783       : ImageAlignmentControlCreateInfoMESA( *reinterpret_cast<ImageAlignmentControlCreateInfoMESA const *>( &rhs ) )
42784     {
42785     }
42786 
42787     ImageAlignmentControlCreateInfoMESA & operator=( ImageAlignmentControlCreateInfoMESA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42788 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42789 
operator =VULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA42790     ImageAlignmentControlCreateInfoMESA & operator=( VkImageAlignmentControlCreateInfoMESA const & rhs ) VULKAN_HPP_NOEXCEPT
42791     {
42792       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA const *>( &rhs );
42793       return *this;
42794     }
42795 
42796 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA42797     VULKAN_HPP_CONSTEXPR_14 ImageAlignmentControlCreateInfoMESA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
42798     {
42799       pNext = pNext_;
42800       return *this;
42801     }
42802 
setMaximumRequestedAlignmentVULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA42803     VULKAN_HPP_CONSTEXPR_14 ImageAlignmentControlCreateInfoMESA & setMaximumRequestedAlignment( uint32_t maximumRequestedAlignment_ ) VULKAN_HPP_NOEXCEPT
42804     {
42805       maximumRequestedAlignment = maximumRequestedAlignment_;
42806       return *this;
42807     }
42808 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42809 
operator VkImageAlignmentControlCreateInfoMESA const&VULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA42810     operator VkImageAlignmentControlCreateInfoMESA const &() const VULKAN_HPP_NOEXCEPT
42811     {
42812       return *reinterpret_cast<const VkImageAlignmentControlCreateInfoMESA *>( this );
42813     }
42814 
operator VkImageAlignmentControlCreateInfoMESA&VULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA42815     operator VkImageAlignmentControlCreateInfoMESA &() VULKAN_HPP_NOEXCEPT
42816     {
42817       return *reinterpret_cast<VkImageAlignmentControlCreateInfoMESA *>( this );
42818     }
42819 
42820 #if defined( VULKAN_HPP_USE_REFLECT )
42821 #  if 14 <= VULKAN_HPP_CPP_VERSION
42822     auto
42823 #  else
42824     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
42825 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA42826       reflect() const VULKAN_HPP_NOEXCEPT
42827     {
42828       return std::tie( sType, pNext, maximumRequestedAlignment );
42829     }
42830 #endif
42831 
42832 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42833     auto operator<=>( ImageAlignmentControlCreateInfoMESA const & ) const = default;
42834 #else
operator ==VULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA42835     bool operator==( ImageAlignmentControlCreateInfoMESA const & rhs ) const VULKAN_HPP_NOEXCEPT
42836     {
42837 #  if defined( VULKAN_HPP_USE_REFLECT )
42838       return this->reflect() == rhs.reflect();
42839 #  else
42840       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maximumRequestedAlignment == rhs.maximumRequestedAlignment );
42841 #  endif
42842     }
42843 
operator !=VULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA42844     bool operator!=( ImageAlignmentControlCreateInfoMESA const & rhs ) const VULKAN_HPP_NOEXCEPT
42845     {
42846       return !operator==( rhs );
42847     }
42848 #endif
42849 
42850   public:
42851     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::eImageAlignmentControlCreateInfoMESA;
42852     const void *                        pNext                     = {};
42853     uint32_t                            maximumRequestedAlignment = {};
42854   };
42855 
42856   template <>
42857   struct CppType<StructureType, StructureType::eImageAlignmentControlCreateInfoMESA>
42858   {
42859     using Type = ImageAlignmentControlCreateInfoMESA;
42860   };
42861 
42862   struct ImageBlit
42863   {
42864     using NativeType = VkImageBlit;
42865 
42866 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageBlitVULKAN_HPP_NAMESPACE::ImageBlit42867     VULKAN_HPP_CONSTEXPR_14 ImageBlit( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers          srcSubresource_ = {},
42868                                        std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & srcOffsets_     = {},
42869                                        VULKAN_HPP_NAMESPACE::ImageSubresourceLayers          dstSubresource_ = {},
42870                                        std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & dstOffsets_     = {} ) VULKAN_HPP_NOEXCEPT
42871       : srcSubresource{ srcSubresource_ }
42872       , srcOffsets{ srcOffsets_ }
42873       , dstSubresource{ dstSubresource_ }
42874       , dstOffsets{ dstOffsets_ }
42875     {
42876     }
42877 
42878     VULKAN_HPP_CONSTEXPR_14 ImageBlit( ImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42879 
ImageBlitVULKAN_HPP_NAMESPACE::ImageBlit42880     ImageBlit( VkImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT : ImageBlit( *reinterpret_cast<ImageBlit const *>( &rhs ) ) {}
42881 
42882     ImageBlit & operator=( ImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42883 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42884 
operator =VULKAN_HPP_NAMESPACE::ImageBlit42885     ImageBlit & operator=( VkImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT
42886     {
42887       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageBlit const *>( &rhs );
42888       return *this;
42889     }
42890 
42891 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageBlit42892     VULKAN_HPP_CONSTEXPR_14 ImageBlit & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
42893     {
42894       srcSubresource = srcSubresource_;
42895       return *this;
42896     }
42897 
setSrcOffsetsVULKAN_HPP_NAMESPACE::ImageBlit42898     VULKAN_HPP_CONSTEXPR_14 ImageBlit & setSrcOffsets( std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & srcOffsets_ ) VULKAN_HPP_NOEXCEPT
42899     {
42900       srcOffsets = srcOffsets_;
42901       return *this;
42902     }
42903 
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageBlit42904     VULKAN_HPP_CONSTEXPR_14 ImageBlit & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
42905     {
42906       dstSubresource = dstSubresource_;
42907       return *this;
42908     }
42909 
setDstOffsetsVULKAN_HPP_NAMESPACE::ImageBlit42910     VULKAN_HPP_CONSTEXPR_14 ImageBlit & setDstOffsets( std::array<VULKAN_HPP_NAMESPACE::Offset3D, 2> const & dstOffsets_ ) VULKAN_HPP_NOEXCEPT
42911     {
42912       dstOffsets = dstOffsets_;
42913       return *this;
42914     }
42915 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42916 
operator VkImageBlit const&VULKAN_HPP_NAMESPACE::ImageBlit42917     operator VkImageBlit const &() const VULKAN_HPP_NOEXCEPT
42918     {
42919       return *reinterpret_cast<const VkImageBlit *>( this );
42920     }
42921 
operator VkImageBlit&VULKAN_HPP_NAMESPACE::ImageBlit42922     operator VkImageBlit &() VULKAN_HPP_NOEXCEPT
42923     {
42924       return *reinterpret_cast<VkImageBlit *>( this );
42925     }
42926 
42927 #if defined( VULKAN_HPP_USE_REFLECT )
42928 #  if 14 <= VULKAN_HPP_CPP_VERSION
42929     auto
42930 #  else
42931     std::tuple<VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
42932                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> const &,
42933                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
42934                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> const &>
42935 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageBlit42936       reflect() const VULKAN_HPP_NOEXCEPT
42937     {
42938       return std::tie( srcSubresource, srcOffsets, dstSubresource, dstOffsets );
42939     }
42940 #endif
42941 
42942 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
42943     auto operator<=>( ImageBlit const & ) const = default;
42944 #else
operator ==VULKAN_HPP_NAMESPACE::ImageBlit42945     bool operator==( ImageBlit const & rhs ) const VULKAN_HPP_NOEXCEPT
42946     {
42947 #  if defined( VULKAN_HPP_USE_REFLECT )
42948       return this->reflect() == rhs.reflect();
42949 #  else
42950       return ( srcSubresource == rhs.srcSubresource ) && ( srcOffsets == rhs.srcOffsets ) && ( dstSubresource == rhs.dstSubresource ) &&
42951              ( dstOffsets == rhs.dstOffsets );
42952 #  endif
42953     }
42954 
operator !=VULKAN_HPP_NAMESPACE::ImageBlit42955     bool operator!=( ImageBlit const & rhs ) const VULKAN_HPP_NOEXCEPT
42956     {
42957       return !operator==( rhs );
42958     }
42959 #endif
42960 
42961   public:
42962     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers                            srcSubresource = {};
42963     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> srcOffsets     = {};
42964     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers                            dstSubresource = {};
42965     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> dstOffsets     = {};
42966   };
42967 
42968   struct ImageCaptureDescriptorDataInfoEXT
42969   {
42970     using NativeType = VkImageCaptureDescriptorDataInfoEXT;
42971 
42972     static const bool                                  allowDuplicate = false;
42973     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageCaptureDescriptorDataInfoEXT;
42974 
42975 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageCaptureDescriptorDataInfoEXTVULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT42976     VULKAN_HPP_CONSTEXPR ImageCaptureDescriptorDataInfoEXT( VULKAN_HPP_NAMESPACE::Image image_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
42977       : pNext{ pNext_ }
42978       , image{ image_ }
42979     {
42980     }
42981 
42982     VULKAN_HPP_CONSTEXPR ImageCaptureDescriptorDataInfoEXT( ImageCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42983 
ImageCaptureDescriptorDataInfoEXTVULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT42984     ImageCaptureDescriptorDataInfoEXT( VkImageCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42985       : ImageCaptureDescriptorDataInfoEXT( *reinterpret_cast<ImageCaptureDescriptorDataInfoEXT const *>( &rhs ) )
42986     {
42987     }
42988 
42989     ImageCaptureDescriptorDataInfoEXT & operator=( ImageCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42990 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42991 
operator =VULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT42992     ImageCaptureDescriptorDataInfoEXT & operator=( VkImageCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42993     {
42994       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT const *>( &rhs );
42995       return *this;
42996     }
42997 
42998 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT42999     VULKAN_HPP_CONSTEXPR_14 ImageCaptureDescriptorDataInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
43000     {
43001       pNext = pNext_;
43002       return *this;
43003     }
43004 
setImageVULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT43005     VULKAN_HPP_CONSTEXPR_14 ImageCaptureDescriptorDataInfoEXT & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
43006     {
43007       image = image_;
43008       return *this;
43009     }
43010 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43011 
operator VkImageCaptureDescriptorDataInfoEXT const&VULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT43012     operator VkImageCaptureDescriptorDataInfoEXT const &() const VULKAN_HPP_NOEXCEPT
43013     {
43014       return *reinterpret_cast<const VkImageCaptureDescriptorDataInfoEXT *>( this );
43015     }
43016 
operator VkImageCaptureDescriptorDataInfoEXT&VULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT43017     operator VkImageCaptureDescriptorDataInfoEXT &() VULKAN_HPP_NOEXCEPT
43018     {
43019       return *reinterpret_cast<VkImageCaptureDescriptorDataInfoEXT *>( this );
43020     }
43021 
43022 #if defined( VULKAN_HPP_USE_REFLECT )
43023 #  if 14 <= VULKAN_HPP_CPP_VERSION
43024     auto
43025 #  else
43026     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Image const &>
43027 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT43028       reflect() const VULKAN_HPP_NOEXCEPT
43029     {
43030       return std::tie( sType, pNext, image );
43031     }
43032 #endif
43033 
43034 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43035     auto operator<=>( ImageCaptureDescriptorDataInfoEXT const & ) const = default;
43036 #else
operator ==VULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT43037     bool operator==( ImageCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
43038     {
43039 #  if defined( VULKAN_HPP_USE_REFLECT )
43040       return this->reflect() == rhs.reflect();
43041 #  else
43042       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image );
43043 #  endif
43044     }
43045 
operator !=VULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT43046     bool operator!=( ImageCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
43047     {
43048       return !operator==( rhs );
43049     }
43050 #endif
43051 
43052   public:
43053     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageCaptureDescriptorDataInfoEXT;
43054     const void *                        pNext = {};
43055     VULKAN_HPP_NAMESPACE::Image         image = {};
43056   };
43057 
43058   template <>
43059   struct CppType<StructureType, StructureType::eImageCaptureDescriptorDataInfoEXT>
43060   {
43061     using Type = ImageCaptureDescriptorDataInfoEXT;
43062   };
43063 
43064   struct ImageCompressionControlEXT
43065   {
43066     using NativeType = VkImageCompressionControlEXT;
43067 
43068     static const bool                                  allowDuplicate = false;
43069     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageCompressionControlEXT;
43070 
43071 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageCompressionControlEXTVULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43072     VULKAN_HPP_CONSTEXPR ImageCompressionControlEXT( VULKAN_HPP_NAMESPACE::ImageCompressionFlagsEXT            flags_                        = {},
43073                                                      uint32_t                                                  compressionControlPlaneCount_ = {},
43074                                                      VULKAN_HPP_NAMESPACE::ImageCompressionFixedRateFlagsEXT * pFixedRateFlags_              = {},
43075                                                      const void *                                              pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
43076       : pNext{ pNext_ }
43077       , flags{ flags_ }
43078       , compressionControlPlaneCount{ compressionControlPlaneCount_ }
43079       , pFixedRateFlags{ pFixedRateFlags_ }
43080     {
43081     }
43082 
43083     VULKAN_HPP_CONSTEXPR ImageCompressionControlEXT( ImageCompressionControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43084 
ImageCompressionControlEXTVULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43085     ImageCompressionControlEXT( VkImageCompressionControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT
43086       : ImageCompressionControlEXT( *reinterpret_cast<ImageCompressionControlEXT const *>( &rhs ) )
43087     {
43088     }
43089 
43090 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageCompressionControlEXTVULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43091     ImageCompressionControlEXT( VULKAN_HPP_NAMESPACE::ImageCompressionFlagsEXT                                                                 flags_,
43092                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::ImageCompressionFixedRateFlagsEXT> const & fixedRateFlags_,
43093                                 const void * pNext_ = nullptr )
43094       : pNext( pNext_ )
43095       , flags( flags_ )
43096       , compressionControlPlaneCount( static_cast<uint32_t>( fixedRateFlags_.size() ) )
43097       , pFixedRateFlags( fixedRateFlags_.data() )
43098     {
43099     }
43100 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
43101 
43102     ImageCompressionControlEXT & operator=( ImageCompressionControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43103 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43104 
operator =VULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43105     ImageCompressionControlEXT & operator=( VkImageCompressionControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT
43106     {
43107       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageCompressionControlEXT const *>( &rhs );
43108       return *this;
43109     }
43110 
43111 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43112     VULKAN_HPP_CONSTEXPR_14 ImageCompressionControlEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
43113     {
43114       pNext = pNext_;
43115       return *this;
43116     }
43117 
setFlagsVULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43118     VULKAN_HPP_CONSTEXPR_14 ImageCompressionControlEXT & setFlags( VULKAN_HPP_NAMESPACE::ImageCompressionFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
43119     {
43120       flags = flags_;
43121       return *this;
43122     }
43123 
setCompressionControlPlaneCountVULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43124     VULKAN_HPP_CONSTEXPR_14 ImageCompressionControlEXT & setCompressionControlPlaneCount( uint32_t compressionControlPlaneCount_ ) VULKAN_HPP_NOEXCEPT
43125     {
43126       compressionControlPlaneCount = compressionControlPlaneCount_;
43127       return *this;
43128     }
43129 
43130     VULKAN_HPP_CONSTEXPR_14 ImageCompressionControlEXT &
setPFixedRateFlagsVULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43131       setPFixedRateFlags( VULKAN_HPP_NAMESPACE::ImageCompressionFixedRateFlagsEXT * pFixedRateFlags_ ) VULKAN_HPP_NOEXCEPT
43132     {
43133       pFixedRateFlags = pFixedRateFlags_;
43134       return *this;
43135     }
43136 
43137 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setFixedRateFlagsVULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43138     ImageCompressionControlEXT & setFixedRateFlags(
43139       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::ImageCompressionFixedRateFlagsEXT> const & fixedRateFlags_ ) VULKAN_HPP_NOEXCEPT
43140     {
43141       compressionControlPlaneCount = static_cast<uint32_t>( fixedRateFlags_.size() );
43142       pFixedRateFlags              = fixedRateFlags_.data();
43143       return *this;
43144     }
43145 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
43146 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43147 
operator VkImageCompressionControlEXT const&VULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43148     operator VkImageCompressionControlEXT const &() const VULKAN_HPP_NOEXCEPT
43149     {
43150       return *reinterpret_cast<const VkImageCompressionControlEXT *>( this );
43151     }
43152 
operator VkImageCompressionControlEXT&VULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43153     operator VkImageCompressionControlEXT &() VULKAN_HPP_NOEXCEPT
43154     {
43155       return *reinterpret_cast<VkImageCompressionControlEXT *>( this );
43156     }
43157 
43158 #if defined( VULKAN_HPP_USE_REFLECT )
43159 #  if 14 <= VULKAN_HPP_CPP_VERSION
43160     auto
43161 #  else
43162     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
43163                const void * const &,
43164                VULKAN_HPP_NAMESPACE::ImageCompressionFlagsEXT const &,
43165                uint32_t const &,
43166                VULKAN_HPP_NAMESPACE::ImageCompressionFixedRateFlagsEXT * const &>
43167 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43168       reflect() const VULKAN_HPP_NOEXCEPT
43169     {
43170       return std::tie( sType, pNext, flags, compressionControlPlaneCount, pFixedRateFlags );
43171     }
43172 #endif
43173 
43174 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43175     auto operator<=>( ImageCompressionControlEXT const & ) const = default;
43176 #else
operator ==VULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43177     bool operator==( ImageCompressionControlEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
43178     {
43179 #  if defined( VULKAN_HPP_USE_REFLECT )
43180       return this->reflect() == rhs.reflect();
43181 #  else
43182       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) &&
43183              ( compressionControlPlaneCount == rhs.compressionControlPlaneCount ) && ( pFixedRateFlags == rhs.pFixedRateFlags );
43184 #  endif
43185     }
43186 
operator !=VULKAN_HPP_NAMESPACE::ImageCompressionControlEXT43187     bool operator!=( ImageCompressionControlEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
43188     {
43189       return !operator==( rhs );
43190     }
43191 #endif
43192 
43193   public:
43194     VULKAN_HPP_NAMESPACE::StructureType                       sType                        = StructureType::eImageCompressionControlEXT;
43195     const void *                                              pNext                        = {};
43196     VULKAN_HPP_NAMESPACE::ImageCompressionFlagsEXT            flags                        = {};
43197     uint32_t                                                  compressionControlPlaneCount = {};
43198     VULKAN_HPP_NAMESPACE::ImageCompressionFixedRateFlagsEXT * pFixedRateFlags              = {};
43199   };
43200 
43201   template <>
43202   struct CppType<StructureType, StructureType::eImageCompressionControlEXT>
43203   {
43204     using Type = ImageCompressionControlEXT;
43205   };
43206 
43207   struct ImageCompressionPropertiesEXT
43208   {
43209     using NativeType = VkImageCompressionPropertiesEXT;
43210 
43211     static const bool                                  allowDuplicate = false;
43212     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageCompressionPropertiesEXT;
43213 
43214 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageCompressionPropertiesEXTVULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT43215     VULKAN_HPP_CONSTEXPR ImageCompressionPropertiesEXT( VULKAN_HPP_NAMESPACE::ImageCompressionFlagsEXT          imageCompressionFlags_          = {},
43216                                                         VULKAN_HPP_NAMESPACE::ImageCompressionFixedRateFlagsEXT imageCompressionFixedRateFlags_ = {},
43217                                                         void *                                                  pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
43218       : pNext{ pNext_ }
43219       , imageCompressionFlags{ imageCompressionFlags_ }
43220       , imageCompressionFixedRateFlags{ imageCompressionFixedRateFlags_ }
43221     {
43222     }
43223 
43224     VULKAN_HPP_CONSTEXPR ImageCompressionPropertiesEXT( ImageCompressionPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43225 
ImageCompressionPropertiesEXTVULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT43226     ImageCompressionPropertiesEXT( VkImageCompressionPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
43227       : ImageCompressionPropertiesEXT( *reinterpret_cast<ImageCompressionPropertiesEXT const *>( &rhs ) )
43228     {
43229     }
43230 
43231     ImageCompressionPropertiesEXT & operator=( ImageCompressionPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43232 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43233 
operator =VULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT43234     ImageCompressionPropertiesEXT & operator=( VkImageCompressionPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
43235     {
43236       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT const *>( &rhs );
43237       return *this;
43238     }
43239 
operator VkImageCompressionPropertiesEXT const&VULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT43240     operator VkImageCompressionPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
43241     {
43242       return *reinterpret_cast<const VkImageCompressionPropertiesEXT *>( this );
43243     }
43244 
operator VkImageCompressionPropertiesEXT&VULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT43245     operator VkImageCompressionPropertiesEXT &() VULKAN_HPP_NOEXCEPT
43246     {
43247       return *reinterpret_cast<VkImageCompressionPropertiesEXT *>( this );
43248     }
43249 
43250 #if defined( VULKAN_HPP_USE_REFLECT )
43251 #  if 14 <= VULKAN_HPP_CPP_VERSION
43252     auto
43253 #  else
43254     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
43255                void * const &,
43256                VULKAN_HPP_NAMESPACE::ImageCompressionFlagsEXT const &,
43257                VULKAN_HPP_NAMESPACE::ImageCompressionFixedRateFlagsEXT const &>
43258 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT43259       reflect() const VULKAN_HPP_NOEXCEPT
43260     {
43261       return std::tie( sType, pNext, imageCompressionFlags, imageCompressionFixedRateFlags );
43262     }
43263 #endif
43264 
43265 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43266     auto operator<=>( ImageCompressionPropertiesEXT const & ) const = default;
43267 #else
operator ==VULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT43268     bool operator==( ImageCompressionPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
43269     {
43270 #  if defined( VULKAN_HPP_USE_REFLECT )
43271       return this->reflect() == rhs.reflect();
43272 #  else
43273       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageCompressionFlags == rhs.imageCompressionFlags ) &&
43274              ( imageCompressionFixedRateFlags == rhs.imageCompressionFixedRateFlags );
43275 #  endif
43276     }
43277 
operator !=VULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT43278     bool operator!=( ImageCompressionPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
43279     {
43280       return !operator==( rhs );
43281     }
43282 #endif
43283 
43284   public:
43285     VULKAN_HPP_NAMESPACE::StructureType                     sType                          = StructureType::eImageCompressionPropertiesEXT;
43286     void *                                                  pNext                          = {};
43287     VULKAN_HPP_NAMESPACE::ImageCompressionFlagsEXT          imageCompressionFlags          = {};
43288     VULKAN_HPP_NAMESPACE::ImageCompressionFixedRateFlagsEXT imageCompressionFixedRateFlags = {};
43289   };
43290 
43291   template <>
43292   struct CppType<StructureType, StructureType::eImageCompressionPropertiesEXT>
43293   {
43294     using Type = ImageCompressionPropertiesEXT;
43295   };
43296 
43297 #if defined( VK_USE_PLATFORM_FUCHSIA )
43298   struct ImageFormatConstraintsInfoFUCHSIA
43299   {
43300     using NativeType = VkImageFormatConstraintsInfoFUCHSIA;
43301 
43302     static const bool                                  allowDuplicate = false;
43303     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageFormatConstraintsInfoFUCHSIA;
43304 
43305 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageFormatConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43306     VULKAN_HPP_CONSTEXPR ImageFormatConstraintsInfoFUCHSIA( VULKAN_HPP_NAMESPACE::ImageCreateInfo                    imageCreateInfo_        = {},
43307                                                             VULKAN_HPP_NAMESPACE::FormatFeatureFlags                 requiredFormatFeatures_ = {},
43308                                                             VULKAN_HPP_NAMESPACE::ImageFormatConstraintsFlagsFUCHSIA flags_                  = {},
43309                                                             uint64_t                                                 sysmemPixelFormat_      = {},
43310                                                             uint32_t                                                 colorSpaceCount_        = {},
43311                                                             const VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA *    pColorSpaces_           = {},
43312                                                             const void *                                             pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
43313       : pNext{ pNext_ }
43314       , imageCreateInfo{ imageCreateInfo_ }
43315       , requiredFormatFeatures{ requiredFormatFeatures_ }
43316       , flags{ flags_ }
43317       , sysmemPixelFormat{ sysmemPixelFormat_ }
43318       , colorSpaceCount{ colorSpaceCount_ }
43319       , pColorSpaces{ pColorSpaces_ }
43320     {
43321     }
43322 
43323     VULKAN_HPP_CONSTEXPR ImageFormatConstraintsInfoFUCHSIA( ImageFormatConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43324 
ImageFormatConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43325     ImageFormatConstraintsInfoFUCHSIA( VkImageFormatConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
43326       : ImageFormatConstraintsInfoFUCHSIA( *reinterpret_cast<ImageFormatConstraintsInfoFUCHSIA const *>( &rhs ) )
43327     {
43328     }
43329 
43330 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageFormatConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43331     ImageFormatConstraintsInfoFUCHSIA( VULKAN_HPP_NAMESPACE::ImageCreateInfo                    imageCreateInfo_,
43332                                        VULKAN_HPP_NAMESPACE::FormatFeatureFlags                 requiredFormatFeatures_,
43333                                        VULKAN_HPP_NAMESPACE::ImageFormatConstraintsFlagsFUCHSIA flags_,
43334                                        uint64_t                                                 sysmemPixelFormat_,
43335                                        VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA> const & colorSpaces_,
43336                                        const void * pNext_ = nullptr )
43337       : pNext( pNext_ )
43338       , imageCreateInfo( imageCreateInfo_ )
43339       , requiredFormatFeatures( requiredFormatFeatures_ )
43340       , flags( flags_ )
43341       , sysmemPixelFormat( sysmemPixelFormat_ )
43342       , colorSpaceCount( static_cast<uint32_t>( colorSpaces_.size() ) )
43343       , pColorSpaces( colorSpaces_.data() )
43344     {
43345     }
43346 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
43347 
43348     ImageFormatConstraintsInfoFUCHSIA & operator=( ImageFormatConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43349 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43350 
operator =VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43351     ImageFormatConstraintsInfoFUCHSIA & operator=( VkImageFormatConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
43352     {
43353       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA const *>( &rhs );
43354       return *this;
43355     }
43356 
43357 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43358     VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
43359     {
43360       pNext = pNext_;
43361       return *this;
43362     }
43363 
43364     VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA &
setImageCreateInfoVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43365       setImageCreateInfo( VULKAN_HPP_NAMESPACE::ImageCreateInfo const & imageCreateInfo_ ) VULKAN_HPP_NOEXCEPT
43366     {
43367       imageCreateInfo = imageCreateInfo_;
43368       return *this;
43369     }
43370 
43371     VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA &
setRequiredFormatFeaturesVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43372       setRequiredFormatFeatures( VULKAN_HPP_NAMESPACE::FormatFeatureFlags requiredFormatFeatures_ ) VULKAN_HPP_NOEXCEPT
43373     {
43374       requiredFormatFeatures = requiredFormatFeatures_;
43375       return *this;
43376     }
43377 
setFlagsVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43378     VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & setFlags( VULKAN_HPP_NAMESPACE::ImageFormatConstraintsFlagsFUCHSIA flags_ ) VULKAN_HPP_NOEXCEPT
43379     {
43380       flags = flags_;
43381       return *this;
43382     }
43383 
setSysmemPixelFormatVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43384     VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & setSysmemPixelFormat( uint64_t sysmemPixelFormat_ ) VULKAN_HPP_NOEXCEPT
43385     {
43386       sysmemPixelFormat = sysmemPixelFormat_;
43387       return *this;
43388     }
43389 
setColorSpaceCountVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43390     VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & setColorSpaceCount( uint32_t colorSpaceCount_ ) VULKAN_HPP_NOEXCEPT
43391     {
43392       colorSpaceCount = colorSpaceCount_;
43393       return *this;
43394     }
43395 
43396     VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA &
setPColorSpacesVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43397       setPColorSpaces( const VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA * pColorSpaces_ ) VULKAN_HPP_NOEXCEPT
43398     {
43399       pColorSpaces = pColorSpaces_;
43400       return *this;
43401     }
43402 
43403 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorSpacesVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43404     ImageFormatConstraintsInfoFUCHSIA & setColorSpaces(
43405       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA> const & colorSpaces_ ) VULKAN_HPP_NOEXCEPT
43406     {
43407       colorSpaceCount = static_cast<uint32_t>( colorSpaces_.size() );
43408       pColorSpaces    = colorSpaces_.data();
43409       return *this;
43410     }
43411 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
43412 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43413 
operator VkImageFormatConstraintsInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43414     operator VkImageFormatConstraintsInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
43415     {
43416       return *reinterpret_cast<const VkImageFormatConstraintsInfoFUCHSIA *>( this );
43417     }
43418 
operator VkImageFormatConstraintsInfoFUCHSIA&VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43419     operator VkImageFormatConstraintsInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
43420     {
43421       return *reinterpret_cast<VkImageFormatConstraintsInfoFUCHSIA *>( this );
43422     }
43423 
43424 #  if defined( VULKAN_HPP_USE_REFLECT )
43425 #    if 14 <= VULKAN_HPP_CPP_VERSION
43426     auto
43427 #    else
43428     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
43429                const void * const &,
43430                VULKAN_HPP_NAMESPACE::ImageCreateInfo const &,
43431                VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &,
43432                VULKAN_HPP_NAMESPACE::ImageFormatConstraintsFlagsFUCHSIA const &,
43433                uint64_t const &,
43434                uint32_t const &,
43435                const VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA * const &>
43436 #    endif
reflectVULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43437       reflect() const VULKAN_HPP_NOEXCEPT
43438     {
43439       return std::tie( sType, pNext, imageCreateInfo, requiredFormatFeatures, flags, sysmemPixelFormat, colorSpaceCount, pColorSpaces );
43440     }
43441 #  endif
43442 
43443 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43444     auto operator<=>( ImageFormatConstraintsInfoFUCHSIA const & ) const = default;
43445 #  else
operator ==VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43446     bool operator==( ImageFormatConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
43447     {
43448 #    if defined( VULKAN_HPP_USE_REFLECT )
43449       return this->reflect() == rhs.reflect();
43450 #    else
43451       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageCreateInfo == rhs.imageCreateInfo ) &&
43452              ( requiredFormatFeatures == rhs.requiredFormatFeatures ) && ( flags == rhs.flags ) && ( sysmemPixelFormat == rhs.sysmemPixelFormat ) &&
43453              ( colorSpaceCount == rhs.colorSpaceCount ) && ( pColorSpaces == rhs.pColorSpaces );
43454 #    endif
43455     }
43456 
operator !=VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA43457     bool operator!=( ImageFormatConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
43458     {
43459       return !operator==( rhs );
43460     }
43461 #  endif
43462 
43463   public:
43464     VULKAN_HPP_NAMESPACE::StructureType                      sType                  = StructureType::eImageFormatConstraintsInfoFUCHSIA;
43465     const void *                                             pNext                  = {};
43466     VULKAN_HPP_NAMESPACE::ImageCreateInfo                    imageCreateInfo        = {};
43467     VULKAN_HPP_NAMESPACE::FormatFeatureFlags                 requiredFormatFeatures = {};
43468     VULKAN_HPP_NAMESPACE::ImageFormatConstraintsFlagsFUCHSIA flags                  = {};
43469     uint64_t                                                 sysmemPixelFormat      = {};
43470     uint32_t                                                 colorSpaceCount        = {};
43471     const VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA *    pColorSpaces           = {};
43472   };
43473 
43474   template <>
43475   struct CppType<StructureType, StructureType::eImageFormatConstraintsInfoFUCHSIA>
43476   {
43477     using Type = ImageFormatConstraintsInfoFUCHSIA;
43478   };
43479 #endif /*VK_USE_PLATFORM_FUCHSIA*/
43480 
43481 #if defined( VK_USE_PLATFORM_FUCHSIA )
43482   struct ImageConstraintsInfoFUCHSIA
43483   {
43484     using NativeType = VkImageConstraintsInfoFUCHSIA;
43485 
43486     static const bool                                  allowDuplicate = false;
43487     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageConstraintsInfoFUCHSIA;
43488 
43489 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43490     VULKAN_HPP_CONSTEXPR ImageConstraintsInfoFUCHSIA( uint32_t                                                        formatConstraintsCount_      = {},
43491                                                       const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA * pFormatConstraints_          = {},
43492                                                       VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA    bufferCollectionConstraints_ = {},
43493                                                       VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFlagsFUCHSIA          flags_                       = {},
43494                                                       const void *                                                    pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
43495       : pNext{ pNext_ }
43496       , formatConstraintsCount{ formatConstraintsCount_ }
43497       , pFormatConstraints{ pFormatConstraints_ }
43498       , bufferCollectionConstraints{ bufferCollectionConstraints_ }
43499       , flags{ flags_ }
43500     {
43501     }
43502 
43503     VULKAN_HPP_CONSTEXPR ImageConstraintsInfoFUCHSIA( ImageConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43504 
ImageConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43505     ImageConstraintsInfoFUCHSIA( VkImageConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
43506       : ImageConstraintsInfoFUCHSIA( *reinterpret_cast<ImageConstraintsInfoFUCHSIA const *>( &rhs ) )
43507     {
43508     }
43509 
43510 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageConstraintsInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43511     ImageConstraintsInfoFUCHSIA(
43512       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA> const & formatConstraints_,
43513       VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA                                                         bufferCollectionConstraints_ = {},
43514       VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFlagsFUCHSIA                                                               flags_                       = {},
43515       const void *                                                                                                         pNext_ = nullptr )
43516       : pNext( pNext_ )
43517       , formatConstraintsCount( static_cast<uint32_t>( formatConstraints_.size() ) )
43518       , pFormatConstraints( formatConstraints_.data() )
43519       , bufferCollectionConstraints( bufferCollectionConstraints_ )
43520       , flags( flags_ )
43521     {
43522     }
43523 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
43524 
43525     ImageConstraintsInfoFUCHSIA & operator=( ImageConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43526 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43527 
operator =VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43528     ImageConstraintsInfoFUCHSIA & operator=( VkImageConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
43529     {
43530       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA const *>( &rhs );
43531       return *this;
43532     }
43533 
43534 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43535     VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
43536     {
43537       pNext = pNext_;
43538       return *this;
43539     }
43540 
setFormatConstraintsCountVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43541     VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA & setFormatConstraintsCount( uint32_t formatConstraintsCount_ ) VULKAN_HPP_NOEXCEPT
43542     {
43543       formatConstraintsCount = formatConstraintsCount_;
43544       return *this;
43545     }
43546 
43547     VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA &
setPFormatConstraintsVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43548       setPFormatConstraints( const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA * pFormatConstraints_ ) VULKAN_HPP_NOEXCEPT
43549     {
43550       pFormatConstraints = pFormatConstraints_;
43551       return *this;
43552     }
43553 
43554 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setFormatConstraintsVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43555     ImageConstraintsInfoFUCHSIA & setFormatConstraints(
43556       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA> const & formatConstraints_ )
43557       VULKAN_HPP_NOEXCEPT
43558     {
43559       formatConstraintsCount = static_cast<uint32_t>( formatConstraints_.size() );
43560       pFormatConstraints     = formatConstraints_.data();
43561       return *this;
43562     }
43563 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
43564 
43565     VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA &
setBufferCollectionConstraintsVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43566       setBufferCollectionConstraints( VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA const & bufferCollectionConstraints_ ) VULKAN_HPP_NOEXCEPT
43567     {
43568       bufferCollectionConstraints = bufferCollectionConstraints_;
43569       return *this;
43570     }
43571 
setFlagsVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43572     VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA & setFlags( VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFlagsFUCHSIA flags_ ) VULKAN_HPP_NOEXCEPT
43573     {
43574       flags = flags_;
43575       return *this;
43576     }
43577 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43578 
operator VkImageConstraintsInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43579     operator VkImageConstraintsInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
43580     {
43581       return *reinterpret_cast<const VkImageConstraintsInfoFUCHSIA *>( this );
43582     }
43583 
operator VkImageConstraintsInfoFUCHSIA&VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43584     operator VkImageConstraintsInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
43585     {
43586       return *reinterpret_cast<VkImageConstraintsInfoFUCHSIA *>( this );
43587     }
43588 
43589 #  if defined( VULKAN_HPP_USE_REFLECT )
43590 #    if 14 <= VULKAN_HPP_CPP_VERSION
43591     auto
43592 #    else
43593     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
43594                const void * const &,
43595                uint32_t const &,
43596                const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA * const &,
43597                VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA const &,
43598                VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFlagsFUCHSIA const &>
43599 #    endif
reflectVULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43600       reflect() const VULKAN_HPP_NOEXCEPT
43601     {
43602       return std::tie( sType, pNext, formatConstraintsCount, pFormatConstraints, bufferCollectionConstraints, flags );
43603     }
43604 #  endif
43605 
43606 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43607     auto operator<=>( ImageConstraintsInfoFUCHSIA const & ) const = default;
43608 #  else
operator ==VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43609     bool operator==( ImageConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
43610     {
43611 #    if defined( VULKAN_HPP_USE_REFLECT )
43612       return this->reflect() == rhs.reflect();
43613 #    else
43614       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( formatConstraintsCount == rhs.formatConstraintsCount ) &&
43615              ( pFormatConstraints == rhs.pFormatConstraints ) && ( bufferCollectionConstraints == rhs.bufferCollectionConstraints ) && ( flags == rhs.flags );
43616 #    endif
43617     }
43618 
operator !=VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA43619     bool operator!=( ImageConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
43620     {
43621       return !operator==( rhs );
43622     }
43623 #  endif
43624 
43625   public:
43626     VULKAN_HPP_NAMESPACE::StructureType                             sType                       = StructureType::eImageConstraintsInfoFUCHSIA;
43627     const void *                                                    pNext                       = {};
43628     uint32_t                                                        formatConstraintsCount      = {};
43629     const VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA * pFormatConstraints          = {};
43630     VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA    bufferCollectionConstraints = {};
43631     VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFlagsFUCHSIA          flags                       = {};
43632   };
43633 
43634   template <>
43635   struct CppType<StructureType, StructureType::eImageConstraintsInfoFUCHSIA>
43636   {
43637     using Type = ImageConstraintsInfoFUCHSIA;
43638   };
43639 #endif /*VK_USE_PLATFORM_FUCHSIA*/
43640 
43641   struct ImageCopy
43642   {
43643     using NativeType = VkImageCopy;
43644 
43645 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageCopyVULKAN_HPP_NAMESPACE::ImageCopy43646     VULKAN_HPP_CONSTEXPR ImageCopy( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {},
43647                                     VULKAN_HPP_NAMESPACE::Offset3D               srcOffset_      = {},
43648                                     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {},
43649                                     VULKAN_HPP_NAMESPACE::Offset3D               dstOffset_      = {},
43650                                     VULKAN_HPP_NAMESPACE::Extent3D               extent_         = {} ) VULKAN_HPP_NOEXCEPT
43651       : srcSubresource{ srcSubresource_ }
43652       , srcOffset{ srcOffset_ }
43653       , dstSubresource{ dstSubresource_ }
43654       , dstOffset{ dstOffset_ }
43655       , extent{ extent_ }
43656     {
43657     }
43658 
43659     VULKAN_HPP_CONSTEXPR ImageCopy( ImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43660 
ImageCopyVULKAN_HPP_NAMESPACE::ImageCopy43661     ImageCopy( VkImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT : ImageCopy( *reinterpret_cast<ImageCopy const *>( &rhs ) ) {}
43662 
43663     ImageCopy & operator=( ImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43664 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43665 
operator =VULKAN_HPP_NAMESPACE::ImageCopy43666     ImageCopy & operator=( VkImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT
43667     {
43668       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageCopy const *>( &rhs );
43669       return *this;
43670     }
43671 
43672 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageCopy43673     VULKAN_HPP_CONSTEXPR_14 ImageCopy & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
43674     {
43675       srcSubresource = srcSubresource_;
43676       return *this;
43677     }
43678 
setSrcOffsetVULKAN_HPP_NAMESPACE::ImageCopy43679     VULKAN_HPP_CONSTEXPR_14 ImageCopy & setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT
43680     {
43681       srcOffset = srcOffset_;
43682       return *this;
43683     }
43684 
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageCopy43685     VULKAN_HPP_CONSTEXPR_14 ImageCopy & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
43686     {
43687       dstSubresource = dstSubresource_;
43688       return *this;
43689     }
43690 
setDstOffsetVULKAN_HPP_NAMESPACE::ImageCopy43691     VULKAN_HPP_CONSTEXPR_14 ImageCopy & setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT
43692     {
43693       dstOffset = dstOffset_;
43694       return *this;
43695     }
43696 
setExtentVULKAN_HPP_NAMESPACE::ImageCopy43697     VULKAN_HPP_CONSTEXPR_14 ImageCopy & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
43698     {
43699       extent = extent_;
43700       return *this;
43701     }
43702 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43703 
operator VkImageCopy const&VULKAN_HPP_NAMESPACE::ImageCopy43704     operator VkImageCopy const &() const VULKAN_HPP_NOEXCEPT
43705     {
43706       return *reinterpret_cast<const VkImageCopy *>( this );
43707     }
43708 
operator VkImageCopy&VULKAN_HPP_NAMESPACE::ImageCopy43709     operator VkImageCopy &() VULKAN_HPP_NOEXCEPT
43710     {
43711       return *reinterpret_cast<VkImageCopy *>( this );
43712     }
43713 
43714 #if defined( VULKAN_HPP_USE_REFLECT )
43715 #  if 14 <= VULKAN_HPP_CPP_VERSION
43716     auto
43717 #  else
43718     std::tuple<VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
43719                VULKAN_HPP_NAMESPACE::Offset3D const &,
43720                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
43721                VULKAN_HPP_NAMESPACE::Offset3D const &,
43722                VULKAN_HPP_NAMESPACE::Extent3D const &>
43723 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageCopy43724       reflect() const VULKAN_HPP_NOEXCEPT
43725     {
43726       return std::tie( srcSubresource, srcOffset, dstSubresource, dstOffset, extent );
43727     }
43728 #endif
43729 
43730 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43731     auto operator<=>( ImageCopy const & ) const = default;
43732 #else
operator ==VULKAN_HPP_NAMESPACE::ImageCopy43733     bool operator==( ImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
43734     {
43735 #  if defined( VULKAN_HPP_USE_REFLECT )
43736       return this->reflect() == rhs.reflect();
43737 #  else
43738       return ( srcSubresource == rhs.srcSubresource ) && ( srcOffset == rhs.srcOffset ) && ( dstSubresource == rhs.dstSubresource ) &&
43739              ( dstOffset == rhs.dstOffset ) && ( extent == rhs.extent );
43740 #  endif
43741     }
43742 
operator !=VULKAN_HPP_NAMESPACE::ImageCopy43743     bool operator!=( ImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
43744     {
43745       return !operator==( rhs );
43746     }
43747 #endif
43748 
43749   public:
43750     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {};
43751     VULKAN_HPP_NAMESPACE::Offset3D               srcOffset      = {};
43752     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {};
43753     VULKAN_HPP_NAMESPACE::Offset3D               dstOffset      = {};
43754     VULKAN_HPP_NAMESPACE::Extent3D               extent         = {};
43755   };
43756 
43757   struct SubresourceLayout
43758   {
43759     using NativeType = VkSubresourceLayout;
43760 
43761 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubresourceLayoutVULKAN_HPP_NAMESPACE::SubresourceLayout43762     VULKAN_HPP_CONSTEXPR SubresourceLayout( VULKAN_HPP_NAMESPACE::DeviceSize offset_     = {},
43763                                             VULKAN_HPP_NAMESPACE::DeviceSize size_       = {},
43764                                             VULKAN_HPP_NAMESPACE::DeviceSize rowPitch_   = {},
43765                                             VULKAN_HPP_NAMESPACE::DeviceSize arrayPitch_ = {},
43766                                             VULKAN_HPP_NAMESPACE::DeviceSize depthPitch_ = {} ) VULKAN_HPP_NOEXCEPT
43767       : offset{ offset_ }
43768       , size{ size_ }
43769       , rowPitch{ rowPitch_ }
43770       , arrayPitch{ arrayPitch_ }
43771       , depthPitch{ depthPitch_ }
43772     {
43773     }
43774 
43775     VULKAN_HPP_CONSTEXPR SubresourceLayout( SubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43776 
SubresourceLayoutVULKAN_HPP_NAMESPACE::SubresourceLayout43777     SubresourceLayout( VkSubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT : SubresourceLayout( *reinterpret_cast<SubresourceLayout const *>( &rhs ) ) {}
43778 
43779     SubresourceLayout & operator=( SubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43780 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43781 
operator =VULKAN_HPP_NAMESPACE::SubresourceLayout43782     SubresourceLayout & operator=( VkSubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT
43783     {
43784       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubresourceLayout const *>( &rhs );
43785       return *this;
43786     }
43787 
43788 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setOffsetVULKAN_HPP_NAMESPACE::SubresourceLayout43789     VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
43790     {
43791       offset = offset_;
43792       return *this;
43793     }
43794 
setSizeVULKAN_HPP_NAMESPACE::SubresourceLayout43795     VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
43796     {
43797       size = size_;
43798       return *this;
43799     }
43800 
setRowPitchVULKAN_HPP_NAMESPACE::SubresourceLayout43801     VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & setRowPitch( VULKAN_HPP_NAMESPACE::DeviceSize rowPitch_ ) VULKAN_HPP_NOEXCEPT
43802     {
43803       rowPitch = rowPitch_;
43804       return *this;
43805     }
43806 
setArrayPitchVULKAN_HPP_NAMESPACE::SubresourceLayout43807     VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & setArrayPitch( VULKAN_HPP_NAMESPACE::DeviceSize arrayPitch_ ) VULKAN_HPP_NOEXCEPT
43808     {
43809       arrayPitch = arrayPitch_;
43810       return *this;
43811     }
43812 
setDepthPitchVULKAN_HPP_NAMESPACE::SubresourceLayout43813     VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & setDepthPitch( VULKAN_HPP_NAMESPACE::DeviceSize depthPitch_ ) VULKAN_HPP_NOEXCEPT
43814     {
43815       depthPitch = depthPitch_;
43816       return *this;
43817     }
43818 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43819 
operator VkSubresourceLayout const&VULKAN_HPP_NAMESPACE::SubresourceLayout43820     operator VkSubresourceLayout const &() const VULKAN_HPP_NOEXCEPT
43821     {
43822       return *reinterpret_cast<const VkSubresourceLayout *>( this );
43823     }
43824 
operator VkSubresourceLayout&VULKAN_HPP_NAMESPACE::SubresourceLayout43825     operator VkSubresourceLayout &() VULKAN_HPP_NOEXCEPT
43826     {
43827       return *reinterpret_cast<VkSubresourceLayout *>( this );
43828     }
43829 
43830 #if defined( VULKAN_HPP_USE_REFLECT )
43831 #  if 14 <= VULKAN_HPP_CPP_VERSION
43832     auto
43833 #  else
43834     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &,
43835                VULKAN_HPP_NAMESPACE::DeviceSize const &,
43836                VULKAN_HPP_NAMESPACE::DeviceSize const &,
43837                VULKAN_HPP_NAMESPACE::DeviceSize const &,
43838                VULKAN_HPP_NAMESPACE::DeviceSize const &>
43839 #  endif
reflectVULKAN_HPP_NAMESPACE::SubresourceLayout43840       reflect() const VULKAN_HPP_NOEXCEPT
43841     {
43842       return std::tie( offset, size, rowPitch, arrayPitch, depthPitch );
43843     }
43844 #endif
43845 
43846 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43847     auto operator<=>( SubresourceLayout const & ) const = default;
43848 #else
operator ==VULKAN_HPP_NAMESPACE::SubresourceLayout43849     bool operator==( SubresourceLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
43850     {
43851 #  if defined( VULKAN_HPP_USE_REFLECT )
43852       return this->reflect() == rhs.reflect();
43853 #  else
43854       return ( offset == rhs.offset ) && ( size == rhs.size ) && ( rowPitch == rhs.rowPitch ) && ( arrayPitch == rhs.arrayPitch ) &&
43855              ( depthPitch == rhs.depthPitch );
43856 #  endif
43857     }
43858 
operator !=VULKAN_HPP_NAMESPACE::SubresourceLayout43859     bool operator!=( SubresourceLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
43860     {
43861       return !operator==( rhs );
43862     }
43863 #endif
43864 
43865   public:
43866     VULKAN_HPP_NAMESPACE::DeviceSize offset     = {};
43867     VULKAN_HPP_NAMESPACE::DeviceSize size       = {};
43868     VULKAN_HPP_NAMESPACE::DeviceSize rowPitch   = {};
43869     VULKAN_HPP_NAMESPACE::DeviceSize arrayPitch = {};
43870     VULKAN_HPP_NAMESPACE::DeviceSize depthPitch = {};
43871   };
43872 
43873   struct ImageDrmFormatModifierExplicitCreateInfoEXT
43874   {
43875     using NativeType = VkImageDrmFormatModifierExplicitCreateInfoEXT;
43876 
43877     static const bool                                  allowDuplicate = false;
43878     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT;
43879 
43880 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageDrmFormatModifierExplicitCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT43881     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierExplicitCreateInfoEXT( uint64_t                                        drmFormatModifier_           = {},
43882                                                                       uint32_t                                        drmFormatModifierPlaneCount_ = {},
43883                                                                       const VULKAN_HPP_NAMESPACE::SubresourceLayout * pPlaneLayouts_               = {},
43884                                                                       const void *                                    pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
43885       : pNext{ pNext_ }
43886       , drmFormatModifier{ drmFormatModifier_ }
43887       , drmFormatModifierPlaneCount{ drmFormatModifierPlaneCount_ }
43888       , pPlaneLayouts{ pPlaneLayouts_ }
43889     {
43890     }
43891 
43892     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierExplicitCreateInfoEXT( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43893 
ImageDrmFormatModifierExplicitCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT43894     ImageDrmFormatModifierExplicitCreateInfoEXT( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
43895       : ImageDrmFormatModifierExplicitCreateInfoEXT( *reinterpret_cast<ImageDrmFormatModifierExplicitCreateInfoEXT const *>( &rhs ) )
43896     {
43897     }
43898 
43899 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageDrmFormatModifierExplicitCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT43900     ImageDrmFormatModifierExplicitCreateInfoEXT(
43901       uint64_t                                                                                             drmFormatModifier_,
43902       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubresourceLayout> const & planeLayouts_,
43903       const void *                                                                                         pNext_ = nullptr )
43904       : pNext( pNext_ )
43905       , drmFormatModifier( drmFormatModifier_ )
43906       , drmFormatModifierPlaneCount( static_cast<uint32_t>( planeLayouts_.size() ) )
43907       , pPlaneLayouts( planeLayouts_.data() )
43908     {
43909     }
43910 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
43911 
43912     ImageDrmFormatModifierExplicitCreateInfoEXT & operator=( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43913 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43914 
operator =VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT43915     ImageDrmFormatModifierExplicitCreateInfoEXT & operator=( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
43916     {
43917       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT const *>( &rhs );
43918       return *this;
43919     }
43920 
43921 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT43922     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
43923     {
43924       pNext = pNext_;
43925       return *this;
43926     }
43927 
setDrmFormatModifierVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT43928     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT & setDrmFormatModifier( uint64_t drmFormatModifier_ ) VULKAN_HPP_NOEXCEPT
43929     {
43930       drmFormatModifier = drmFormatModifier_;
43931       return *this;
43932     }
43933 
43934     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT &
setDrmFormatModifierPlaneCountVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT43935       setDrmFormatModifierPlaneCount( uint32_t drmFormatModifierPlaneCount_ ) VULKAN_HPP_NOEXCEPT
43936     {
43937       drmFormatModifierPlaneCount = drmFormatModifierPlaneCount_;
43938       return *this;
43939     }
43940 
43941     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT &
setPPlaneLayoutsVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT43942       setPPlaneLayouts( const VULKAN_HPP_NAMESPACE::SubresourceLayout * pPlaneLayouts_ ) VULKAN_HPP_NOEXCEPT
43943     {
43944       pPlaneLayouts = pPlaneLayouts_;
43945       return *this;
43946     }
43947 
43948 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
43949     ImageDrmFormatModifierExplicitCreateInfoEXT &
setPlaneLayoutsVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT43950       setPlaneLayouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubresourceLayout> const & planeLayouts_ ) VULKAN_HPP_NOEXCEPT
43951     {
43952       drmFormatModifierPlaneCount = static_cast<uint32_t>( planeLayouts_.size() );
43953       pPlaneLayouts               = planeLayouts_.data();
43954       return *this;
43955     }
43956 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
43957 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43958 
operator VkImageDrmFormatModifierExplicitCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT43959     operator VkImageDrmFormatModifierExplicitCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
43960     {
43961       return *reinterpret_cast<const VkImageDrmFormatModifierExplicitCreateInfoEXT *>( this );
43962     }
43963 
operator VkImageDrmFormatModifierExplicitCreateInfoEXT&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT43964     operator VkImageDrmFormatModifierExplicitCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
43965     {
43966       return *reinterpret_cast<VkImageDrmFormatModifierExplicitCreateInfoEXT *>( this );
43967     }
43968 
43969 #if defined( VULKAN_HPP_USE_REFLECT )
43970 #  if 14 <= VULKAN_HPP_CPP_VERSION
43971     auto
43972 #  else
43973     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
43974                const void * const &,
43975                uint64_t const &,
43976                uint32_t const &,
43977                const VULKAN_HPP_NAMESPACE::SubresourceLayout * const &>
43978 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT43979       reflect() const VULKAN_HPP_NOEXCEPT
43980     {
43981       return std::tie( sType, pNext, drmFormatModifier, drmFormatModifierPlaneCount, pPlaneLayouts );
43982     }
43983 #endif
43984 
43985 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
43986     auto operator<=>( ImageDrmFormatModifierExplicitCreateInfoEXT const & ) const = default;
43987 #else
operator ==VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT43988     bool operator==( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
43989     {
43990 #  if defined( VULKAN_HPP_USE_REFLECT )
43991       return this->reflect() == rhs.reflect();
43992 #  else
43993       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( drmFormatModifier == rhs.drmFormatModifier ) &&
43994              ( drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount ) && ( pPlaneLayouts == rhs.pPlaneLayouts );
43995 #  endif
43996     }
43997 
operator !=VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT43998     bool operator!=( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
43999     {
44000       return !operator==( rhs );
44001     }
44002 #endif
44003 
44004   public:
44005     VULKAN_HPP_NAMESPACE::StructureType             sType                       = StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT;
44006     const void *                                    pNext                       = {};
44007     uint64_t                                        drmFormatModifier           = {};
44008     uint32_t                                        drmFormatModifierPlaneCount = {};
44009     const VULKAN_HPP_NAMESPACE::SubresourceLayout * pPlaneLayouts               = {};
44010   };
44011 
44012   template <>
44013   struct CppType<StructureType, StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT>
44014   {
44015     using Type = ImageDrmFormatModifierExplicitCreateInfoEXT;
44016   };
44017 
44018   struct ImageDrmFormatModifierListCreateInfoEXT
44019   {
44020     using NativeType = VkImageDrmFormatModifierListCreateInfoEXT;
44021 
44022     static const bool                                  allowDuplicate = false;
44023     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageDrmFormatModifierListCreateInfoEXT;
44024 
44025 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageDrmFormatModifierListCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44026     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierListCreateInfoEXT( uint32_t         drmFormatModifierCount_ = {},
44027                                                                   const uint64_t * pDrmFormatModifiers_    = {},
44028                                                                   const void *     pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
44029       : pNext{ pNext_ }
44030       , drmFormatModifierCount{ drmFormatModifierCount_ }
44031       , pDrmFormatModifiers{ pDrmFormatModifiers_ }
44032     {
44033     }
44034 
44035     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierListCreateInfoEXT( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44036 
ImageDrmFormatModifierListCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44037     ImageDrmFormatModifierListCreateInfoEXT( VkImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
44038       : ImageDrmFormatModifierListCreateInfoEXT( *reinterpret_cast<ImageDrmFormatModifierListCreateInfoEXT const *>( &rhs ) )
44039     {
44040     }
44041 
44042 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageDrmFormatModifierListCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44043     ImageDrmFormatModifierListCreateInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & drmFormatModifiers_,
44044                                              const void *                                                          pNext_ = nullptr )
44045       : pNext( pNext_ ), drmFormatModifierCount( static_cast<uint32_t>( drmFormatModifiers_.size() ) ), pDrmFormatModifiers( drmFormatModifiers_.data() )
44046     {
44047     }
44048 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44049 
44050     ImageDrmFormatModifierListCreateInfoEXT & operator=( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44051 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44052 
operator =VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44053     ImageDrmFormatModifierListCreateInfoEXT & operator=( VkImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
44054     {
44055       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT const *>( &rhs );
44056       return *this;
44057     }
44058 
44059 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44060     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
44061     {
44062       pNext = pNext_;
44063       return *this;
44064     }
44065 
setDrmFormatModifierCountVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44066     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT & setDrmFormatModifierCount( uint32_t drmFormatModifierCount_ ) VULKAN_HPP_NOEXCEPT
44067     {
44068       drmFormatModifierCount = drmFormatModifierCount_;
44069       return *this;
44070     }
44071 
setPDrmFormatModifiersVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44072     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT & setPDrmFormatModifiers( const uint64_t * pDrmFormatModifiers_ ) VULKAN_HPP_NOEXCEPT
44073     {
44074       pDrmFormatModifiers = pDrmFormatModifiers_;
44075       return *this;
44076     }
44077 
44078 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
44079     ImageDrmFormatModifierListCreateInfoEXT &
setDrmFormatModifiersVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44080       setDrmFormatModifiers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & drmFormatModifiers_ ) VULKAN_HPP_NOEXCEPT
44081     {
44082       drmFormatModifierCount = static_cast<uint32_t>( drmFormatModifiers_.size() );
44083       pDrmFormatModifiers    = drmFormatModifiers_.data();
44084       return *this;
44085     }
44086 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44087 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44088 
operator VkImageDrmFormatModifierListCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44089     operator VkImageDrmFormatModifierListCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
44090     {
44091       return *reinterpret_cast<const VkImageDrmFormatModifierListCreateInfoEXT *>( this );
44092     }
44093 
operator VkImageDrmFormatModifierListCreateInfoEXT&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44094     operator VkImageDrmFormatModifierListCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
44095     {
44096       return *reinterpret_cast<VkImageDrmFormatModifierListCreateInfoEXT *>( this );
44097     }
44098 
44099 #if defined( VULKAN_HPP_USE_REFLECT )
44100 #  if 14 <= VULKAN_HPP_CPP_VERSION
44101     auto
44102 #  else
44103     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const uint64_t * const &>
44104 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44105       reflect() const VULKAN_HPP_NOEXCEPT
44106     {
44107       return std::tie( sType, pNext, drmFormatModifierCount, pDrmFormatModifiers );
44108     }
44109 #endif
44110 
44111 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44112     auto operator<=>( ImageDrmFormatModifierListCreateInfoEXT const & ) const = default;
44113 #else
operator ==VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44114     bool operator==( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
44115     {
44116 #  if defined( VULKAN_HPP_USE_REFLECT )
44117       return this->reflect() == rhs.reflect();
44118 #  else
44119       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( drmFormatModifierCount == rhs.drmFormatModifierCount ) &&
44120              ( pDrmFormatModifiers == rhs.pDrmFormatModifiers );
44121 #  endif
44122     }
44123 
operator !=VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT44124     bool operator!=( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
44125     {
44126       return !operator==( rhs );
44127     }
44128 #endif
44129 
44130   public:
44131     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::eImageDrmFormatModifierListCreateInfoEXT;
44132     const void *                        pNext                  = {};
44133     uint32_t                            drmFormatModifierCount = {};
44134     const uint64_t *                    pDrmFormatModifiers    = {};
44135   };
44136 
44137   template <>
44138   struct CppType<StructureType, StructureType::eImageDrmFormatModifierListCreateInfoEXT>
44139   {
44140     using Type = ImageDrmFormatModifierListCreateInfoEXT;
44141   };
44142 
44143   struct ImageDrmFormatModifierPropertiesEXT
44144   {
44145     using NativeType = VkImageDrmFormatModifierPropertiesEXT;
44146 
44147     static const bool                                  allowDuplicate = false;
44148     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageDrmFormatModifierPropertiesEXT;
44149 
44150 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageDrmFormatModifierPropertiesEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT44151     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierPropertiesEXT( uint64_t drmFormatModifier_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
44152       : pNext{ pNext_ }
44153       , drmFormatModifier{ drmFormatModifier_ }
44154     {
44155     }
44156 
44157     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierPropertiesEXT( ImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44158 
ImageDrmFormatModifierPropertiesEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT44159     ImageDrmFormatModifierPropertiesEXT( VkImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
44160       : ImageDrmFormatModifierPropertiesEXT( *reinterpret_cast<ImageDrmFormatModifierPropertiesEXT const *>( &rhs ) )
44161     {
44162     }
44163 
44164     ImageDrmFormatModifierPropertiesEXT & operator=( ImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44165 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44166 
operator =VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT44167     ImageDrmFormatModifierPropertiesEXT & operator=( VkImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
44168     {
44169       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT const *>( &rhs );
44170       return *this;
44171     }
44172 
operator VkImageDrmFormatModifierPropertiesEXT const&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT44173     operator VkImageDrmFormatModifierPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
44174     {
44175       return *reinterpret_cast<const VkImageDrmFormatModifierPropertiesEXT *>( this );
44176     }
44177 
operator VkImageDrmFormatModifierPropertiesEXT&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT44178     operator VkImageDrmFormatModifierPropertiesEXT &() VULKAN_HPP_NOEXCEPT
44179     {
44180       return *reinterpret_cast<VkImageDrmFormatModifierPropertiesEXT *>( this );
44181     }
44182 
44183 #if defined( VULKAN_HPP_USE_REFLECT )
44184 #  if 14 <= VULKAN_HPP_CPP_VERSION
44185     auto
44186 #  else
44187     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint64_t const &>
44188 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT44189       reflect() const VULKAN_HPP_NOEXCEPT
44190     {
44191       return std::tie( sType, pNext, drmFormatModifier );
44192     }
44193 #endif
44194 
44195 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44196     auto operator<=>( ImageDrmFormatModifierPropertiesEXT const & ) const = default;
44197 #else
operator ==VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT44198     bool operator==( ImageDrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
44199     {
44200 #  if defined( VULKAN_HPP_USE_REFLECT )
44201       return this->reflect() == rhs.reflect();
44202 #  else
44203       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( drmFormatModifier == rhs.drmFormatModifier );
44204 #  endif
44205     }
44206 
operator !=VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT44207     bool operator!=( ImageDrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
44208     {
44209       return !operator==( rhs );
44210     }
44211 #endif
44212 
44213   public:
44214     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::eImageDrmFormatModifierPropertiesEXT;
44215     void *                              pNext             = {};
44216     uint64_t                            drmFormatModifier = {};
44217   };
44218 
44219   template <>
44220   struct CppType<StructureType, StructureType::eImageDrmFormatModifierPropertiesEXT>
44221   {
44222     using Type = ImageDrmFormatModifierPropertiesEXT;
44223   };
44224 
44225   struct ImageFormatListCreateInfo
44226   {
44227     using NativeType = VkImageFormatListCreateInfo;
44228 
44229     static const bool                                  allowDuplicate = false;
44230     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageFormatListCreateInfo;
44231 
44232 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageFormatListCreateInfoVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44233     VULKAN_HPP_CONSTEXPR ImageFormatListCreateInfo( uint32_t                             viewFormatCount_ = {},
44234                                                     const VULKAN_HPP_NAMESPACE::Format * pViewFormats_    = {},
44235                                                     const void *                         pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
44236       : pNext{ pNext_ }
44237       , viewFormatCount{ viewFormatCount_ }
44238       , pViewFormats{ pViewFormats_ }
44239     {
44240     }
44241 
44242     VULKAN_HPP_CONSTEXPR ImageFormatListCreateInfo( ImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44243 
ImageFormatListCreateInfoVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44244     ImageFormatListCreateInfo( VkImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
44245       : ImageFormatListCreateInfo( *reinterpret_cast<ImageFormatListCreateInfo const *>( &rhs ) )
44246     {
44247     }
44248 
44249 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageFormatListCreateInfoVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44250     ImageFormatListCreateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & viewFormats_,
44251                                const void *                                                                              pNext_ = nullptr )
44252       : pNext( pNext_ ), viewFormatCount( static_cast<uint32_t>( viewFormats_.size() ) ), pViewFormats( viewFormats_.data() )
44253     {
44254     }
44255 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44256 
44257     ImageFormatListCreateInfo & operator=( ImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44258 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44259 
operator =VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44260     ImageFormatListCreateInfo & operator=( VkImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
44261     {
44262       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo const *>( &rhs );
44263       return *this;
44264     }
44265 
44266 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44267     VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
44268     {
44269       pNext = pNext_;
44270       return *this;
44271     }
44272 
setViewFormatCountVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44273     VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo & setViewFormatCount( uint32_t viewFormatCount_ ) VULKAN_HPP_NOEXCEPT
44274     {
44275       viewFormatCount = viewFormatCount_;
44276       return *this;
44277     }
44278 
setPViewFormatsVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44279     VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo & setPViewFormats( const VULKAN_HPP_NAMESPACE::Format * pViewFormats_ ) VULKAN_HPP_NOEXCEPT
44280     {
44281       pViewFormats = pViewFormats_;
44282       return *this;
44283     }
44284 
44285 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
44286     ImageFormatListCreateInfo &
setViewFormatsVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44287       setViewFormats( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & viewFormats_ ) VULKAN_HPP_NOEXCEPT
44288     {
44289       viewFormatCount = static_cast<uint32_t>( viewFormats_.size() );
44290       pViewFormats    = viewFormats_.data();
44291       return *this;
44292     }
44293 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44294 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44295 
operator VkImageFormatListCreateInfo const&VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44296     operator VkImageFormatListCreateInfo const &() const VULKAN_HPP_NOEXCEPT
44297     {
44298       return *reinterpret_cast<const VkImageFormatListCreateInfo *>( this );
44299     }
44300 
operator VkImageFormatListCreateInfo&VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44301     operator VkImageFormatListCreateInfo &() VULKAN_HPP_NOEXCEPT
44302     {
44303       return *reinterpret_cast<VkImageFormatListCreateInfo *>( this );
44304     }
44305 
44306 #if defined( VULKAN_HPP_USE_REFLECT )
44307 #  if 14 <= VULKAN_HPP_CPP_VERSION
44308     auto
44309 #  else
44310     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Format * const &>
44311 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44312       reflect() const VULKAN_HPP_NOEXCEPT
44313     {
44314       return std::tie( sType, pNext, viewFormatCount, pViewFormats );
44315     }
44316 #endif
44317 
44318 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44319     auto operator<=>( ImageFormatListCreateInfo const & ) const = default;
44320 #else
operator ==VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44321     bool operator==( ImageFormatListCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
44322     {
44323 #  if defined( VULKAN_HPP_USE_REFLECT )
44324       return this->reflect() == rhs.reflect();
44325 #  else
44326       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( viewFormatCount == rhs.viewFormatCount ) && ( pViewFormats == rhs.pViewFormats );
44327 #  endif
44328     }
44329 
operator !=VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo44330     bool operator!=( ImageFormatListCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
44331     {
44332       return !operator==( rhs );
44333     }
44334 #endif
44335 
44336   public:
44337     VULKAN_HPP_NAMESPACE::StructureType  sType           = StructureType::eImageFormatListCreateInfo;
44338     const void *                         pNext           = {};
44339     uint32_t                             viewFormatCount = {};
44340     const VULKAN_HPP_NAMESPACE::Format * pViewFormats    = {};
44341   };
44342 
44343   template <>
44344   struct CppType<StructureType, StructureType::eImageFormatListCreateInfo>
44345   {
44346     using Type = ImageFormatListCreateInfo;
44347   };
44348 
44349   using ImageFormatListCreateInfoKHR = ImageFormatListCreateInfo;
44350 
44351   struct ImageFormatProperties2
44352   {
44353     using NativeType = VkImageFormatProperties2;
44354 
44355     static const bool                                  allowDuplicate = false;
44356     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageFormatProperties2;
44357 
44358 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageFormatProperties2VULKAN_HPP_NAMESPACE::ImageFormatProperties244359     VULKAN_HPP_CONSTEXPR ImageFormatProperties2( VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties_ = {},
44360                                                  void *                                      pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
44361       : pNext{ pNext_ }
44362       , imageFormatProperties{ imageFormatProperties_ }
44363     {
44364     }
44365 
44366     VULKAN_HPP_CONSTEXPR ImageFormatProperties2( ImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44367 
ImageFormatProperties2VULKAN_HPP_NAMESPACE::ImageFormatProperties244368     ImageFormatProperties2( VkImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
44369       : ImageFormatProperties2( *reinterpret_cast<ImageFormatProperties2 const *>( &rhs ) )
44370     {
44371     }
44372 
44373     ImageFormatProperties2 & operator=( ImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44374 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44375 
operator =VULKAN_HPP_NAMESPACE::ImageFormatProperties244376     ImageFormatProperties2 & operator=( VkImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
44377     {
44378       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageFormatProperties2 const *>( &rhs );
44379       return *this;
44380     }
44381 
operator VkImageFormatProperties2 const&VULKAN_HPP_NAMESPACE::ImageFormatProperties244382     operator VkImageFormatProperties2 const &() const VULKAN_HPP_NOEXCEPT
44383     {
44384       return *reinterpret_cast<const VkImageFormatProperties2 *>( this );
44385     }
44386 
operator VkImageFormatProperties2&VULKAN_HPP_NAMESPACE::ImageFormatProperties244387     operator VkImageFormatProperties2 &() VULKAN_HPP_NOEXCEPT
44388     {
44389       return *reinterpret_cast<VkImageFormatProperties2 *>( this );
44390     }
44391 
44392 #if defined( VULKAN_HPP_USE_REFLECT )
44393 #  if 14 <= VULKAN_HPP_CPP_VERSION
44394     auto
44395 #  else
44396     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ImageFormatProperties const &>
44397 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageFormatProperties244398       reflect() const VULKAN_HPP_NOEXCEPT
44399     {
44400       return std::tie( sType, pNext, imageFormatProperties );
44401     }
44402 #endif
44403 
44404 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44405     auto operator<=>( ImageFormatProperties2 const & ) const = default;
44406 #else
operator ==VULKAN_HPP_NAMESPACE::ImageFormatProperties244407     bool operator==( ImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
44408     {
44409 #  if defined( VULKAN_HPP_USE_REFLECT )
44410       return this->reflect() == rhs.reflect();
44411 #  else
44412       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageFormatProperties == rhs.imageFormatProperties );
44413 #  endif
44414     }
44415 
operator !=VULKAN_HPP_NAMESPACE::ImageFormatProperties244416     bool operator!=( ImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
44417     {
44418       return !operator==( rhs );
44419     }
44420 #endif
44421 
44422   public:
44423     VULKAN_HPP_NAMESPACE::StructureType         sType                 = StructureType::eImageFormatProperties2;
44424     void *                                      pNext                 = {};
44425     VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties = {};
44426   };
44427 
44428   template <>
44429   struct CppType<StructureType, StructureType::eImageFormatProperties2>
44430   {
44431     using Type = ImageFormatProperties2;
44432   };
44433 
44434   using ImageFormatProperties2KHR = ImageFormatProperties2;
44435 
44436   struct ImageMemoryBarrier
44437   {
44438     using NativeType = VkImageMemoryBarrier;
44439 
44440     static const bool                                  allowDuplicate = false;
44441     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageMemoryBarrier;
44442 
44443 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageMemoryBarrierVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44444     VULKAN_HPP_CONSTEXPR ImageMemoryBarrier( VULKAN_HPP_NAMESPACE::AccessFlags           srcAccessMask_       = {},
44445                                              VULKAN_HPP_NAMESPACE::AccessFlags           dstAccessMask_       = {},
44446                                              VULKAN_HPP_NAMESPACE::ImageLayout           oldLayout_           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
44447                                              VULKAN_HPP_NAMESPACE::ImageLayout           newLayout_           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
44448                                              uint32_t                                    srcQueueFamilyIndex_ = {},
44449                                              uint32_t                                    dstQueueFamilyIndex_ = {},
44450                                              VULKAN_HPP_NAMESPACE::Image                 image_               = {},
44451                                              VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange_    = {},
44452                                              const void *                                pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
44453       : pNext{ pNext_ }
44454       , srcAccessMask{ srcAccessMask_ }
44455       , dstAccessMask{ dstAccessMask_ }
44456       , oldLayout{ oldLayout_ }
44457       , newLayout{ newLayout_ }
44458       , srcQueueFamilyIndex{ srcQueueFamilyIndex_ }
44459       , dstQueueFamilyIndex{ dstQueueFamilyIndex_ }
44460       , image{ image_ }
44461       , subresourceRange{ subresourceRange_ }
44462     {
44463     }
44464 
44465     VULKAN_HPP_CONSTEXPR ImageMemoryBarrier( ImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44466 
ImageMemoryBarrierVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44467     ImageMemoryBarrier( VkImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT : ImageMemoryBarrier( *reinterpret_cast<ImageMemoryBarrier const *>( &rhs ) ) {}
44468 
44469     ImageMemoryBarrier & operator=( ImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44470 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44471 
operator =VULKAN_HPP_NAMESPACE::ImageMemoryBarrier44472     ImageMemoryBarrier & operator=( VkImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
44473     {
44474       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageMemoryBarrier const *>( &rhs );
44475       return *this;
44476     }
44477 
44478 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44479     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
44480     {
44481       pNext = pNext_;
44482       return *this;
44483     }
44484 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44485     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
44486     {
44487       srcAccessMask = srcAccessMask_;
44488       return *this;
44489     }
44490 
setDstAccessMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44491     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
44492     {
44493       dstAccessMask = dstAccessMask_;
44494       return *this;
44495     }
44496 
setOldLayoutVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44497     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setOldLayout( VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ ) VULKAN_HPP_NOEXCEPT
44498     {
44499       oldLayout = oldLayout_;
44500       return *this;
44501     }
44502 
setNewLayoutVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44503     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setNewLayout( VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ ) VULKAN_HPP_NOEXCEPT
44504     {
44505       newLayout = newLayout_;
44506       return *this;
44507     }
44508 
setSrcQueueFamilyIndexVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44509     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
44510     {
44511       srcQueueFamilyIndex = srcQueueFamilyIndex_;
44512       return *this;
44513     }
44514 
setDstQueueFamilyIndexVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44515     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
44516     {
44517       dstQueueFamilyIndex = dstQueueFamilyIndex_;
44518       return *this;
44519     }
44520 
setImageVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44521     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
44522     {
44523       image = image_;
44524       return *this;
44525     }
44526 
44527     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier &
setSubresourceRangeVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44528       setSubresourceRange( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & subresourceRange_ ) VULKAN_HPP_NOEXCEPT
44529     {
44530       subresourceRange = subresourceRange_;
44531       return *this;
44532     }
44533 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44534 
operator VkImageMemoryBarrier const&VULKAN_HPP_NAMESPACE::ImageMemoryBarrier44535     operator VkImageMemoryBarrier const &() const VULKAN_HPP_NOEXCEPT
44536     {
44537       return *reinterpret_cast<const VkImageMemoryBarrier *>( this );
44538     }
44539 
operator VkImageMemoryBarrier&VULKAN_HPP_NAMESPACE::ImageMemoryBarrier44540     operator VkImageMemoryBarrier &() VULKAN_HPP_NOEXCEPT
44541     {
44542       return *reinterpret_cast<VkImageMemoryBarrier *>( this );
44543     }
44544 
44545 #if defined( VULKAN_HPP_USE_REFLECT )
44546 #  if 14 <= VULKAN_HPP_CPP_VERSION
44547     auto
44548 #  else
44549     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
44550                const void * const &,
44551                VULKAN_HPP_NAMESPACE::AccessFlags const &,
44552                VULKAN_HPP_NAMESPACE::AccessFlags const &,
44553                VULKAN_HPP_NAMESPACE::ImageLayout const &,
44554                VULKAN_HPP_NAMESPACE::ImageLayout const &,
44555                uint32_t const &,
44556                uint32_t const &,
44557                VULKAN_HPP_NAMESPACE::Image const &,
44558                VULKAN_HPP_NAMESPACE::ImageSubresourceRange const &>
44559 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageMemoryBarrier44560       reflect() const VULKAN_HPP_NOEXCEPT
44561     {
44562       return std::tie( sType, pNext, srcAccessMask, dstAccessMask, oldLayout, newLayout, srcQueueFamilyIndex, dstQueueFamilyIndex, image, subresourceRange );
44563     }
44564 #endif
44565 
44566 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44567     auto operator<=>( ImageMemoryBarrier const & ) const = default;
44568 #else
operator ==VULKAN_HPP_NAMESPACE::ImageMemoryBarrier44569     bool operator==( ImageMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
44570     {
44571 #  if defined( VULKAN_HPP_USE_REFLECT )
44572       return this->reflect() == rhs.reflect();
44573 #  else
44574       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcAccessMask == rhs.srcAccessMask ) && ( dstAccessMask == rhs.dstAccessMask ) &&
44575              ( oldLayout == rhs.oldLayout ) && ( newLayout == rhs.newLayout ) && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex ) &&
44576              ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex ) && ( image == rhs.image ) && ( subresourceRange == rhs.subresourceRange );
44577 #  endif
44578     }
44579 
operator !=VULKAN_HPP_NAMESPACE::ImageMemoryBarrier44580     bool operator!=( ImageMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
44581     {
44582       return !operator==( rhs );
44583     }
44584 #endif
44585 
44586   public:
44587     VULKAN_HPP_NAMESPACE::StructureType         sType               = StructureType::eImageMemoryBarrier;
44588     const void *                                pNext               = {};
44589     VULKAN_HPP_NAMESPACE::AccessFlags           srcAccessMask       = {};
44590     VULKAN_HPP_NAMESPACE::AccessFlags           dstAccessMask       = {};
44591     VULKAN_HPP_NAMESPACE::ImageLayout           oldLayout           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
44592     VULKAN_HPP_NAMESPACE::ImageLayout           newLayout           = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
44593     uint32_t                                    srcQueueFamilyIndex = {};
44594     uint32_t                                    dstQueueFamilyIndex = {};
44595     VULKAN_HPP_NAMESPACE::Image                 image               = {};
44596     VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange    = {};
44597   };
44598 
44599   template <>
44600   struct CppType<StructureType, StructureType::eImageMemoryBarrier>
44601   {
44602     using Type = ImageMemoryBarrier;
44603   };
44604 
44605   struct ImageMemoryRequirementsInfo2
44606   {
44607     using NativeType = VkImageMemoryRequirementsInfo2;
44608 
44609     static const bool                                  allowDuplicate = false;
44610     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageMemoryRequirementsInfo2;
44611 
44612 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo244613     VULKAN_HPP_CONSTEXPR ImageMemoryRequirementsInfo2( VULKAN_HPP_NAMESPACE::Image image_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
44614       : pNext{ pNext_ }
44615       , image{ image_ }
44616     {
44617     }
44618 
44619     VULKAN_HPP_CONSTEXPR ImageMemoryRequirementsInfo2( ImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44620 
ImageMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo244621     ImageMemoryRequirementsInfo2( VkImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
44622       : ImageMemoryRequirementsInfo2( *reinterpret_cast<ImageMemoryRequirementsInfo2 const *>( &rhs ) )
44623     {
44624     }
44625 
44626     ImageMemoryRequirementsInfo2 & operator=( ImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44627 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44628 
operator =VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo244629     ImageMemoryRequirementsInfo2 & operator=( VkImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
44630     {
44631       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 const *>( &rhs );
44632       return *this;
44633     }
44634 
44635 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo244636     VULKAN_HPP_CONSTEXPR_14 ImageMemoryRequirementsInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
44637     {
44638       pNext = pNext_;
44639       return *this;
44640     }
44641 
setImageVULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo244642     VULKAN_HPP_CONSTEXPR_14 ImageMemoryRequirementsInfo2 & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
44643     {
44644       image = image_;
44645       return *this;
44646     }
44647 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44648 
operator VkImageMemoryRequirementsInfo2 const&VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo244649     operator VkImageMemoryRequirementsInfo2 const &() const VULKAN_HPP_NOEXCEPT
44650     {
44651       return *reinterpret_cast<const VkImageMemoryRequirementsInfo2 *>( this );
44652     }
44653 
operator VkImageMemoryRequirementsInfo2&VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo244654     operator VkImageMemoryRequirementsInfo2 &() VULKAN_HPP_NOEXCEPT
44655     {
44656       return *reinterpret_cast<VkImageMemoryRequirementsInfo2 *>( this );
44657     }
44658 
44659 #if defined( VULKAN_HPP_USE_REFLECT )
44660 #  if 14 <= VULKAN_HPP_CPP_VERSION
44661     auto
44662 #  else
44663     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Image const &>
44664 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo244665       reflect() const VULKAN_HPP_NOEXCEPT
44666     {
44667       return std::tie( sType, pNext, image );
44668     }
44669 #endif
44670 
44671 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44672     auto operator<=>( ImageMemoryRequirementsInfo2 const & ) const = default;
44673 #else
operator ==VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo244674     bool operator==( ImageMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
44675     {
44676 #  if defined( VULKAN_HPP_USE_REFLECT )
44677       return this->reflect() == rhs.reflect();
44678 #  else
44679       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image );
44680 #  endif
44681     }
44682 
operator !=VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo244683     bool operator!=( ImageMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
44684     {
44685       return !operator==( rhs );
44686     }
44687 #endif
44688 
44689   public:
44690     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageMemoryRequirementsInfo2;
44691     const void *                        pNext = {};
44692     VULKAN_HPP_NAMESPACE::Image         image = {};
44693   };
44694 
44695   template <>
44696   struct CppType<StructureType, StructureType::eImageMemoryRequirementsInfo2>
44697   {
44698     using Type = ImageMemoryRequirementsInfo2;
44699   };
44700 
44701   using ImageMemoryRequirementsInfo2KHR = ImageMemoryRequirementsInfo2;
44702 
44703 #if defined( VK_USE_PLATFORM_FUCHSIA )
44704   struct ImagePipeSurfaceCreateInfoFUCHSIA
44705   {
44706     using NativeType = VkImagePipeSurfaceCreateInfoFUCHSIA;
44707 
44708     static const bool                                  allowDuplicate = false;
44709     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImagepipeSurfaceCreateInfoFUCHSIA;
44710 
44711 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImagePipeSurfaceCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA44712     VULKAN_HPP_CONSTEXPR ImagePipeSurfaceCreateInfoFUCHSIA( VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateFlagsFUCHSIA flags_           = {},
44713                                                             zx_handle_t                                              imagePipeHandle_ = {},
44714                                                             const void *                                             pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
44715       : pNext{ pNext_ }
44716       , flags{ flags_ }
44717       , imagePipeHandle{ imagePipeHandle_ }
44718     {
44719     }
44720 
44721     VULKAN_HPP_CONSTEXPR ImagePipeSurfaceCreateInfoFUCHSIA( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44722 
ImagePipeSurfaceCreateInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA44723     ImagePipeSurfaceCreateInfoFUCHSIA( VkImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
44724       : ImagePipeSurfaceCreateInfoFUCHSIA( *reinterpret_cast<ImagePipeSurfaceCreateInfoFUCHSIA const *>( &rhs ) )
44725     {
44726     }
44727 
44728     ImagePipeSurfaceCreateInfoFUCHSIA & operator=( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44729 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44730 
operator =VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA44731     ImagePipeSurfaceCreateInfoFUCHSIA & operator=( VkImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
44732     {
44733       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA const *>( &rhs );
44734       return *this;
44735     }
44736 
44737 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA44738     VULKAN_HPP_CONSTEXPR_14 ImagePipeSurfaceCreateInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
44739     {
44740       pNext = pNext_;
44741       return *this;
44742     }
44743 
setFlagsVULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA44744     VULKAN_HPP_CONSTEXPR_14 ImagePipeSurfaceCreateInfoFUCHSIA & setFlags( VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateFlagsFUCHSIA flags_ ) VULKAN_HPP_NOEXCEPT
44745     {
44746       flags = flags_;
44747       return *this;
44748     }
44749 
setImagePipeHandleVULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA44750     VULKAN_HPP_CONSTEXPR_14 ImagePipeSurfaceCreateInfoFUCHSIA & setImagePipeHandle( zx_handle_t imagePipeHandle_ ) VULKAN_HPP_NOEXCEPT
44751     {
44752       imagePipeHandle = imagePipeHandle_;
44753       return *this;
44754     }
44755 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44756 
operator VkImagePipeSurfaceCreateInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA44757     operator VkImagePipeSurfaceCreateInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
44758     {
44759       return *reinterpret_cast<const VkImagePipeSurfaceCreateInfoFUCHSIA *>( this );
44760     }
44761 
operator VkImagePipeSurfaceCreateInfoFUCHSIA&VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA44762     operator VkImagePipeSurfaceCreateInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
44763     {
44764       return *reinterpret_cast<VkImagePipeSurfaceCreateInfoFUCHSIA *>( this );
44765     }
44766 
44767 #  if defined( VULKAN_HPP_USE_REFLECT )
44768 #    if 14 <= VULKAN_HPP_CPP_VERSION
44769     auto
44770 #    else
44771     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
44772                const void * const &,
44773                VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateFlagsFUCHSIA const &,
44774                zx_handle_t const &>
44775 #    endif
reflectVULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA44776       reflect() const VULKAN_HPP_NOEXCEPT
44777     {
44778       return std::tie( sType, pNext, flags, imagePipeHandle );
44779     }
44780 #  endif
44781 
44782 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA44783     std::strong_ordering operator<=>( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
44784     {
44785       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
44786         return cmp;
44787       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
44788         return cmp;
44789       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
44790         return cmp;
44791       if ( auto cmp = memcmp( &imagePipeHandle, &rhs.imagePipeHandle, sizeof( zx_handle_t ) ); cmp != 0 )
44792         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
44793 
44794       return std::strong_ordering::equivalent;
44795     }
44796 #  endif
44797 
operator ==VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA44798     bool operator==( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
44799     {
44800       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) &&
44801              ( memcmp( &imagePipeHandle, &rhs.imagePipeHandle, sizeof( zx_handle_t ) ) == 0 );
44802     }
44803 
operator !=VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA44804     bool operator!=( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
44805     {
44806       return !operator==( rhs );
44807     }
44808 
44809   public:
44810     VULKAN_HPP_NAMESPACE::StructureType                      sType           = StructureType::eImagepipeSurfaceCreateInfoFUCHSIA;
44811     const void *                                             pNext           = {};
44812     VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateFlagsFUCHSIA flags           = {};
44813     zx_handle_t                                              imagePipeHandle = {};
44814   };
44815 
44816   template <>
44817   struct CppType<StructureType, StructureType::eImagepipeSurfaceCreateInfoFUCHSIA>
44818   {
44819     using Type = ImagePipeSurfaceCreateInfoFUCHSIA;
44820   };
44821 #endif /*VK_USE_PLATFORM_FUCHSIA*/
44822 
44823   struct ImagePlaneMemoryRequirementsInfo
44824   {
44825     using NativeType = VkImagePlaneMemoryRequirementsInfo;
44826 
44827     static const bool                                  allowDuplicate = false;
44828     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImagePlaneMemoryRequirementsInfo;
44829 
44830 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
44831     VULKAN_HPP_CONSTEXPR
ImagePlaneMemoryRequirementsInfoVULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo44832       ImagePlaneMemoryRequirementsInfo( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor,
44833                                         const void *                              pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
44834       : pNext{ pNext_ }
44835       , planeAspect{ planeAspect_ }
44836     {
44837     }
44838 
44839     VULKAN_HPP_CONSTEXPR ImagePlaneMemoryRequirementsInfo( ImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44840 
ImagePlaneMemoryRequirementsInfoVULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo44841     ImagePlaneMemoryRequirementsInfo( VkImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
44842       : ImagePlaneMemoryRequirementsInfo( *reinterpret_cast<ImagePlaneMemoryRequirementsInfo const *>( &rhs ) )
44843     {
44844     }
44845 
44846     ImagePlaneMemoryRequirementsInfo & operator=( ImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44847 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44848 
operator =VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo44849     ImagePlaneMemoryRequirementsInfo & operator=( VkImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
44850     {
44851       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo const *>( &rhs );
44852       return *this;
44853     }
44854 
44855 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo44856     VULKAN_HPP_CONSTEXPR_14 ImagePlaneMemoryRequirementsInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
44857     {
44858       pNext = pNext_;
44859       return *this;
44860     }
44861 
setPlaneAspectVULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo44862     VULKAN_HPP_CONSTEXPR_14 ImagePlaneMemoryRequirementsInfo & setPlaneAspect( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ ) VULKAN_HPP_NOEXCEPT
44863     {
44864       planeAspect = planeAspect_;
44865       return *this;
44866     }
44867 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44868 
operator VkImagePlaneMemoryRequirementsInfo const&VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo44869     operator VkImagePlaneMemoryRequirementsInfo const &() const VULKAN_HPP_NOEXCEPT
44870     {
44871       return *reinterpret_cast<const VkImagePlaneMemoryRequirementsInfo *>( this );
44872     }
44873 
operator VkImagePlaneMemoryRequirementsInfo&VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo44874     operator VkImagePlaneMemoryRequirementsInfo &() VULKAN_HPP_NOEXCEPT
44875     {
44876       return *reinterpret_cast<VkImagePlaneMemoryRequirementsInfo *>( this );
44877     }
44878 
44879 #if defined( VULKAN_HPP_USE_REFLECT )
44880 #  if 14 <= VULKAN_HPP_CPP_VERSION
44881     auto
44882 #  else
44883     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageAspectFlagBits const &>
44884 #  endif
reflectVULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo44885       reflect() const VULKAN_HPP_NOEXCEPT
44886     {
44887       return std::tie( sType, pNext, planeAspect );
44888     }
44889 #endif
44890 
44891 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
44892     auto operator<=>( ImagePlaneMemoryRequirementsInfo const & ) const = default;
44893 #else
operator ==VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo44894     bool operator==( ImagePlaneMemoryRequirementsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
44895     {
44896 #  if defined( VULKAN_HPP_USE_REFLECT )
44897       return this->reflect() == rhs.reflect();
44898 #  else
44899       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( planeAspect == rhs.planeAspect );
44900 #  endif
44901     }
44902 
operator !=VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo44903     bool operator!=( ImagePlaneMemoryRequirementsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
44904     {
44905       return !operator==( rhs );
44906     }
44907 #endif
44908 
44909   public:
44910     VULKAN_HPP_NAMESPACE::StructureType       sType       = StructureType::eImagePlaneMemoryRequirementsInfo;
44911     const void *                              pNext       = {};
44912     VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor;
44913   };
44914 
44915   template <>
44916   struct CppType<StructureType, StructureType::eImagePlaneMemoryRequirementsInfo>
44917   {
44918     using Type = ImagePlaneMemoryRequirementsInfo;
44919   };
44920 
44921   using ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo;
44922 
44923   struct ImageResolve
44924   {
44925     using NativeType = VkImageResolve;
44926 
44927 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageResolveVULKAN_HPP_NAMESPACE::ImageResolve44928     VULKAN_HPP_CONSTEXPR ImageResolve( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {},
44929                                        VULKAN_HPP_NAMESPACE::Offset3D               srcOffset_      = {},
44930                                        VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {},
44931                                        VULKAN_HPP_NAMESPACE::Offset3D               dstOffset_      = {},
44932                                        VULKAN_HPP_NAMESPACE::Extent3D               extent_         = {} ) VULKAN_HPP_NOEXCEPT
44933       : srcSubresource{ srcSubresource_ }
44934       , srcOffset{ srcOffset_ }
44935       , dstSubresource{ dstSubresource_ }
44936       , dstOffset{ dstOffset_ }
44937       , extent{ extent_ }
44938     {
44939     }
44940 
44941     VULKAN_HPP_CONSTEXPR ImageResolve( ImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44942 
ImageResolveVULKAN_HPP_NAMESPACE::ImageResolve44943     ImageResolve( VkImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT : ImageResolve( *reinterpret_cast<ImageResolve const *>( &rhs ) ) {}
44944 
44945     ImageResolve & operator=( ImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44946 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44947 
operator =VULKAN_HPP_NAMESPACE::ImageResolve44948     ImageResolve & operator=( VkImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT
44949     {
44950       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageResolve const *>( &rhs );
44951       return *this;
44952     }
44953 
44954 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageResolve44955     VULKAN_HPP_CONSTEXPR_14 ImageResolve & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
44956     {
44957       srcSubresource = srcSubresource_;
44958       return *this;
44959     }
44960 
setSrcOffsetVULKAN_HPP_NAMESPACE::ImageResolve44961     VULKAN_HPP_CONSTEXPR_14 ImageResolve & setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT
44962     {
44963       srcOffset = srcOffset_;
44964       return *this;
44965     }
44966 
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageResolve44967     VULKAN_HPP_CONSTEXPR_14 ImageResolve & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
44968     {
44969       dstSubresource = dstSubresource_;
44970       return *this;
44971     }
44972 
setDstOffsetVULKAN_HPP_NAMESPACE::ImageResolve44973     VULKAN_HPP_CONSTEXPR_14 ImageResolve & setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT
44974     {
44975       dstOffset = dstOffset_;
44976       return *this;
44977     }
44978 
setExtentVULKAN_HPP_NAMESPACE::ImageResolve44979     VULKAN_HPP_CONSTEXPR_14 ImageResolve & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
44980     {
44981       extent = extent_;
44982       return *this;
44983     }
44984 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44985 
operator VkImageResolve const&VULKAN_HPP_NAMESPACE::ImageResolve44986     operator VkImageResolve const &() const VULKAN_HPP_NOEXCEPT
44987     {
44988       return *reinterpret_cast<const VkImageResolve *>( this );
44989     }
44990 
operator VkImageResolve&VULKAN_HPP_NAMESPACE::ImageResolve44991     operator VkImageResolve &() VULKAN_HPP_NOEXCEPT
44992     {
44993       return *reinterpret_cast<VkImageResolve *>( this );
44994     }
44995 
44996 #if defined( VULKAN_HPP_USE_REFLECT )
44997 #  if 14 <= VULKAN_HPP_CPP_VERSION
44998     auto
44999 #  else
45000     std::tuple<VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
45001                VULKAN_HPP_NAMESPACE::Offset3D const &,
45002                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
45003                VULKAN_HPP_NAMESPACE::Offset3D const &,
45004                VULKAN_HPP_NAMESPACE::Extent3D const &>
45005 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageResolve45006       reflect() const VULKAN_HPP_NOEXCEPT
45007     {
45008       return std::tie( srcSubresource, srcOffset, dstSubresource, dstOffset, extent );
45009     }
45010 #endif
45011 
45012 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45013     auto operator<=>( ImageResolve const & ) const = default;
45014 #else
operator ==VULKAN_HPP_NAMESPACE::ImageResolve45015     bool operator==( ImageResolve const & rhs ) const VULKAN_HPP_NOEXCEPT
45016     {
45017 #  if defined( VULKAN_HPP_USE_REFLECT )
45018       return this->reflect() == rhs.reflect();
45019 #  else
45020       return ( srcSubresource == rhs.srcSubresource ) && ( srcOffset == rhs.srcOffset ) && ( dstSubresource == rhs.dstSubresource ) &&
45021              ( dstOffset == rhs.dstOffset ) && ( extent == rhs.extent );
45022 #  endif
45023     }
45024 
operator !=VULKAN_HPP_NAMESPACE::ImageResolve45025     bool operator!=( ImageResolve const & rhs ) const VULKAN_HPP_NOEXCEPT
45026     {
45027       return !operator==( rhs );
45028     }
45029 #endif
45030 
45031   public:
45032     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {};
45033     VULKAN_HPP_NAMESPACE::Offset3D               srcOffset      = {};
45034     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {};
45035     VULKAN_HPP_NAMESPACE::Offset3D               dstOffset      = {};
45036     VULKAN_HPP_NAMESPACE::Extent3D               extent         = {};
45037   };
45038 
45039   struct ImageResolve2
45040   {
45041     using NativeType = VkImageResolve2;
45042 
45043     static const bool                                  allowDuplicate = false;
45044     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageResolve2;
45045 
45046 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageResolve2VULKAN_HPP_NAMESPACE::ImageResolve245047     VULKAN_HPP_CONSTEXPR ImageResolve2( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {},
45048                                         VULKAN_HPP_NAMESPACE::Offset3D               srcOffset_      = {},
45049                                         VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {},
45050                                         VULKAN_HPP_NAMESPACE::Offset3D               dstOffset_      = {},
45051                                         VULKAN_HPP_NAMESPACE::Extent3D               extent_         = {},
45052                                         const void *                                 pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
45053       : pNext{ pNext_ }
45054       , srcSubresource{ srcSubresource_ }
45055       , srcOffset{ srcOffset_ }
45056       , dstSubresource{ dstSubresource_ }
45057       , dstOffset{ dstOffset_ }
45058       , extent{ extent_ }
45059     {
45060     }
45061 
45062     VULKAN_HPP_CONSTEXPR ImageResolve2( ImageResolve2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45063 
ImageResolve2VULKAN_HPP_NAMESPACE::ImageResolve245064     ImageResolve2( VkImageResolve2 const & rhs ) VULKAN_HPP_NOEXCEPT : ImageResolve2( *reinterpret_cast<ImageResolve2 const *>( &rhs ) ) {}
45065 
45066     ImageResolve2 & operator=( ImageResolve2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45067 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45068 
operator =VULKAN_HPP_NAMESPACE::ImageResolve245069     ImageResolve2 & operator=( VkImageResolve2 const & rhs ) VULKAN_HPP_NOEXCEPT
45070     {
45071       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageResolve2 const *>( &rhs );
45072       return *this;
45073     }
45074 
45075 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageResolve245076     VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45077     {
45078       pNext = pNext_;
45079       return *this;
45080     }
45081 
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageResolve245082     VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
45083     {
45084       srcSubresource = srcSubresource_;
45085       return *this;
45086     }
45087 
setSrcOffsetVULKAN_HPP_NAMESPACE::ImageResolve245088     VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT
45089     {
45090       srcOffset = srcOffset_;
45091       return *this;
45092     }
45093 
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageResolve245094     VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
45095     {
45096       dstSubresource = dstSubresource_;
45097       return *this;
45098     }
45099 
setDstOffsetVULKAN_HPP_NAMESPACE::ImageResolve245100     VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT
45101     {
45102       dstOffset = dstOffset_;
45103       return *this;
45104     }
45105 
setExtentVULKAN_HPP_NAMESPACE::ImageResolve245106     VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
45107     {
45108       extent = extent_;
45109       return *this;
45110     }
45111 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45112 
operator VkImageResolve2 const&VULKAN_HPP_NAMESPACE::ImageResolve245113     operator VkImageResolve2 const &() const VULKAN_HPP_NOEXCEPT
45114     {
45115       return *reinterpret_cast<const VkImageResolve2 *>( this );
45116     }
45117 
operator VkImageResolve2&VULKAN_HPP_NAMESPACE::ImageResolve245118     operator VkImageResolve2 &() VULKAN_HPP_NOEXCEPT
45119     {
45120       return *reinterpret_cast<VkImageResolve2 *>( this );
45121     }
45122 
45123 #if defined( VULKAN_HPP_USE_REFLECT )
45124 #  if 14 <= VULKAN_HPP_CPP_VERSION
45125     auto
45126 #  else
45127     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
45128                const void * const &,
45129                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
45130                VULKAN_HPP_NAMESPACE::Offset3D const &,
45131                VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &,
45132                VULKAN_HPP_NAMESPACE::Offset3D const &,
45133                VULKAN_HPP_NAMESPACE::Extent3D const &>
45134 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageResolve245135       reflect() const VULKAN_HPP_NOEXCEPT
45136     {
45137       return std::tie( sType, pNext, srcSubresource, srcOffset, dstSubresource, dstOffset, extent );
45138     }
45139 #endif
45140 
45141 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45142     auto operator<=>( ImageResolve2 const & ) const = default;
45143 #else
operator ==VULKAN_HPP_NAMESPACE::ImageResolve245144     bool operator==( ImageResolve2 const & rhs ) const VULKAN_HPP_NOEXCEPT
45145     {
45146 #  if defined( VULKAN_HPP_USE_REFLECT )
45147       return this->reflect() == rhs.reflect();
45148 #  else
45149       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcSubresource == rhs.srcSubresource ) && ( srcOffset == rhs.srcOffset ) &&
45150              ( dstSubresource == rhs.dstSubresource ) && ( dstOffset == rhs.dstOffset ) && ( extent == rhs.extent );
45151 #  endif
45152     }
45153 
operator !=VULKAN_HPP_NAMESPACE::ImageResolve245154     bool operator!=( ImageResolve2 const & rhs ) const VULKAN_HPP_NOEXCEPT
45155     {
45156       return !operator==( rhs );
45157     }
45158 #endif
45159 
45160   public:
45161     VULKAN_HPP_NAMESPACE::StructureType          sType          = StructureType::eImageResolve2;
45162     const void *                                 pNext          = {};
45163     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {};
45164     VULKAN_HPP_NAMESPACE::Offset3D               srcOffset      = {};
45165     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {};
45166     VULKAN_HPP_NAMESPACE::Offset3D               dstOffset      = {};
45167     VULKAN_HPP_NAMESPACE::Extent3D               extent         = {};
45168   };
45169 
45170   template <>
45171   struct CppType<StructureType, StructureType::eImageResolve2>
45172   {
45173     using Type = ImageResolve2;
45174   };
45175 
45176   using ImageResolve2KHR = ImageResolve2;
45177 
45178   struct ImageSparseMemoryRequirementsInfo2
45179   {
45180     using NativeType = VkImageSparseMemoryRequirementsInfo2;
45181 
45182     static const bool                                  allowDuplicate = false;
45183     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageSparseMemoryRequirementsInfo2;
45184 
45185 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageSparseMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo245186     VULKAN_HPP_CONSTEXPR ImageSparseMemoryRequirementsInfo2( VULKAN_HPP_NAMESPACE::Image image_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
45187       : pNext{ pNext_ }
45188       , image{ image_ }
45189     {
45190     }
45191 
45192     VULKAN_HPP_CONSTEXPR ImageSparseMemoryRequirementsInfo2( ImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45193 
ImageSparseMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo245194     ImageSparseMemoryRequirementsInfo2( VkImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
45195       : ImageSparseMemoryRequirementsInfo2( *reinterpret_cast<ImageSparseMemoryRequirementsInfo2 const *>( &rhs ) )
45196     {
45197     }
45198 
45199     ImageSparseMemoryRequirementsInfo2 & operator=( ImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45200 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45201 
operator =VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo245202     ImageSparseMemoryRequirementsInfo2 & operator=( VkImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
45203     {
45204       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 const *>( &rhs );
45205       return *this;
45206     }
45207 
45208 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo245209     VULKAN_HPP_CONSTEXPR_14 ImageSparseMemoryRequirementsInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45210     {
45211       pNext = pNext_;
45212       return *this;
45213     }
45214 
setImageVULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo245215     VULKAN_HPP_CONSTEXPR_14 ImageSparseMemoryRequirementsInfo2 & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
45216     {
45217       image = image_;
45218       return *this;
45219     }
45220 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45221 
operator VkImageSparseMemoryRequirementsInfo2 const&VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo245222     operator VkImageSparseMemoryRequirementsInfo2 const &() const VULKAN_HPP_NOEXCEPT
45223     {
45224       return *reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2 *>( this );
45225     }
45226 
operator VkImageSparseMemoryRequirementsInfo2&VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo245227     operator VkImageSparseMemoryRequirementsInfo2 &() VULKAN_HPP_NOEXCEPT
45228     {
45229       return *reinterpret_cast<VkImageSparseMemoryRequirementsInfo2 *>( this );
45230     }
45231 
45232 #if defined( VULKAN_HPP_USE_REFLECT )
45233 #  if 14 <= VULKAN_HPP_CPP_VERSION
45234     auto
45235 #  else
45236     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Image const &>
45237 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo245238       reflect() const VULKAN_HPP_NOEXCEPT
45239     {
45240       return std::tie( sType, pNext, image );
45241     }
45242 #endif
45243 
45244 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45245     auto operator<=>( ImageSparseMemoryRequirementsInfo2 const & ) const = default;
45246 #else
operator ==VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo245247     bool operator==( ImageSparseMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
45248     {
45249 #  if defined( VULKAN_HPP_USE_REFLECT )
45250       return this->reflect() == rhs.reflect();
45251 #  else
45252       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image );
45253 #  endif
45254     }
45255 
operator !=VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo245256     bool operator!=( ImageSparseMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
45257     {
45258       return !operator==( rhs );
45259     }
45260 #endif
45261 
45262   public:
45263     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageSparseMemoryRequirementsInfo2;
45264     const void *                        pNext = {};
45265     VULKAN_HPP_NAMESPACE::Image         image = {};
45266   };
45267 
45268   template <>
45269   struct CppType<StructureType, StructureType::eImageSparseMemoryRequirementsInfo2>
45270   {
45271     using Type = ImageSparseMemoryRequirementsInfo2;
45272   };
45273 
45274   using ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2;
45275 
45276   struct ImageStencilUsageCreateInfo
45277   {
45278     using NativeType = VkImageStencilUsageCreateInfo;
45279 
45280     static const bool                                  allowDuplicate = false;
45281     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageStencilUsageCreateInfo;
45282 
45283 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageStencilUsageCreateInfoVULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo45284     VULKAN_HPP_CONSTEXPR ImageStencilUsageCreateInfo( VULKAN_HPP_NAMESPACE::ImageUsageFlags stencilUsage_ = {},
45285                                                       const void *                          pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
45286       : pNext{ pNext_ }
45287       , stencilUsage{ stencilUsage_ }
45288     {
45289     }
45290 
45291     VULKAN_HPP_CONSTEXPR ImageStencilUsageCreateInfo( ImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45292 
ImageStencilUsageCreateInfoVULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo45293     ImageStencilUsageCreateInfo( VkImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
45294       : ImageStencilUsageCreateInfo( *reinterpret_cast<ImageStencilUsageCreateInfo const *>( &rhs ) )
45295     {
45296     }
45297 
45298     ImageStencilUsageCreateInfo & operator=( ImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45299 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45300 
operator =VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo45301     ImageStencilUsageCreateInfo & operator=( VkImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
45302     {
45303       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo const *>( &rhs );
45304       return *this;
45305     }
45306 
45307 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo45308     VULKAN_HPP_CONSTEXPR_14 ImageStencilUsageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45309     {
45310       pNext = pNext_;
45311       return *this;
45312     }
45313 
setStencilUsageVULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo45314     VULKAN_HPP_CONSTEXPR_14 ImageStencilUsageCreateInfo & setStencilUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags stencilUsage_ ) VULKAN_HPP_NOEXCEPT
45315     {
45316       stencilUsage = stencilUsage_;
45317       return *this;
45318     }
45319 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45320 
operator VkImageStencilUsageCreateInfo const&VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo45321     operator VkImageStencilUsageCreateInfo const &() const VULKAN_HPP_NOEXCEPT
45322     {
45323       return *reinterpret_cast<const VkImageStencilUsageCreateInfo *>( this );
45324     }
45325 
operator VkImageStencilUsageCreateInfo&VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo45326     operator VkImageStencilUsageCreateInfo &() VULKAN_HPP_NOEXCEPT
45327     {
45328       return *reinterpret_cast<VkImageStencilUsageCreateInfo *>( this );
45329     }
45330 
45331 #if defined( VULKAN_HPP_USE_REFLECT )
45332 #  if 14 <= VULKAN_HPP_CPP_VERSION
45333     auto
45334 #  else
45335     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageUsageFlags const &>
45336 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo45337       reflect() const VULKAN_HPP_NOEXCEPT
45338     {
45339       return std::tie( sType, pNext, stencilUsage );
45340     }
45341 #endif
45342 
45343 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45344     auto operator<=>( ImageStencilUsageCreateInfo const & ) const = default;
45345 #else
operator ==VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo45346     bool operator==( ImageStencilUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
45347     {
45348 #  if defined( VULKAN_HPP_USE_REFLECT )
45349       return this->reflect() == rhs.reflect();
45350 #  else
45351       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stencilUsage == rhs.stencilUsage );
45352 #  endif
45353     }
45354 
operator !=VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo45355     bool operator!=( ImageStencilUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
45356     {
45357       return !operator==( rhs );
45358     }
45359 #endif
45360 
45361   public:
45362     VULKAN_HPP_NAMESPACE::StructureType   sType        = StructureType::eImageStencilUsageCreateInfo;
45363     const void *                          pNext        = {};
45364     VULKAN_HPP_NAMESPACE::ImageUsageFlags stencilUsage = {};
45365   };
45366 
45367   template <>
45368   struct CppType<StructureType, StructureType::eImageStencilUsageCreateInfo>
45369   {
45370     using Type = ImageStencilUsageCreateInfo;
45371   };
45372 
45373   using ImageStencilUsageCreateInfoEXT = ImageStencilUsageCreateInfo;
45374 
45375   struct ImageSwapchainCreateInfoKHR
45376   {
45377     using NativeType = VkImageSwapchainCreateInfoKHR;
45378 
45379     static const bool                                  allowDuplicate = false;
45380     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageSwapchainCreateInfoKHR;
45381 
45382 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageSwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR45383     VULKAN_HPP_CONSTEXPR ImageSwapchainCreateInfoKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
45384       : pNext{ pNext_ }
45385       , swapchain{ swapchain_ }
45386     {
45387     }
45388 
45389     VULKAN_HPP_CONSTEXPR ImageSwapchainCreateInfoKHR( ImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45390 
ImageSwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR45391     ImageSwapchainCreateInfoKHR( VkImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
45392       : ImageSwapchainCreateInfoKHR( *reinterpret_cast<ImageSwapchainCreateInfoKHR const *>( &rhs ) )
45393     {
45394     }
45395 
45396     ImageSwapchainCreateInfoKHR & operator=( ImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45397 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45398 
operator =VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR45399     ImageSwapchainCreateInfoKHR & operator=( VkImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
45400     {
45401       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR const *>( &rhs );
45402       return *this;
45403     }
45404 
45405 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR45406     VULKAN_HPP_CONSTEXPR_14 ImageSwapchainCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45407     {
45408       pNext = pNext_;
45409       return *this;
45410     }
45411 
setSwapchainVULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR45412     VULKAN_HPP_CONSTEXPR_14 ImageSwapchainCreateInfoKHR & setSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ ) VULKAN_HPP_NOEXCEPT
45413     {
45414       swapchain = swapchain_;
45415       return *this;
45416     }
45417 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45418 
operator VkImageSwapchainCreateInfoKHR const&VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR45419     operator VkImageSwapchainCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
45420     {
45421       return *reinterpret_cast<const VkImageSwapchainCreateInfoKHR *>( this );
45422     }
45423 
operator VkImageSwapchainCreateInfoKHR&VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR45424     operator VkImageSwapchainCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
45425     {
45426       return *reinterpret_cast<VkImageSwapchainCreateInfoKHR *>( this );
45427     }
45428 
45429 #if defined( VULKAN_HPP_USE_REFLECT )
45430 #  if 14 <= VULKAN_HPP_CPP_VERSION
45431     auto
45432 #  else
45433     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SwapchainKHR const &>
45434 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR45435       reflect() const VULKAN_HPP_NOEXCEPT
45436     {
45437       return std::tie( sType, pNext, swapchain );
45438     }
45439 #endif
45440 
45441 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45442     auto operator<=>( ImageSwapchainCreateInfoKHR const & ) const = default;
45443 #else
operator ==VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR45444     bool operator==( ImageSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
45445     {
45446 #  if defined( VULKAN_HPP_USE_REFLECT )
45447       return this->reflect() == rhs.reflect();
45448 #  else
45449       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchain == rhs.swapchain );
45450 #  endif
45451     }
45452 
operator !=VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR45453     bool operator!=( ImageSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
45454     {
45455       return !operator==( rhs );
45456     }
45457 #endif
45458 
45459   public:
45460     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eImageSwapchainCreateInfoKHR;
45461     const void *                        pNext     = {};
45462     VULKAN_HPP_NAMESPACE::SwapchainKHR  swapchain = {};
45463   };
45464 
45465   template <>
45466   struct CppType<StructureType, StructureType::eImageSwapchainCreateInfoKHR>
45467   {
45468     using Type = ImageSwapchainCreateInfoKHR;
45469   };
45470 
45471   struct ImageViewASTCDecodeModeEXT
45472   {
45473     using NativeType = VkImageViewASTCDecodeModeEXT;
45474 
45475     static const bool                                  allowDuplicate = false;
45476     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewAstcDecodeModeEXT;
45477 
45478 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewASTCDecodeModeEXTVULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT45479     VULKAN_HPP_CONSTEXPR ImageViewASTCDecodeModeEXT( VULKAN_HPP_NAMESPACE::Format decodeMode_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
45480                                                      const void *                 pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
45481       : pNext{ pNext_ }
45482       , decodeMode{ decodeMode_ }
45483     {
45484     }
45485 
45486     VULKAN_HPP_CONSTEXPR ImageViewASTCDecodeModeEXT( ImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45487 
ImageViewASTCDecodeModeEXTVULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT45488     ImageViewASTCDecodeModeEXT( VkImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT
45489       : ImageViewASTCDecodeModeEXT( *reinterpret_cast<ImageViewASTCDecodeModeEXT const *>( &rhs ) )
45490     {
45491     }
45492 
45493     ImageViewASTCDecodeModeEXT & operator=( ImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45494 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45495 
operator =VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT45496     ImageViewASTCDecodeModeEXT & operator=( VkImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT
45497     {
45498       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT const *>( &rhs );
45499       return *this;
45500     }
45501 
45502 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT45503     VULKAN_HPP_CONSTEXPR_14 ImageViewASTCDecodeModeEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45504     {
45505       pNext = pNext_;
45506       return *this;
45507     }
45508 
setDecodeModeVULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT45509     VULKAN_HPP_CONSTEXPR_14 ImageViewASTCDecodeModeEXT & setDecodeMode( VULKAN_HPP_NAMESPACE::Format decodeMode_ ) VULKAN_HPP_NOEXCEPT
45510     {
45511       decodeMode = decodeMode_;
45512       return *this;
45513     }
45514 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45515 
operator VkImageViewASTCDecodeModeEXT const&VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT45516     operator VkImageViewASTCDecodeModeEXT const &() const VULKAN_HPP_NOEXCEPT
45517     {
45518       return *reinterpret_cast<const VkImageViewASTCDecodeModeEXT *>( this );
45519     }
45520 
operator VkImageViewASTCDecodeModeEXT&VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT45521     operator VkImageViewASTCDecodeModeEXT &() VULKAN_HPP_NOEXCEPT
45522     {
45523       return *reinterpret_cast<VkImageViewASTCDecodeModeEXT *>( this );
45524     }
45525 
45526 #if defined( VULKAN_HPP_USE_REFLECT )
45527 #  if 14 <= VULKAN_HPP_CPP_VERSION
45528     auto
45529 #  else
45530     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Format const &>
45531 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT45532       reflect() const VULKAN_HPP_NOEXCEPT
45533     {
45534       return std::tie( sType, pNext, decodeMode );
45535     }
45536 #endif
45537 
45538 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45539     auto operator<=>( ImageViewASTCDecodeModeEXT const & ) const = default;
45540 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT45541     bool operator==( ImageViewASTCDecodeModeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
45542     {
45543 #  if defined( VULKAN_HPP_USE_REFLECT )
45544       return this->reflect() == rhs.reflect();
45545 #  else
45546       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( decodeMode == rhs.decodeMode );
45547 #  endif
45548     }
45549 
operator !=VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT45550     bool operator!=( ImageViewASTCDecodeModeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
45551     {
45552       return !operator==( rhs );
45553     }
45554 #endif
45555 
45556   public:
45557     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eImageViewAstcDecodeModeEXT;
45558     const void *                        pNext      = {};
45559     VULKAN_HPP_NAMESPACE::Format        decodeMode = VULKAN_HPP_NAMESPACE::Format::eUndefined;
45560   };
45561 
45562   template <>
45563   struct CppType<StructureType, StructureType::eImageViewAstcDecodeModeEXT>
45564   {
45565     using Type = ImageViewASTCDecodeModeEXT;
45566   };
45567 
45568   struct ImageViewAddressPropertiesNVX
45569   {
45570     using NativeType = VkImageViewAddressPropertiesNVX;
45571 
45572     static const bool                                  allowDuplicate = false;
45573     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewAddressPropertiesNVX;
45574 
45575 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewAddressPropertiesNVXVULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX45576     VULKAN_HPP_CONSTEXPR ImageViewAddressPropertiesNVX( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {},
45577                                                         VULKAN_HPP_NAMESPACE::DeviceSize    size_          = {},
45578                                                         void *                              pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
45579       : pNext{ pNext_ }
45580       , deviceAddress{ deviceAddress_ }
45581       , size{ size_ }
45582     {
45583     }
45584 
45585     VULKAN_HPP_CONSTEXPR ImageViewAddressPropertiesNVX( ImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45586 
ImageViewAddressPropertiesNVXVULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX45587     ImageViewAddressPropertiesNVX( VkImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT
45588       : ImageViewAddressPropertiesNVX( *reinterpret_cast<ImageViewAddressPropertiesNVX const *>( &rhs ) )
45589     {
45590     }
45591 
45592     ImageViewAddressPropertiesNVX & operator=( ImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45593 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45594 
operator =VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX45595     ImageViewAddressPropertiesNVX & operator=( VkImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT
45596     {
45597       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX const *>( &rhs );
45598       return *this;
45599     }
45600 
operator VkImageViewAddressPropertiesNVX const&VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX45601     operator VkImageViewAddressPropertiesNVX const &() const VULKAN_HPP_NOEXCEPT
45602     {
45603       return *reinterpret_cast<const VkImageViewAddressPropertiesNVX *>( this );
45604     }
45605 
operator VkImageViewAddressPropertiesNVX&VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX45606     operator VkImageViewAddressPropertiesNVX &() VULKAN_HPP_NOEXCEPT
45607     {
45608       return *reinterpret_cast<VkImageViewAddressPropertiesNVX *>( this );
45609     }
45610 
45611 #if defined( VULKAN_HPP_USE_REFLECT )
45612 #  if 14 <= VULKAN_HPP_CPP_VERSION
45613     auto
45614 #  else
45615     std::
45616       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceAddress const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
45617 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX45618       reflect() const VULKAN_HPP_NOEXCEPT
45619     {
45620       return std::tie( sType, pNext, deviceAddress, size );
45621     }
45622 #endif
45623 
45624 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45625     auto operator<=>( ImageViewAddressPropertiesNVX const & ) const = default;
45626 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX45627     bool operator==( ImageViewAddressPropertiesNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
45628     {
45629 #  if defined( VULKAN_HPP_USE_REFLECT )
45630       return this->reflect() == rhs.reflect();
45631 #  else
45632       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceAddress == rhs.deviceAddress ) && ( size == rhs.size );
45633 #  endif
45634     }
45635 
operator !=VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX45636     bool operator!=( ImageViewAddressPropertiesNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
45637     {
45638       return !operator==( rhs );
45639     }
45640 #endif
45641 
45642   public:
45643     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eImageViewAddressPropertiesNVX;
45644     void *                              pNext         = {};
45645     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress = {};
45646     VULKAN_HPP_NAMESPACE::DeviceSize    size          = {};
45647   };
45648 
45649   template <>
45650   struct CppType<StructureType, StructureType::eImageViewAddressPropertiesNVX>
45651   {
45652     using Type = ImageViewAddressPropertiesNVX;
45653   };
45654 
45655   struct ImageViewCaptureDescriptorDataInfoEXT
45656   {
45657     using NativeType = VkImageViewCaptureDescriptorDataInfoEXT;
45658 
45659     static const bool                                  allowDuplicate = false;
45660     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewCaptureDescriptorDataInfoEXT;
45661 
45662 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewCaptureDescriptorDataInfoEXTVULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT45663     VULKAN_HPP_CONSTEXPR ImageViewCaptureDescriptorDataInfoEXT( VULKAN_HPP_NAMESPACE::ImageView imageView_ = {},
45664                                                                 const void *                    pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
45665       : pNext{ pNext_ }
45666       , imageView{ imageView_ }
45667     {
45668     }
45669 
45670     VULKAN_HPP_CONSTEXPR ImageViewCaptureDescriptorDataInfoEXT( ImageViewCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45671 
ImageViewCaptureDescriptorDataInfoEXTVULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT45672     ImageViewCaptureDescriptorDataInfoEXT( VkImageViewCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
45673       : ImageViewCaptureDescriptorDataInfoEXT( *reinterpret_cast<ImageViewCaptureDescriptorDataInfoEXT const *>( &rhs ) )
45674     {
45675     }
45676 
45677     ImageViewCaptureDescriptorDataInfoEXT & operator=( ImageViewCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45678 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45679 
operator =VULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT45680     ImageViewCaptureDescriptorDataInfoEXT & operator=( VkImageViewCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
45681     {
45682       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT const *>( &rhs );
45683       return *this;
45684     }
45685 
45686 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT45687     VULKAN_HPP_CONSTEXPR_14 ImageViewCaptureDescriptorDataInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45688     {
45689       pNext = pNext_;
45690       return *this;
45691     }
45692 
setImageViewVULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT45693     VULKAN_HPP_CONSTEXPR_14 ImageViewCaptureDescriptorDataInfoEXT & setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT
45694     {
45695       imageView = imageView_;
45696       return *this;
45697     }
45698 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45699 
operator VkImageViewCaptureDescriptorDataInfoEXT const&VULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT45700     operator VkImageViewCaptureDescriptorDataInfoEXT const &() const VULKAN_HPP_NOEXCEPT
45701     {
45702       return *reinterpret_cast<const VkImageViewCaptureDescriptorDataInfoEXT *>( this );
45703     }
45704 
operator VkImageViewCaptureDescriptorDataInfoEXT&VULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT45705     operator VkImageViewCaptureDescriptorDataInfoEXT &() VULKAN_HPP_NOEXCEPT
45706     {
45707       return *reinterpret_cast<VkImageViewCaptureDescriptorDataInfoEXT *>( this );
45708     }
45709 
45710 #if defined( VULKAN_HPP_USE_REFLECT )
45711 #  if 14 <= VULKAN_HPP_CPP_VERSION
45712     auto
45713 #  else
45714     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageView const &>
45715 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT45716       reflect() const VULKAN_HPP_NOEXCEPT
45717     {
45718       return std::tie( sType, pNext, imageView );
45719     }
45720 #endif
45721 
45722 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45723     auto operator<=>( ImageViewCaptureDescriptorDataInfoEXT const & ) const = default;
45724 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT45725     bool operator==( ImageViewCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
45726     {
45727 #  if defined( VULKAN_HPP_USE_REFLECT )
45728       return this->reflect() == rhs.reflect();
45729 #  else
45730       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageView == rhs.imageView );
45731 #  endif
45732     }
45733 
operator !=VULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT45734     bool operator!=( ImageViewCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
45735     {
45736       return !operator==( rhs );
45737     }
45738 #endif
45739 
45740   public:
45741     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eImageViewCaptureDescriptorDataInfoEXT;
45742     const void *                        pNext     = {};
45743     VULKAN_HPP_NAMESPACE::ImageView     imageView = {};
45744   };
45745 
45746   template <>
45747   struct CppType<StructureType, StructureType::eImageViewCaptureDescriptorDataInfoEXT>
45748   {
45749     using Type = ImageViewCaptureDescriptorDataInfoEXT;
45750   };
45751 
45752   struct ImageViewCreateInfo
45753   {
45754     using NativeType = VkImageViewCreateInfo;
45755 
45756     static const bool                                  allowDuplicate = false;
45757     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewCreateInfo;
45758 
45759 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewCreateInfoVULKAN_HPP_NAMESPACE::ImageViewCreateInfo45760     VULKAN_HPP_CONSTEXPR ImageViewCreateInfo( VULKAN_HPP_NAMESPACE::ImageViewCreateFlags  flags_            = {},
45761                                               VULKAN_HPP_NAMESPACE::Image                 image_            = {},
45762                                               VULKAN_HPP_NAMESPACE::ImageViewType         viewType_         = VULKAN_HPP_NAMESPACE::ImageViewType::e1D,
45763                                               VULKAN_HPP_NAMESPACE::Format                format_           = VULKAN_HPP_NAMESPACE::Format::eUndefined,
45764                                               VULKAN_HPP_NAMESPACE::ComponentMapping      components_       = {},
45765                                               VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange_ = {},
45766                                               const void *                                pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
45767       : pNext{ pNext_ }
45768       , flags{ flags_ }
45769       , image{ image_ }
45770       , viewType{ viewType_ }
45771       , format{ format_ }
45772       , components{ components_ }
45773       , subresourceRange{ subresourceRange_ }
45774     {
45775     }
45776 
45777     VULKAN_HPP_CONSTEXPR ImageViewCreateInfo( ImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45778 
ImageViewCreateInfoVULKAN_HPP_NAMESPACE::ImageViewCreateInfo45779     ImageViewCreateInfo( VkImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : ImageViewCreateInfo( *reinterpret_cast<ImageViewCreateInfo const *>( &rhs ) )
45780     {
45781     }
45782 
45783     ImageViewCreateInfo & operator=( ImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45784 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45785 
operator =VULKAN_HPP_NAMESPACE::ImageViewCreateInfo45786     ImageViewCreateInfo & operator=( VkImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
45787     {
45788       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewCreateInfo const *>( &rhs );
45789       return *this;
45790     }
45791 
45792 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewCreateInfo45793     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45794     {
45795       pNext = pNext_;
45796       return *this;
45797     }
45798 
setFlagsVULKAN_HPP_NAMESPACE::ImageViewCreateInfo45799     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::ImageViewCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
45800     {
45801       flags = flags_;
45802       return *this;
45803     }
45804 
setImageVULKAN_HPP_NAMESPACE::ImageViewCreateInfo45805     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
45806     {
45807       image = image_;
45808       return *this;
45809     }
45810 
setViewTypeVULKAN_HPP_NAMESPACE::ImageViewCreateInfo45811     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setViewType( VULKAN_HPP_NAMESPACE::ImageViewType viewType_ ) VULKAN_HPP_NOEXCEPT
45812     {
45813       viewType = viewType_;
45814       return *this;
45815     }
45816 
setFormatVULKAN_HPP_NAMESPACE::ImageViewCreateInfo45817     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
45818     {
45819       format = format_;
45820       return *this;
45821     }
45822 
setComponentsVULKAN_HPP_NAMESPACE::ImageViewCreateInfo45823     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setComponents( VULKAN_HPP_NAMESPACE::ComponentMapping const & components_ ) VULKAN_HPP_NOEXCEPT
45824     {
45825       components = components_;
45826       return *this;
45827     }
45828 
45829     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo &
setSubresourceRangeVULKAN_HPP_NAMESPACE::ImageViewCreateInfo45830       setSubresourceRange( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & subresourceRange_ ) VULKAN_HPP_NOEXCEPT
45831     {
45832       subresourceRange = subresourceRange_;
45833       return *this;
45834     }
45835 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45836 
operator VkImageViewCreateInfo const&VULKAN_HPP_NAMESPACE::ImageViewCreateInfo45837     operator VkImageViewCreateInfo const &() const VULKAN_HPP_NOEXCEPT
45838     {
45839       return *reinterpret_cast<const VkImageViewCreateInfo *>( this );
45840     }
45841 
operator VkImageViewCreateInfo&VULKAN_HPP_NAMESPACE::ImageViewCreateInfo45842     operator VkImageViewCreateInfo &() VULKAN_HPP_NOEXCEPT
45843     {
45844       return *reinterpret_cast<VkImageViewCreateInfo *>( this );
45845     }
45846 
45847 #if defined( VULKAN_HPP_USE_REFLECT )
45848 #  if 14 <= VULKAN_HPP_CPP_VERSION
45849     auto
45850 #  else
45851     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
45852                const void * const &,
45853                VULKAN_HPP_NAMESPACE::ImageViewCreateFlags const &,
45854                VULKAN_HPP_NAMESPACE::Image const &,
45855                VULKAN_HPP_NAMESPACE::ImageViewType const &,
45856                VULKAN_HPP_NAMESPACE::Format const &,
45857                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
45858                VULKAN_HPP_NAMESPACE::ImageSubresourceRange const &>
45859 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageViewCreateInfo45860       reflect() const VULKAN_HPP_NOEXCEPT
45861     {
45862       return std::tie( sType, pNext, flags, image, viewType, format, components, subresourceRange );
45863     }
45864 #endif
45865 
45866 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45867     auto operator<=>( ImageViewCreateInfo const & ) const = default;
45868 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewCreateInfo45869     bool operator==( ImageViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
45870     {
45871 #  if defined( VULKAN_HPP_USE_REFLECT )
45872       return this->reflect() == rhs.reflect();
45873 #  else
45874       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( image == rhs.image ) && ( viewType == rhs.viewType ) &&
45875              ( format == rhs.format ) && ( components == rhs.components ) && ( subresourceRange == rhs.subresourceRange );
45876 #  endif
45877     }
45878 
operator !=VULKAN_HPP_NAMESPACE::ImageViewCreateInfo45879     bool operator!=( ImageViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
45880     {
45881       return !operator==( rhs );
45882     }
45883 #endif
45884 
45885   public:
45886     VULKAN_HPP_NAMESPACE::StructureType         sType            = StructureType::eImageViewCreateInfo;
45887     const void *                                pNext            = {};
45888     VULKAN_HPP_NAMESPACE::ImageViewCreateFlags  flags            = {};
45889     VULKAN_HPP_NAMESPACE::Image                 image            = {};
45890     VULKAN_HPP_NAMESPACE::ImageViewType         viewType         = VULKAN_HPP_NAMESPACE::ImageViewType::e1D;
45891     VULKAN_HPP_NAMESPACE::Format                format           = VULKAN_HPP_NAMESPACE::Format::eUndefined;
45892     VULKAN_HPP_NAMESPACE::ComponentMapping      components       = {};
45893     VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange = {};
45894   };
45895 
45896   template <>
45897   struct CppType<StructureType, StructureType::eImageViewCreateInfo>
45898   {
45899     using Type = ImageViewCreateInfo;
45900   };
45901 
45902   struct ImageViewHandleInfoNVX
45903   {
45904     using NativeType = VkImageViewHandleInfoNVX;
45905 
45906     static const bool                                  allowDuplicate = false;
45907     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewHandleInfoNVX;
45908 
45909 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewHandleInfoNVXVULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX45910     VULKAN_HPP_CONSTEXPR ImageViewHandleInfoNVX( VULKAN_HPP_NAMESPACE::ImageView      imageView_      = {},
45911                                                  VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler,
45912                                                  VULKAN_HPP_NAMESPACE::Sampler        sampler_        = {},
45913                                                  const void *                         pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
45914       : pNext{ pNext_ }
45915       , imageView{ imageView_ }
45916       , descriptorType{ descriptorType_ }
45917       , sampler{ sampler_ }
45918     {
45919     }
45920 
45921     VULKAN_HPP_CONSTEXPR ImageViewHandleInfoNVX( ImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45922 
ImageViewHandleInfoNVXVULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX45923     ImageViewHandleInfoNVX( VkImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
45924       : ImageViewHandleInfoNVX( *reinterpret_cast<ImageViewHandleInfoNVX const *>( &rhs ) )
45925     {
45926     }
45927 
45928     ImageViewHandleInfoNVX & operator=( ImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45929 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45930 
operator =VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX45931     ImageViewHandleInfoNVX & operator=( VkImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
45932     {
45933       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX const *>( &rhs );
45934       return *this;
45935     }
45936 
45937 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX45938     VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45939     {
45940       pNext = pNext_;
45941       return *this;
45942     }
45943 
setImageViewVULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX45944     VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX & setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT
45945     {
45946       imageView = imageView_;
45947       return *this;
45948     }
45949 
setDescriptorTypeVULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX45950     VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX & setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT
45951     {
45952       descriptorType = descriptorType_;
45953       return *this;
45954     }
45955 
setSamplerVULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX45956     VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX & setSampler( VULKAN_HPP_NAMESPACE::Sampler sampler_ ) VULKAN_HPP_NOEXCEPT
45957     {
45958       sampler = sampler_;
45959       return *this;
45960     }
45961 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45962 
operator VkImageViewHandleInfoNVX const&VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX45963     operator VkImageViewHandleInfoNVX const &() const VULKAN_HPP_NOEXCEPT
45964     {
45965       return *reinterpret_cast<const VkImageViewHandleInfoNVX *>( this );
45966     }
45967 
operator VkImageViewHandleInfoNVX&VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX45968     operator VkImageViewHandleInfoNVX &() VULKAN_HPP_NOEXCEPT
45969     {
45970       return *reinterpret_cast<VkImageViewHandleInfoNVX *>( this );
45971     }
45972 
45973 #if defined( VULKAN_HPP_USE_REFLECT )
45974 #  if 14 <= VULKAN_HPP_CPP_VERSION
45975     auto
45976 #  else
45977     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
45978                const void * const &,
45979                VULKAN_HPP_NAMESPACE::ImageView const &,
45980                VULKAN_HPP_NAMESPACE::DescriptorType const &,
45981                VULKAN_HPP_NAMESPACE::Sampler const &>
45982 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX45983       reflect() const VULKAN_HPP_NOEXCEPT
45984     {
45985       return std::tie( sType, pNext, imageView, descriptorType, sampler );
45986     }
45987 #endif
45988 
45989 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
45990     auto operator<=>( ImageViewHandleInfoNVX const & ) const = default;
45991 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX45992     bool operator==( ImageViewHandleInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
45993     {
45994 #  if defined( VULKAN_HPP_USE_REFLECT )
45995       return this->reflect() == rhs.reflect();
45996 #  else
45997       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageView == rhs.imageView ) && ( descriptorType == rhs.descriptorType ) &&
45998              ( sampler == rhs.sampler );
45999 #  endif
46000     }
46001 
operator !=VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX46002     bool operator!=( ImageViewHandleInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
46003     {
46004       return !operator==( rhs );
46005     }
46006 #endif
46007 
46008   public:
46009     VULKAN_HPP_NAMESPACE::StructureType  sType          = StructureType::eImageViewHandleInfoNVX;
46010     const void *                         pNext          = {};
46011     VULKAN_HPP_NAMESPACE::ImageView      imageView      = {};
46012     VULKAN_HPP_NAMESPACE::DescriptorType descriptorType = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler;
46013     VULKAN_HPP_NAMESPACE::Sampler        sampler        = {};
46014   };
46015 
46016   template <>
46017   struct CppType<StructureType, StructureType::eImageViewHandleInfoNVX>
46018   {
46019     using Type = ImageViewHandleInfoNVX;
46020   };
46021 
46022   struct ImageViewMinLodCreateInfoEXT
46023   {
46024     using NativeType = VkImageViewMinLodCreateInfoEXT;
46025 
46026     static const bool                                  allowDuplicate = false;
46027     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewMinLodCreateInfoEXT;
46028 
46029 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewMinLodCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT46030     VULKAN_HPP_CONSTEXPR ImageViewMinLodCreateInfoEXT( float minLod_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
46031       : pNext{ pNext_ }
46032       , minLod{ minLod_ }
46033     {
46034     }
46035 
46036     VULKAN_HPP_CONSTEXPR ImageViewMinLodCreateInfoEXT( ImageViewMinLodCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46037 
ImageViewMinLodCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT46038     ImageViewMinLodCreateInfoEXT( VkImageViewMinLodCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
46039       : ImageViewMinLodCreateInfoEXT( *reinterpret_cast<ImageViewMinLodCreateInfoEXT const *>( &rhs ) )
46040     {
46041     }
46042 
46043     ImageViewMinLodCreateInfoEXT & operator=( ImageViewMinLodCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46044 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46045 
operator =VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT46046     ImageViewMinLodCreateInfoEXT & operator=( VkImageViewMinLodCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
46047     {
46048       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT const *>( &rhs );
46049       return *this;
46050     }
46051 
46052 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT46053     VULKAN_HPP_CONSTEXPR_14 ImageViewMinLodCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46054     {
46055       pNext = pNext_;
46056       return *this;
46057     }
46058 
setMinLodVULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT46059     VULKAN_HPP_CONSTEXPR_14 ImageViewMinLodCreateInfoEXT & setMinLod( float minLod_ ) VULKAN_HPP_NOEXCEPT
46060     {
46061       minLod = minLod_;
46062       return *this;
46063     }
46064 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46065 
operator VkImageViewMinLodCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT46066     operator VkImageViewMinLodCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
46067     {
46068       return *reinterpret_cast<const VkImageViewMinLodCreateInfoEXT *>( this );
46069     }
46070 
operator VkImageViewMinLodCreateInfoEXT&VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT46071     operator VkImageViewMinLodCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
46072     {
46073       return *reinterpret_cast<VkImageViewMinLodCreateInfoEXT *>( this );
46074     }
46075 
46076 #if defined( VULKAN_HPP_USE_REFLECT )
46077 #  if 14 <= VULKAN_HPP_CPP_VERSION
46078     auto
46079 #  else
46080     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, float const &>
46081 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT46082       reflect() const VULKAN_HPP_NOEXCEPT
46083     {
46084       return std::tie( sType, pNext, minLod );
46085     }
46086 #endif
46087 
46088 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46089     auto operator<=>( ImageViewMinLodCreateInfoEXT const & ) const = default;
46090 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT46091     bool operator==( ImageViewMinLodCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
46092     {
46093 #  if defined( VULKAN_HPP_USE_REFLECT )
46094       return this->reflect() == rhs.reflect();
46095 #  else
46096       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minLod == rhs.minLod );
46097 #  endif
46098     }
46099 
operator !=VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT46100     bool operator!=( ImageViewMinLodCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
46101     {
46102       return !operator==( rhs );
46103     }
46104 #endif
46105 
46106   public:
46107     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eImageViewMinLodCreateInfoEXT;
46108     const void *                        pNext  = {};
46109     float                               minLod = {};
46110   };
46111 
46112   template <>
46113   struct CppType<StructureType, StructureType::eImageViewMinLodCreateInfoEXT>
46114   {
46115     using Type = ImageViewMinLodCreateInfoEXT;
46116   };
46117 
46118   struct ImageViewSampleWeightCreateInfoQCOM
46119   {
46120     using NativeType = VkImageViewSampleWeightCreateInfoQCOM;
46121 
46122     static const bool                                  allowDuplicate = false;
46123     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewSampleWeightCreateInfoQCOM;
46124 
46125 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewSampleWeightCreateInfoQCOMVULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46126     VULKAN_HPP_CONSTEXPR ImageViewSampleWeightCreateInfoQCOM( VULKAN_HPP_NAMESPACE::Offset2D filterCenter_ = {},
46127                                                               VULKAN_HPP_NAMESPACE::Extent2D filterSize_   = {},
46128                                                               uint32_t                       numPhases_    = {},
46129                                                               const void *                   pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
46130       : pNext{ pNext_ }
46131       , filterCenter{ filterCenter_ }
46132       , filterSize{ filterSize_ }
46133       , numPhases{ numPhases_ }
46134     {
46135     }
46136 
46137     VULKAN_HPP_CONSTEXPR ImageViewSampleWeightCreateInfoQCOM( ImageViewSampleWeightCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46138 
ImageViewSampleWeightCreateInfoQCOMVULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46139     ImageViewSampleWeightCreateInfoQCOM( VkImageViewSampleWeightCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
46140       : ImageViewSampleWeightCreateInfoQCOM( *reinterpret_cast<ImageViewSampleWeightCreateInfoQCOM const *>( &rhs ) )
46141     {
46142     }
46143 
46144     ImageViewSampleWeightCreateInfoQCOM & operator=( ImageViewSampleWeightCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46145 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46146 
operator =VULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46147     ImageViewSampleWeightCreateInfoQCOM & operator=( VkImageViewSampleWeightCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
46148     {
46149       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM const *>( &rhs );
46150       return *this;
46151     }
46152 
46153 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46154     VULKAN_HPP_CONSTEXPR_14 ImageViewSampleWeightCreateInfoQCOM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46155     {
46156       pNext = pNext_;
46157       return *this;
46158     }
46159 
setFilterCenterVULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46160     VULKAN_HPP_CONSTEXPR_14 ImageViewSampleWeightCreateInfoQCOM & setFilterCenter( VULKAN_HPP_NAMESPACE::Offset2D const & filterCenter_ ) VULKAN_HPP_NOEXCEPT
46161     {
46162       filterCenter = filterCenter_;
46163       return *this;
46164     }
46165 
setFilterSizeVULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46166     VULKAN_HPP_CONSTEXPR_14 ImageViewSampleWeightCreateInfoQCOM & setFilterSize( VULKAN_HPP_NAMESPACE::Extent2D const & filterSize_ ) VULKAN_HPP_NOEXCEPT
46167     {
46168       filterSize = filterSize_;
46169       return *this;
46170     }
46171 
setNumPhasesVULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46172     VULKAN_HPP_CONSTEXPR_14 ImageViewSampleWeightCreateInfoQCOM & setNumPhases( uint32_t numPhases_ ) VULKAN_HPP_NOEXCEPT
46173     {
46174       numPhases = numPhases_;
46175       return *this;
46176     }
46177 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46178 
operator VkImageViewSampleWeightCreateInfoQCOM const&VULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46179     operator VkImageViewSampleWeightCreateInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
46180     {
46181       return *reinterpret_cast<const VkImageViewSampleWeightCreateInfoQCOM *>( this );
46182     }
46183 
operator VkImageViewSampleWeightCreateInfoQCOM&VULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46184     operator VkImageViewSampleWeightCreateInfoQCOM &() VULKAN_HPP_NOEXCEPT
46185     {
46186       return *reinterpret_cast<VkImageViewSampleWeightCreateInfoQCOM *>( this );
46187     }
46188 
46189 #if defined( VULKAN_HPP_USE_REFLECT )
46190 #  if 14 <= VULKAN_HPP_CPP_VERSION
46191     auto
46192 #  else
46193     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
46194                const void * const &,
46195                VULKAN_HPP_NAMESPACE::Offset2D const &,
46196                VULKAN_HPP_NAMESPACE::Extent2D const &,
46197                uint32_t const &>
46198 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46199       reflect() const VULKAN_HPP_NOEXCEPT
46200     {
46201       return std::tie( sType, pNext, filterCenter, filterSize, numPhases );
46202     }
46203 #endif
46204 
46205 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46206     auto operator<=>( ImageViewSampleWeightCreateInfoQCOM const & ) const = default;
46207 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46208     bool operator==( ImageViewSampleWeightCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
46209     {
46210 #  if defined( VULKAN_HPP_USE_REFLECT )
46211       return this->reflect() == rhs.reflect();
46212 #  else
46213       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( filterCenter == rhs.filterCenter ) && ( filterSize == rhs.filterSize ) &&
46214              ( numPhases == rhs.numPhases );
46215 #  endif
46216     }
46217 
operator !=VULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM46218     bool operator!=( ImageViewSampleWeightCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
46219     {
46220       return !operator==( rhs );
46221     }
46222 #endif
46223 
46224   public:
46225     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eImageViewSampleWeightCreateInfoQCOM;
46226     const void *                        pNext        = {};
46227     VULKAN_HPP_NAMESPACE::Offset2D      filterCenter = {};
46228     VULKAN_HPP_NAMESPACE::Extent2D      filterSize   = {};
46229     uint32_t                            numPhases    = {};
46230   };
46231 
46232   template <>
46233   struct CppType<StructureType, StructureType::eImageViewSampleWeightCreateInfoQCOM>
46234   {
46235     using Type = ImageViewSampleWeightCreateInfoQCOM;
46236   };
46237 
46238   struct ImageViewSlicedCreateInfoEXT
46239   {
46240     using NativeType = VkImageViewSlicedCreateInfoEXT;
46241 
46242     static const bool                                  allowDuplicate = false;
46243     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewSlicedCreateInfoEXT;
46244 
46245 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
46246     VULKAN_HPP_CONSTEXPR
ImageViewSlicedCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46247       ImageViewSlicedCreateInfoEXT( uint32_t sliceOffset_ = {}, uint32_t sliceCount_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
46248       : pNext{ pNext_ }
46249       , sliceOffset{ sliceOffset_ }
46250       , sliceCount{ sliceCount_ }
46251     {
46252     }
46253 
46254     VULKAN_HPP_CONSTEXPR ImageViewSlicedCreateInfoEXT( ImageViewSlicedCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46255 
ImageViewSlicedCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46256     ImageViewSlicedCreateInfoEXT( VkImageViewSlicedCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
46257       : ImageViewSlicedCreateInfoEXT( *reinterpret_cast<ImageViewSlicedCreateInfoEXT const *>( &rhs ) )
46258     {
46259     }
46260 
46261     ImageViewSlicedCreateInfoEXT & operator=( ImageViewSlicedCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46262 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46263 
operator =VULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46264     ImageViewSlicedCreateInfoEXT & operator=( VkImageViewSlicedCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
46265     {
46266       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT const *>( &rhs );
46267       return *this;
46268     }
46269 
46270 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46271     VULKAN_HPP_CONSTEXPR_14 ImageViewSlicedCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46272     {
46273       pNext = pNext_;
46274       return *this;
46275     }
46276 
setSliceOffsetVULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46277     VULKAN_HPP_CONSTEXPR_14 ImageViewSlicedCreateInfoEXT & setSliceOffset( uint32_t sliceOffset_ ) VULKAN_HPP_NOEXCEPT
46278     {
46279       sliceOffset = sliceOffset_;
46280       return *this;
46281     }
46282 
setSliceCountVULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46283     VULKAN_HPP_CONSTEXPR_14 ImageViewSlicedCreateInfoEXT & setSliceCount( uint32_t sliceCount_ ) VULKAN_HPP_NOEXCEPT
46284     {
46285       sliceCount = sliceCount_;
46286       return *this;
46287     }
46288 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46289 
operator VkImageViewSlicedCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46290     operator VkImageViewSlicedCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
46291     {
46292       return *reinterpret_cast<const VkImageViewSlicedCreateInfoEXT *>( this );
46293     }
46294 
operator VkImageViewSlicedCreateInfoEXT&VULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46295     operator VkImageViewSlicedCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
46296     {
46297       return *reinterpret_cast<VkImageViewSlicedCreateInfoEXT *>( this );
46298     }
46299 
46300 #if defined( VULKAN_HPP_USE_REFLECT )
46301 #  if 14 <= VULKAN_HPP_CPP_VERSION
46302     auto
46303 #  else
46304     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, uint32_t const &>
46305 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46306       reflect() const VULKAN_HPP_NOEXCEPT
46307     {
46308       return std::tie( sType, pNext, sliceOffset, sliceCount );
46309     }
46310 #endif
46311 
46312 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46313     auto operator<=>( ImageViewSlicedCreateInfoEXT const & ) const = default;
46314 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46315     bool operator==( ImageViewSlicedCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
46316     {
46317 #  if defined( VULKAN_HPP_USE_REFLECT )
46318       return this->reflect() == rhs.reflect();
46319 #  else
46320       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sliceOffset == rhs.sliceOffset ) && ( sliceCount == rhs.sliceCount );
46321 #  endif
46322     }
46323 
operator !=VULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT46324     bool operator!=( ImageViewSlicedCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
46325     {
46326       return !operator==( rhs );
46327     }
46328 #endif
46329 
46330   public:
46331     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eImageViewSlicedCreateInfoEXT;
46332     const void *                        pNext       = {};
46333     uint32_t                            sliceOffset = {};
46334     uint32_t                            sliceCount  = {};
46335   };
46336 
46337   template <>
46338   struct CppType<StructureType, StructureType::eImageViewSlicedCreateInfoEXT>
46339   {
46340     using Type = ImageViewSlicedCreateInfoEXT;
46341   };
46342 
46343   struct ImageViewUsageCreateInfo
46344   {
46345     using NativeType = VkImageViewUsageCreateInfo;
46346 
46347     static const bool                                  allowDuplicate = false;
46348     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImageViewUsageCreateInfo;
46349 
46350 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewUsageCreateInfoVULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo46351     VULKAN_HPP_CONSTEXPR ImageViewUsageCreateInfo( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
46352       : pNext{ pNext_ }
46353       , usage{ usage_ }
46354     {
46355     }
46356 
46357     VULKAN_HPP_CONSTEXPR ImageViewUsageCreateInfo( ImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46358 
ImageViewUsageCreateInfoVULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo46359     ImageViewUsageCreateInfo( VkImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
46360       : ImageViewUsageCreateInfo( *reinterpret_cast<ImageViewUsageCreateInfo const *>( &rhs ) )
46361     {
46362     }
46363 
46364     ImageViewUsageCreateInfo & operator=( ImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46365 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46366 
operator =VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo46367     ImageViewUsageCreateInfo & operator=( VkImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
46368     {
46369       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo const *>( &rhs );
46370       return *this;
46371     }
46372 
46373 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo46374     VULKAN_HPP_CONSTEXPR_14 ImageViewUsageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46375     {
46376       pNext = pNext_;
46377       return *this;
46378     }
46379 
setUsageVULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo46380     VULKAN_HPP_CONSTEXPR_14 ImageViewUsageCreateInfo & setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
46381     {
46382       usage = usage_;
46383       return *this;
46384     }
46385 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46386 
operator VkImageViewUsageCreateInfo const&VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo46387     operator VkImageViewUsageCreateInfo const &() const VULKAN_HPP_NOEXCEPT
46388     {
46389       return *reinterpret_cast<const VkImageViewUsageCreateInfo *>( this );
46390     }
46391 
operator VkImageViewUsageCreateInfo&VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo46392     operator VkImageViewUsageCreateInfo &() VULKAN_HPP_NOEXCEPT
46393     {
46394       return *reinterpret_cast<VkImageViewUsageCreateInfo *>( this );
46395     }
46396 
46397 #if defined( VULKAN_HPP_USE_REFLECT )
46398 #  if 14 <= VULKAN_HPP_CPP_VERSION
46399     auto
46400 #  else
46401     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageUsageFlags const &>
46402 #  endif
reflectVULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo46403       reflect() const VULKAN_HPP_NOEXCEPT
46404     {
46405       return std::tie( sType, pNext, usage );
46406     }
46407 #endif
46408 
46409 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46410     auto operator<=>( ImageViewUsageCreateInfo const & ) const = default;
46411 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo46412     bool operator==( ImageViewUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
46413     {
46414 #  if defined( VULKAN_HPP_USE_REFLECT )
46415       return this->reflect() == rhs.reflect();
46416 #  else
46417       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( usage == rhs.usage );
46418 #  endif
46419     }
46420 
operator !=VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo46421     bool operator!=( ImageViewUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
46422     {
46423       return !operator==( rhs );
46424     }
46425 #endif
46426 
46427   public:
46428     VULKAN_HPP_NAMESPACE::StructureType   sType = StructureType::eImageViewUsageCreateInfo;
46429     const void *                          pNext = {};
46430     VULKAN_HPP_NAMESPACE::ImageUsageFlags usage = {};
46431   };
46432 
46433   template <>
46434   struct CppType<StructureType, StructureType::eImageViewUsageCreateInfo>
46435   {
46436     using Type = ImageViewUsageCreateInfo;
46437   };
46438 
46439   using ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo;
46440 
46441 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
46442   struct ImportAndroidHardwareBufferInfoANDROID
46443   {
46444     using NativeType = VkImportAndroidHardwareBufferInfoANDROID;
46445 
46446     static const bool                                  allowDuplicate = false;
46447     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportAndroidHardwareBufferInfoANDROID;
46448 
46449 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportAndroidHardwareBufferInfoANDROIDVULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID46450     VULKAN_HPP_CONSTEXPR ImportAndroidHardwareBufferInfoANDROID( struct AHardwareBuffer * buffer_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
46451       : pNext{ pNext_ }
46452       , buffer{ buffer_ }
46453     {
46454     }
46455 
46456     VULKAN_HPP_CONSTEXPR ImportAndroidHardwareBufferInfoANDROID( ImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46457 
ImportAndroidHardwareBufferInfoANDROIDVULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID46458     ImportAndroidHardwareBufferInfoANDROID( VkImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
46459       : ImportAndroidHardwareBufferInfoANDROID( *reinterpret_cast<ImportAndroidHardwareBufferInfoANDROID const *>( &rhs ) )
46460     {
46461     }
46462 
46463     ImportAndroidHardwareBufferInfoANDROID & operator=( ImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46464 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46465 
operator =VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID46466     ImportAndroidHardwareBufferInfoANDROID & operator=( VkImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
46467     {
46468       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID const *>( &rhs );
46469       return *this;
46470     }
46471 
46472 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID46473     VULKAN_HPP_CONSTEXPR_14 ImportAndroidHardwareBufferInfoANDROID & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46474     {
46475       pNext = pNext_;
46476       return *this;
46477     }
46478 
setBufferVULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID46479     VULKAN_HPP_CONSTEXPR_14 ImportAndroidHardwareBufferInfoANDROID & setBuffer( struct AHardwareBuffer * buffer_ ) VULKAN_HPP_NOEXCEPT
46480     {
46481       buffer = buffer_;
46482       return *this;
46483     }
46484 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46485 
operator VkImportAndroidHardwareBufferInfoANDROID const&VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID46486     operator VkImportAndroidHardwareBufferInfoANDROID const &() const VULKAN_HPP_NOEXCEPT
46487     {
46488       return *reinterpret_cast<const VkImportAndroidHardwareBufferInfoANDROID *>( this );
46489     }
46490 
operator VkImportAndroidHardwareBufferInfoANDROID&VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID46491     operator VkImportAndroidHardwareBufferInfoANDROID &() VULKAN_HPP_NOEXCEPT
46492     {
46493       return *reinterpret_cast<VkImportAndroidHardwareBufferInfoANDROID *>( this );
46494     }
46495 
46496 #  if defined( VULKAN_HPP_USE_REFLECT )
46497 #    if 14 <= VULKAN_HPP_CPP_VERSION
46498     auto
46499 #    else
46500     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, struct AHardwareBuffer * const &>
46501 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID46502       reflect() const VULKAN_HPP_NOEXCEPT
46503     {
46504       return std::tie( sType, pNext, buffer );
46505     }
46506 #  endif
46507 
46508 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46509     auto operator<=>( ImportAndroidHardwareBufferInfoANDROID const & ) const = default;
46510 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID46511     bool operator==( ImportAndroidHardwareBufferInfoANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
46512     {
46513 #    if defined( VULKAN_HPP_USE_REFLECT )
46514       return this->reflect() == rhs.reflect();
46515 #    else
46516       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer );
46517 #    endif
46518     }
46519 
operator !=VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID46520     bool operator!=( ImportAndroidHardwareBufferInfoANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
46521     {
46522       return !operator==( rhs );
46523     }
46524 #  endif
46525 
46526   public:
46527     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eImportAndroidHardwareBufferInfoANDROID;
46528     const void *                        pNext  = {};
46529     struct AHardwareBuffer *            buffer = {};
46530   };
46531 
46532   template <>
46533   struct CppType<StructureType, StructureType::eImportAndroidHardwareBufferInfoANDROID>
46534   {
46535     using Type = ImportAndroidHardwareBufferInfoANDROID;
46536   };
46537 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
46538 
46539   struct ImportFenceFdInfoKHR
46540   {
46541     using NativeType = VkImportFenceFdInfoKHR;
46542 
46543     static const bool                                  allowDuplicate = false;
46544     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportFenceFdInfoKHR;
46545 
46546 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportFenceFdInfoKHRVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46547     VULKAN_HPP_CONSTEXPR ImportFenceFdInfoKHR(
46548       VULKAN_HPP_NAMESPACE::Fence                           fence_      = {},
46549       VULKAN_HPP_NAMESPACE::FenceImportFlags                flags_      = {},
46550       VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd,
46551       int                                                   fd_         = {},
46552       const void *                                          pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
46553       : pNext{ pNext_ }
46554       , fence{ fence_ }
46555       , flags{ flags_ }
46556       , handleType{ handleType_ }
46557       , fd{ fd_ }
46558     {
46559     }
46560 
46561     VULKAN_HPP_CONSTEXPR ImportFenceFdInfoKHR( ImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46562 
ImportFenceFdInfoKHRVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46563     ImportFenceFdInfoKHR( VkImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
46564       : ImportFenceFdInfoKHR( *reinterpret_cast<ImportFenceFdInfoKHR const *>( &rhs ) )
46565     {
46566     }
46567 
46568     ImportFenceFdInfoKHR & operator=( ImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46569 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46570 
operator =VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46571     ImportFenceFdInfoKHR & operator=( VkImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
46572     {
46573       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR const *>( &rhs );
46574       return *this;
46575     }
46576 
46577 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46578     VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46579     {
46580       pNext = pNext_;
46581       return *this;
46582     }
46583 
setFenceVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46584     VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT
46585     {
46586       fence = fence_;
46587       return *this;
46588     }
46589 
setFlagsVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46590     VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::FenceImportFlags flags_ ) VULKAN_HPP_NOEXCEPT
46591     {
46592       flags = flags_;
46593       return *this;
46594     }
46595 
setHandleTypeVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46596     VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
46597     {
46598       handleType = handleType_;
46599       return *this;
46600     }
46601 
setFdVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46602     VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setFd( int fd_ ) VULKAN_HPP_NOEXCEPT
46603     {
46604       fd = fd_;
46605       return *this;
46606     }
46607 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46608 
operator VkImportFenceFdInfoKHR const&VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46609     operator VkImportFenceFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
46610     {
46611       return *reinterpret_cast<const VkImportFenceFdInfoKHR *>( this );
46612     }
46613 
operator VkImportFenceFdInfoKHR&VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46614     operator VkImportFenceFdInfoKHR &() VULKAN_HPP_NOEXCEPT
46615     {
46616       return *reinterpret_cast<VkImportFenceFdInfoKHR *>( this );
46617     }
46618 
46619 #if defined( VULKAN_HPP_USE_REFLECT )
46620 #  if 14 <= VULKAN_HPP_CPP_VERSION
46621     auto
46622 #  else
46623     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
46624                const void * const &,
46625                VULKAN_HPP_NAMESPACE::Fence const &,
46626                VULKAN_HPP_NAMESPACE::FenceImportFlags const &,
46627                VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits const &,
46628                int const &>
46629 #  endif
reflectVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46630       reflect() const VULKAN_HPP_NOEXCEPT
46631     {
46632       return std::tie( sType, pNext, fence, flags, handleType, fd );
46633     }
46634 #endif
46635 
46636 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46637     auto operator<=>( ImportFenceFdInfoKHR const & ) const = default;
46638 #else
operator ==VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46639     bool operator==( ImportFenceFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
46640     {
46641 #  if defined( VULKAN_HPP_USE_REFLECT )
46642       return this->reflect() == rhs.reflect();
46643 #  else
46644       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fence == rhs.fence ) && ( flags == rhs.flags ) && ( handleType == rhs.handleType ) &&
46645              ( fd == rhs.fd );
46646 #  endif
46647     }
46648 
operator !=VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR46649     bool operator!=( ImportFenceFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
46650     {
46651       return !operator==( rhs );
46652     }
46653 #endif
46654 
46655   public:
46656     VULKAN_HPP_NAMESPACE::StructureType                   sType      = StructureType::eImportFenceFdInfoKHR;
46657     const void *                                          pNext      = {};
46658     VULKAN_HPP_NAMESPACE::Fence                           fence      = {};
46659     VULKAN_HPP_NAMESPACE::FenceImportFlags                flags      = {};
46660     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
46661     int                                                   fd         = {};
46662   };
46663 
46664   template <>
46665   struct CppType<StructureType, StructureType::eImportFenceFdInfoKHR>
46666   {
46667     using Type = ImportFenceFdInfoKHR;
46668   };
46669 
46670 #if defined( VK_USE_PLATFORM_WIN32_KHR )
46671   struct ImportFenceWin32HandleInfoKHR
46672   {
46673     using NativeType = VkImportFenceWin32HandleInfoKHR;
46674 
46675     static const bool                                  allowDuplicate = false;
46676     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportFenceWin32HandleInfoKHR;
46677 
46678 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportFenceWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR46679     VULKAN_HPP_CONSTEXPR ImportFenceWin32HandleInfoKHR(
46680       VULKAN_HPP_NAMESPACE::Fence                           fence_      = {},
46681       VULKAN_HPP_NAMESPACE::FenceImportFlags                flags_      = {},
46682       VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd,
46683       HANDLE                                                handle_     = {},
46684       LPCWSTR                                               name_       = {},
46685       const void *                                          pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
46686       : pNext{ pNext_ }
46687       , fence{ fence_ }
46688       , flags{ flags_ }
46689       , handleType{ handleType_ }
46690       , handle{ handle_ }
46691       , name{ name_ }
46692     {
46693     }
46694 
46695     VULKAN_HPP_CONSTEXPR ImportFenceWin32HandleInfoKHR( ImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46696 
ImportFenceWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR46697     ImportFenceWin32HandleInfoKHR( VkImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
46698       : ImportFenceWin32HandleInfoKHR( *reinterpret_cast<ImportFenceWin32HandleInfoKHR const *>( &rhs ) )
46699     {
46700     }
46701 
46702     ImportFenceWin32HandleInfoKHR & operator=( ImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46703 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46704 
operator =VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR46705     ImportFenceWin32HandleInfoKHR & operator=( VkImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
46706     {
46707       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR const *>( &rhs );
46708       return *this;
46709     }
46710 
46711 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR46712     VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46713     {
46714       pNext = pNext_;
46715       return *this;
46716     }
46717 
setFenceVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR46718     VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT
46719     {
46720       fence = fence_;
46721       return *this;
46722     }
46723 
setFlagsVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR46724     VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::FenceImportFlags flags_ ) VULKAN_HPP_NOEXCEPT
46725     {
46726       flags = flags_;
46727       return *this;
46728     }
46729 
46730     VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR46731       setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
46732     {
46733       handleType = handleType_;
46734       return *this;
46735     }
46736 
setHandleVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR46737     VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setHandle( HANDLE handle_ ) VULKAN_HPP_NOEXCEPT
46738     {
46739       handle = handle_;
46740       return *this;
46741     }
46742 
setNameVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR46743     VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT
46744     {
46745       name = name_;
46746       return *this;
46747     }
46748 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46749 
operator VkImportFenceWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR46750     operator VkImportFenceWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
46751     {
46752       return *reinterpret_cast<const VkImportFenceWin32HandleInfoKHR *>( this );
46753     }
46754 
operator VkImportFenceWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR46755     operator VkImportFenceWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
46756     {
46757       return *reinterpret_cast<VkImportFenceWin32HandleInfoKHR *>( this );
46758     }
46759 
46760 #  if defined( VULKAN_HPP_USE_REFLECT )
46761 #    if 14 <= VULKAN_HPP_CPP_VERSION
46762     auto
46763 #    else
46764     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
46765                const void * const &,
46766                VULKAN_HPP_NAMESPACE::Fence const &,
46767                VULKAN_HPP_NAMESPACE::FenceImportFlags const &,
46768                VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits const &,
46769                HANDLE const &,
46770                LPCWSTR const &>
46771 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR46772       reflect() const VULKAN_HPP_NOEXCEPT
46773     {
46774       return std::tie( sType, pNext, fence, flags, handleType, handle, name );
46775     }
46776 #  endif
46777 
46778 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46779     auto operator<=>( ImportFenceWin32HandleInfoKHR const & ) const = default;
46780 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR46781     bool operator==( ImportFenceWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
46782     {
46783 #    if defined( VULKAN_HPP_USE_REFLECT )
46784       return this->reflect() == rhs.reflect();
46785 #    else
46786       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fence == rhs.fence ) && ( flags == rhs.flags ) && ( handleType == rhs.handleType ) &&
46787              ( handle == rhs.handle ) && ( name == rhs.name );
46788 #    endif
46789     }
46790 
operator !=VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR46791     bool operator!=( ImportFenceWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
46792     {
46793       return !operator==( rhs );
46794     }
46795 #  endif
46796 
46797   public:
46798     VULKAN_HPP_NAMESPACE::StructureType                   sType      = StructureType::eImportFenceWin32HandleInfoKHR;
46799     const void *                                          pNext      = {};
46800     VULKAN_HPP_NAMESPACE::Fence                           fence      = {};
46801     VULKAN_HPP_NAMESPACE::FenceImportFlags                flags      = {};
46802     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
46803     HANDLE                                                handle     = {};
46804     LPCWSTR                                               name       = {};
46805   };
46806 
46807   template <>
46808   struct CppType<StructureType, StructureType::eImportFenceWin32HandleInfoKHR>
46809   {
46810     using Type = ImportFenceWin32HandleInfoKHR;
46811   };
46812 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
46813 
46814 #if defined( VK_USE_PLATFORM_FUCHSIA )
46815   struct ImportMemoryBufferCollectionFUCHSIA
46816   {
46817     using NativeType = VkImportMemoryBufferCollectionFUCHSIA;
46818 
46819     static const bool                                  allowDuplicate = false;
46820     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMemoryBufferCollectionFUCHSIA;
46821 
46822 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMemoryBufferCollectionFUCHSIAVULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA46823     VULKAN_HPP_CONSTEXPR ImportMemoryBufferCollectionFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ = {},
46824                                                               uint32_t                                      index_      = {},
46825                                                               const void *                                  pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
46826       : pNext{ pNext_ }
46827       , collection{ collection_ }
46828       , index{ index_ }
46829     {
46830     }
46831 
46832     VULKAN_HPP_CONSTEXPR ImportMemoryBufferCollectionFUCHSIA( ImportMemoryBufferCollectionFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46833 
ImportMemoryBufferCollectionFUCHSIAVULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA46834     ImportMemoryBufferCollectionFUCHSIA( VkImportMemoryBufferCollectionFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
46835       : ImportMemoryBufferCollectionFUCHSIA( *reinterpret_cast<ImportMemoryBufferCollectionFUCHSIA const *>( &rhs ) )
46836     {
46837     }
46838 
46839     ImportMemoryBufferCollectionFUCHSIA & operator=( ImportMemoryBufferCollectionFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46840 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46841 
operator =VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA46842     ImportMemoryBufferCollectionFUCHSIA & operator=( VkImportMemoryBufferCollectionFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
46843     {
46844       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA const *>( &rhs );
46845       return *this;
46846     }
46847 
46848 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA46849     VULKAN_HPP_CONSTEXPR_14 ImportMemoryBufferCollectionFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46850     {
46851       pNext = pNext_;
46852       return *this;
46853     }
46854 
setCollectionVULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA46855     VULKAN_HPP_CONSTEXPR_14 ImportMemoryBufferCollectionFUCHSIA & setCollection( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection_ ) VULKAN_HPP_NOEXCEPT
46856     {
46857       collection = collection_;
46858       return *this;
46859     }
46860 
setIndexVULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA46861     VULKAN_HPP_CONSTEXPR_14 ImportMemoryBufferCollectionFUCHSIA & setIndex( uint32_t index_ ) VULKAN_HPP_NOEXCEPT
46862     {
46863       index = index_;
46864       return *this;
46865     }
46866 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46867 
operator VkImportMemoryBufferCollectionFUCHSIA const&VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA46868     operator VkImportMemoryBufferCollectionFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
46869     {
46870       return *reinterpret_cast<const VkImportMemoryBufferCollectionFUCHSIA *>( this );
46871     }
46872 
operator VkImportMemoryBufferCollectionFUCHSIA&VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA46873     operator VkImportMemoryBufferCollectionFUCHSIA &() VULKAN_HPP_NOEXCEPT
46874     {
46875       return *reinterpret_cast<VkImportMemoryBufferCollectionFUCHSIA *>( this );
46876     }
46877 
46878 #  if defined( VULKAN_HPP_USE_REFLECT )
46879 #    if 14 <= VULKAN_HPP_CPP_VERSION
46880     auto
46881 #    else
46882     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA const &, uint32_t const &>
46883 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA46884       reflect() const VULKAN_HPP_NOEXCEPT
46885     {
46886       return std::tie( sType, pNext, collection, index );
46887     }
46888 #  endif
46889 
46890 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46891     auto operator<=>( ImportMemoryBufferCollectionFUCHSIA const & ) const = default;
46892 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA46893     bool operator==( ImportMemoryBufferCollectionFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
46894     {
46895 #    if defined( VULKAN_HPP_USE_REFLECT )
46896       return this->reflect() == rhs.reflect();
46897 #    else
46898       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( collection == rhs.collection ) && ( index == rhs.index );
46899 #    endif
46900     }
46901 
operator !=VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA46902     bool operator!=( ImportMemoryBufferCollectionFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
46903     {
46904       return !operator==( rhs );
46905     }
46906 #  endif
46907 
46908   public:
46909     VULKAN_HPP_NAMESPACE::StructureType           sType      = StructureType::eImportMemoryBufferCollectionFUCHSIA;
46910     const void *                                  pNext      = {};
46911     VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection = {};
46912     uint32_t                                      index      = {};
46913   };
46914 
46915   template <>
46916   struct CppType<StructureType, StructureType::eImportMemoryBufferCollectionFUCHSIA>
46917   {
46918     using Type = ImportMemoryBufferCollectionFUCHSIA;
46919   };
46920 #endif /*VK_USE_PLATFORM_FUCHSIA*/
46921 
46922   struct ImportMemoryFdInfoKHR
46923   {
46924     using NativeType = VkImportMemoryFdInfoKHR;
46925 
46926     static const bool                                  allowDuplicate = false;
46927     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMemoryFdInfoKHR;
46928 
46929 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMemoryFdInfoKHRVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR46930     VULKAN_HPP_CONSTEXPR ImportMemoryFdInfoKHR(
46931       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
46932       int                                                    fd_         = {},
46933       const void *                                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
46934       : pNext{ pNext_ }
46935       , handleType{ handleType_ }
46936       , fd{ fd_ }
46937     {
46938     }
46939 
46940     VULKAN_HPP_CONSTEXPR ImportMemoryFdInfoKHR( ImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46941 
ImportMemoryFdInfoKHRVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR46942     ImportMemoryFdInfoKHR( VkImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
46943       : ImportMemoryFdInfoKHR( *reinterpret_cast<ImportMemoryFdInfoKHR const *>( &rhs ) )
46944     {
46945     }
46946 
46947     ImportMemoryFdInfoKHR & operator=( ImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46948 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46949 
operator =VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR46950     ImportMemoryFdInfoKHR & operator=( VkImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
46951     {
46952       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR const *>( &rhs );
46953       return *this;
46954     }
46955 
46956 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR46957     VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46958     {
46959       pNext = pNext_;
46960       return *this;
46961     }
46962 
setHandleTypeVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR46963     VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
46964     {
46965       handleType = handleType_;
46966       return *this;
46967     }
46968 
setFdVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR46969     VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR & setFd( int fd_ ) VULKAN_HPP_NOEXCEPT
46970     {
46971       fd = fd_;
46972       return *this;
46973     }
46974 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46975 
operator VkImportMemoryFdInfoKHR const&VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR46976     operator VkImportMemoryFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
46977     {
46978       return *reinterpret_cast<const VkImportMemoryFdInfoKHR *>( this );
46979     }
46980 
operator VkImportMemoryFdInfoKHR&VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR46981     operator VkImportMemoryFdInfoKHR &() VULKAN_HPP_NOEXCEPT
46982     {
46983       return *reinterpret_cast<VkImportMemoryFdInfoKHR *>( this );
46984     }
46985 
46986 #if defined( VULKAN_HPP_USE_REFLECT )
46987 #  if 14 <= VULKAN_HPP_CPP_VERSION
46988     auto
46989 #  else
46990     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &, int const &>
46991 #  endif
reflectVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR46992       reflect() const VULKAN_HPP_NOEXCEPT
46993     {
46994       return std::tie( sType, pNext, handleType, fd );
46995     }
46996 #endif
46997 
46998 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
46999     auto operator<=>( ImportMemoryFdInfoKHR const & ) const = default;
47000 #else
operator ==VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR47001     bool operator==( ImportMemoryFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
47002     {
47003 #  if defined( VULKAN_HPP_USE_REFLECT )
47004       return this->reflect() == rhs.reflect();
47005 #  else
47006       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ) && ( fd == rhs.fd );
47007 #  endif
47008     }
47009 
operator !=VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR47010     bool operator!=( ImportMemoryFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
47011     {
47012       return !operator==( rhs );
47013     }
47014 #endif
47015 
47016   public:
47017     VULKAN_HPP_NAMESPACE::StructureType                    sType      = StructureType::eImportMemoryFdInfoKHR;
47018     const void *                                           pNext      = {};
47019     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
47020     int                                                    fd         = {};
47021   };
47022 
47023   template <>
47024   struct CppType<StructureType, StructureType::eImportMemoryFdInfoKHR>
47025   {
47026     using Type = ImportMemoryFdInfoKHR;
47027   };
47028 
47029   struct ImportMemoryHostPointerInfoEXT
47030   {
47031     using NativeType = VkImportMemoryHostPointerInfoEXT;
47032 
47033     static const bool                                  allowDuplicate = false;
47034     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMemoryHostPointerInfoEXT;
47035 
47036 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMemoryHostPointerInfoEXTVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47037     VULKAN_HPP_CONSTEXPR ImportMemoryHostPointerInfoEXT(
47038       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_   = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
47039       void *                                                 pHostPointer_ = {},
47040       const void *                                           pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
47041       : pNext{ pNext_ }
47042       , handleType{ handleType_ }
47043       , pHostPointer{ pHostPointer_ }
47044     {
47045     }
47046 
47047     VULKAN_HPP_CONSTEXPR ImportMemoryHostPointerInfoEXT( ImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47048 
ImportMemoryHostPointerInfoEXTVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47049     ImportMemoryHostPointerInfoEXT( VkImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
47050       : ImportMemoryHostPointerInfoEXT( *reinterpret_cast<ImportMemoryHostPointerInfoEXT const *>( &rhs ) )
47051     {
47052     }
47053 
47054     ImportMemoryHostPointerInfoEXT & operator=( ImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47055 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47056 
operator =VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47057     ImportMemoryHostPointerInfoEXT & operator=( VkImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
47058     {
47059       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT const *>( &rhs );
47060       return *this;
47061     }
47062 
47063 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47064     VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47065     {
47066       pNext = pNext_;
47067       return *this;
47068     }
47069 
47070     VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47071       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
47072     {
47073       handleType = handleType_;
47074       return *this;
47075     }
47076 
setPHostPointerVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47077     VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT & setPHostPointer( void * pHostPointer_ ) VULKAN_HPP_NOEXCEPT
47078     {
47079       pHostPointer = pHostPointer_;
47080       return *this;
47081     }
47082 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47083 
operator VkImportMemoryHostPointerInfoEXT const&VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47084     operator VkImportMemoryHostPointerInfoEXT const &() const VULKAN_HPP_NOEXCEPT
47085     {
47086       return *reinterpret_cast<const VkImportMemoryHostPointerInfoEXT *>( this );
47087     }
47088 
operator VkImportMemoryHostPointerInfoEXT&VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47089     operator VkImportMemoryHostPointerInfoEXT &() VULKAN_HPP_NOEXCEPT
47090     {
47091       return *reinterpret_cast<VkImportMemoryHostPointerInfoEXT *>( this );
47092     }
47093 
47094 #if defined( VULKAN_HPP_USE_REFLECT )
47095 #  if 14 <= VULKAN_HPP_CPP_VERSION
47096     auto
47097 #  else
47098     std::
47099       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &, void * const &>
47100 #  endif
reflectVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47101       reflect() const VULKAN_HPP_NOEXCEPT
47102     {
47103       return std::tie( sType, pNext, handleType, pHostPointer );
47104     }
47105 #endif
47106 
47107 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47108     auto operator<=>( ImportMemoryHostPointerInfoEXT const & ) const = default;
47109 #else
operator ==VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47110     bool operator==( ImportMemoryHostPointerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47111     {
47112 #  if defined( VULKAN_HPP_USE_REFLECT )
47113       return this->reflect() == rhs.reflect();
47114 #  else
47115       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ) && ( pHostPointer == rhs.pHostPointer );
47116 #  endif
47117     }
47118 
operator !=VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT47119     bool operator!=( ImportMemoryHostPointerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47120     {
47121       return !operator==( rhs );
47122     }
47123 #endif
47124 
47125   public:
47126     VULKAN_HPP_NAMESPACE::StructureType                    sType        = StructureType::eImportMemoryHostPointerInfoEXT;
47127     const void *                                           pNext        = {};
47128     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType   = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
47129     void *                                                 pHostPointer = {};
47130   };
47131 
47132   template <>
47133   struct CppType<StructureType, StructureType::eImportMemoryHostPointerInfoEXT>
47134   {
47135     using Type = ImportMemoryHostPointerInfoEXT;
47136   };
47137 
47138 #if defined( VK_USE_PLATFORM_WIN32_KHR )
47139   struct ImportMemoryWin32HandleInfoKHR
47140   {
47141     using NativeType = VkImportMemoryWin32HandleInfoKHR;
47142 
47143     static const bool                                  allowDuplicate = false;
47144     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMemoryWin32HandleInfoKHR;
47145 
47146 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMemoryWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47147     VULKAN_HPP_CONSTEXPR ImportMemoryWin32HandleInfoKHR(
47148       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
47149       HANDLE                                                 handle_     = {},
47150       LPCWSTR                                                name_       = {},
47151       const void *                                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
47152       : pNext{ pNext_ }
47153       , handleType{ handleType_ }
47154       , handle{ handle_ }
47155       , name{ name_ }
47156     {
47157     }
47158 
47159     VULKAN_HPP_CONSTEXPR ImportMemoryWin32HandleInfoKHR( ImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47160 
ImportMemoryWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47161     ImportMemoryWin32HandleInfoKHR( VkImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
47162       : ImportMemoryWin32HandleInfoKHR( *reinterpret_cast<ImportMemoryWin32HandleInfoKHR const *>( &rhs ) )
47163     {
47164     }
47165 
47166     ImportMemoryWin32HandleInfoKHR & operator=( ImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47167 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47168 
operator =VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47169     ImportMemoryWin32HandleInfoKHR & operator=( VkImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
47170     {
47171       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR const *>( &rhs );
47172       return *this;
47173     }
47174 
47175 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47176     VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47177     {
47178       pNext = pNext_;
47179       return *this;
47180     }
47181 
47182     VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47183       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
47184     {
47185       handleType = handleType_;
47186       return *this;
47187     }
47188 
setHandleVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47189     VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR & setHandle( HANDLE handle_ ) VULKAN_HPP_NOEXCEPT
47190     {
47191       handle = handle_;
47192       return *this;
47193     }
47194 
setNameVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47195     VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT
47196     {
47197       name = name_;
47198       return *this;
47199     }
47200 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47201 
operator VkImportMemoryWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47202     operator VkImportMemoryWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
47203     {
47204       return *reinterpret_cast<const VkImportMemoryWin32HandleInfoKHR *>( this );
47205     }
47206 
operator VkImportMemoryWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47207     operator VkImportMemoryWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
47208     {
47209       return *reinterpret_cast<VkImportMemoryWin32HandleInfoKHR *>( this );
47210     }
47211 
47212 #  if defined( VULKAN_HPP_USE_REFLECT )
47213 #    if 14 <= VULKAN_HPP_CPP_VERSION
47214     auto
47215 #    else
47216     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
47217                const void * const &,
47218                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &,
47219                HANDLE const &,
47220                LPCWSTR const &>
47221 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47222       reflect() const VULKAN_HPP_NOEXCEPT
47223     {
47224       return std::tie( sType, pNext, handleType, handle, name );
47225     }
47226 #  endif
47227 
47228 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47229     auto operator<=>( ImportMemoryWin32HandleInfoKHR const & ) const = default;
47230 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47231     bool operator==( ImportMemoryWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
47232     {
47233 #    if defined( VULKAN_HPP_USE_REFLECT )
47234       return this->reflect() == rhs.reflect();
47235 #    else
47236       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ) && ( handle == rhs.handle ) && ( name == rhs.name );
47237 #    endif
47238     }
47239 
operator !=VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR47240     bool operator!=( ImportMemoryWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
47241     {
47242       return !operator==( rhs );
47243     }
47244 #  endif
47245 
47246   public:
47247     VULKAN_HPP_NAMESPACE::StructureType                    sType      = StructureType::eImportMemoryWin32HandleInfoKHR;
47248     const void *                                           pNext      = {};
47249     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
47250     HANDLE                                                 handle     = {};
47251     LPCWSTR                                                name       = {};
47252   };
47253 
47254   template <>
47255   struct CppType<StructureType, StructureType::eImportMemoryWin32HandleInfoKHR>
47256   {
47257     using Type = ImportMemoryWin32HandleInfoKHR;
47258   };
47259 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
47260 
47261 #if defined( VK_USE_PLATFORM_WIN32_KHR )
47262   struct ImportMemoryWin32HandleInfoNV
47263   {
47264     using NativeType = VkImportMemoryWin32HandleInfoNV;
47265 
47266     static const bool                                  allowDuplicate = false;
47267     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMemoryWin32HandleInfoNV;
47268 
47269 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMemoryWin32HandleInfoNVVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47270     VULKAN_HPP_CONSTEXPR ImportMemoryWin32HandleInfoNV( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType_ = {},
47271                                                         HANDLE                                                handle_     = {},
47272                                                         const void *                                          pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
47273       : pNext{ pNext_ }
47274       , handleType{ handleType_ }
47275       , handle{ handle_ }
47276     {
47277     }
47278 
47279     VULKAN_HPP_CONSTEXPR ImportMemoryWin32HandleInfoNV( ImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47280 
ImportMemoryWin32HandleInfoNVVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47281     ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
47282       : ImportMemoryWin32HandleInfoNV( *reinterpret_cast<ImportMemoryWin32HandleInfoNV const *>( &rhs ) )
47283     {
47284     }
47285 
47286     ImportMemoryWin32HandleInfoNV & operator=( ImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47287 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47288 
operator =VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47289     ImportMemoryWin32HandleInfoNV & operator=( VkImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
47290     {
47291       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV const *>( &rhs );
47292       return *this;
47293     }
47294 
47295 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47296     VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47297     {
47298       pNext = pNext_;
47299       return *this;
47300     }
47301 
47302     VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoNV &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47303       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType_ ) VULKAN_HPP_NOEXCEPT
47304     {
47305       handleType = handleType_;
47306       return *this;
47307     }
47308 
setHandleVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47309     VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoNV & setHandle( HANDLE handle_ ) VULKAN_HPP_NOEXCEPT
47310     {
47311       handle = handle_;
47312       return *this;
47313     }
47314 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47315 
operator VkImportMemoryWin32HandleInfoNV const&VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47316     operator VkImportMemoryWin32HandleInfoNV const &() const VULKAN_HPP_NOEXCEPT
47317     {
47318       return *reinterpret_cast<const VkImportMemoryWin32HandleInfoNV *>( this );
47319     }
47320 
operator VkImportMemoryWin32HandleInfoNV&VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47321     operator VkImportMemoryWin32HandleInfoNV &() VULKAN_HPP_NOEXCEPT
47322     {
47323       return *reinterpret_cast<VkImportMemoryWin32HandleInfoNV *>( this );
47324     }
47325 
47326 #  if defined( VULKAN_HPP_USE_REFLECT )
47327 #    if 14 <= VULKAN_HPP_CPP_VERSION
47328     auto
47329 #    else
47330     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV const &, HANDLE const &>
47331 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47332       reflect() const VULKAN_HPP_NOEXCEPT
47333     {
47334       return std::tie( sType, pNext, handleType, handle );
47335     }
47336 #  endif
47337 
47338 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47339     auto operator<=>( ImportMemoryWin32HandleInfoNV const & ) const = default;
47340 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47341     bool operator==( ImportMemoryWin32HandleInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
47342     {
47343 #    if defined( VULKAN_HPP_USE_REFLECT )
47344       return this->reflect() == rhs.reflect();
47345 #    else
47346       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ) && ( handle == rhs.handle );
47347 #    endif
47348     }
47349 
operator !=VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV47350     bool operator!=( ImportMemoryWin32HandleInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
47351     {
47352       return !operator==( rhs );
47353     }
47354 #  endif
47355 
47356   public:
47357     VULKAN_HPP_NAMESPACE::StructureType                   sType      = StructureType::eImportMemoryWin32HandleInfoNV;
47358     const void *                                          pNext      = {};
47359     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType = {};
47360     HANDLE                                                handle     = {};
47361   };
47362 
47363   template <>
47364   struct CppType<StructureType, StructureType::eImportMemoryWin32HandleInfoNV>
47365   {
47366     using Type = ImportMemoryWin32HandleInfoNV;
47367   };
47368 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
47369 
47370 #if defined( VK_USE_PLATFORM_FUCHSIA )
47371   struct ImportMemoryZirconHandleInfoFUCHSIA
47372   {
47373     using NativeType = VkImportMemoryZirconHandleInfoFUCHSIA;
47374 
47375     static const bool                                  allowDuplicate = false;
47376     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMemoryZirconHandleInfoFUCHSIA;
47377 
47378 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMemoryZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47379     VULKAN_HPP_CONSTEXPR ImportMemoryZirconHandleInfoFUCHSIA(
47380       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
47381       zx_handle_t                                            handle_     = {},
47382       const void *                                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
47383       : pNext{ pNext_ }
47384       , handleType{ handleType_ }
47385       , handle{ handle_ }
47386     {
47387     }
47388 
47389     VULKAN_HPP_CONSTEXPR ImportMemoryZirconHandleInfoFUCHSIA( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47390 
ImportMemoryZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47391     ImportMemoryZirconHandleInfoFUCHSIA( VkImportMemoryZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
47392       : ImportMemoryZirconHandleInfoFUCHSIA( *reinterpret_cast<ImportMemoryZirconHandleInfoFUCHSIA const *>( &rhs ) )
47393     {
47394     }
47395 
47396     ImportMemoryZirconHandleInfoFUCHSIA & operator=( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47397 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47398 
operator =VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47399     ImportMemoryZirconHandleInfoFUCHSIA & operator=( VkImportMemoryZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
47400     {
47401       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA const *>( &rhs );
47402       return *this;
47403     }
47404 
47405 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47406     VULKAN_HPP_CONSTEXPR_14 ImportMemoryZirconHandleInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47407     {
47408       pNext = pNext_;
47409       return *this;
47410     }
47411 
47412     VULKAN_HPP_CONSTEXPR_14 ImportMemoryZirconHandleInfoFUCHSIA &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47413       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
47414     {
47415       handleType = handleType_;
47416       return *this;
47417     }
47418 
setHandleVULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47419     VULKAN_HPP_CONSTEXPR_14 ImportMemoryZirconHandleInfoFUCHSIA & setHandle( zx_handle_t handle_ ) VULKAN_HPP_NOEXCEPT
47420     {
47421       handle = handle_;
47422       return *this;
47423     }
47424 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47425 
operator VkImportMemoryZirconHandleInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47426     operator VkImportMemoryZirconHandleInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
47427     {
47428       return *reinterpret_cast<const VkImportMemoryZirconHandleInfoFUCHSIA *>( this );
47429     }
47430 
operator VkImportMemoryZirconHandleInfoFUCHSIA&VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47431     operator VkImportMemoryZirconHandleInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
47432     {
47433       return *reinterpret_cast<VkImportMemoryZirconHandleInfoFUCHSIA *>( this );
47434     }
47435 
47436 #  if defined( VULKAN_HPP_USE_REFLECT )
47437 #    if 14 <= VULKAN_HPP_CPP_VERSION
47438     auto
47439 #    else
47440     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
47441                const void * const &,
47442                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &,
47443                zx_handle_t const &>
47444 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47445       reflect() const VULKAN_HPP_NOEXCEPT
47446     {
47447       return std::tie( sType, pNext, handleType, handle );
47448     }
47449 #  endif
47450 
47451 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47452     std::strong_ordering operator<=>( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
47453     {
47454       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
47455         return cmp;
47456       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
47457         return cmp;
47458       if ( auto cmp = handleType <=> rhs.handleType; cmp != 0 )
47459         return cmp;
47460       if ( auto cmp = memcmp( &handle, &rhs.handle, sizeof( zx_handle_t ) ); cmp != 0 )
47461         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
47462 
47463       return std::strong_ordering::equivalent;
47464     }
47465 #  endif
47466 
operator ==VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47467     bool operator==( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
47468     {
47469       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ) &&
47470              ( memcmp( &handle, &rhs.handle, sizeof( zx_handle_t ) ) == 0 );
47471     }
47472 
operator !=VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA47473     bool operator!=( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
47474     {
47475       return !operator==( rhs );
47476     }
47477 
47478   public:
47479     VULKAN_HPP_NAMESPACE::StructureType                    sType      = StructureType::eImportMemoryZirconHandleInfoFUCHSIA;
47480     const void *                                           pNext      = {};
47481     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
47482     zx_handle_t                                            handle     = {};
47483   };
47484 
47485   template <>
47486   struct CppType<StructureType, StructureType::eImportMemoryZirconHandleInfoFUCHSIA>
47487   {
47488     using Type = ImportMemoryZirconHandleInfoFUCHSIA;
47489   };
47490 #endif /*VK_USE_PLATFORM_FUCHSIA*/
47491 
47492 #if defined( VK_USE_PLATFORM_METAL_EXT )
47493   struct ImportMetalBufferInfoEXT
47494   {
47495     using NativeType = VkImportMetalBufferInfoEXT;
47496 
47497     static const bool                                  allowDuplicate = false;
47498     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMetalBufferInfoEXT;
47499 
47500 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMetalBufferInfoEXTVULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT47501     VULKAN_HPP_CONSTEXPR ImportMetalBufferInfoEXT( MTLBuffer_id mtlBuffer_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
47502       : pNext{ pNext_ }
47503       , mtlBuffer{ mtlBuffer_ }
47504     {
47505     }
47506 
47507     VULKAN_HPP_CONSTEXPR ImportMetalBufferInfoEXT( ImportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47508 
ImportMetalBufferInfoEXTVULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT47509     ImportMetalBufferInfoEXT( VkImportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
47510       : ImportMetalBufferInfoEXT( *reinterpret_cast<ImportMetalBufferInfoEXT const *>( &rhs ) )
47511     {
47512     }
47513 
47514     ImportMetalBufferInfoEXT & operator=( ImportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47515 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47516 
operator =VULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT47517     ImportMetalBufferInfoEXT & operator=( VkImportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
47518     {
47519       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT const *>( &rhs );
47520       return *this;
47521     }
47522 
47523 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT47524     VULKAN_HPP_CONSTEXPR_14 ImportMetalBufferInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47525     {
47526       pNext = pNext_;
47527       return *this;
47528     }
47529 
setMtlBufferVULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT47530     VULKAN_HPP_CONSTEXPR_14 ImportMetalBufferInfoEXT & setMtlBuffer( MTLBuffer_id mtlBuffer_ ) VULKAN_HPP_NOEXCEPT
47531     {
47532       mtlBuffer = mtlBuffer_;
47533       return *this;
47534     }
47535 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47536 
operator VkImportMetalBufferInfoEXT const&VULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT47537     operator VkImportMetalBufferInfoEXT const &() const VULKAN_HPP_NOEXCEPT
47538     {
47539       return *reinterpret_cast<const VkImportMetalBufferInfoEXT *>( this );
47540     }
47541 
operator VkImportMetalBufferInfoEXT&VULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT47542     operator VkImportMetalBufferInfoEXT &() VULKAN_HPP_NOEXCEPT
47543     {
47544       return *reinterpret_cast<VkImportMetalBufferInfoEXT *>( this );
47545     }
47546 
47547 #  if defined( VULKAN_HPP_USE_REFLECT )
47548 #    if 14 <= VULKAN_HPP_CPP_VERSION
47549     auto
47550 #    else
47551     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, MTLBuffer_id const &>
47552 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT47553       reflect() const VULKAN_HPP_NOEXCEPT
47554     {
47555       return std::tie( sType, pNext, mtlBuffer );
47556     }
47557 #  endif
47558 
47559 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47560     auto operator<=>( ImportMetalBufferInfoEXT const & ) const = default;
47561 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT47562     bool operator==( ImportMetalBufferInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47563     {
47564 #    if defined( VULKAN_HPP_USE_REFLECT )
47565       return this->reflect() == rhs.reflect();
47566 #    else
47567       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mtlBuffer == rhs.mtlBuffer );
47568 #    endif
47569     }
47570 
operator !=VULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT47571     bool operator!=( ImportMetalBufferInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47572     {
47573       return !operator==( rhs );
47574     }
47575 #  endif
47576 
47577   public:
47578     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eImportMetalBufferInfoEXT;
47579     const void *                        pNext     = {};
47580     MTLBuffer_id                        mtlBuffer = {};
47581   };
47582 
47583   template <>
47584   struct CppType<StructureType, StructureType::eImportMetalBufferInfoEXT>
47585   {
47586     using Type = ImportMetalBufferInfoEXT;
47587   };
47588 #endif /*VK_USE_PLATFORM_METAL_EXT*/
47589 
47590 #if defined( VK_USE_PLATFORM_METAL_EXT )
47591   struct ImportMetalIOSurfaceInfoEXT
47592   {
47593     using NativeType = VkImportMetalIOSurfaceInfoEXT;
47594 
47595     static const bool                                  allowDuplicate = false;
47596     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMetalIoSurfaceInfoEXT;
47597 
47598 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMetalIOSurfaceInfoEXTVULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT47599     VULKAN_HPP_CONSTEXPR ImportMetalIOSurfaceInfoEXT( IOSurfaceRef ioSurface_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
47600       : pNext{ pNext_ }
47601       , ioSurface{ ioSurface_ }
47602     {
47603     }
47604 
47605     VULKAN_HPP_CONSTEXPR ImportMetalIOSurfaceInfoEXT( ImportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47606 
ImportMetalIOSurfaceInfoEXTVULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT47607     ImportMetalIOSurfaceInfoEXT( VkImportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
47608       : ImportMetalIOSurfaceInfoEXT( *reinterpret_cast<ImportMetalIOSurfaceInfoEXT const *>( &rhs ) )
47609     {
47610     }
47611 
47612     ImportMetalIOSurfaceInfoEXT & operator=( ImportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47613 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47614 
operator =VULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT47615     ImportMetalIOSurfaceInfoEXT & operator=( VkImportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
47616     {
47617       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT const *>( &rhs );
47618       return *this;
47619     }
47620 
47621 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT47622     VULKAN_HPP_CONSTEXPR_14 ImportMetalIOSurfaceInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47623     {
47624       pNext = pNext_;
47625       return *this;
47626     }
47627 
setIoSurfaceVULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT47628     VULKAN_HPP_CONSTEXPR_14 ImportMetalIOSurfaceInfoEXT & setIoSurface( IOSurfaceRef ioSurface_ ) VULKAN_HPP_NOEXCEPT
47629     {
47630       ioSurface = ioSurface_;
47631       return *this;
47632     }
47633 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47634 
operator VkImportMetalIOSurfaceInfoEXT const&VULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT47635     operator VkImportMetalIOSurfaceInfoEXT const &() const VULKAN_HPP_NOEXCEPT
47636     {
47637       return *reinterpret_cast<const VkImportMetalIOSurfaceInfoEXT *>( this );
47638     }
47639 
operator VkImportMetalIOSurfaceInfoEXT&VULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT47640     operator VkImportMetalIOSurfaceInfoEXT &() VULKAN_HPP_NOEXCEPT
47641     {
47642       return *reinterpret_cast<VkImportMetalIOSurfaceInfoEXT *>( this );
47643     }
47644 
47645 #  if defined( VULKAN_HPP_USE_REFLECT )
47646 #    if 14 <= VULKAN_HPP_CPP_VERSION
47647     auto
47648 #    else
47649     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, IOSurfaceRef const &>
47650 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT47651       reflect() const VULKAN_HPP_NOEXCEPT
47652     {
47653       return std::tie( sType, pNext, ioSurface );
47654     }
47655 #  endif
47656 
47657 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47658     auto operator<=>( ImportMetalIOSurfaceInfoEXT const & ) const = default;
47659 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT47660     bool operator==( ImportMetalIOSurfaceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47661     {
47662 #    if defined( VULKAN_HPP_USE_REFLECT )
47663       return this->reflect() == rhs.reflect();
47664 #    else
47665       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ioSurface == rhs.ioSurface );
47666 #    endif
47667     }
47668 
operator !=VULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT47669     bool operator!=( ImportMetalIOSurfaceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47670     {
47671       return !operator==( rhs );
47672     }
47673 #  endif
47674 
47675   public:
47676     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eImportMetalIoSurfaceInfoEXT;
47677     const void *                        pNext     = {};
47678     IOSurfaceRef                        ioSurface = {};
47679   };
47680 
47681   template <>
47682   struct CppType<StructureType, StructureType::eImportMetalIoSurfaceInfoEXT>
47683   {
47684     using Type = ImportMetalIOSurfaceInfoEXT;
47685   };
47686 #endif /*VK_USE_PLATFORM_METAL_EXT*/
47687 
47688 #if defined( VK_USE_PLATFORM_METAL_EXT )
47689   struct ImportMetalSharedEventInfoEXT
47690   {
47691     using NativeType = VkImportMetalSharedEventInfoEXT;
47692 
47693     static const bool                                  allowDuplicate = false;
47694     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMetalSharedEventInfoEXT;
47695 
47696 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMetalSharedEventInfoEXTVULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT47697     VULKAN_HPP_CONSTEXPR ImportMetalSharedEventInfoEXT( MTLSharedEvent_id mtlSharedEvent_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
47698       : pNext{ pNext_ }
47699       , mtlSharedEvent{ mtlSharedEvent_ }
47700     {
47701     }
47702 
47703     VULKAN_HPP_CONSTEXPR ImportMetalSharedEventInfoEXT( ImportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47704 
ImportMetalSharedEventInfoEXTVULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT47705     ImportMetalSharedEventInfoEXT( VkImportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
47706       : ImportMetalSharedEventInfoEXT( *reinterpret_cast<ImportMetalSharedEventInfoEXT const *>( &rhs ) )
47707     {
47708     }
47709 
47710     ImportMetalSharedEventInfoEXT & operator=( ImportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47711 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47712 
operator =VULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT47713     ImportMetalSharedEventInfoEXT & operator=( VkImportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
47714     {
47715       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT const *>( &rhs );
47716       return *this;
47717     }
47718 
47719 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT47720     VULKAN_HPP_CONSTEXPR_14 ImportMetalSharedEventInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47721     {
47722       pNext = pNext_;
47723       return *this;
47724     }
47725 
setMtlSharedEventVULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT47726     VULKAN_HPP_CONSTEXPR_14 ImportMetalSharedEventInfoEXT & setMtlSharedEvent( MTLSharedEvent_id mtlSharedEvent_ ) VULKAN_HPP_NOEXCEPT
47727     {
47728       mtlSharedEvent = mtlSharedEvent_;
47729       return *this;
47730     }
47731 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47732 
operator VkImportMetalSharedEventInfoEXT const&VULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT47733     operator VkImportMetalSharedEventInfoEXT const &() const VULKAN_HPP_NOEXCEPT
47734     {
47735       return *reinterpret_cast<const VkImportMetalSharedEventInfoEXT *>( this );
47736     }
47737 
operator VkImportMetalSharedEventInfoEXT&VULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT47738     operator VkImportMetalSharedEventInfoEXT &() VULKAN_HPP_NOEXCEPT
47739     {
47740       return *reinterpret_cast<VkImportMetalSharedEventInfoEXT *>( this );
47741     }
47742 
47743 #  if defined( VULKAN_HPP_USE_REFLECT )
47744 #    if 14 <= VULKAN_HPP_CPP_VERSION
47745     auto
47746 #    else
47747     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, MTLSharedEvent_id const &>
47748 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT47749       reflect() const VULKAN_HPP_NOEXCEPT
47750     {
47751       return std::tie( sType, pNext, mtlSharedEvent );
47752     }
47753 #  endif
47754 
47755 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47756     auto operator<=>( ImportMetalSharedEventInfoEXT const & ) const = default;
47757 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT47758     bool operator==( ImportMetalSharedEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47759     {
47760 #    if defined( VULKAN_HPP_USE_REFLECT )
47761       return this->reflect() == rhs.reflect();
47762 #    else
47763       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mtlSharedEvent == rhs.mtlSharedEvent );
47764 #    endif
47765     }
47766 
operator !=VULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT47767     bool operator!=( ImportMetalSharedEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47768     {
47769       return !operator==( rhs );
47770     }
47771 #  endif
47772 
47773   public:
47774     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eImportMetalSharedEventInfoEXT;
47775     const void *                        pNext          = {};
47776     MTLSharedEvent_id                   mtlSharedEvent = {};
47777   };
47778 
47779   template <>
47780   struct CppType<StructureType, StructureType::eImportMetalSharedEventInfoEXT>
47781   {
47782     using Type = ImportMetalSharedEventInfoEXT;
47783   };
47784 #endif /*VK_USE_PLATFORM_METAL_EXT*/
47785 
47786 #if defined( VK_USE_PLATFORM_METAL_EXT )
47787   struct ImportMetalTextureInfoEXT
47788   {
47789     using NativeType = VkImportMetalTextureInfoEXT;
47790 
47791     static const bool                                  allowDuplicate = true;
47792     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportMetalTextureInfoEXT;
47793 
47794 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMetalTextureInfoEXTVULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT47795     VULKAN_HPP_CONSTEXPR ImportMetalTextureInfoEXT( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits plane_      = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor,
47796                                                     MTLTexture_id                             mtlTexture_ = {},
47797                                                     const void *                              pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
47798       : pNext{ pNext_ }
47799       , plane{ plane_ }
47800       , mtlTexture{ mtlTexture_ }
47801     {
47802     }
47803 
47804     VULKAN_HPP_CONSTEXPR ImportMetalTextureInfoEXT( ImportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47805 
ImportMetalTextureInfoEXTVULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT47806     ImportMetalTextureInfoEXT( VkImportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
47807       : ImportMetalTextureInfoEXT( *reinterpret_cast<ImportMetalTextureInfoEXT const *>( &rhs ) )
47808     {
47809     }
47810 
47811     ImportMetalTextureInfoEXT & operator=( ImportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47812 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47813 
operator =VULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT47814     ImportMetalTextureInfoEXT & operator=( VkImportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
47815     {
47816       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT const *>( &rhs );
47817       return *this;
47818     }
47819 
47820 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT47821     VULKAN_HPP_CONSTEXPR_14 ImportMetalTextureInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47822     {
47823       pNext = pNext_;
47824       return *this;
47825     }
47826 
setPlaneVULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT47827     VULKAN_HPP_CONSTEXPR_14 ImportMetalTextureInfoEXT & setPlane( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits plane_ ) VULKAN_HPP_NOEXCEPT
47828     {
47829       plane = plane_;
47830       return *this;
47831     }
47832 
setMtlTextureVULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT47833     VULKAN_HPP_CONSTEXPR_14 ImportMetalTextureInfoEXT & setMtlTexture( MTLTexture_id mtlTexture_ ) VULKAN_HPP_NOEXCEPT
47834     {
47835       mtlTexture = mtlTexture_;
47836       return *this;
47837     }
47838 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47839 
operator VkImportMetalTextureInfoEXT const&VULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT47840     operator VkImportMetalTextureInfoEXT const &() const VULKAN_HPP_NOEXCEPT
47841     {
47842       return *reinterpret_cast<const VkImportMetalTextureInfoEXT *>( this );
47843     }
47844 
operator VkImportMetalTextureInfoEXT&VULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT47845     operator VkImportMetalTextureInfoEXT &() VULKAN_HPP_NOEXCEPT
47846     {
47847       return *reinterpret_cast<VkImportMetalTextureInfoEXT *>( this );
47848     }
47849 
47850 #  if defined( VULKAN_HPP_USE_REFLECT )
47851 #    if 14 <= VULKAN_HPP_CPP_VERSION
47852     auto
47853 #    else
47854     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageAspectFlagBits const &, MTLTexture_id const &>
47855 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT47856       reflect() const VULKAN_HPP_NOEXCEPT
47857     {
47858       return std::tie( sType, pNext, plane, mtlTexture );
47859     }
47860 #  endif
47861 
47862 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47863     auto operator<=>( ImportMetalTextureInfoEXT const & ) const = default;
47864 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT47865     bool operator==( ImportMetalTextureInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47866     {
47867 #    if defined( VULKAN_HPP_USE_REFLECT )
47868       return this->reflect() == rhs.reflect();
47869 #    else
47870       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( plane == rhs.plane ) && ( mtlTexture == rhs.mtlTexture );
47871 #    endif
47872     }
47873 
operator !=VULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT47874     bool operator!=( ImportMetalTextureInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
47875     {
47876       return !operator==( rhs );
47877     }
47878 #  endif
47879 
47880   public:
47881     VULKAN_HPP_NAMESPACE::StructureType       sType      = StructureType::eImportMetalTextureInfoEXT;
47882     const void *                              pNext      = {};
47883     VULKAN_HPP_NAMESPACE::ImageAspectFlagBits plane      = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor;
47884     MTLTexture_id                             mtlTexture = {};
47885   };
47886 
47887   template <>
47888   struct CppType<StructureType, StructureType::eImportMetalTextureInfoEXT>
47889   {
47890     using Type = ImportMetalTextureInfoEXT;
47891   };
47892 #endif /*VK_USE_PLATFORM_METAL_EXT*/
47893 
47894 #if defined( VK_USE_PLATFORM_SCREEN_QNX )
47895   struct ImportScreenBufferInfoQNX
47896   {
47897     using NativeType = VkImportScreenBufferInfoQNX;
47898 
47899     static const bool                                  allowDuplicate = false;
47900     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportScreenBufferInfoQNX;
47901 
47902 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportScreenBufferInfoQNXVULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX47903     VULKAN_HPP_CONSTEXPR ImportScreenBufferInfoQNX( struct _screen_buffer * buffer_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
47904       : pNext{ pNext_ }
47905       , buffer{ buffer_ }
47906     {
47907     }
47908 
47909     VULKAN_HPP_CONSTEXPR ImportScreenBufferInfoQNX( ImportScreenBufferInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47910 
ImportScreenBufferInfoQNXVULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX47911     ImportScreenBufferInfoQNX( VkImportScreenBufferInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT
47912       : ImportScreenBufferInfoQNX( *reinterpret_cast<ImportScreenBufferInfoQNX const *>( &rhs ) )
47913     {
47914     }
47915 
47916     ImportScreenBufferInfoQNX & operator=( ImportScreenBufferInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47917 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47918 
operator =VULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX47919     ImportScreenBufferInfoQNX & operator=( VkImportScreenBufferInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT
47920     {
47921       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX const *>( &rhs );
47922       return *this;
47923     }
47924 
47925 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX47926     VULKAN_HPP_CONSTEXPR_14 ImportScreenBufferInfoQNX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47927     {
47928       pNext = pNext_;
47929       return *this;
47930     }
47931 
setBufferVULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX47932     VULKAN_HPP_CONSTEXPR_14 ImportScreenBufferInfoQNX & setBuffer( struct _screen_buffer * buffer_ ) VULKAN_HPP_NOEXCEPT
47933     {
47934       buffer = buffer_;
47935       return *this;
47936     }
47937 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47938 
operator VkImportScreenBufferInfoQNX const&VULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX47939     operator VkImportScreenBufferInfoQNX const &() const VULKAN_HPP_NOEXCEPT
47940     {
47941       return *reinterpret_cast<const VkImportScreenBufferInfoQNX *>( this );
47942     }
47943 
operator VkImportScreenBufferInfoQNX&VULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX47944     operator VkImportScreenBufferInfoQNX &() VULKAN_HPP_NOEXCEPT
47945     {
47946       return *reinterpret_cast<VkImportScreenBufferInfoQNX *>( this );
47947     }
47948 
47949 #  if defined( VULKAN_HPP_USE_REFLECT )
47950 #    if 14 <= VULKAN_HPP_CPP_VERSION
47951     auto
47952 #    else
47953     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, struct _screen_buffer * const &>
47954 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX47955       reflect() const VULKAN_HPP_NOEXCEPT
47956     {
47957       return std::tie( sType, pNext, buffer );
47958     }
47959 #  endif
47960 
47961 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
47962     auto operator<=>( ImportScreenBufferInfoQNX const & ) const = default;
47963 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX47964     bool operator==( ImportScreenBufferInfoQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
47965     {
47966 #    if defined( VULKAN_HPP_USE_REFLECT )
47967       return this->reflect() == rhs.reflect();
47968 #    else
47969       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer );
47970 #    endif
47971     }
47972 
operator !=VULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX47973     bool operator!=( ImportScreenBufferInfoQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
47974     {
47975       return !operator==( rhs );
47976     }
47977 #  endif
47978 
47979   public:
47980     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eImportScreenBufferInfoQNX;
47981     const void *                        pNext  = {};
47982     struct _screen_buffer *             buffer = {};
47983   };
47984 
47985   template <>
47986   struct CppType<StructureType, StructureType::eImportScreenBufferInfoQNX>
47987   {
47988     using Type = ImportScreenBufferInfoQNX;
47989   };
47990 #endif /*VK_USE_PLATFORM_SCREEN_QNX*/
47991 
47992   struct ImportSemaphoreFdInfoKHR
47993   {
47994     using NativeType = VkImportSemaphoreFdInfoKHR;
47995 
47996     static const bool                                  allowDuplicate = false;
47997     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportSemaphoreFdInfoKHR;
47998 
47999 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportSemaphoreFdInfoKHRVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48000     VULKAN_HPP_CONSTEXPR ImportSemaphoreFdInfoKHR(
48001       VULKAN_HPP_NAMESPACE::Semaphore                           semaphore_  = {},
48002       VULKAN_HPP_NAMESPACE::SemaphoreImportFlags                flags_      = {},
48003       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd,
48004       int                                                       fd_         = {},
48005       const void *                                              pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
48006       : pNext{ pNext_ }
48007       , semaphore{ semaphore_ }
48008       , flags{ flags_ }
48009       , handleType{ handleType_ }
48010       , fd{ fd_ }
48011     {
48012     }
48013 
48014     VULKAN_HPP_CONSTEXPR ImportSemaphoreFdInfoKHR( ImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48015 
ImportSemaphoreFdInfoKHRVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48016     ImportSemaphoreFdInfoKHR( VkImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
48017       : ImportSemaphoreFdInfoKHR( *reinterpret_cast<ImportSemaphoreFdInfoKHR const *>( &rhs ) )
48018     {
48019     }
48020 
48021     ImportSemaphoreFdInfoKHR & operator=( ImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48022 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48023 
operator =VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48024     ImportSemaphoreFdInfoKHR & operator=( VkImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
48025     {
48026       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR const *>( &rhs );
48027       return *this;
48028     }
48029 
48030 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48031     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48032     {
48033       pNext = pNext_;
48034       return *this;
48035     }
48036 
setSemaphoreVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48037     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
48038     {
48039       semaphore = semaphore_;
48040       return *this;
48041     }
48042 
setFlagsVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48043     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags_ ) VULKAN_HPP_NOEXCEPT
48044     {
48045       flags = flags_;
48046       return *this;
48047     }
48048 
48049     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48050       setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
48051     {
48052       handleType = handleType_;
48053       return *this;
48054     }
48055 
setFdVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48056     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setFd( int fd_ ) VULKAN_HPP_NOEXCEPT
48057     {
48058       fd = fd_;
48059       return *this;
48060     }
48061 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48062 
operator VkImportSemaphoreFdInfoKHR const&VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48063     operator VkImportSemaphoreFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
48064     {
48065       return *reinterpret_cast<const VkImportSemaphoreFdInfoKHR *>( this );
48066     }
48067 
operator VkImportSemaphoreFdInfoKHR&VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48068     operator VkImportSemaphoreFdInfoKHR &() VULKAN_HPP_NOEXCEPT
48069     {
48070       return *reinterpret_cast<VkImportSemaphoreFdInfoKHR *>( this );
48071     }
48072 
48073 #if defined( VULKAN_HPP_USE_REFLECT )
48074 #  if 14 <= VULKAN_HPP_CPP_VERSION
48075     auto
48076 #  else
48077     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
48078                const void * const &,
48079                VULKAN_HPP_NAMESPACE::Semaphore const &,
48080                VULKAN_HPP_NAMESPACE::SemaphoreImportFlags const &,
48081                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &,
48082                int const &>
48083 #  endif
reflectVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48084       reflect() const VULKAN_HPP_NOEXCEPT
48085     {
48086       return std::tie( sType, pNext, semaphore, flags, handleType, fd );
48087     }
48088 #endif
48089 
48090 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
48091     auto operator<=>( ImportSemaphoreFdInfoKHR const & ) const = default;
48092 #else
operator ==VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48093     bool operator==( ImportSemaphoreFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
48094     {
48095 #  if defined( VULKAN_HPP_USE_REFLECT )
48096       return this->reflect() == rhs.reflect();
48097 #  else
48098       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( flags == rhs.flags ) && ( handleType == rhs.handleType ) &&
48099              ( fd == rhs.fd );
48100 #  endif
48101     }
48102 
operator !=VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR48103     bool operator!=( ImportSemaphoreFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
48104     {
48105       return !operator==( rhs );
48106     }
48107 #endif
48108 
48109   public:
48110     VULKAN_HPP_NAMESPACE::StructureType                       sType      = StructureType::eImportSemaphoreFdInfoKHR;
48111     const void *                                              pNext      = {};
48112     VULKAN_HPP_NAMESPACE::Semaphore                           semaphore  = {};
48113     VULKAN_HPP_NAMESPACE::SemaphoreImportFlags                flags      = {};
48114     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
48115     int                                                       fd         = {};
48116   };
48117 
48118   template <>
48119   struct CppType<StructureType, StructureType::eImportSemaphoreFdInfoKHR>
48120   {
48121     using Type = ImportSemaphoreFdInfoKHR;
48122   };
48123 
48124 #if defined( VK_USE_PLATFORM_WIN32_KHR )
48125   struct ImportSemaphoreWin32HandleInfoKHR
48126   {
48127     using NativeType = VkImportSemaphoreWin32HandleInfoKHR;
48128 
48129     static const bool                                  allowDuplicate = false;
48130     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportSemaphoreWin32HandleInfoKHR;
48131 
48132 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportSemaphoreWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48133     VULKAN_HPP_CONSTEXPR ImportSemaphoreWin32HandleInfoKHR(
48134       VULKAN_HPP_NAMESPACE::Semaphore                           semaphore_  = {},
48135       VULKAN_HPP_NAMESPACE::SemaphoreImportFlags                flags_      = {},
48136       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd,
48137       HANDLE                                                    handle_     = {},
48138       LPCWSTR                                                   name_       = {},
48139       const void *                                              pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
48140       : pNext{ pNext_ }
48141       , semaphore{ semaphore_ }
48142       , flags{ flags_ }
48143       , handleType{ handleType_ }
48144       , handle{ handle_ }
48145       , name{ name_ }
48146     {
48147     }
48148 
48149     VULKAN_HPP_CONSTEXPR ImportSemaphoreWin32HandleInfoKHR( ImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48150 
ImportSemaphoreWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48151     ImportSemaphoreWin32HandleInfoKHR( VkImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
48152       : ImportSemaphoreWin32HandleInfoKHR( *reinterpret_cast<ImportSemaphoreWin32HandleInfoKHR const *>( &rhs ) )
48153     {
48154     }
48155 
48156     ImportSemaphoreWin32HandleInfoKHR & operator=( ImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48157 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48158 
operator =VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48159     ImportSemaphoreWin32HandleInfoKHR & operator=( VkImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
48160     {
48161       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR const *>( &rhs );
48162       return *this;
48163     }
48164 
48165 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48166     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48167     {
48168       pNext = pNext_;
48169       return *this;
48170     }
48171 
setSemaphoreVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48172     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
48173     {
48174       semaphore = semaphore_;
48175       return *this;
48176     }
48177 
setFlagsVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48178     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags_ ) VULKAN_HPP_NOEXCEPT
48179     {
48180       flags = flags_;
48181       return *this;
48182     }
48183 
48184     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48185       setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
48186     {
48187       handleType = handleType_;
48188       return *this;
48189     }
48190 
setHandleVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48191     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setHandle( HANDLE handle_ ) VULKAN_HPP_NOEXCEPT
48192     {
48193       handle = handle_;
48194       return *this;
48195     }
48196 
setNameVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48197     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT
48198     {
48199       name = name_;
48200       return *this;
48201     }
48202 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48203 
operator VkImportSemaphoreWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48204     operator VkImportSemaphoreWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
48205     {
48206       return *reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR *>( this );
48207     }
48208 
operator VkImportSemaphoreWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48209     operator VkImportSemaphoreWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
48210     {
48211       return *reinterpret_cast<VkImportSemaphoreWin32HandleInfoKHR *>( this );
48212     }
48213 
48214 #  if defined( VULKAN_HPP_USE_REFLECT )
48215 #    if 14 <= VULKAN_HPP_CPP_VERSION
48216     auto
48217 #    else
48218     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
48219                const void * const &,
48220                VULKAN_HPP_NAMESPACE::Semaphore const &,
48221                VULKAN_HPP_NAMESPACE::SemaphoreImportFlags const &,
48222                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &,
48223                HANDLE const &,
48224                LPCWSTR const &>
48225 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48226       reflect() const VULKAN_HPP_NOEXCEPT
48227     {
48228       return std::tie( sType, pNext, semaphore, flags, handleType, handle, name );
48229     }
48230 #  endif
48231 
48232 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
48233     auto operator<=>( ImportSemaphoreWin32HandleInfoKHR const & ) const = default;
48234 #  else
operator ==VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48235     bool operator==( ImportSemaphoreWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
48236     {
48237 #    if defined( VULKAN_HPP_USE_REFLECT )
48238       return this->reflect() == rhs.reflect();
48239 #    else
48240       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( flags == rhs.flags ) && ( handleType == rhs.handleType ) &&
48241              ( handle == rhs.handle ) && ( name == rhs.name );
48242 #    endif
48243     }
48244 
operator !=VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR48245     bool operator!=( ImportSemaphoreWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
48246     {
48247       return !operator==( rhs );
48248     }
48249 #  endif
48250 
48251   public:
48252     VULKAN_HPP_NAMESPACE::StructureType                       sType      = StructureType::eImportSemaphoreWin32HandleInfoKHR;
48253     const void *                                              pNext      = {};
48254     VULKAN_HPP_NAMESPACE::Semaphore                           semaphore  = {};
48255     VULKAN_HPP_NAMESPACE::SemaphoreImportFlags                flags      = {};
48256     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
48257     HANDLE                                                    handle     = {};
48258     LPCWSTR                                                   name       = {};
48259   };
48260 
48261   template <>
48262   struct CppType<StructureType, StructureType::eImportSemaphoreWin32HandleInfoKHR>
48263   {
48264     using Type = ImportSemaphoreWin32HandleInfoKHR;
48265   };
48266 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
48267 
48268 #if defined( VK_USE_PLATFORM_FUCHSIA )
48269   struct ImportSemaphoreZirconHandleInfoFUCHSIA
48270   {
48271     using NativeType = VkImportSemaphoreZirconHandleInfoFUCHSIA;
48272 
48273     static const bool                                  allowDuplicate = false;
48274     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eImportSemaphoreZirconHandleInfoFUCHSIA;
48275 
48276 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportSemaphoreZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48277     VULKAN_HPP_CONSTEXPR ImportSemaphoreZirconHandleInfoFUCHSIA(
48278       VULKAN_HPP_NAMESPACE::Semaphore                           semaphore_    = {},
48279       VULKAN_HPP_NAMESPACE::SemaphoreImportFlags                flags_        = {},
48280       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_   = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd,
48281       zx_handle_t                                               zirconHandle_ = {},
48282       const void *                                              pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
48283       : pNext{ pNext_ }
48284       , semaphore{ semaphore_ }
48285       , flags{ flags_ }
48286       , handleType{ handleType_ }
48287       , zirconHandle{ zirconHandle_ }
48288     {
48289     }
48290 
48291     VULKAN_HPP_CONSTEXPR ImportSemaphoreZirconHandleInfoFUCHSIA( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48292 
ImportSemaphoreZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48293     ImportSemaphoreZirconHandleInfoFUCHSIA( VkImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
48294       : ImportSemaphoreZirconHandleInfoFUCHSIA( *reinterpret_cast<ImportSemaphoreZirconHandleInfoFUCHSIA const *>( &rhs ) )
48295     {
48296     }
48297 
48298     ImportSemaphoreZirconHandleInfoFUCHSIA & operator=( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48299 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48300 
operator =VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48301     ImportSemaphoreZirconHandleInfoFUCHSIA & operator=( VkImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
48302     {
48303       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA const *>( &rhs );
48304       return *this;
48305     }
48306 
48307 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48308     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48309     {
48310       pNext = pNext_;
48311       return *this;
48312     }
48313 
setSemaphoreVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48314     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
48315     {
48316       semaphore = semaphore_;
48317       return *this;
48318     }
48319 
setFlagsVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48320     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA & setFlags( VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags_ ) VULKAN_HPP_NOEXCEPT
48321     {
48322       flags = flags_;
48323       return *this;
48324     }
48325 
48326     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA &
setHandleTypeVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48327       setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
48328     {
48329       handleType = handleType_;
48330       return *this;
48331     }
48332 
setZirconHandleVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48333     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA & setZirconHandle( zx_handle_t zirconHandle_ ) VULKAN_HPP_NOEXCEPT
48334     {
48335       zirconHandle = zirconHandle_;
48336       return *this;
48337     }
48338 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48339 
operator VkImportSemaphoreZirconHandleInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48340     operator VkImportSemaphoreZirconHandleInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
48341     {
48342       return *reinterpret_cast<const VkImportSemaphoreZirconHandleInfoFUCHSIA *>( this );
48343     }
48344 
operator VkImportSemaphoreZirconHandleInfoFUCHSIA&VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48345     operator VkImportSemaphoreZirconHandleInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
48346     {
48347       return *reinterpret_cast<VkImportSemaphoreZirconHandleInfoFUCHSIA *>( this );
48348     }
48349 
48350 #  if defined( VULKAN_HPP_USE_REFLECT )
48351 #    if 14 <= VULKAN_HPP_CPP_VERSION
48352     auto
48353 #    else
48354     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
48355                const void * const &,
48356                VULKAN_HPP_NAMESPACE::Semaphore const &,
48357                VULKAN_HPP_NAMESPACE::SemaphoreImportFlags const &,
48358                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &,
48359                zx_handle_t const &>
48360 #    endif
reflectVULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48361       reflect() const VULKAN_HPP_NOEXCEPT
48362     {
48363       return std::tie( sType, pNext, semaphore, flags, handleType, zirconHandle );
48364     }
48365 #  endif
48366 
48367 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48368     std::strong_ordering operator<=>( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
48369     {
48370       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
48371         return cmp;
48372       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
48373         return cmp;
48374       if ( auto cmp = semaphore <=> rhs.semaphore; cmp != 0 )
48375         return cmp;
48376       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
48377         return cmp;
48378       if ( auto cmp = handleType <=> rhs.handleType; cmp != 0 )
48379         return cmp;
48380       if ( auto cmp = memcmp( &zirconHandle, &rhs.zirconHandle, sizeof( zx_handle_t ) ); cmp != 0 )
48381         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
48382 
48383       return std::strong_ordering::equivalent;
48384     }
48385 #  endif
48386 
operator ==VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48387     bool operator==( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
48388     {
48389       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( flags == rhs.flags ) && ( handleType == rhs.handleType ) &&
48390              ( memcmp( &zirconHandle, &rhs.zirconHandle, sizeof( zx_handle_t ) ) == 0 );
48391     }
48392 
operator !=VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA48393     bool operator!=( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
48394     {
48395       return !operator==( rhs );
48396     }
48397 
48398   public:
48399     VULKAN_HPP_NAMESPACE::StructureType                       sType        = StructureType::eImportSemaphoreZirconHandleInfoFUCHSIA;
48400     const void *                                              pNext        = {};
48401     VULKAN_HPP_NAMESPACE::Semaphore                           semaphore    = {};
48402     VULKAN_HPP_NAMESPACE::SemaphoreImportFlags                flags        = {};
48403     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType   = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
48404     zx_handle_t                                               zirconHandle = {};
48405   };
48406 
48407   template <>
48408   struct CppType<StructureType, StructureType::eImportSemaphoreZirconHandleInfoFUCHSIA>
48409   {
48410     using Type = ImportSemaphoreZirconHandleInfoFUCHSIA;
48411   };
48412 #endif /*VK_USE_PLATFORM_FUCHSIA*/
48413 
48414   struct IndirectCommandsLayoutTokenNV
48415   {
48416     using NativeType = VkIndirectCommandsLayoutTokenNV;
48417 
48418     static const bool                                  allowDuplicate = false;
48419     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eIndirectCommandsLayoutTokenNV;
48420 
48421 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
IndirectCommandsLayoutTokenNVVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48422     VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutTokenNV(
48423       VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV tokenType_                    = VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV::eShaderGroup,
48424       uint32_t                                          stream_                       = {},
48425       uint32_t                                          offset_                       = {},
48426       uint32_t                                          vertexBindingUnit_            = {},
48427       VULKAN_HPP_NAMESPACE::Bool32                      vertexDynamicStride_          = {},
48428       VULKAN_HPP_NAMESPACE::PipelineLayout              pushconstantPipelineLayout_   = {},
48429       VULKAN_HPP_NAMESPACE::ShaderStageFlags            pushconstantShaderStageFlags_ = {},
48430       uint32_t                                          pushconstantOffset_           = {},
48431       uint32_t                                          pushconstantSize_             = {},
48432       VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV        indirectStateFlags_           = {},
48433       uint32_t                                          indexTypeCount_               = {},
48434       const VULKAN_HPP_NAMESPACE::IndexType *           pIndexTypes_                  = {},
48435       const uint32_t *                                  pIndexTypeValues_             = {},
48436       const void *                                      pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
48437       : pNext{ pNext_ }
48438       , tokenType{ tokenType_ }
48439       , stream{ stream_ }
48440       , offset{ offset_ }
48441       , vertexBindingUnit{ vertexBindingUnit_ }
48442       , vertexDynamicStride{ vertexDynamicStride_ }
48443       , pushconstantPipelineLayout{ pushconstantPipelineLayout_ }
48444       , pushconstantShaderStageFlags{ pushconstantShaderStageFlags_ }
48445       , pushconstantOffset{ pushconstantOffset_ }
48446       , pushconstantSize{ pushconstantSize_ }
48447       , indirectStateFlags{ indirectStateFlags_ }
48448       , indexTypeCount{ indexTypeCount_ }
48449       , pIndexTypes{ pIndexTypes_ }
48450       , pIndexTypeValues{ pIndexTypeValues_ }
48451     {
48452     }
48453 
48454     VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutTokenNV( IndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48455 
IndirectCommandsLayoutTokenNVVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48456     IndirectCommandsLayoutTokenNV( VkIndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT
48457       : IndirectCommandsLayoutTokenNV( *reinterpret_cast<IndirectCommandsLayoutTokenNV const *>( &rhs ) )
48458     {
48459     }
48460 
48461 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
IndirectCommandsLayoutTokenNVVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48462     IndirectCommandsLayoutTokenNV( VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV                                            tokenType_,
48463                                    uint32_t                                                                                     stream_,
48464                                    uint32_t                                                                                     offset_,
48465                                    uint32_t                                                                                     vertexBindingUnit_,
48466                                    VULKAN_HPP_NAMESPACE::Bool32                                                                 vertexDynamicStride_,
48467                                    VULKAN_HPP_NAMESPACE::PipelineLayout                                                         pushconstantPipelineLayout_,
48468                                    VULKAN_HPP_NAMESPACE::ShaderStageFlags                                                       pushconstantShaderStageFlags_,
48469                                    uint32_t                                                                                     pushconstantOffset_,
48470                                    uint32_t                                                                                     pushconstantSize_,
48471                                    VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV                                                   indirectStateFlags_,
48472                                    VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndexType> const & indexTypes_,
48473                                    VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &                        indexTypeValues_ = {},
48474                                    const void *                                                                                 pNext_           = nullptr )
48475       : pNext( pNext_ )
48476       , tokenType( tokenType_ )
48477       , stream( stream_ )
48478       , offset( offset_ )
48479       , vertexBindingUnit( vertexBindingUnit_ )
48480       , vertexDynamicStride( vertexDynamicStride_ )
48481       , pushconstantPipelineLayout( pushconstantPipelineLayout_ )
48482       , pushconstantShaderStageFlags( pushconstantShaderStageFlags_ )
48483       , pushconstantOffset( pushconstantOffset_ )
48484       , pushconstantSize( pushconstantSize_ )
48485       , indirectStateFlags( indirectStateFlags_ )
48486       , indexTypeCount( static_cast<uint32_t>( indexTypes_.size() ) )
48487       , pIndexTypes( indexTypes_.data() )
48488       , pIndexTypeValues( indexTypeValues_.data() )
48489     {
48490 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
48491       VULKAN_HPP_ASSERT( indexTypes_.size() == indexTypeValues_.size() );
48492 #    else
48493       if ( indexTypes_.size() != indexTypeValues_.size() )
48494       {
48495         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
48496                           "::IndirectCommandsLayoutTokenNV::IndirectCommandsLayoutTokenNV: indexTypes_.size() != indexTypeValues_.size()" );
48497       }
48498 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
48499     }
48500 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
48501 
48502     IndirectCommandsLayoutTokenNV & operator=( IndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48503 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48504 
operator =VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48505     IndirectCommandsLayoutTokenNV & operator=( VkIndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT
48506     {
48507       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV const *>( &rhs );
48508       return *this;
48509     }
48510 
48511 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48512     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48513     {
48514       pNext = pNext_;
48515       return *this;
48516     }
48517 
setTokenTypeVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48518     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setTokenType( VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV tokenType_ ) VULKAN_HPP_NOEXCEPT
48519     {
48520       tokenType = tokenType_;
48521       return *this;
48522     }
48523 
setStreamVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48524     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setStream( uint32_t stream_ ) VULKAN_HPP_NOEXCEPT
48525     {
48526       stream = stream_;
48527       return *this;
48528     }
48529 
setOffsetVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48530     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT
48531     {
48532       offset = offset_;
48533       return *this;
48534     }
48535 
setVertexBindingUnitVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48536     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setVertexBindingUnit( uint32_t vertexBindingUnit_ ) VULKAN_HPP_NOEXCEPT
48537     {
48538       vertexBindingUnit = vertexBindingUnit_;
48539       return *this;
48540     }
48541 
setVertexDynamicStrideVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48542     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setVertexDynamicStride( VULKAN_HPP_NAMESPACE::Bool32 vertexDynamicStride_ ) VULKAN_HPP_NOEXCEPT
48543     {
48544       vertexDynamicStride = vertexDynamicStride_;
48545       return *this;
48546     }
48547 
48548     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV &
setPushconstantPipelineLayoutVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48549       setPushconstantPipelineLayout( VULKAN_HPP_NAMESPACE::PipelineLayout pushconstantPipelineLayout_ ) VULKAN_HPP_NOEXCEPT
48550     {
48551       pushconstantPipelineLayout = pushconstantPipelineLayout_;
48552       return *this;
48553     }
48554 
48555     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV &
setPushconstantShaderStageFlagsVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48556       setPushconstantShaderStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags pushconstantShaderStageFlags_ ) VULKAN_HPP_NOEXCEPT
48557     {
48558       pushconstantShaderStageFlags = pushconstantShaderStageFlags_;
48559       return *this;
48560     }
48561 
setPushconstantOffsetVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48562     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPushconstantOffset( uint32_t pushconstantOffset_ ) VULKAN_HPP_NOEXCEPT
48563     {
48564       pushconstantOffset = pushconstantOffset_;
48565       return *this;
48566     }
48567 
setPushconstantSizeVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48568     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPushconstantSize( uint32_t pushconstantSize_ ) VULKAN_HPP_NOEXCEPT
48569     {
48570       pushconstantSize = pushconstantSize_;
48571       return *this;
48572     }
48573 
48574     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV &
setIndirectStateFlagsVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48575       setIndirectStateFlags( VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV indirectStateFlags_ ) VULKAN_HPP_NOEXCEPT
48576     {
48577       indirectStateFlags = indirectStateFlags_;
48578       return *this;
48579     }
48580 
setIndexTypeCountVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48581     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setIndexTypeCount( uint32_t indexTypeCount_ ) VULKAN_HPP_NOEXCEPT
48582     {
48583       indexTypeCount = indexTypeCount_;
48584       return *this;
48585     }
48586 
setPIndexTypesVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48587     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPIndexTypes( const VULKAN_HPP_NAMESPACE::IndexType * pIndexTypes_ ) VULKAN_HPP_NOEXCEPT
48588     {
48589       pIndexTypes = pIndexTypes_;
48590       return *this;
48591     }
48592 
48593 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
48594     IndirectCommandsLayoutTokenNV &
setIndexTypesVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48595       setIndexTypes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndexType> const & indexTypes_ ) VULKAN_HPP_NOEXCEPT
48596     {
48597       indexTypeCount = static_cast<uint32_t>( indexTypes_.size() );
48598       pIndexTypes    = indexTypes_.data();
48599       return *this;
48600     }
48601 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
48602 
setPIndexTypeValuesVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48603     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPIndexTypeValues( const uint32_t * pIndexTypeValues_ ) VULKAN_HPP_NOEXCEPT
48604     {
48605       pIndexTypeValues = pIndexTypeValues_;
48606       return *this;
48607     }
48608 
48609 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
48610     IndirectCommandsLayoutTokenNV &
setIndexTypeValuesVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48611       setIndexTypeValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & indexTypeValues_ ) VULKAN_HPP_NOEXCEPT
48612     {
48613       indexTypeCount   = static_cast<uint32_t>( indexTypeValues_.size() );
48614       pIndexTypeValues = indexTypeValues_.data();
48615       return *this;
48616     }
48617 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
48618 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48619 
operator VkIndirectCommandsLayoutTokenNV const&VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48620     operator VkIndirectCommandsLayoutTokenNV const &() const VULKAN_HPP_NOEXCEPT
48621     {
48622       return *reinterpret_cast<const VkIndirectCommandsLayoutTokenNV *>( this );
48623     }
48624 
operator VkIndirectCommandsLayoutTokenNV&VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48625     operator VkIndirectCommandsLayoutTokenNV &() VULKAN_HPP_NOEXCEPT
48626     {
48627       return *reinterpret_cast<VkIndirectCommandsLayoutTokenNV *>( this );
48628     }
48629 
48630 #if defined( VULKAN_HPP_USE_REFLECT )
48631 #  if 14 <= VULKAN_HPP_CPP_VERSION
48632     auto
48633 #  else
48634     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
48635                const void * const &,
48636                VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV const &,
48637                uint32_t const &,
48638                uint32_t const &,
48639                uint32_t const &,
48640                VULKAN_HPP_NAMESPACE::Bool32 const &,
48641                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
48642                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
48643                uint32_t const &,
48644                uint32_t const &,
48645                VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV const &,
48646                uint32_t const &,
48647                const VULKAN_HPP_NAMESPACE::IndexType * const &,
48648                const uint32_t * const &>
48649 #  endif
reflectVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48650       reflect() const VULKAN_HPP_NOEXCEPT
48651     {
48652       return std::tie( sType,
48653                        pNext,
48654                        tokenType,
48655                        stream,
48656                        offset,
48657                        vertexBindingUnit,
48658                        vertexDynamicStride,
48659                        pushconstantPipelineLayout,
48660                        pushconstantShaderStageFlags,
48661                        pushconstantOffset,
48662                        pushconstantSize,
48663                        indirectStateFlags,
48664                        indexTypeCount,
48665                        pIndexTypes,
48666                        pIndexTypeValues );
48667     }
48668 #endif
48669 
48670 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
48671     auto operator<=>( IndirectCommandsLayoutTokenNV const & ) const = default;
48672 #else
operator ==VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48673     bool operator==( IndirectCommandsLayoutTokenNV const & rhs ) const VULKAN_HPP_NOEXCEPT
48674     {
48675 #  if defined( VULKAN_HPP_USE_REFLECT )
48676       return this->reflect() == rhs.reflect();
48677 #  else
48678       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tokenType == rhs.tokenType ) && ( stream == rhs.stream ) && ( offset == rhs.offset ) &&
48679              ( vertexBindingUnit == rhs.vertexBindingUnit ) && ( vertexDynamicStride == rhs.vertexDynamicStride ) &&
48680              ( pushconstantPipelineLayout == rhs.pushconstantPipelineLayout ) && ( pushconstantShaderStageFlags == rhs.pushconstantShaderStageFlags ) &&
48681              ( pushconstantOffset == rhs.pushconstantOffset ) && ( pushconstantSize == rhs.pushconstantSize ) &&
48682              ( indirectStateFlags == rhs.indirectStateFlags ) && ( indexTypeCount == rhs.indexTypeCount ) && ( pIndexTypes == rhs.pIndexTypes ) &&
48683              ( pIndexTypeValues == rhs.pIndexTypeValues );
48684 #  endif
48685     }
48686 
operator !=VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV48687     bool operator!=( IndirectCommandsLayoutTokenNV const & rhs ) const VULKAN_HPP_NOEXCEPT
48688     {
48689       return !operator==( rhs );
48690     }
48691 #endif
48692 
48693   public:
48694     VULKAN_HPP_NAMESPACE::StructureType               sType                        = StructureType::eIndirectCommandsLayoutTokenNV;
48695     const void *                                      pNext                        = {};
48696     VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV tokenType                    = VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV::eShaderGroup;
48697     uint32_t                                          stream                       = {};
48698     uint32_t                                          offset                       = {};
48699     uint32_t                                          vertexBindingUnit            = {};
48700     VULKAN_HPP_NAMESPACE::Bool32                      vertexDynamicStride          = {};
48701     VULKAN_HPP_NAMESPACE::PipelineLayout              pushconstantPipelineLayout   = {};
48702     VULKAN_HPP_NAMESPACE::ShaderStageFlags            pushconstantShaderStageFlags = {};
48703     uint32_t                                          pushconstantOffset           = {};
48704     uint32_t                                          pushconstantSize             = {};
48705     VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV        indirectStateFlags           = {};
48706     uint32_t                                          indexTypeCount               = {};
48707     const VULKAN_HPP_NAMESPACE::IndexType *           pIndexTypes                  = {};
48708     const uint32_t *                                  pIndexTypeValues             = {};
48709   };
48710 
48711   template <>
48712   struct CppType<StructureType, StructureType::eIndirectCommandsLayoutTokenNV>
48713   {
48714     using Type = IndirectCommandsLayoutTokenNV;
48715   };
48716 
48717   struct IndirectCommandsLayoutCreateInfoNV
48718   {
48719     using NativeType = VkIndirectCommandsLayoutCreateInfoNV;
48720 
48721     static const bool                                  allowDuplicate = false;
48722     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eIndirectCommandsLayoutCreateInfoNV;
48723 
48724 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
48725     VULKAN_HPP_CONSTEXPR
IndirectCommandsLayoutCreateInfoNVVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV48726       IndirectCommandsLayoutCreateInfoNV( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV flags_ = {},
48727                                           VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_      = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
48728                                           uint32_t                                tokenCount_             = {},
48729                                           const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV * pTokens_        = {},
48730                                           uint32_t                                                    streamCount_    = {},
48731                                           const uint32_t *                                            pStreamStrides_ = {},
48732                                           const void *                                                pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
48733       : pNext{ pNext_ }
48734       , flags{ flags_ }
48735       , pipelineBindPoint{ pipelineBindPoint_ }
48736       , tokenCount{ tokenCount_ }
48737       , pTokens{ pTokens_ }
48738       , streamCount{ streamCount_ }
48739       , pStreamStrides{ pStreamStrides_ }
48740     {
48741     }
48742 
48743     VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutCreateInfoNV( IndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48744 
IndirectCommandsLayoutCreateInfoNVVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV48745     IndirectCommandsLayoutCreateInfoNV( VkIndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
48746       : IndirectCommandsLayoutCreateInfoNV( *reinterpret_cast<IndirectCommandsLayoutCreateInfoNV const *>( &rhs ) )
48747     {
48748     }
48749 
48750 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
IndirectCommandsLayoutCreateInfoNVVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV48751     IndirectCommandsLayoutCreateInfoNV(
48752       VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV                                                         flags_,
48753       VULKAN_HPP_NAMESPACE::PipelineBindPoint                                                                          pipelineBindPoint_,
48754       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV> const & tokens_,
48755       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &                                            streamStrides_ = {},
48756       const void *                                                                                                     pNext_         = nullptr )
48757       : pNext( pNext_ )
48758       , flags( flags_ )
48759       , pipelineBindPoint( pipelineBindPoint_ )
48760       , tokenCount( static_cast<uint32_t>( tokens_.size() ) )
48761       , pTokens( tokens_.data() )
48762       , streamCount( static_cast<uint32_t>( streamStrides_.size() ) )
48763       , pStreamStrides( streamStrides_.data() )
48764     {
48765     }
48766 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
48767 
48768     IndirectCommandsLayoutCreateInfoNV & operator=( IndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48769 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48770 
operator =VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV48771     IndirectCommandsLayoutCreateInfoNV & operator=( VkIndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
48772     {
48773       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV const *>( &rhs );
48774       return *this;
48775     }
48776 
48777 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV48778     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48779     {
48780       pNext = pNext_;
48781       return *this;
48782     }
48783 
setFlagsVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV48784     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & setFlags( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
48785     {
48786       flags = flags_;
48787       return *this;
48788     }
48789 
48790     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV &
setPipelineBindPointVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV48791       setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
48792     {
48793       pipelineBindPoint = pipelineBindPoint_;
48794       return *this;
48795     }
48796 
setTokenCountVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV48797     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & setTokenCount( uint32_t tokenCount_ ) VULKAN_HPP_NOEXCEPT
48798     {
48799       tokenCount = tokenCount_;
48800       return *this;
48801     }
48802 
48803     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV &
setPTokensVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV48804       setPTokens( const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV * pTokens_ ) VULKAN_HPP_NOEXCEPT
48805     {
48806       pTokens = pTokens_;
48807       return *this;
48808     }
48809 
48810 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
48811     IndirectCommandsLayoutCreateInfoNV &
setTokensVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV48812       setTokens( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV> const & tokens_ ) VULKAN_HPP_NOEXCEPT
48813     {
48814       tokenCount = static_cast<uint32_t>( tokens_.size() );
48815       pTokens    = tokens_.data();
48816       return *this;
48817     }
48818 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
48819 
setStreamCountVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV48820     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & setStreamCount( uint32_t streamCount_ ) VULKAN_HPP_NOEXCEPT
48821     {
48822       streamCount = streamCount_;
48823       return *this;
48824     }
48825 
setPStreamStridesVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV48826     VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & setPStreamStrides( const uint32_t * pStreamStrides_ ) VULKAN_HPP_NOEXCEPT
48827     {
48828       pStreamStrides = pStreamStrides_;
48829       return *this;
48830     }
48831 
48832 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
48833     IndirectCommandsLayoutCreateInfoNV &
setStreamStridesVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV48834       setStreamStrides( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & streamStrides_ ) VULKAN_HPP_NOEXCEPT
48835     {
48836       streamCount    = static_cast<uint32_t>( streamStrides_.size() );
48837       pStreamStrides = streamStrides_.data();
48838       return *this;
48839     }
48840 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
48841 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48842 
operator VkIndirectCommandsLayoutCreateInfoNV const&VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV48843     operator VkIndirectCommandsLayoutCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
48844     {
48845       return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNV *>( this );
48846     }
48847 
operator VkIndirectCommandsLayoutCreateInfoNV&VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV48848     operator VkIndirectCommandsLayoutCreateInfoNV &() VULKAN_HPP_NOEXCEPT
48849     {
48850       return *reinterpret_cast<VkIndirectCommandsLayoutCreateInfoNV *>( this );
48851     }
48852 
48853 #if defined( VULKAN_HPP_USE_REFLECT )
48854 #  if 14 <= VULKAN_HPP_CPP_VERSION
48855     auto
48856 #  else
48857     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
48858                const void * const &,
48859                VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV const &,
48860                VULKAN_HPP_NAMESPACE::PipelineBindPoint const &,
48861                uint32_t const &,
48862                const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV * const &,
48863                uint32_t const &,
48864                const uint32_t * const &>
48865 #  endif
reflectVULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV48866       reflect() const VULKAN_HPP_NOEXCEPT
48867     {
48868       return std::tie( sType, pNext, flags, pipelineBindPoint, tokenCount, pTokens, streamCount, pStreamStrides );
48869     }
48870 #endif
48871 
48872 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
48873     auto operator<=>( IndirectCommandsLayoutCreateInfoNV const & ) const = default;
48874 #else
operator ==VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV48875     bool operator==( IndirectCommandsLayoutCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
48876     {
48877 #  if defined( VULKAN_HPP_USE_REFLECT )
48878       return this->reflect() == rhs.reflect();
48879 #  else
48880       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) &&
48881              ( tokenCount == rhs.tokenCount ) && ( pTokens == rhs.pTokens ) && ( streamCount == rhs.streamCount ) && ( pStreamStrides == rhs.pStreamStrides );
48882 #  endif
48883     }
48884 
operator !=VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV48885     bool operator!=( IndirectCommandsLayoutCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
48886     {
48887       return !operator==( rhs );
48888     }
48889 #endif
48890 
48891   public:
48892     VULKAN_HPP_NAMESPACE::StructureType                         sType             = StructureType::eIndirectCommandsLayoutCreateInfoNV;
48893     const void *                                                pNext             = {};
48894     VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV    flags             = {};
48895     VULKAN_HPP_NAMESPACE::PipelineBindPoint                     pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
48896     uint32_t                                                    tokenCount        = {};
48897     const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV * pTokens           = {};
48898     uint32_t                                                    streamCount       = {};
48899     const uint32_t *                                            pStreamStrides    = {};
48900   };
48901 
48902   template <>
48903   struct CppType<StructureType, StructureType::eIndirectCommandsLayoutCreateInfoNV>
48904   {
48905     using Type = IndirectCommandsLayoutCreateInfoNV;
48906   };
48907 
48908   struct InitializePerformanceApiInfoINTEL
48909   {
48910     using NativeType = VkInitializePerformanceApiInfoINTEL;
48911 
48912     static const bool                                  allowDuplicate = false;
48913     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eInitializePerformanceApiInfoINTEL;
48914 
48915 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
InitializePerformanceApiInfoINTELVULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL48916     VULKAN_HPP_CONSTEXPR InitializePerformanceApiInfoINTEL( void * pUserData_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
48917       : pNext{ pNext_ }
48918       , pUserData{ pUserData_ }
48919     {
48920     }
48921 
48922     VULKAN_HPP_CONSTEXPR InitializePerformanceApiInfoINTEL( InitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48923 
InitializePerformanceApiInfoINTELVULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL48924     InitializePerformanceApiInfoINTEL( VkInitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
48925       : InitializePerformanceApiInfoINTEL( *reinterpret_cast<InitializePerformanceApiInfoINTEL const *>( &rhs ) )
48926     {
48927     }
48928 
48929     InitializePerformanceApiInfoINTEL & operator=( InitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48930 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48931 
operator =VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL48932     InitializePerformanceApiInfoINTEL & operator=( VkInitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
48933     {
48934       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL const *>( &rhs );
48935       return *this;
48936     }
48937 
48938 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL48939     VULKAN_HPP_CONSTEXPR_14 InitializePerformanceApiInfoINTEL & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48940     {
48941       pNext = pNext_;
48942       return *this;
48943     }
48944 
setPUserDataVULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL48945     VULKAN_HPP_CONSTEXPR_14 InitializePerformanceApiInfoINTEL & setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT
48946     {
48947       pUserData = pUserData_;
48948       return *this;
48949     }
48950 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48951 
operator VkInitializePerformanceApiInfoINTEL const&VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL48952     operator VkInitializePerformanceApiInfoINTEL const &() const VULKAN_HPP_NOEXCEPT
48953     {
48954       return *reinterpret_cast<const VkInitializePerformanceApiInfoINTEL *>( this );
48955     }
48956 
operator VkInitializePerformanceApiInfoINTEL&VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL48957     operator VkInitializePerformanceApiInfoINTEL &() VULKAN_HPP_NOEXCEPT
48958     {
48959       return *reinterpret_cast<VkInitializePerformanceApiInfoINTEL *>( this );
48960     }
48961 
48962 #if defined( VULKAN_HPP_USE_REFLECT )
48963 #  if 14 <= VULKAN_HPP_CPP_VERSION
48964     auto
48965 #  else
48966     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, void * const &>
48967 #  endif
reflectVULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL48968       reflect() const VULKAN_HPP_NOEXCEPT
48969     {
48970       return std::tie( sType, pNext, pUserData );
48971     }
48972 #endif
48973 
48974 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
48975     auto operator<=>( InitializePerformanceApiInfoINTEL const & ) const = default;
48976 #else
operator ==VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL48977     bool operator==( InitializePerformanceApiInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
48978     {
48979 #  if defined( VULKAN_HPP_USE_REFLECT )
48980       return this->reflect() == rhs.reflect();
48981 #  else
48982       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pUserData == rhs.pUserData );
48983 #  endif
48984     }
48985 
operator !=VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL48986     bool operator!=( InitializePerformanceApiInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
48987     {
48988       return !operator==( rhs );
48989     }
48990 #endif
48991 
48992   public:
48993     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eInitializePerformanceApiInfoINTEL;
48994     const void *                        pNext     = {};
48995     void *                              pUserData = {};
48996   };
48997 
48998   template <>
48999   struct CppType<StructureType, StructureType::eInitializePerformanceApiInfoINTEL>
49000   {
49001     using Type = InitializePerformanceApiInfoINTEL;
49002   };
49003 
49004   struct InputAttachmentAspectReference
49005   {
49006     using NativeType = VkInputAttachmentAspectReference;
49007 
49008 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
InputAttachmentAspectReferenceVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49009     VULKAN_HPP_CONSTEXPR InputAttachmentAspectReference( uint32_t                               subpass_              = {},
49010                                                          uint32_t                               inputAttachmentIndex_ = {},
49011                                                          VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_           = {} ) VULKAN_HPP_NOEXCEPT
49012       : subpass{ subpass_ }
49013       , inputAttachmentIndex{ inputAttachmentIndex_ }
49014       , aspectMask{ aspectMask_ }
49015     {
49016     }
49017 
49018     VULKAN_HPP_CONSTEXPR InputAttachmentAspectReference( InputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49019 
InputAttachmentAspectReferenceVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49020     InputAttachmentAspectReference( VkInputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT
49021       : InputAttachmentAspectReference( *reinterpret_cast<InputAttachmentAspectReference const *>( &rhs ) )
49022     {
49023     }
49024 
49025     InputAttachmentAspectReference & operator=( InputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49026 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49027 
operator =VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49028     InputAttachmentAspectReference & operator=( VkInputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT
49029     {
49030       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference const *>( &rhs );
49031       return *this;
49032     }
49033 
49034 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSubpassVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49035     VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference & setSubpass( uint32_t subpass_ ) VULKAN_HPP_NOEXCEPT
49036     {
49037       subpass = subpass_;
49038       return *this;
49039     }
49040 
setInputAttachmentIndexVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49041     VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference & setInputAttachmentIndex( uint32_t inputAttachmentIndex_ ) VULKAN_HPP_NOEXCEPT
49042     {
49043       inputAttachmentIndex = inputAttachmentIndex_;
49044       return *this;
49045     }
49046 
setAspectMaskVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49047     VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
49048     {
49049       aspectMask = aspectMask_;
49050       return *this;
49051     }
49052 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49053 
operator VkInputAttachmentAspectReference const&VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49054     operator VkInputAttachmentAspectReference const &() const VULKAN_HPP_NOEXCEPT
49055     {
49056       return *reinterpret_cast<const VkInputAttachmentAspectReference *>( this );
49057     }
49058 
operator VkInputAttachmentAspectReference&VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49059     operator VkInputAttachmentAspectReference &() VULKAN_HPP_NOEXCEPT
49060     {
49061       return *reinterpret_cast<VkInputAttachmentAspectReference *>( this );
49062     }
49063 
49064 #if defined( VULKAN_HPP_USE_REFLECT )
49065 #  if 14 <= VULKAN_HPP_CPP_VERSION
49066     auto
49067 #  else
49068     std::tuple<uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ImageAspectFlags const &>
49069 #  endif
reflectVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49070       reflect() const VULKAN_HPP_NOEXCEPT
49071     {
49072       return std::tie( subpass, inputAttachmentIndex, aspectMask );
49073     }
49074 #endif
49075 
49076 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
49077     auto operator<=>( InputAttachmentAspectReference const & ) const = default;
49078 #else
operator ==VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49079     bool operator==( InputAttachmentAspectReference const & rhs ) const VULKAN_HPP_NOEXCEPT
49080     {
49081 #  if defined( VULKAN_HPP_USE_REFLECT )
49082       return this->reflect() == rhs.reflect();
49083 #  else
49084       return ( subpass == rhs.subpass ) && ( inputAttachmentIndex == rhs.inputAttachmentIndex ) && ( aspectMask == rhs.aspectMask );
49085 #  endif
49086     }
49087 
operator !=VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference49088     bool operator!=( InputAttachmentAspectReference const & rhs ) const VULKAN_HPP_NOEXCEPT
49089     {
49090       return !operator==( rhs );
49091     }
49092 #endif
49093 
49094   public:
49095     uint32_t                               subpass              = {};
49096     uint32_t                               inputAttachmentIndex = {};
49097     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask           = {};
49098   };
49099 
49100   using InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference;
49101 
49102   struct InstanceCreateInfo
49103   {
49104     using NativeType = VkInstanceCreateInfo;
49105 
49106     static const bool                                  allowDuplicate = false;
49107     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eInstanceCreateInfo;
49108 
49109 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
InstanceCreateInfoVULKAN_HPP_NAMESPACE::InstanceCreateInfo49110     VULKAN_HPP_CONSTEXPR InstanceCreateInfo( VULKAN_HPP_NAMESPACE::InstanceCreateFlags     flags_                   = {},
49111                                              const VULKAN_HPP_NAMESPACE::ApplicationInfo * pApplicationInfo_        = {},
49112                                              uint32_t                                      enabledLayerCount_       = {},
49113                                              const char * const *                          ppEnabledLayerNames_     = {},
49114                                              uint32_t                                      enabledExtensionCount_   = {},
49115                                              const char * const *                          ppEnabledExtensionNames_ = {},
49116                                              const void *                                  pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
49117       : pNext{ pNext_ }
49118       , flags{ flags_ }
49119       , pApplicationInfo{ pApplicationInfo_ }
49120       , enabledLayerCount{ enabledLayerCount_ }
49121       , ppEnabledLayerNames{ ppEnabledLayerNames_ }
49122       , enabledExtensionCount{ enabledExtensionCount_ }
49123       , ppEnabledExtensionNames{ ppEnabledExtensionNames_ }
49124     {
49125     }
49126 
49127     VULKAN_HPP_CONSTEXPR InstanceCreateInfo( InstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49128 
InstanceCreateInfoVULKAN_HPP_NAMESPACE::InstanceCreateInfo49129     InstanceCreateInfo( VkInstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : InstanceCreateInfo( *reinterpret_cast<InstanceCreateInfo const *>( &rhs ) ) {}
49130 
49131 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
InstanceCreateInfoVULKAN_HPP_NAMESPACE::InstanceCreateInfo49132     InstanceCreateInfo( VULKAN_HPP_NAMESPACE::InstanceCreateFlags                                 flags_,
49133                         const VULKAN_HPP_NAMESPACE::ApplicationInfo *                             pApplicationInfo_,
49134                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledLayerNames_,
49135                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledExtensionNames_ = {},
49136                         const void *                                                              pNext_                  = nullptr )
49137       : pNext( pNext_ )
49138       , flags( flags_ )
49139       , pApplicationInfo( pApplicationInfo_ )
49140       , enabledLayerCount( static_cast<uint32_t>( pEnabledLayerNames_.size() ) )
49141       , ppEnabledLayerNames( pEnabledLayerNames_.data() )
49142       , enabledExtensionCount( static_cast<uint32_t>( pEnabledExtensionNames_.size() ) )
49143       , ppEnabledExtensionNames( pEnabledExtensionNames_.data() )
49144     {
49145     }
49146 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
49147 
49148     InstanceCreateInfo & operator=( InstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49149 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49150 
operator =VULKAN_HPP_NAMESPACE::InstanceCreateInfo49151     InstanceCreateInfo & operator=( VkInstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
49152     {
49153       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::InstanceCreateInfo const *>( &rhs );
49154       return *this;
49155     }
49156 
49157 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::InstanceCreateInfo49158     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
49159     {
49160       pNext = pNext_;
49161       return *this;
49162     }
49163 
setFlagsVULKAN_HPP_NAMESPACE::InstanceCreateInfo49164     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::InstanceCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
49165     {
49166       flags = flags_;
49167       return *this;
49168     }
49169 
setPApplicationInfoVULKAN_HPP_NAMESPACE::InstanceCreateInfo49170     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setPApplicationInfo( const VULKAN_HPP_NAMESPACE::ApplicationInfo * pApplicationInfo_ ) VULKAN_HPP_NOEXCEPT
49171     {
49172       pApplicationInfo = pApplicationInfo_;
49173       return *this;
49174     }
49175 
setEnabledLayerCountVULKAN_HPP_NAMESPACE::InstanceCreateInfo49176     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setEnabledLayerCount( uint32_t enabledLayerCount_ ) VULKAN_HPP_NOEXCEPT
49177     {
49178       enabledLayerCount = enabledLayerCount_;
49179       return *this;
49180     }
49181 
setPpEnabledLayerNamesVULKAN_HPP_NAMESPACE::InstanceCreateInfo49182     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setPpEnabledLayerNames( const char * const * ppEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT
49183     {
49184       ppEnabledLayerNames = ppEnabledLayerNames_;
49185       return *this;
49186     }
49187 
49188 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
49189     InstanceCreateInfo &
setPEnabledLayerNamesVULKAN_HPP_NAMESPACE::InstanceCreateInfo49190       setPEnabledLayerNames( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT
49191     {
49192       enabledLayerCount   = static_cast<uint32_t>( pEnabledLayerNames_.size() );
49193       ppEnabledLayerNames = pEnabledLayerNames_.data();
49194       return *this;
49195     }
49196 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
49197 
setEnabledExtensionCountVULKAN_HPP_NAMESPACE::InstanceCreateInfo49198     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setEnabledExtensionCount( uint32_t enabledExtensionCount_ ) VULKAN_HPP_NOEXCEPT
49199     {
49200       enabledExtensionCount = enabledExtensionCount_;
49201       return *this;
49202     }
49203 
setPpEnabledExtensionNamesVULKAN_HPP_NAMESPACE::InstanceCreateInfo49204     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setPpEnabledExtensionNames( const char * const * ppEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT
49205     {
49206       ppEnabledExtensionNames = ppEnabledExtensionNames_;
49207       return *this;
49208     }
49209 
49210 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
49211     InstanceCreateInfo &
setPEnabledExtensionNamesVULKAN_HPP_NAMESPACE::InstanceCreateInfo49212       setPEnabledExtensionNames( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT
49213     {
49214       enabledExtensionCount   = static_cast<uint32_t>( pEnabledExtensionNames_.size() );
49215       ppEnabledExtensionNames = pEnabledExtensionNames_.data();
49216       return *this;
49217     }
49218 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
49219 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49220 
operator VkInstanceCreateInfo const&VULKAN_HPP_NAMESPACE::InstanceCreateInfo49221     operator VkInstanceCreateInfo const &() const VULKAN_HPP_NOEXCEPT
49222     {
49223       return *reinterpret_cast<const VkInstanceCreateInfo *>( this );
49224     }
49225 
operator VkInstanceCreateInfo&VULKAN_HPP_NAMESPACE::InstanceCreateInfo49226     operator VkInstanceCreateInfo &() VULKAN_HPP_NOEXCEPT
49227     {
49228       return *reinterpret_cast<VkInstanceCreateInfo *>( this );
49229     }
49230 
49231 #if defined( VULKAN_HPP_USE_REFLECT )
49232 #  if 14 <= VULKAN_HPP_CPP_VERSION
49233     auto
49234 #  else
49235     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
49236                const void * const &,
49237                VULKAN_HPP_NAMESPACE::InstanceCreateFlags const &,
49238                const VULKAN_HPP_NAMESPACE::ApplicationInfo * const &,
49239                uint32_t const &,
49240                const char * const * const &,
49241                uint32_t const &,
49242                const char * const * const &>
49243 #  endif
reflectVULKAN_HPP_NAMESPACE::InstanceCreateInfo49244       reflect() const VULKAN_HPP_NOEXCEPT
49245     {
49246       return std::tie( sType, pNext, flags, pApplicationInfo, enabledLayerCount, ppEnabledLayerNames, enabledExtensionCount, ppEnabledExtensionNames );
49247     }
49248 #endif
49249 
49250 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::InstanceCreateInfo49251     std::strong_ordering operator<=>( InstanceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
49252     {
49253       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
49254         return cmp;
49255       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
49256         return cmp;
49257       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
49258         return cmp;
49259       if ( auto cmp = pApplicationInfo <=> rhs.pApplicationInfo; cmp != 0 )
49260         return cmp;
49261       if ( auto cmp = enabledLayerCount <=> rhs.enabledLayerCount; cmp != 0 )
49262         return cmp;
49263       for ( size_t i = 0; i < enabledLayerCount; ++i )
49264       {
49265         if ( ppEnabledLayerNames[i] != rhs.ppEnabledLayerNames[i] )
49266           if ( auto cmp = strcmp( ppEnabledLayerNames[i], rhs.ppEnabledLayerNames[i] ); cmp != 0 )
49267             return cmp < 0 ? std::strong_ordering::less : std::strong_ordering::greater;
49268       }
49269       if ( auto cmp = enabledExtensionCount <=> rhs.enabledExtensionCount; cmp != 0 )
49270         return cmp;
49271       for ( size_t i = 0; i < enabledExtensionCount; ++i )
49272       {
49273         if ( ppEnabledExtensionNames[i] != rhs.ppEnabledExtensionNames[i] )
49274           if ( auto cmp = strcmp( ppEnabledExtensionNames[i], rhs.ppEnabledExtensionNames[i] ); cmp != 0 )
49275             return cmp < 0 ? std::strong_ordering::less : std::strong_ordering::greater;
49276       }
49277 
49278       return std::strong_ordering::equivalent;
49279     }
49280 #endif
49281 
operator ==VULKAN_HPP_NAMESPACE::InstanceCreateInfo49282     bool operator==( InstanceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
49283     {
49284       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pApplicationInfo == rhs.pApplicationInfo ) &&
49285              ( enabledLayerCount == rhs.enabledLayerCount ) &&
49286              std::equal( ppEnabledLayerNames,
49287                          ppEnabledLayerNames + enabledLayerCount,
49288                          rhs.ppEnabledLayerNames,
49289                          []( char const * left, char const * right ) { return ( left == right ) || ( strcmp( left, right ) == 0 ); } ) &&
49290              ( enabledExtensionCount == rhs.enabledExtensionCount ) &&
49291              std::equal( ppEnabledExtensionNames,
49292                          ppEnabledExtensionNames + enabledExtensionCount,
49293                          rhs.ppEnabledExtensionNames,
49294                          []( char const * left, char const * right ) { return ( left == right ) || ( strcmp( left, right ) == 0 ); } );
49295     }
49296 
operator !=VULKAN_HPP_NAMESPACE::InstanceCreateInfo49297     bool operator!=( InstanceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
49298     {
49299       return !operator==( rhs );
49300     }
49301 
49302   public:
49303     VULKAN_HPP_NAMESPACE::StructureType           sType                   = StructureType::eInstanceCreateInfo;
49304     const void *                                  pNext                   = {};
49305     VULKAN_HPP_NAMESPACE::InstanceCreateFlags     flags                   = {};
49306     const VULKAN_HPP_NAMESPACE::ApplicationInfo * pApplicationInfo        = {};
49307     uint32_t                                      enabledLayerCount       = {};
49308     const char * const *                          ppEnabledLayerNames     = {};
49309     uint32_t                                      enabledExtensionCount   = {};
49310     const char * const *                          ppEnabledExtensionNames = {};
49311   };
49312 
49313   template <>
49314   struct CppType<StructureType, StructureType::eInstanceCreateInfo>
49315   {
49316     using Type = InstanceCreateInfo;
49317   };
49318 
49319   struct LatencySleepInfoNV
49320   {
49321     using NativeType = VkLatencySleepInfoNV;
49322 
49323     static const bool                                  allowDuplicate = false;
49324     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eLatencySleepInfoNV;
49325 
49326 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
49327     VULKAN_HPP_CONSTEXPR
LatencySleepInfoNVVULKAN_HPP_NAMESPACE::LatencySleepInfoNV49328       LatencySleepInfoNV( VULKAN_HPP_NAMESPACE::Semaphore signalSemaphore_ = {}, uint64_t value_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
49329       : pNext{ pNext_ }
49330       , signalSemaphore{ signalSemaphore_ }
49331       , value{ value_ }
49332     {
49333     }
49334 
49335     VULKAN_HPP_CONSTEXPR LatencySleepInfoNV( LatencySleepInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49336 
LatencySleepInfoNVVULKAN_HPP_NAMESPACE::LatencySleepInfoNV49337     LatencySleepInfoNV( VkLatencySleepInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT : LatencySleepInfoNV( *reinterpret_cast<LatencySleepInfoNV const *>( &rhs ) ) {}
49338 
49339     LatencySleepInfoNV & operator=( LatencySleepInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49340 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49341 
operator =VULKAN_HPP_NAMESPACE::LatencySleepInfoNV49342     LatencySleepInfoNV & operator=( VkLatencySleepInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
49343     {
49344       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::LatencySleepInfoNV const *>( &rhs );
49345       return *this;
49346     }
49347 
49348 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::LatencySleepInfoNV49349     VULKAN_HPP_CONSTEXPR_14 LatencySleepInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
49350     {
49351       pNext = pNext_;
49352       return *this;
49353     }
49354 
setSignalSemaphoreVULKAN_HPP_NAMESPACE::LatencySleepInfoNV49355     VULKAN_HPP_CONSTEXPR_14 LatencySleepInfoNV & setSignalSemaphore( VULKAN_HPP_NAMESPACE::Semaphore signalSemaphore_ ) VULKAN_HPP_NOEXCEPT
49356     {
49357       signalSemaphore = signalSemaphore_;
49358       return *this;
49359     }
49360 
setValueVULKAN_HPP_NAMESPACE::LatencySleepInfoNV49361     VULKAN_HPP_CONSTEXPR_14 LatencySleepInfoNV & setValue( uint64_t value_ ) VULKAN_HPP_NOEXCEPT
49362     {
49363       value = value_;
49364       return *this;
49365     }
49366 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49367 
operator VkLatencySleepInfoNV const&VULKAN_HPP_NAMESPACE::LatencySleepInfoNV49368     operator VkLatencySleepInfoNV const &() const VULKAN_HPP_NOEXCEPT
49369     {
49370       return *reinterpret_cast<const VkLatencySleepInfoNV *>( this );
49371     }
49372 
operator VkLatencySleepInfoNV&VULKAN_HPP_NAMESPACE::LatencySleepInfoNV49373     operator VkLatencySleepInfoNV &() VULKAN_HPP_NOEXCEPT
49374     {
49375       return *reinterpret_cast<VkLatencySleepInfoNV *>( this );
49376     }
49377 
49378 #if defined( VULKAN_HPP_USE_REFLECT )
49379 #  if 14 <= VULKAN_HPP_CPP_VERSION
49380     auto
49381 #  else
49382     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Semaphore const &, uint64_t const &>
49383 #  endif
reflectVULKAN_HPP_NAMESPACE::LatencySleepInfoNV49384       reflect() const VULKAN_HPP_NOEXCEPT
49385     {
49386       return std::tie( sType, pNext, signalSemaphore, value );
49387     }
49388 #endif
49389 
49390 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
49391     auto operator<=>( LatencySleepInfoNV const & ) const = default;
49392 #else
operator ==VULKAN_HPP_NAMESPACE::LatencySleepInfoNV49393     bool operator==( LatencySleepInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
49394     {
49395 #  if defined( VULKAN_HPP_USE_REFLECT )
49396       return this->reflect() == rhs.reflect();
49397 #  else
49398       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( signalSemaphore == rhs.signalSemaphore ) && ( value == rhs.value );
49399 #  endif
49400     }
49401 
operator !=VULKAN_HPP_NAMESPACE::LatencySleepInfoNV49402     bool operator!=( LatencySleepInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
49403     {
49404       return !operator==( rhs );
49405     }
49406 #endif
49407 
49408   public:
49409     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eLatencySleepInfoNV;
49410     const void *                        pNext           = {};
49411     VULKAN_HPP_NAMESPACE::Semaphore     signalSemaphore = {};
49412     uint64_t                            value           = {};
49413   };
49414 
49415   template <>
49416   struct CppType<StructureType, StructureType::eLatencySleepInfoNV>
49417   {
49418     using Type = LatencySleepInfoNV;
49419   };
49420 
49421   struct LatencySleepModeInfoNV
49422   {
49423     using NativeType = VkLatencySleepModeInfoNV;
49424 
49425     static const bool                                  allowDuplicate = false;
49426     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eLatencySleepModeInfoNV;
49427 
49428 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
LatencySleepModeInfoNVVULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49429     VULKAN_HPP_CONSTEXPR LatencySleepModeInfoNV( VULKAN_HPP_NAMESPACE::Bool32 lowLatencyMode_    = {},
49430                                                  VULKAN_HPP_NAMESPACE::Bool32 lowLatencyBoost_   = {},
49431                                                  uint32_t                     minimumIntervalUs_ = {},
49432                                                  const void *                 pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
49433       : pNext{ pNext_ }
49434       , lowLatencyMode{ lowLatencyMode_ }
49435       , lowLatencyBoost{ lowLatencyBoost_ }
49436       , minimumIntervalUs{ minimumIntervalUs_ }
49437     {
49438     }
49439 
49440     VULKAN_HPP_CONSTEXPR LatencySleepModeInfoNV( LatencySleepModeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49441 
LatencySleepModeInfoNVVULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49442     LatencySleepModeInfoNV( VkLatencySleepModeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
49443       : LatencySleepModeInfoNV( *reinterpret_cast<LatencySleepModeInfoNV const *>( &rhs ) )
49444     {
49445     }
49446 
49447     LatencySleepModeInfoNV & operator=( LatencySleepModeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49448 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49449 
operator =VULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49450     LatencySleepModeInfoNV & operator=( VkLatencySleepModeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
49451     {
49452       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV const *>( &rhs );
49453       return *this;
49454     }
49455 
49456 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49457     VULKAN_HPP_CONSTEXPR_14 LatencySleepModeInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
49458     {
49459       pNext = pNext_;
49460       return *this;
49461     }
49462 
setLowLatencyModeVULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49463     VULKAN_HPP_CONSTEXPR_14 LatencySleepModeInfoNV & setLowLatencyMode( VULKAN_HPP_NAMESPACE::Bool32 lowLatencyMode_ ) VULKAN_HPP_NOEXCEPT
49464     {
49465       lowLatencyMode = lowLatencyMode_;
49466       return *this;
49467     }
49468 
setLowLatencyBoostVULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49469     VULKAN_HPP_CONSTEXPR_14 LatencySleepModeInfoNV & setLowLatencyBoost( VULKAN_HPP_NAMESPACE::Bool32 lowLatencyBoost_ ) VULKAN_HPP_NOEXCEPT
49470     {
49471       lowLatencyBoost = lowLatencyBoost_;
49472       return *this;
49473     }
49474 
setMinimumIntervalUsVULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49475     VULKAN_HPP_CONSTEXPR_14 LatencySleepModeInfoNV & setMinimumIntervalUs( uint32_t minimumIntervalUs_ ) VULKAN_HPP_NOEXCEPT
49476     {
49477       minimumIntervalUs = minimumIntervalUs_;
49478       return *this;
49479     }
49480 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49481 
operator VkLatencySleepModeInfoNV const&VULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49482     operator VkLatencySleepModeInfoNV const &() const VULKAN_HPP_NOEXCEPT
49483     {
49484       return *reinterpret_cast<const VkLatencySleepModeInfoNV *>( this );
49485     }
49486 
operator VkLatencySleepModeInfoNV&VULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49487     operator VkLatencySleepModeInfoNV &() VULKAN_HPP_NOEXCEPT
49488     {
49489       return *reinterpret_cast<VkLatencySleepModeInfoNV *>( this );
49490     }
49491 
49492 #if defined( VULKAN_HPP_USE_REFLECT )
49493 #  if 14 <= VULKAN_HPP_CPP_VERSION
49494     auto
49495 #  else
49496     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
49497                const void * const &,
49498                VULKAN_HPP_NAMESPACE::Bool32 const &,
49499                VULKAN_HPP_NAMESPACE::Bool32 const &,
49500                uint32_t const &>
49501 #  endif
reflectVULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49502       reflect() const VULKAN_HPP_NOEXCEPT
49503     {
49504       return std::tie( sType, pNext, lowLatencyMode, lowLatencyBoost, minimumIntervalUs );
49505     }
49506 #endif
49507 
49508 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
49509     auto operator<=>( LatencySleepModeInfoNV const & ) const = default;
49510 #else
operator ==VULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49511     bool operator==( LatencySleepModeInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
49512     {
49513 #  if defined( VULKAN_HPP_USE_REFLECT )
49514       return this->reflect() == rhs.reflect();
49515 #  else
49516       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( lowLatencyMode == rhs.lowLatencyMode ) && ( lowLatencyBoost == rhs.lowLatencyBoost ) &&
49517              ( minimumIntervalUs == rhs.minimumIntervalUs );
49518 #  endif
49519     }
49520 
operator !=VULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV49521     bool operator!=( LatencySleepModeInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
49522     {
49523       return !operator==( rhs );
49524     }
49525 #endif
49526 
49527   public:
49528     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::eLatencySleepModeInfoNV;
49529     const void *                        pNext             = {};
49530     VULKAN_HPP_NAMESPACE::Bool32        lowLatencyMode    = {};
49531     VULKAN_HPP_NAMESPACE::Bool32        lowLatencyBoost   = {};
49532     uint32_t                            minimumIntervalUs = {};
49533   };
49534 
49535   template <>
49536   struct CppType<StructureType, StructureType::eLatencySleepModeInfoNV>
49537   {
49538     using Type = LatencySleepModeInfoNV;
49539   };
49540 
49541   struct LatencySubmissionPresentIdNV
49542   {
49543     using NativeType = VkLatencySubmissionPresentIdNV;
49544 
49545     static const bool                                  allowDuplicate = false;
49546     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eLatencySubmissionPresentIdNV;
49547 
49548 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
LatencySubmissionPresentIdNVVULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV49549     VULKAN_HPP_CONSTEXPR LatencySubmissionPresentIdNV( uint64_t presentID_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
49550       : pNext{ pNext_ }
49551       , presentID{ presentID_ }
49552     {
49553     }
49554 
49555     VULKAN_HPP_CONSTEXPR LatencySubmissionPresentIdNV( LatencySubmissionPresentIdNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49556 
LatencySubmissionPresentIdNVVULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV49557     LatencySubmissionPresentIdNV( VkLatencySubmissionPresentIdNV const & rhs ) VULKAN_HPP_NOEXCEPT
49558       : LatencySubmissionPresentIdNV( *reinterpret_cast<LatencySubmissionPresentIdNV const *>( &rhs ) )
49559     {
49560     }
49561 
49562     LatencySubmissionPresentIdNV & operator=( LatencySubmissionPresentIdNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49563 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49564 
operator =VULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV49565     LatencySubmissionPresentIdNV & operator=( VkLatencySubmissionPresentIdNV const & rhs ) VULKAN_HPP_NOEXCEPT
49566     {
49567       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV const *>( &rhs );
49568       return *this;
49569     }
49570 
49571 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV49572     VULKAN_HPP_CONSTEXPR_14 LatencySubmissionPresentIdNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
49573     {
49574       pNext = pNext_;
49575       return *this;
49576     }
49577 
setPresentIDVULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV49578     VULKAN_HPP_CONSTEXPR_14 LatencySubmissionPresentIdNV & setPresentID( uint64_t presentID_ ) VULKAN_HPP_NOEXCEPT
49579     {
49580       presentID = presentID_;
49581       return *this;
49582     }
49583 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49584 
operator VkLatencySubmissionPresentIdNV const&VULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV49585     operator VkLatencySubmissionPresentIdNV const &() const VULKAN_HPP_NOEXCEPT
49586     {
49587       return *reinterpret_cast<const VkLatencySubmissionPresentIdNV *>( this );
49588     }
49589 
operator VkLatencySubmissionPresentIdNV&VULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV49590     operator VkLatencySubmissionPresentIdNV &() VULKAN_HPP_NOEXCEPT
49591     {
49592       return *reinterpret_cast<VkLatencySubmissionPresentIdNV *>( this );
49593     }
49594 
49595 #if defined( VULKAN_HPP_USE_REFLECT )
49596 #  if 14 <= VULKAN_HPP_CPP_VERSION
49597     auto
49598 #  else
49599     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint64_t const &>
49600 #  endif
reflectVULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV49601       reflect() const VULKAN_HPP_NOEXCEPT
49602     {
49603       return std::tie( sType, pNext, presentID );
49604     }
49605 #endif
49606 
49607 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
49608     auto operator<=>( LatencySubmissionPresentIdNV const & ) const = default;
49609 #else
operator ==VULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV49610     bool operator==( LatencySubmissionPresentIdNV const & rhs ) const VULKAN_HPP_NOEXCEPT
49611     {
49612 #  if defined( VULKAN_HPP_USE_REFLECT )
49613       return this->reflect() == rhs.reflect();
49614 #  else
49615       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentID == rhs.presentID );
49616 #  endif
49617     }
49618 
operator !=VULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV49619     bool operator!=( LatencySubmissionPresentIdNV const & rhs ) const VULKAN_HPP_NOEXCEPT
49620     {
49621       return !operator==( rhs );
49622     }
49623 #endif
49624 
49625   public:
49626     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eLatencySubmissionPresentIdNV;
49627     const void *                        pNext     = {};
49628     uint64_t                            presentID = {};
49629   };
49630 
49631   template <>
49632   struct CppType<StructureType, StructureType::eLatencySubmissionPresentIdNV>
49633   {
49634     using Type = LatencySubmissionPresentIdNV;
49635   };
49636 
49637   struct LatencySurfaceCapabilitiesNV
49638   {
49639     using NativeType = VkLatencySurfaceCapabilitiesNV;
49640 
49641     static const bool                                  allowDuplicate = false;
49642     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eLatencySurfaceCapabilitiesNV;
49643 
49644 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
LatencySurfaceCapabilitiesNVVULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV49645     VULKAN_HPP_CONSTEXPR LatencySurfaceCapabilitiesNV( uint32_t                               presentModeCount_ = {},
49646                                                        VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes_    = {},
49647                                                        const void *                           pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
49648       : pNext{ pNext_ }
49649       , presentModeCount{ presentModeCount_ }
49650       , pPresentModes{ pPresentModes_ }
49651     {
49652     }
49653 
49654     VULKAN_HPP_CONSTEXPR LatencySurfaceCapabilitiesNV( LatencySurfaceCapabilitiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49655 
LatencySurfaceCapabilitiesNVVULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV49656     LatencySurfaceCapabilitiesNV( VkLatencySurfaceCapabilitiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
49657       : LatencySurfaceCapabilitiesNV( *reinterpret_cast<LatencySurfaceCapabilitiesNV const *>( &rhs ) )
49658     {
49659     }
49660 
49661 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
LatencySurfaceCapabilitiesNVVULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV49662     LatencySurfaceCapabilitiesNV( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::PresentModeKHR> const & presentModes_,
49663                                   const void *                                                                                pNext_ = nullptr )
49664       : pNext( pNext_ ), presentModeCount( static_cast<uint32_t>( presentModes_.size() ) ), pPresentModes( presentModes_.data() )
49665     {
49666     }
49667 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
49668 
49669     LatencySurfaceCapabilitiesNV & operator=( LatencySurfaceCapabilitiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49670 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49671 
operator =VULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV49672     LatencySurfaceCapabilitiesNV & operator=( VkLatencySurfaceCapabilitiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
49673     {
49674       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV const *>( &rhs );
49675       return *this;
49676     }
49677 
49678 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV49679     VULKAN_HPP_CONSTEXPR_14 LatencySurfaceCapabilitiesNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
49680     {
49681       pNext = pNext_;
49682       return *this;
49683     }
49684 
setPresentModeCountVULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV49685     VULKAN_HPP_CONSTEXPR_14 LatencySurfaceCapabilitiesNV & setPresentModeCount( uint32_t presentModeCount_ ) VULKAN_HPP_NOEXCEPT
49686     {
49687       presentModeCount = presentModeCount_;
49688       return *this;
49689     }
49690 
setPPresentModesVULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV49691     VULKAN_HPP_CONSTEXPR_14 LatencySurfaceCapabilitiesNV & setPPresentModes( VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes_ ) VULKAN_HPP_NOEXCEPT
49692     {
49693       pPresentModes = pPresentModes_;
49694       return *this;
49695     }
49696 
49697 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
49698     LatencySurfaceCapabilitiesNV &
setPresentModesVULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV49699       setPresentModes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::PresentModeKHR> const & presentModes_ ) VULKAN_HPP_NOEXCEPT
49700     {
49701       presentModeCount = static_cast<uint32_t>( presentModes_.size() );
49702       pPresentModes    = presentModes_.data();
49703       return *this;
49704     }
49705 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
49706 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49707 
operator VkLatencySurfaceCapabilitiesNV const&VULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV49708     operator VkLatencySurfaceCapabilitiesNV const &() const VULKAN_HPP_NOEXCEPT
49709     {
49710       return *reinterpret_cast<const VkLatencySurfaceCapabilitiesNV *>( this );
49711     }
49712 
operator VkLatencySurfaceCapabilitiesNV&VULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV49713     operator VkLatencySurfaceCapabilitiesNV &() VULKAN_HPP_NOEXCEPT
49714     {
49715       return *reinterpret_cast<VkLatencySurfaceCapabilitiesNV *>( this );
49716     }
49717 
49718 #if defined( VULKAN_HPP_USE_REFLECT )
49719 #  if 14 <= VULKAN_HPP_CPP_VERSION
49720     auto
49721 #  else
49722     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::PresentModeKHR * const &>
49723 #  endif
reflectVULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV49724       reflect() const VULKAN_HPP_NOEXCEPT
49725     {
49726       return std::tie( sType, pNext, presentModeCount, pPresentModes );
49727     }
49728 #endif
49729 
49730 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
49731     auto operator<=>( LatencySurfaceCapabilitiesNV const & ) const = default;
49732 #else
operator ==VULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV49733     bool operator==( LatencySurfaceCapabilitiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
49734     {
49735 #  if defined( VULKAN_HPP_USE_REFLECT )
49736       return this->reflect() == rhs.reflect();
49737 #  else
49738       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentModeCount == rhs.presentModeCount ) && ( pPresentModes == rhs.pPresentModes );
49739 #  endif
49740     }
49741 
operator !=VULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV49742     bool operator!=( LatencySurfaceCapabilitiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
49743     {
49744       return !operator==( rhs );
49745     }
49746 #endif
49747 
49748   public:
49749     VULKAN_HPP_NAMESPACE::StructureType    sType            = StructureType::eLatencySurfaceCapabilitiesNV;
49750     const void *                           pNext            = {};
49751     uint32_t                               presentModeCount = {};
49752     VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes    = {};
49753   };
49754 
49755   template <>
49756   struct CppType<StructureType, StructureType::eLatencySurfaceCapabilitiesNV>
49757   {
49758     using Type = LatencySurfaceCapabilitiesNV;
49759   };
49760 
49761   struct LayerProperties
49762   {
49763     using NativeType = VkLayerProperties;
49764 
49765 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
LayerPropertiesVULKAN_HPP_NAMESPACE::LayerProperties49766     VULKAN_HPP_CONSTEXPR_14 LayerProperties( std::array<char, VK_MAX_EXTENSION_NAME_SIZE> const & layerName_             = {},
49767                                              uint32_t                                             specVersion_           = {},
49768                                              uint32_t                                             implementationVersion_ = {},
49769                                              std::array<char, VK_MAX_DESCRIPTION_SIZE> const &    description_           = {} ) VULKAN_HPP_NOEXCEPT
49770       : layerName{ layerName_ }
49771       , specVersion{ specVersion_ }
49772       , implementationVersion{ implementationVersion_ }
49773       , description{ description_ }
49774     {
49775     }
49776 
49777     VULKAN_HPP_CONSTEXPR_14 LayerProperties( LayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49778 
LayerPropertiesVULKAN_HPP_NAMESPACE::LayerProperties49779     LayerProperties( VkLayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT : LayerProperties( *reinterpret_cast<LayerProperties const *>( &rhs ) ) {}
49780 
49781 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
LayerPropertiesVULKAN_HPP_NAMESPACE::LayerProperties49782     LayerProperties( std::string const & layerName_, uint32_t specVersion_ = {}, uint32_t implementationVersion_ = {}, std::string const & description_ = {} )
49783       : specVersion( specVersion_ ), implementationVersion( implementationVersion_ )
49784     {
49785       VULKAN_HPP_ASSERT( layerName_.size() < VK_MAX_EXTENSION_NAME_SIZE );
49786 #    if defined( WIN32 )
49787       strncpy_s( layerName, VK_MAX_EXTENSION_NAME_SIZE, layerName_.data(), layerName_.size() );
49788 #    else
49789       strncpy( layerName, layerName_.data(), std::min<size_t>( VK_MAX_EXTENSION_NAME_SIZE, layerName_.size() ) );
49790 #    endif
49791 
49792       VULKAN_HPP_ASSERT( description_.size() < VK_MAX_DESCRIPTION_SIZE );
49793 #    if defined( WIN32 )
49794       strncpy_s( description, VK_MAX_DESCRIPTION_SIZE, description_.data(), description_.size() );
49795 #    else
49796       strncpy( description, description_.data(), std::min<size_t>( VK_MAX_DESCRIPTION_SIZE, description_.size() ) );
49797 #    endif
49798     }
49799 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
49800 
49801     LayerProperties & operator=( LayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49802 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49803 
operator =VULKAN_HPP_NAMESPACE::LayerProperties49804     LayerProperties & operator=( VkLayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT
49805     {
49806       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::LayerProperties const *>( &rhs );
49807       return *this;
49808     }
49809 
operator VkLayerProperties const&VULKAN_HPP_NAMESPACE::LayerProperties49810     operator VkLayerProperties const &() const VULKAN_HPP_NOEXCEPT
49811     {
49812       return *reinterpret_cast<const VkLayerProperties *>( this );
49813     }
49814 
operator VkLayerProperties&VULKAN_HPP_NAMESPACE::LayerProperties49815     operator VkLayerProperties &() VULKAN_HPP_NOEXCEPT
49816     {
49817       return *reinterpret_cast<VkLayerProperties *>( this );
49818     }
49819 
49820 #if defined( VULKAN_HPP_USE_REFLECT )
49821 #  if 14 <= VULKAN_HPP_CPP_VERSION
49822     auto
49823 #  else
49824     std::tuple<VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> const &,
49825                uint32_t const &,
49826                uint32_t const &,
49827                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &>
49828 #  endif
reflectVULKAN_HPP_NAMESPACE::LayerProperties49829       reflect() const VULKAN_HPP_NOEXCEPT
49830     {
49831       return std::tie( layerName, specVersion, implementationVersion, description );
49832     }
49833 #endif
49834 
49835 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::LayerProperties49836     std::strong_ordering operator<=>( LayerProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
49837     {
49838       if ( auto cmp = strcmp( layerName, rhs.layerName ); cmp != 0 )
49839         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
49840       if ( auto cmp = specVersion <=> rhs.specVersion; cmp != 0 )
49841         return cmp;
49842       if ( auto cmp = implementationVersion <=> rhs.implementationVersion; cmp != 0 )
49843         return cmp;
49844       if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 )
49845         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
49846 
49847       return std::strong_ordering::equivalent;
49848     }
49849 #endif
49850 
operator ==VULKAN_HPP_NAMESPACE::LayerProperties49851     bool operator==( LayerProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
49852     {
49853       return ( strcmp( layerName, rhs.layerName ) == 0 ) && ( specVersion == rhs.specVersion ) && ( implementationVersion == rhs.implementationVersion ) &&
49854              ( strcmp( description, rhs.description ) == 0 );
49855     }
49856 
operator !=VULKAN_HPP_NAMESPACE::LayerProperties49857     bool operator!=( LayerProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
49858     {
49859       return !operator==( rhs );
49860     }
49861 
49862   public:
49863     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> layerName             = {};
49864     uint32_t                                                               specVersion           = {};
49865     uint32_t                                                               implementationVersion = {};
49866     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE>    description           = {};
49867   };
49868 
49869   struct LayerSettingEXT
49870   {
49871     using NativeType = VkLayerSettingEXT;
49872 
49873 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
LayerSettingEXTVULKAN_HPP_NAMESPACE::LayerSettingEXT49874     VULKAN_HPP_CONSTEXPR LayerSettingEXT( const char *                              pLayerName_   = {},
49875                                           const char *                              pSettingName_ = {},
49876                                           VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT type_         = VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT::eBool32,
49877                                           uint32_t                                  valueCount_   = {},
49878                                           const void *                              pValues_      = {} ) VULKAN_HPP_NOEXCEPT
49879       : pLayerName{ pLayerName_ }
49880       , pSettingName{ pSettingName_ }
49881       , type{ type_ }
49882       , valueCount{ valueCount_ }
49883       , pValues{ pValues_ }
49884     {
49885     }
49886 
49887     VULKAN_HPP_CONSTEXPR LayerSettingEXT( LayerSettingEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49888 
LayerSettingEXTVULKAN_HPP_NAMESPACE::LayerSettingEXT49889     LayerSettingEXT( VkLayerSettingEXT const & rhs ) VULKAN_HPP_NOEXCEPT : LayerSettingEXT( *reinterpret_cast<LayerSettingEXT const *>( &rhs ) ) {}
49890 
49891 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
49892     template <typename T>
LayerSettingEXTVULKAN_HPP_NAMESPACE::LayerSettingEXT49893     LayerSettingEXT( const char *                                                   pLayerName_,
49894                      const char *                                                   pSettingName_,
49895                      VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT                      type_,
49896                      VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & values_ )
49897       : pLayerName( pLayerName_ )
49898       , pSettingName( pSettingName_ )
49899       , type( type_ )
49900       , valueCount( static_cast<uint32_t>( values_.size() * sizeof( T ) ) )
49901       , pValues( values_.data() )
49902     {
49903     }
49904 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
49905 
49906     LayerSettingEXT & operator=( LayerSettingEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49907 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49908 
operator =VULKAN_HPP_NAMESPACE::LayerSettingEXT49909     LayerSettingEXT & operator=( VkLayerSettingEXT const & rhs ) VULKAN_HPP_NOEXCEPT
49910     {
49911       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::LayerSettingEXT const *>( &rhs );
49912       return *this;
49913     }
49914 
49915 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPLayerNameVULKAN_HPP_NAMESPACE::LayerSettingEXT49916     VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT & setPLayerName( const char * pLayerName_ ) VULKAN_HPP_NOEXCEPT
49917     {
49918       pLayerName = pLayerName_;
49919       return *this;
49920     }
49921 
setPSettingNameVULKAN_HPP_NAMESPACE::LayerSettingEXT49922     VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT & setPSettingName( const char * pSettingName_ ) VULKAN_HPP_NOEXCEPT
49923     {
49924       pSettingName = pSettingName_;
49925       return *this;
49926     }
49927 
setTypeVULKAN_HPP_NAMESPACE::LayerSettingEXT49928     VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT & setType( VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT type_ ) VULKAN_HPP_NOEXCEPT
49929     {
49930       type = type_;
49931       return *this;
49932     }
49933 
setValueCountVULKAN_HPP_NAMESPACE::LayerSettingEXT49934     VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT & setValueCount( uint32_t valueCount_ ) VULKAN_HPP_NOEXCEPT
49935     {
49936       valueCount = valueCount_;
49937       return *this;
49938     }
49939 
setPValuesVULKAN_HPP_NAMESPACE::LayerSettingEXT49940     VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT & setPValues( const void * pValues_ ) VULKAN_HPP_NOEXCEPT
49941     {
49942       pValues = pValues_;
49943       return *this;
49944     }
49945 
49946 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
49947     template <typename T>
setValuesVULKAN_HPP_NAMESPACE::LayerSettingEXT49948     LayerSettingEXT & setValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & values_ ) VULKAN_HPP_NOEXCEPT
49949     {
49950       valueCount = static_cast<uint32_t>( values_.size() * sizeof( T ) );
49951       pValues    = values_.data();
49952       return *this;
49953     }
49954 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
49955 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49956 
operator VkLayerSettingEXT const&VULKAN_HPP_NAMESPACE::LayerSettingEXT49957     operator VkLayerSettingEXT const &() const VULKAN_HPP_NOEXCEPT
49958     {
49959       return *reinterpret_cast<const VkLayerSettingEXT *>( this );
49960     }
49961 
operator VkLayerSettingEXT&VULKAN_HPP_NAMESPACE::LayerSettingEXT49962     operator VkLayerSettingEXT &() VULKAN_HPP_NOEXCEPT
49963     {
49964       return *reinterpret_cast<VkLayerSettingEXT *>( this );
49965     }
49966 
49967 #if defined( VULKAN_HPP_USE_REFLECT )
49968 #  if 14 <= VULKAN_HPP_CPP_VERSION
49969     auto
49970 #  else
49971     std::tuple<const char * const &, const char * const &, VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT const &, uint32_t const &, const void * const &>
49972 #  endif
reflectVULKAN_HPP_NAMESPACE::LayerSettingEXT49973       reflect() const VULKAN_HPP_NOEXCEPT
49974     {
49975       return std::tie( pLayerName, pSettingName, type, valueCount, pValues );
49976     }
49977 #endif
49978 
49979 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::LayerSettingEXT49980     std::strong_ordering operator<=>( LayerSettingEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
49981     {
49982       if ( pLayerName != rhs.pLayerName )
49983         if ( auto cmp = strcmp( pLayerName, rhs.pLayerName ); cmp != 0 )
49984           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
49985       if ( pSettingName != rhs.pSettingName )
49986         if ( auto cmp = strcmp( pSettingName, rhs.pSettingName ); cmp != 0 )
49987           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
49988       if ( auto cmp = type <=> rhs.type; cmp != 0 )
49989         return cmp;
49990       if ( auto cmp = valueCount <=> rhs.valueCount; cmp != 0 )
49991         return cmp;
49992       if ( auto cmp = pValues <=> rhs.pValues; cmp != 0 )
49993         return cmp;
49994 
49995       return std::strong_ordering::equivalent;
49996     }
49997 #endif
49998 
operator ==VULKAN_HPP_NAMESPACE::LayerSettingEXT49999     bool operator==( LayerSettingEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
50000     {
50001       return ( ( pLayerName == rhs.pLayerName ) || ( strcmp( pLayerName, rhs.pLayerName ) == 0 ) ) &&
50002              ( ( pSettingName == rhs.pSettingName ) || ( strcmp( pSettingName, rhs.pSettingName ) == 0 ) ) && ( type == rhs.type ) &&
50003              ( valueCount == rhs.valueCount ) && ( pValues == rhs.pValues );
50004     }
50005 
operator !=VULKAN_HPP_NAMESPACE::LayerSettingEXT50006     bool operator!=( LayerSettingEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
50007     {
50008       return !operator==( rhs );
50009     }
50010 
50011   public:
50012     const char *                              pLayerName   = {};
50013     const char *                              pSettingName = {};
50014     VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT type         = VULKAN_HPP_NAMESPACE::LayerSettingTypeEXT::eBool32;
50015     uint32_t                                  valueCount   = {};
50016     const void *                              pValues      = {};
50017   };
50018 
50019   struct LayerSettingsCreateInfoEXT
50020   {
50021     using NativeType = VkLayerSettingsCreateInfoEXT;
50022 
50023     static const bool                                  allowDuplicate = true;
50024     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eLayerSettingsCreateInfoEXT;
50025 
50026 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
LayerSettingsCreateInfoEXTVULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50027     VULKAN_HPP_CONSTEXPR LayerSettingsCreateInfoEXT( uint32_t                                      settingCount_ = {},
50028                                                      const VULKAN_HPP_NAMESPACE::LayerSettingEXT * pSettings_    = {},
50029                                                      const void *                                  pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
50030       : pNext{ pNext_ }
50031       , settingCount{ settingCount_ }
50032       , pSettings{ pSettings_ }
50033     {
50034     }
50035 
50036     VULKAN_HPP_CONSTEXPR LayerSettingsCreateInfoEXT( LayerSettingsCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50037 
LayerSettingsCreateInfoEXTVULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50038     LayerSettingsCreateInfoEXT( VkLayerSettingsCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
50039       : LayerSettingsCreateInfoEXT( *reinterpret_cast<LayerSettingsCreateInfoEXT const *>( &rhs ) )
50040     {
50041     }
50042 
50043 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
LayerSettingsCreateInfoEXTVULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50044     LayerSettingsCreateInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::LayerSettingEXT> const & settings_,
50045                                 const void *                                                                                       pNext_ = nullptr )
50046       : pNext( pNext_ ), settingCount( static_cast<uint32_t>( settings_.size() ) ), pSettings( settings_.data() )
50047     {
50048     }
50049 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
50050 
50051     LayerSettingsCreateInfoEXT & operator=( LayerSettingsCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50052 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50053 
operator =VULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50054     LayerSettingsCreateInfoEXT & operator=( VkLayerSettingsCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
50055     {
50056       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT const *>( &rhs );
50057       return *this;
50058     }
50059 
50060 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50061     VULKAN_HPP_CONSTEXPR_14 LayerSettingsCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
50062     {
50063       pNext = pNext_;
50064       return *this;
50065     }
50066 
setSettingCountVULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50067     VULKAN_HPP_CONSTEXPR_14 LayerSettingsCreateInfoEXT & setSettingCount( uint32_t settingCount_ ) VULKAN_HPP_NOEXCEPT
50068     {
50069       settingCount = settingCount_;
50070       return *this;
50071     }
50072 
setPSettingsVULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50073     VULKAN_HPP_CONSTEXPR_14 LayerSettingsCreateInfoEXT & setPSettings( const VULKAN_HPP_NAMESPACE::LayerSettingEXT * pSettings_ ) VULKAN_HPP_NOEXCEPT
50074     {
50075       pSettings = pSettings_;
50076       return *this;
50077     }
50078 
50079 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
50080     LayerSettingsCreateInfoEXT &
setSettingsVULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50081       setSettings( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::LayerSettingEXT> const & settings_ ) VULKAN_HPP_NOEXCEPT
50082     {
50083       settingCount = static_cast<uint32_t>( settings_.size() );
50084       pSettings    = settings_.data();
50085       return *this;
50086     }
50087 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
50088 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50089 
operator VkLayerSettingsCreateInfoEXT const&VULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50090     operator VkLayerSettingsCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
50091     {
50092       return *reinterpret_cast<const VkLayerSettingsCreateInfoEXT *>( this );
50093     }
50094 
operator VkLayerSettingsCreateInfoEXT&VULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50095     operator VkLayerSettingsCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
50096     {
50097       return *reinterpret_cast<VkLayerSettingsCreateInfoEXT *>( this );
50098     }
50099 
50100 #if defined( VULKAN_HPP_USE_REFLECT )
50101 #  if 14 <= VULKAN_HPP_CPP_VERSION
50102     auto
50103 #  else
50104     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::LayerSettingEXT * const &>
50105 #  endif
reflectVULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50106       reflect() const VULKAN_HPP_NOEXCEPT
50107     {
50108       return std::tie( sType, pNext, settingCount, pSettings );
50109     }
50110 #endif
50111 
50112 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50113     auto operator<=>( LayerSettingsCreateInfoEXT const & ) const = default;
50114 #else
operator ==VULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50115     bool operator==( LayerSettingsCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
50116     {
50117 #  if defined( VULKAN_HPP_USE_REFLECT )
50118       return this->reflect() == rhs.reflect();
50119 #  else
50120       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( settingCount == rhs.settingCount ) && ( pSettings == rhs.pSettings );
50121 #  endif
50122     }
50123 
operator !=VULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT50124     bool operator!=( LayerSettingsCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
50125     {
50126       return !operator==( rhs );
50127     }
50128 #endif
50129 
50130   public:
50131     VULKAN_HPP_NAMESPACE::StructureType           sType        = StructureType::eLayerSettingsCreateInfoEXT;
50132     const void *                                  pNext        = {};
50133     uint32_t                                      settingCount = {};
50134     const VULKAN_HPP_NAMESPACE::LayerSettingEXT * pSettings    = {};
50135   };
50136 
50137   template <>
50138   struct CppType<StructureType, StructureType::eLayerSettingsCreateInfoEXT>
50139   {
50140     using Type = LayerSettingsCreateInfoEXT;
50141   };
50142 
50143 #if defined( VK_USE_PLATFORM_MACOS_MVK )
50144   struct MacOSSurfaceCreateInfoMVK
50145   {
50146     using NativeType = VkMacOSSurfaceCreateInfoMVK;
50147 
50148     static const bool                                  allowDuplicate = false;
50149     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMacosSurfaceCreateInfoMVK;
50150 
50151 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MacOSSurfaceCreateInfoMVKVULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50152     VULKAN_HPP_CONSTEXPR MacOSSurfaceCreateInfoMVK( VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateFlagsMVK flags_ = {},
50153                                                     const void *                                     pView_ = {},
50154                                                     const void *                                     pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
50155       : pNext{ pNext_ }
50156       , flags{ flags_ }
50157       , pView{ pView_ }
50158     {
50159     }
50160 
50161     VULKAN_HPP_CONSTEXPR MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50162 
MacOSSurfaceCreateInfoMVKVULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50163     MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT
50164       : MacOSSurfaceCreateInfoMVK( *reinterpret_cast<MacOSSurfaceCreateInfoMVK const *>( &rhs ) )
50165     {
50166     }
50167 
50168     MacOSSurfaceCreateInfoMVK & operator=( MacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50169 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50170 
operator =VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50171     MacOSSurfaceCreateInfoMVK & operator=( VkMacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT
50172     {
50173       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK const *>( &rhs );
50174       return *this;
50175     }
50176 
50177 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50178     VULKAN_HPP_CONSTEXPR_14 MacOSSurfaceCreateInfoMVK & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
50179     {
50180       pNext = pNext_;
50181       return *this;
50182     }
50183 
setFlagsVULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50184     VULKAN_HPP_CONSTEXPR_14 MacOSSurfaceCreateInfoMVK & setFlags( VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateFlagsMVK flags_ ) VULKAN_HPP_NOEXCEPT
50185     {
50186       flags = flags_;
50187       return *this;
50188     }
50189 
setPViewVULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50190     VULKAN_HPP_CONSTEXPR_14 MacOSSurfaceCreateInfoMVK & setPView( const void * pView_ ) VULKAN_HPP_NOEXCEPT
50191     {
50192       pView = pView_;
50193       return *this;
50194     }
50195 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50196 
operator VkMacOSSurfaceCreateInfoMVK const&VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50197     operator VkMacOSSurfaceCreateInfoMVK const &() const VULKAN_HPP_NOEXCEPT
50198     {
50199       return *reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK *>( this );
50200     }
50201 
operator VkMacOSSurfaceCreateInfoMVK&VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50202     operator VkMacOSSurfaceCreateInfoMVK &() VULKAN_HPP_NOEXCEPT
50203     {
50204       return *reinterpret_cast<VkMacOSSurfaceCreateInfoMVK *>( this );
50205     }
50206 
50207 #  if defined( VULKAN_HPP_USE_REFLECT )
50208 #    if 14 <= VULKAN_HPP_CPP_VERSION
50209     auto
50210 #    else
50211     std::
50212       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateFlagsMVK const &, const void * const &>
50213 #    endif
reflectVULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50214       reflect() const VULKAN_HPP_NOEXCEPT
50215     {
50216       return std::tie( sType, pNext, flags, pView );
50217     }
50218 #  endif
50219 
50220 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50221     auto operator<=>( MacOSSurfaceCreateInfoMVK const & ) const = default;
50222 #  else
operator ==VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50223     bool operator==( MacOSSurfaceCreateInfoMVK const & rhs ) const VULKAN_HPP_NOEXCEPT
50224     {
50225 #    if defined( VULKAN_HPP_USE_REFLECT )
50226       return this->reflect() == rhs.reflect();
50227 #    else
50228       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pView == rhs.pView );
50229 #    endif
50230     }
50231 
operator !=VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK50232     bool operator!=( MacOSSurfaceCreateInfoMVK const & rhs ) const VULKAN_HPP_NOEXCEPT
50233     {
50234       return !operator==( rhs );
50235     }
50236 #  endif
50237 
50238   public:
50239     VULKAN_HPP_NAMESPACE::StructureType              sType = StructureType::eMacosSurfaceCreateInfoMVK;
50240     const void *                                     pNext = {};
50241     VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateFlagsMVK flags = {};
50242     const void *                                     pView = {};
50243   };
50244 
50245   template <>
50246   struct CppType<StructureType, StructureType::eMacosSurfaceCreateInfoMVK>
50247   {
50248     using Type = MacOSSurfaceCreateInfoMVK;
50249   };
50250 #endif /*VK_USE_PLATFORM_MACOS_MVK*/
50251 
50252   struct MappedMemoryRange
50253   {
50254     using NativeType = VkMappedMemoryRange;
50255 
50256     static const bool                                  allowDuplicate = false;
50257     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMappedMemoryRange;
50258 
50259 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MappedMemoryRangeVULKAN_HPP_NAMESPACE::MappedMemoryRange50260     VULKAN_HPP_CONSTEXPR MappedMemoryRange( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {},
50261                                             VULKAN_HPP_NAMESPACE::DeviceSize   offset_ = {},
50262                                             VULKAN_HPP_NAMESPACE::DeviceSize   size_   = {},
50263                                             const void *                       pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
50264       : pNext{ pNext_ }
50265       , memory{ memory_ }
50266       , offset{ offset_ }
50267       , size{ size_ }
50268     {
50269     }
50270 
50271     VULKAN_HPP_CONSTEXPR MappedMemoryRange( MappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50272 
MappedMemoryRangeVULKAN_HPP_NAMESPACE::MappedMemoryRange50273     MappedMemoryRange( VkMappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT : MappedMemoryRange( *reinterpret_cast<MappedMemoryRange const *>( &rhs ) ) {}
50274 
50275     MappedMemoryRange & operator=( MappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50276 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50277 
operator =VULKAN_HPP_NAMESPACE::MappedMemoryRange50278     MappedMemoryRange & operator=( VkMappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT
50279     {
50280       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MappedMemoryRange const *>( &rhs );
50281       return *this;
50282     }
50283 
50284 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MappedMemoryRange50285     VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
50286     {
50287       pNext = pNext_;
50288       return *this;
50289     }
50290 
setMemoryVULKAN_HPP_NAMESPACE::MappedMemoryRange50291     VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
50292     {
50293       memory = memory_;
50294       return *this;
50295     }
50296 
setOffsetVULKAN_HPP_NAMESPACE::MappedMemoryRange50297     VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
50298     {
50299       offset = offset_;
50300       return *this;
50301     }
50302 
setSizeVULKAN_HPP_NAMESPACE::MappedMemoryRange50303     VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
50304     {
50305       size = size_;
50306       return *this;
50307     }
50308 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50309 
operator VkMappedMemoryRange const&VULKAN_HPP_NAMESPACE::MappedMemoryRange50310     operator VkMappedMemoryRange const &() const VULKAN_HPP_NOEXCEPT
50311     {
50312       return *reinterpret_cast<const VkMappedMemoryRange *>( this );
50313     }
50314 
operator VkMappedMemoryRange&VULKAN_HPP_NAMESPACE::MappedMemoryRange50315     operator VkMappedMemoryRange &() VULKAN_HPP_NOEXCEPT
50316     {
50317       return *reinterpret_cast<VkMappedMemoryRange *>( this );
50318     }
50319 
50320 #if defined( VULKAN_HPP_USE_REFLECT )
50321 #  if 14 <= VULKAN_HPP_CPP_VERSION
50322     auto
50323 #  else
50324     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
50325                const void * const &,
50326                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
50327                VULKAN_HPP_NAMESPACE::DeviceSize const &,
50328                VULKAN_HPP_NAMESPACE::DeviceSize const &>
50329 #  endif
reflectVULKAN_HPP_NAMESPACE::MappedMemoryRange50330       reflect() const VULKAN_HPP_NOEXCEPT
50331     {
50332       return std::tie( sType, pNext, memory, offset, size );
50333     }
50334 #endif
50335 
50336 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50337     auto operator<=>( MappedMemoryRange const & ) const = default;
50338 #else
operator ==VULKAN_HPP_NAMESPACE::MappedMemoryRange50339     bool operator==( MappedMemoryRange const & rhs ) const VULKAN_HPP_NOEXCEPT
50340     {
50341 #  if defined( VULKAN_HPP_USE_REFLECT )
50342       return this->reflect() == rhs.reflect();
50343 #  else
50344       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && ( offset == rhs.offset ) && ( size == rhs.size );
50345 #  endif
50346     }
50347 
operator !=VULKAN_HPP_NAMESPACE::MappedMemoryRange50348     bool operator!=( MappedMemoryRange const & rhs ) const VULKAN_HPP_NOEXCEPT
50349     {
50350       return !operator==( rhs );
50351     }
50352 #endif
50353 
50354   public:
50355     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eMappedMemoryRange;
50356     const void *                        pNext  = {};
50357     VULKAN_HPP_NAMESPACE::DeviceMemory  memory = {};
50358     VULKAN_HPP_NAMESPACE::DeviceSize    offset = {};
50359     VULKAN_HPP_NAMESPACE::DeviceSize    size   = {};
50360   };
50361 
50362   template <>
50363   struct CppType<StructureType, StructureType::eMappedMemoryRange>
50364   {
50365     using Type = MappedMemoryRange;
50366   };
50367 
50368   struct MemoryAllocateFlagsInfo
50369   {
50370     using NativeType = VkMemoryAllocateFlagsInfo;
50371 
50372     static const bool                                  allowDuplicate = false;
50373     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryAllocateFlagsInfo;
50374 
50375 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryAllocateFlagsInfoVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50376     VULKAN_HPP_CONSTEXPR MemoryAllocateFlagsInfo( VULKAN_HPP_NAMESPACE::MemoryAllocateFlags flags_      = {},
50377                                                   uint32_t                                  deviceMask_ = {},
50378                                                   const void *                              pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
50379       : pNext{ pNext_ }
50380       , flags{ flags_ }
50381       , deviceMask{ deviceMask_ }
50382     {
50383     }
50384 
50385     VULKAN_HPP_CONSTEXPR MemoryAllocateFlagsInfo( MemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50386 
MemoryAllocateFlagsInfoVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50387     MemoryAllocateFlagsInfo( VkMemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
50388       : MemoryAllocateFlagsInfo( *reinterpret_cast<MemoryAllocateFlagsInfo const *>( &rhs ) )
50389     {
50390     }
50391 
50392     MemoryAllocateFlagsInfo & operator=( MemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50393 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50394 
operator =VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50395     MemoryAllocateFlagsInfo & operator=( VkMemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
50396     {
50397       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo const *>( &rhs );
50398       return *this;
50399     }
50400 
50401 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50402     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
50403     {
50404       pNext = pNext_;
50405       return *this;
50406     }
50407 
setFlagsVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50408     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo & setFlags( VULKAN_HPP_NAMESPACE::MemoryAllocateFlags flags_ ) VULKAN_HPP_NOEXCEPT
50409     {
50410       flags = flags_;
50411       return *this;
50412     }
50413 
setDeviceMaskVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50414     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT
50415     {
50416       deviceMask = deviceMask_;
50417       return *this;
50418     }
50419 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50420 
operator VkMemoryAllocateFlagsInfo const&VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50421     operator VkMemoryAllocateFlagsInfo const &() const VULKAN_HPP_NOEXCEPT
50422     {
50423       return *reinterpret_cast<const VkMemoryAllocateFlagsInfo *>( this );
50424     }
50425 
operator VkMemoryAllocateFlagsInfo&VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50426     operator VkMemoryAllocateFlagsInfo &() VULKAN_HPP_NOEXCEPT
50427     {
50428       return *reinterpret_cast<VkMemoryAllocateFlagsInfo *>( this );
50429     }
50430 
50431 #if defined( VULKAN_HPP_USE_REFLECT )
50432 #  if 14 <= VULKAN_HPP_CPP_VERSION
50433     auto
50434 #  else
50435     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::MemoryAllocateFlags const &, uint32_t const &>
50436 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50437       reflect() const VULKAN_HPP_NOEXCEPT
50438     {
50439       return std::tie( sType, pNext, flags, deviceMask );
50440     }
50441 #endif
50442 
50443 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50444     auto operator<=>( MemoryAllocateFlagsInfo const & ) const = default;
50445 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50446     bool operator==( MemoryAllocateFlagsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
50447     {
50448 #  if defined( VULKAN_HPP_USE_REFLECT )
50449       return this->reflect() == rhs.reflect();
50450 #  else
50451       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( deviceMask == rhs.deviceMask );
50452 #  endif
50453     }
50454 
operator !=VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo50455     bool operator!=( MemoryAllocateFlagsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
50456     {
50457       return !operator==( rhs );
50458     }
50459 #endif
50460 
50461   public:
50462     VULKAN_HPP_NAMESPACE::StructureType       sType      = StructureType::eMemoryAllocateFlagsInfo;
50463     const void *                              pNext      = {};
50464     VULKAN_HPP_NAMESPACE::MemoryAllocateFlags flags      = {};
50465     uint32_t                                  deviceMask = {};
50466   };
50467 
50468   template <>
50469   struct CppType<StructureType, StructureType::eMemoryAllocateFlagsInfo>
50470   {
50471     using Type = MemoryAllocateFlagsInfo;
50472   };
50473 
50474   using MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo;
50475 
50476   struct MemoryAllocateInfo
50477   {
50478     using NativeType = VkMemoryAllocateInfo;
50479 
50480     static const bool                                  allowDuplicate = false;
50481     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryAllocateInfo;
50482 
50483 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryAllocateInfoVULKAN_HPP_NAMESPACE::MemoryAllocateInfo50484     VULKAN_HPP_CONSTEXPR MemoryAllocateInfo( VULKAN_HPP_NAMESPACE::DeviceSize allocationSize_  = {},
50485                                              uint32_t                         memoryTypeIndex_ = {},
50486                                              const void *                     pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
50487       : pNext{ pNext_ }
50488       , allocationSize{ allocationSize_ }
50489       , memoryTypeIndex{ memoryTypeIndex_ }
50490     {
50491     }
50492 
50493     VULKAN_HPP_CONSTEXPR MemoryAllocateInfo( MemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50494 
MemoryAllocateInfoVULKAN_HPP_NAMESPACE::MemoryAllocateInfo50495     MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryAllocateInfo( *reinterpret_cast<MemoryAllocateInfo const *>( &rhs ) ) {}
50496 
50497     MemoryAllocateInfo & operator=( MemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50498 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50499 
operator =VULKAN_HPP_NAMESPACE::MemoryAllocateInfo50500     MemoryAllocateInfo & operator=( VkMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
50501     {
50502       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryAllocateInfo const *>( &rhs );
50503       return *this;
50504     }
50505 
50506 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryAllocateInfo50507     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
50508     {
50509       pNext = pNext_;
50510       return *this;
50511     }
50512 
setAllocationSizeVULKAN_HPP_NAMESPACE::MemoryAllocateInfo50513     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo & setAllocationSize( VULKAN_HPP_NAMESPACE::DeviceSize allocationSize_ ) VULKAN_HPP_NOEXCEPT
50514     {
50515       allocationSize = allocationSize_;
50516       return *this;
50517     }
50518 
setMemoryTypeIndexVULKAN_HPP_NAMESPACE::MemoryAllocateInfo50519     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo & setMemoryTypeIndex( uint32_t memoryTypeIndex_ ) VULKAN_HPP_NOEXCEPT
50520     {
50521       memoryTypeIndex = memoryTypeIndex_;
50522       return *this;
50523     }
50524 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50525 
operator VkMemoryAllocateInfo const&VULKAN_HPP_NAMESPACE::MemoryAllocateInfo50526     operator VkMemoryAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
50527     {
50528       return *reinterpret_cast<const VkMemoryAllocateInfo *>( this );
50529     }
50530 
operator VkMemoryAllocateInfo&VULKAN_HPP_NAMESPACE::MemoryAllocateInfo50531     operator VkMemoryAllocateInfo &() VULKAN_HPP_NOEXCEPT
50532     {
50533       return *reinterpret_cast<VkMemoryAllocateInfo *>( this );
50534     }
50535 
50536 #if defined( VULKAN_HPP_USE_REFLECT )
50537 #  if 14 <= VULKAN_HPP_CPP_VERSION
50538     auto
50539 #  else
50540     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, uint32_t const &>
50541 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryAllocateInfo50542       reflect() const VULKAN_HPP_NOEXCEPT
50543     {
50544       return std::tie( sType, pNext, allocationSize, memoryTypeIndex );
50545     }
50546 #endif
50547 
50548 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50549     auto operator<=>( MemoryAllocateInfo const & ) const = default;
50550 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryAllocateInfo50551     bool operator==( MemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
50552     {
50553 #  if defined( VULKAN_HPP_USE_REFLECT )
50554       return this->reflect() == rhs.reflect();
50555 #  else
50556       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( allocationSize == rhs.allocationSize ) && ( memoryTypeIndex == rhs.memoryTypeIndex );
50557 #  endif
50558     }
50559 
operator !=VULKAN_HPP_NAMESPACE::MemoryAllocateInfo50560     bool operator!=( MemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
50561     {
50562       return !operator==( rhs );
50563     }
50564 #endif
50565 
50566   public:
50567     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eMemoryAllocateInfo;
50568     const void *                        pNext           = {};
50569     VULKAN_HPP_NAMESPACE::DeviceSize    allocationSize  = {};
50570     uint32_t                            memoryTypeIndex = {};
50571   };
50572 
50573   template <>
50574   struct CppType<StructureType, StructureType::eMemoryAllocateInfo>
50575   {
50576     using Type = MemoryAllocateInfo;
50577   };
50578 
50579   struct MemoryBarrier
50580   {
50581     using NativeType = VkMemoryBarrier;
50582 
50583     static const bool                                  allowDuplicate = false;
50584     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryBarrier;
50585 
50586 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryBarrierVULKAN_HPP_NAMESPACE::MemoryBarrier50587     VULKAN_HPP_CONSTEXPR MemoryBarrier( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ = {},
50588                                         VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ = {},
50589                                         const void *                      pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
50590       : pNext{ pNext_ }
50591       , srcAccessMask{ srcAccessMask_ }
50592       , dstAccessMask{ dstAccessMask_ }
50593     {
50594     }
50595 
50596     VULKAN_HPP_CONSTEXPR MemoryBarrier( MemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50597 
MemoryBarrierVULKAN_HPP_NAMESPACE::MemoryBarrier50598     MemoryBarrier( VkMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryBarrier( *reinterpret_cast<MemoryBarrier const *>( &rhs ) ) {}
50599 
50600     MemoryBarrier & operator=( MemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50601 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50602 
operator =VULKAN_HPP_NAMESPACE::MemoryBarrier50603     MemoryBarrier & operator=( VkMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
50604     {
50605       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryBarrier const *>( &rhs );
50606       return *this;
50607     }
50608 
50609 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryBarrier50610     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
50611     {
50612       pNext = pNext_;
50613       return *this;
50614     }
50615 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::MemoryBarrier50616     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
50617     {
50618       srcAccessMask = srcAccessMask_;
50619       return *this;
50620     }
50621 
setDstAccessMaskVULKAN_HPP_NAMESPACE::MemoryBarrier50622     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
50623     {
50624       dstAccessMask = dstAccessMask_;
50625       return *this;
50626     }
50627 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50628 
operator VkMemoryBarrier const&VULKAN_HPP_NAMESPACE::MemoryBarrier50629     operator VkMemoryBarrier const &() const VULKAN_HPP_NOEXCEPT
50630     {
50631       return *reinterpret_cast<const VkMemoryBarrier *>( this );
50632     }
50633 
operator VkMemoryBarrier&VULKAN_HPP_NAMESPACE::MemoryBarrier50634     operator VkMemoryBarrier &() VULKAN_HPP_NOEXCEPT
50635     {
50636       return *reinterpret_cast<VkMemoryBarrier *>( this );
50637     }
50638 
50639 #if defined( VULKAN_HPP_USE_REFLECT )
50640 #  if 14 <= VULKAN_HPP_CPP_VERSION
50641     auto
50642 #  else
50643     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
50644                const void * const &,
50645                VULKAN_HPP_NAMESPACE::AccessFlags const &,
50646                VULKAN_HPP_NAMESPACE::AccessFlags const &>
50647 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryBarrier50648       reflect() const VULKAN_HPP_NOEXCEPT
50649     {
50650       return std::tie( sType, pNext, srcAccessMask, dstAccessMask );
50651     }
50652 #endif
50653 
50654 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50655     auto operator<=>( MemoryBarrier const & ) const = default;
50656 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryBarrier50657     bool operator==( MemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
50658     {
50659 #  if defined( VULKAN_HPP_USE_REFLECT )
50660       return this->reflect() == rhs.reflect();
50661 #  else
50662       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcAccessMask == rhs.srcAccessMask ) && ( dstAccessMask == rhs.dstAccessMask );
50663 #  endif
50664     }
50665 
operator !=VULKAN_HPP_NAMESPACE::MemoryBarrier50666     bool operator!=( MemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
50667     {
50668       return !operator==( rhs );
50669     }
50670 #endif
50671 
50672   public:
50673     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eMemoryBarrier;
50674     const void *                        pNext         = {};
50675     VULKAN_HPP_NAMESPACE::AccessFlags   srcAccessMask = {};
50676     VULKAN_HPP_NAMESPACE::AccessFlags   dstAccessMask = {};
50677   };
50678 
50679   template <>
50680   struct CppType<StructureType, StructureType::eMemoryBarrier>
50681   {
50682     using Type = MemoryBarrier;
50683   };
50684 
50685   struct MemoryDedicatedAllocateInfo
50686   {
50687     using NativeType = VkMemoryDedicatedAllocateInfo;
50688 
50689     static const bool                                  allowDuplicate = false;
50690     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryDedicatedAllocateInfo;
50691 
50692 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryDedicatedAllocateInfoVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo50693     VULKAN_HPP_CONSTEXPR MemoryDedicatedAllocateInfo( VULKAN_HPP_NAMESPACE::Image  image_  = {},
50694                                                       VULKAN_HPP_NAMESPACE::Buffer buffer_ = {},
50695                                                       const void *                 pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
50696       : pNext{ pNext_ }
50697       , image{ image_ }
50698       , buffer{ buffer_ }
50699     {
50700     }
50701 
50702     VULKAN_HPP_CONSTEXPR MemoryDedicatedAllocateInfo( MemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50703 
MemoryDedicatedAllocateInfoVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo50704     MemoryDedicatedAllocateInfo( VkMemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
50705       : MemoryDedicatedAllocateInfo( *reinterpret_cast<MemoryDedicatedAllocateInfo const *>( &rhs ) )
50706     {
50707     }
50708 
50709     MemoryDedicatedAllocateInfo & operator=( MemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50710 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50711 
operator =VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo50712     MemoryDedicatedAllocateInfo & operator=( VkMemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
50713     {
50714       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo const *>( &rhs );
50715       return *this;
50716     }
50717 
50718 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo50719     VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
50720     {
50721       pNext = pNext_;
50722       return *this;
50723     }
50724 
setImageVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo50725     VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
50726     {
50727       image = image_;
50728       return *this;
50729     }
50730 
setBufferVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo50731     VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
50732     {
50733       buffer = buffer_;
50734       return *this;
50735     }
50736 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50737 
operator VkMemoryDedicatedAllocateInfo const&VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo50738     operator VkMemoryDedicatedAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
50739     {
50740       return *reinterpret_cast<const VkMemoryDedicatedAllocateInfo *>( this );
50741     }
50742 
operator VkMemoryDedicatedAllocateInfo&VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo50743     operator VkMemoryDedicatedAllocateInfo &() VULKAN_HPP_NOEXCEPT
50744     {
50745       return *reinterpret_cast<VkMemoryDedicatedAllocateInfo *>( this );
50746     }
50747 
50748 #if defined( VULKAN_HPP_USE_REFLECT )
50749 #  if 14 <= VULKAN_HPP_CPP_VERSION
50750     auto
50751 #  else
50752     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Image const &, VULKAN_HPP_NAMESPACE::Buffer const &>
50753 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo50754       reflect() const VULKAN_HPP_NOEXCEPT
50755     {
50756       return std::tie( sType, pNext, image, buffer );
50757     }
50758 #endif
50759 
50760 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50761     auto operator<=>( MemoryDedicatedAllocateInfo const & ) const = default;
50762 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo50763     bool operator==( MemoryDedicatedAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
50764     {
50765 #  if defined( VULKAN_HPP_USE_REFLECT )
50766       return this->reflect() == rhs.reflect();
50767 #  else
50768       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( buffer == rhs.buffer );
50769 #  endif
50770     }
50771 
operator !=VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo50772     bool operator!=( MemoryDedicatedAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
50773     {
50774       return !operator==( rhs );
50775     }
50776 #endif
50777 
50778   public:
50779     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eMemoryDedicatedAllocateInfo;
50780     const void *                        pNext  = {};
50781     VULKAN_HPP_NAMESPACE::Image         image  = {};
50782     VULKAN_HPP_NAMESPACE::Buffer        buffer = {};
50783   };
50784 
50785   template <>
50786   struct CppType<StructureType, StructureType::eMemoryDedicatedAllocateInfo>
50787   {
50788     using Type = MemoryDedicatedAllocateInfo;
50789   };
50790 
50791   using MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo;
50792 
50793   struct MemoryDedicatedRequirements
50794   {
50795     using NativeType = VkMemoryDedicatedRequirements;
50796 
50797     static const bool                                  allowDuplicate = false;
50798     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryDedicatedRequirements;
50799 
50800 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryDedicatedRequirementsVULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements50801     VULKAN_HPP_CONSTEXPR MemoryDedicatedRequirements( VULKAN_HPP_NAMESPACE::Bool32 prefersDedicatedAllocation_  = {},
50802                                                       VULKAN_HPP_NAMESPACE::Bool32 requiresDedicatedAllocation_ = {},
50803                                                       void *                       pNext_                       = nullptr ) VULKAN_HPP_NOEXCEPT
50804       : pNext{ pNext_ }
50805       , prefersDedicatedAllocation{ prefersDedicatedAllocation_ }
50806       , requiresDedicatedAllocation{ requiresDedicatedAllocation_ }
50807     {
50808     }
50809 
50810     VULKAN_HPP_CONSTEXPR MemoryDedicatedRequirements( MemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50811 
MemoryDedicatedRequirementsVULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements50812     MemoryDedicatedRequirements( VkMemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
50813       : MemoryDedicatedRequirements( *reinterpret_cast<MemoryDedicatedRequirements const *>( &rhs ) )
50814     {
50815     }
50816 
50817     MemoryDedicatedRequirements & operator=( MemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50818 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50819 
operator =VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements50820     MemoryDedicatedRequirements & operator=( VkMemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
50821     {
50822       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements const *>( &rhs );
50823       return *this;
50824     }
50825 
operator VkMemoryDedicatedRequirements const&VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements50826     operator VkMemoryDedicatedRequirements const &() const VULKAN_HPP_NOEXCEPT
50827     {
50828       return *reinterpret_cast<const VkMemoryDedicatedRequirements *>( this );
50829     }
50830 
operator VkMemoryDedicatedRequirements&VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements50831     operator VkMemoryDedicatedRequirements &() VULKAN_HPP_NOEXCEPT
50832     {
50833       return *reinterpret_cast<VkMemoryDedicatedRequirements *>( this );
50834     }
50835 
50836 #if defined( VULKAN_HPP_USE_REFLECT )
50837 #  if 14 <= VULKAN_HPP_CPP_VERSION
50838     auto
50839 #  else
50840     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
50841 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements50842       reflect() const VULKAN_HPP_NOEXCEPT
50843     {
50844       return std::tie( sType, pNext, prefersDedicatedAllocation, requiresDedicatedAllocation );
50845     }
50846 #endif
50847 
50848 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50849     auto operator<=>( MemoryDedicatedRequirements const & ) const = default;
50850 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements50851     bool operator==( MemoryDedicatedRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
50852     {
50853 #  if defined( VULKAN_HPP_USE_REFLECT )
50854       return this->reflect() == rhs.reflect();
50855 #  else
50856       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( prefersDedicatedAllocation == rhs.prefersDedicatedAllocation ) &&
50857              ( requiresDedicatedAllocation == rhs.requiresDedicatedAllocation );
50858 #  endif
50859     }
50860 
operator !=VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements50861     bool operator!=( MemoryDedicatedRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
50862     {
50863       return !operator==( rhs );
50864     }
50865 #endif
50866 
50867   public:
50868     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::eMemoryDedicatedRequirements;
50869     void *                              pNext                       = {};
50870     VULKAN_HPP_NAMESPACE::Bool32        prefersDedicatedAllocation  = {};
50871     VULKAN_HPP_NAMESPACE::Bool32        requiresDedicatedAllocation = {};
50872   };
50873 
50874   template <>
50875   struct CppType<StructureType, StructureType::eMemoryDedicatedRequirements>
50876   {
50877     using Type = MemoryDedicatedRequirements;
50878   };
50879 
50880   using MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements;
50881 
50882   struct MemoryFdPropertiesKHR
50883   {
50884     using NativeType = VkMemoryFdPropertiesKHR;
50885 
50886     static const bool                                  allowDuplicate = false;
50887     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryFdPropertiesKHR;
50888 
50889 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryFdPropertiesKHRVULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR50890     VULKAN_HPP_CONSTEXPR MemoryFdPropertiesKHR( uint32_t memoryTypeBits_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
50891       : pNext{ pNext_ }
50892       , memoryTypeBits{ memoryTypeBits_ }
50893     {
50894     }
50895 
50896     VULKAN_HPP_CONSTEXPR MemoryFdPropertiesKHR( MemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50897 
MemoryFdPropertiesKHRVULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR50898     MemoryFdPropertiesKHR( VkMemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
50899       : MemoryFdPropertiesKHR( *reinterpret_cast<MemoryFdPropertiesKHR const *>( &rhs ) )
50900     {
50901     }
50902 
50903     MemoryFdPropertiesKHR & operator=( MemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50904 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50905 
operator =VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR50906     MemoryFdPropertiesKHR & operator=( VkMemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
50907     {
50908       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR const *>( &rhs );
50909       return *this;
50910     }
50911 
operator VkMemoryFdPropertiesKHR const&VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR50912     operator VkMemoryFdPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
50913     {
50914       return *reinterpret_cast<const VkMemoryFdPropertiesKHR *>( this );
50915     }
50916 
operator VkMemoryFdPropertiesKHR&VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR50917     operator VkMemoryFdPropertiesKHR &() VULKAN_HPP_NOEXCEPT
50918     {
50919       return *reinterpret_cast<VkMemoryFdPropertiesKHR *>( this );
50920     }
50921 
50922 #if defined( VULKAN_HPP_USE_REFLECT )
50923 #  if 14 <= VULKAN_HPP_CPP_VERSION
50924     auto
50925 #  else
50926     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
50927 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR50928       reflect() const VULKAN_HPP_NOEXCEPT
50929     {
50930       return std::tie( sType, pNext, memoryTypeBits );
50931     }
50932 #endif
50933 
50934 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
50935     auto operator<=>( MemoryFdPropertiesKHR const & ) const = default;
50936 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR50937     bool operator==( MemoryFdPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
50938     {
50939 #  if defined( VULKAN_HPP_USE_REFLECT )
50940       return this->reflect() == rhs.reflect();
50941 #  else
50942       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryTypeBits == rhs.memoryTypeBits );
50943 #  endif
50944     }
50945 
operator !=VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR50946     bool operator!=( MemoryFdPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
50947     {
50948       return !operator==( rhs );
50949     }
50950 #endif
50951 
50952   public:
50953     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eMemoryFdPropertiesKHR;
50954     void *                              pNext          = {};
50955     uint32_t                            memoryTypeBits = {};
50956   };
50957 
50958   template <>
50959   struct CppType<StructureType, StructureType::eMemoryFdPropertiesKHR>
50960   {
50961     using Type = MemoryFdPropertiesKHR;
50962   };
50963 
50964 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
50965   struct MemoryGetAndroidHardwareBufferInfoANDROID
50966   {
50967     using NativeType = VkMemoryGetAndroidHardwareBufferInfoANDROID;
50968 
50969     static const bool                                  allowDuplicate = false;
50970     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID;
50971 
50972 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryGetAndroidHardwareBufferInfoANDROIDVULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID50973     VULKAN_HPP_CONSTEXPR MemoryGetAndroidHardwareBufferInfoANDROID( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {},
50974                                                                     const void *                       pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
50975       : pNext{ pNext_ }
50976       , memory{ memory_ }
50977     {
50978     }
50979 
50980     VULKAN_HPP_CONSTEXPR MemoryGetAndroidHardwareBufferInfoANDROID( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50981 
MemoryGetAndroidHardwareBufferInfoANDROIDVULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID50982     MemoryGetAndroidHardwareBufferInfoANDROID( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
50983       : MemoryGetAndroidHardwareBufferInfoANDROID( *reinterpret_cast<MemoryGetAndroidHardwareBufferInfoANDROID const *>( &rhs ) )
50984     {
50985     }
50986 
50987     MemoryGetAndroidHardwareBufferInfoANDROID & operator=( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50988 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50989 
operator =VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID50990     MemoryGetAndroidHardwareBufferInfoANDROID & operator=( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
50991     {
50992       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID const *>( &rhs );
50993       return *this;
50994     }
50995 
50996 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID50997     VULKAN_HPP_CONSTEXPR_14 MemoryGetAndroidHardwareBufferInfoANDROID & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
50998     {
50999       pNext = pNext_;
51000       return *this;
51001     }
51002 
setMemoryVULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID51003     VULKAN_HPP_CONSTEXPR_14 MemoryGetAndroidHardwareBufferInfoANDROID & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
51004     {
51005       memory = memory_;
51006       return *this;
51007     }
51008 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51009 
operator VkMemoryGetAndroidHardwareBufferInfoANDROID const&VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID51010     operator VkMemoryGetAndroidHardwareBufferInfoANDROID const &() const VULKAN_HPP_NOEXCEPT
51011     {
51012       return *reinterpret_cast<const VkMemoryGetAndroidHardwareBufferInfoANDROID *>( this );
51013     }
51014 
operator VkMemoryGetAndroidHardwareBufferInfoANDROID&VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID51015     operator VkMemoryGetAndroidHardwareBufferInfoANDROID &() VULKAN_HPP_NOEXCEPT
51016     {
51017       return *reinterpret_cast<VkMemoryGetAndroidHardwareBufferInfoANDROID *>( this );
51018     }
51019 
51020 #  if defined( VULKAN_HPP_USE_REFLECT )
51021 #    if 14 <= VULKAN_HPP_CPP_VERSION
51022     auto
51023 #    else
51024     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceMemory const &>
51025 #    endif
reflectVULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID51026       reflect() const VULKAN_HPP_NOEXCEPT
51027     {
51028       return std::tie( sType, pNext, memory );
51029     }
51030 #  endif
51031 
51032 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51033     auto operator<=>( MemoryGetAndroidHardwareBufferInfoANDROID const & ) const = default;
51034 #  else
operator ==VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID51035     bool operator==( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
51036     {
51037 #    if defined( VULKAN_HPP_USE_REFLECT )
51038       return this->reflect() == rhs.reflect();
51039 #    else
51040       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory );
51041 #    endif
51042     }
51043 
operator !=VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID51044     bool operator!=( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
51045     {
51046       return !operator==( rhs );
51047     }
51048 #  endif
51049 
51050   public:
51051     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID;
51052     const void *                        pNext  = {};
51053     VULKAN_HPP_NAMESPACE::DeviceMemory  memory = {};
51054   };
51055 
51056   template <>
51057   struct CppType<StructureType, StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID>
51058   {
51059     using Type = MemoryGetAndroidHardwareBufferInfoANDROID;
51060   };
51061 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
51062 
51063   struct MemoryGetFdInfoKHR
51064   {
51065     using NativeType = VkMemoryGetFdInfoKHR;
51066 
51067     static const bool                                  allowDuplicate = false;
51068     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryGetFdInfoKHR;
51069 
51070 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryGetFdInfoKHRVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51071     VULKAN_HPP_CONSTEXPR MemoryGetFdInfoKHR(
51072       VULKAN_HPP_NAMESPACE::DeviceMemory                     memory_     = {},
51073       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
51074       const void *                                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
51075       : pNext{ pNext_ }
51076       , memory{ memory_ }
51077       , handleType{ handleType_ }
51078     {
51079     }
51080 
51081     VULKAN_HPP_CONSTEXPR MemoryGetFdInfoKHR( MemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51082 
MemoryGetFdInfoKHRVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51083     MemoryGetFdInfoKHR( VkMemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryGetFdInfoKHR( *reinterpret_cast<MemoryGetFdInfoKHR const *>( &rhs ) ) {}
51084 
51085     MemoryGetFdInfoKHR & operator=( MemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51086 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51087 
operator =VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51088     MemoryGetFdInfoKHR & operator=( VkMemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
51089     {
51090       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR const *>( &rhs );
51091       return *this;
51092     }
51093 
51094 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51095     VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
51096     {
51097       pNext = pNext_;
51098       return *this;
51099     }
51100 
setMemoryVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51101     VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
51102     {
51103       memory = memory_;
51104       return *this;
51105     }
51106 
setHandleTypeVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51107     VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
51108     {
51109       handleType = handleType_;
51110       return *this;
51111     }
51112 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51113 
operator VkMemoryGetFdInfoKHR const&VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51114     operator VkMemoryGetFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
51115     {
51116       return *reinterpret_cast<const VkMemoryGetFdInfoKHR *>( this );
51117     }
51118 
operator VkMemoryGetFdInfoKHR&VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51119     operator VkMemoryGetFdInfoKHR &() VULKAN_HPP_NOEXCEPT
51120     {
51121       return *reinterpret_cast<VkMemoryGetFdInfoKHR *>( this );
51122     }
51123 
51124 #if defined( VULKAN_HPP_USE_REFLECT )
51125 #  if 14 <= VULKAN_HPP_CPP_VERSION
51126     auto
51127 #  else
51128     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
51129                const void * const &,
51130                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
51131                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
51132 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51133       reflect() const VULKAN_HPP_NOEXCEPT
51134     {
51135       return std::tie( sType, pNext, memory, handleType );
51136     }
51137 #endif
51138 
51139 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51140     auto operator<=>( MemoryGetFdInfoKHR const & ) const = default;
51141 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51142     bool operator==( MemoryGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
51143     {
51144 #  if defined( VULKAN_HPP_USE_REFLECT )
51145       return this->reflect() == rhs.reflect();
51146 #  else
51147       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && ( handleType == rhs.handleType );
51148 #  endif
51149     }
51150 
operator !=VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR51151     bool operator!=( MemoryGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
51152     {
51153       return !operator==( rhs );
51154     }
51155 #endif
51156 
51157   public:
51158     VULKAN_HPP_NAMESPACE::StructureType                    sType      = StructureType::eMemoryGetFdInfoKHR;
51159     const void *                                           pNext      = {};
51160     VULKAN_HPP_NAMESPACE::DeviceMemory                     memory     = {};
51161     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
51162   };
51163 
51164   template <>
51165   struct CppType<StructureType, StructureType::eMemoryGetFdInfoKHR>
51166   {
51167     using Type = MemoryGetFdInfoKHR;
51168   };
51169 
51170   struct MemoryGetRemoteAddressInfoNV
51171   {
51172     using NativeType = VkMemoryGetRemoteAddressInfoNV;
51173 
51174     static const bool                                  allowDuplicate = false;
51175     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryGetRemoteAddressInfoNV;
51176 
51177 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryGetRemoteAddressInfoNVVULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51178     VULKAN_HPP_CONSTEXPR MemoryGetRemoteAddressInfoNV(
51179       VULKAN_HPP_NAMESPACE::DeviceMemory                     memory_     = {},
51180       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
51181       const void *                                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
51182       : pNext{ pNext_ }
51183       , memory{ memory_ }
51184       , handleType{ handleType_ }
51185     {
51186     }
51187 
51188     VULKAN_HPP_CONSTEXPR MemoryGetRemoteAddressInfoNV( MemoryGetRemoteAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51189 
MemoryGetRemoteAddressInfoNVVULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51190     MemoryGetRemoteAddressInfoNV( VkMemoryGetRemoteAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
51191       : MemoryGetRemoteAddressInfoNV( *reinterpret_cast<MemoryGetRemoteAddressInfoNV const *>( &rhs ) )
51192     {
51193     }
51194 
51195     MemoryGetRemoteAddressInfoNV & operator=( MemoryGetRemoteAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51196 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51197 
operator =VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51198     MemoryGetRemoteAddressInfoNV & operator=( VkMemoryGetRemoteAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
51199     {
51200       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV const *>( &rhs );
51201       return *this;
51202     }
51203 
51204 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51205     VULKAN_HPP_CONSTEXPR_14 MemoryGetRemoteAddressInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
51206     {
51207       pNext = pNext_;
51208       return *this;
51209     }
51210 
setMemoryVULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51211     VULKAN_HPP_CONSTEXPR_14 MemoryGetRemoteAddressInfoNV & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
51212     {
51213       memory = memory_;
51214       return *this;
51215     }
51216 
51217     VULKAN_HPP_CONSTEXPR_14 MemoryGetRemoteAddressInfoNV &
setHandleTypeVULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51218       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
51219     {
51220       handleType = handleType_;
51221       return *this;
51222     }
51223 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51224 
operator VkMemoryGetRemoteAddressInfoNV const&VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51225     operator VkMemoryGetRemoteAddressInfoNV const &() const VULKAN_HPP_NOEXCEPT
51226     {
51227       return *reinterpret_cast<const VkMemoryGetRemoteAddressInfoNV *>( this );
51228     }
51229 
operator VkMemoryGetRemoteAddressInfoNV&VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51230     operator VkMemoryGetRemoteAddressInfoNV &() VULKAN_HPP_NOEXCEPT
51231     {
51232       return *reinterpret_cast<VkMemoryGetRemoteAddressInfoNV *>( this );
51233     }
51234 
51235 #if defined( VULKAN_HPP_USE_REFLECT )
51236 #  if 14 <= VULKAN_HPP_CPP_VERSION
51237     auto
51238 #  else
51239     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
51240                const void * const &,
51241                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
51242                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
51243 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51244       reflect() const VULKAN_HPP_NOEXCEPT
51245     {
51246       return std::tie( sType, pNext, memory, handleType );
51247     }
51248 #endif
51249 
51250 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51251     auto operator<=>( MemoryGetRemoteAddressInfoNV const & ) const = default;
51252 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51253     bool operator==( MemoryGetRemoteAddressInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
51254     {
51255 #  if defined( VULKAN_HPP_USE_REFLECT )
51256       return this->reflect() == rhs.reflect();
51257 #  else
51258       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && ( handleType == rhs.handleType );
51259 #  endif
51260     }
51261 
operator !=VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV51262     bool operator!=( MemoryGetRemoteAddressInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
51263     {
51264       return !operator==( rhs );
51265     }
51266 #endif
51267 
51268   public:
51269     VULKAN_HPP_NAMESPACE::StructureType                    sType      = StructureType::eMemoryGetRemoteAddressInfoNV;
51270     const void *                                           pNext      = {};
51271     VULKAN_HPP_NAMESPACE::DeviceMemory                     memory     = {};
51272     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
51273   };
51274 
51275   template <>
51276   struct CppType<StructureType, StructureType::eMemoryGetRemoteAddressInfoNV>
51277   {
51278     using Type = MemoryGetRemoteAddressInfoNV;
51279   };
51280 
51281 #if defined( VK_USE_PLATFORM_WIN32_KHR )
51282   struct MemoryGetWin32HandleInfoKHR
51283   {
51284     using NativeType = VkMemoryGetWin32HandleInfoKHR;
51285 
51286     static const bool                                  allowDuplicate = false;
51287     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryGetWin32HandleInfoKHR;
51288 
51289 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryGetWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51290     VULKAN_HPP_CONSTEXPR MemoryGetWin32HandleInfoKHR(
51291       VULKAN_HPP_NAMESPACE::DeviceMemory                     memory_     = {},
51292       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
51293       const void *                                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
51294       : pNext{ pNext_ }
51295       , memory{ memory_ }
51296       , handleType{ handleType_ }
51297     {
51298     }
51299 
51300     VULKAN_HPP_CONSTEXPR MemoryGetWin32HandleInfoKHR( MemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51301 
MemoryGetWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51302     MemoryGetWin32HandleInfoKHR( VkMemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
51303       : MemoryGetWin32HandleInfoKHR( *reinterpret_cast<MemoryGetWin32HandleInfoKHR const *>( &rhs ) )
51304     {
51305     }
51306 
51307     MemoryGetWin32HandleInfoKHR & operator=( MemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51308 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51309 
operator =VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51310     MemoryGetWin32HandleInfoKHR & operator=( VkMemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
51311     {
51312       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR const *>( &rhs );
51313       return *this;
51314     }
51315 
51316 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51317     VULKAN_HPP_CONSTEXPR_14 MemoryGetWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
51318     {
51319       pNext = pNext_;
51320       return *this;
51321     }
51322 
setMemoryVULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51323     VULKAN_HPP_CONSTEXPR_14 MemoryGetWin32HandleInfoKHR & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
51324     {
51325       memory = memory_;
51326       return *this;
51327     }
51328 
51329     VULKAN_HPP_CONSTEXPR_14 MemoryGetWin32HandleInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51330       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
51331     {
51332       handleType = handleType_;
51333       return *this;
51334     }
51335 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51336 
operator VkMemoryGetWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51337     operator VkMemoryGetWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
51338     {
51339       return *reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR *>( this );
51340     }
51341 
operator VkMemoryGetWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51342     operator VkMemoryGetWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
51343     {
51344       return *reinterpret_cast<VkMemoryGetWin32HandleInfoKHR *>( this );
51345     }
51346 
51347 #  if defined( VULKAN_HPP_USE_REFLECT )
51348 #    if 14 <= VULKAN_HPP_CPP_VERSION
51349     auto
51350 #    else
51351     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
51352                const void * const &,
51353                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
51354                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
51355 #    endif
reflectVULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51356       reflect() const VULKAN_HPP_NOEXCEPT
51357     {
51358       return std::tie( sType, pNext, memory, handleType );
51359     }
51360 #  endif
51361 
51362 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51363     auto operator<=>( MemoryGetWin32HandleInfoKHR const & ) const = default;
51364 #  else
operator ==VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51365     bool operator==( MemoryGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
51366     {
51367 #    if defined( VULKAN_HPP_USE_REFLECT )
51368       return this->reflect() == rhs.reflect();
51369 #    else
51370       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && ( handleType == rhs.handleType );
51371 #    endif
51372     }
51373 
operator !=VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR51374     bool operator!=( MemoryGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
51375     {
51376       return !operator==( rhs );
51377     }
51378 #  endif
51379 
51380   public:
51381     VULKAN_HPP_NAMESPACE::StructureType                    sType      = StructureType::eMemoryGetWin32HandleInfoKHR;
51382     const void *                                           pNext      = {};
51383     VULKAN_HPP_NAMESPACE::DeviceMemory                     memory     = {};
51384     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
51385   };
51386 
51387   template <>
51388   struct CppType<StructureType, StructureType::eMemoryGetWin32HandleInfoKHR>
51389   {
51390     using Type = MemoryGetWin32HandleInfoKHR;
51391   };
51392 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
51393 
51394 #if defined( VK_USE_PLATFORM_FUCHSIA )
51395   struct MemoryGetZirconHandleInfoFUCHSIA
51396   {
51397     using NativeType = VkMemoryGetZirconHandleInfoFUCHSIA;
51398 
51399     static const bool                                  allowDuplicate = false;
51400     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryGetZirconHandleInfoFUCHSIA;
51401 
51402 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryGetZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51403     VULKAN_HPP_CONSTEXPR MemoryGetZirconHandleInfoFUCHSIA(
51404       VULKAN_HPP_NAMESPACE::DeviceMemory                     memory_     = {},
51405       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
51406       const void *                                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
51407       : pNext{ pNext_ }
51408       , memory{ memory_ }
51409       , handleType{ handleType_ }
51410     {
51411     }
51412 
51413     VULKAN_HPP_CONSTEXPR MemoryGetZirconHandleInfoFUCHSIA( MemoryGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51414 
MemoryGetZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51415     MemoryGetZirconHandleInfoFUCHSIA( VkMemoryGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
51416       : MemoryGetZirconHandleInfoFUCHSIA( *reinterpret_cast<MemoryGetZirconHandleInfoFUCHSIA const *>( &rhs ) )
51417     {
51418     }
51419 
51420     MemoryGetZirconHandleInfoFUCHSIA & operator=( MemoryGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51421 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51422 
operator =VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51423     MemoryGetZirconHandleInfoFUCHSIA & operator=( VkMemoryGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
51424     {
51425       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA const *>( &rhs );
51426       return *this;
51427     }
51428 
51429 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51430     VULKAN_HPP_CONSTEXPR_14 MemoryGetZirconHandleInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
51431     {
51432       pNext = pNext_;
51433       return *this;
51434     }
51435 
setMemoryVULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51436     VULKAN_HPP_CONSTEXPR_14 MemoryGetZirconHandleInfoFUCHSIA & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
51437     {
51438       memory = memory_;
51439       return *this;
51440     }
51441 
51442     VULKAN_HPP_CONSTEXPR_14 MemoryGetZirconHandleInfoFUCHSIA &
setHandleTypeVULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51443       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
51444     {
51445       handleType = handleType_;
51446       return *this;
51447     }
51448 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51449 
operator VkMemoryGetZirconHandleInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51450     operator VkMemoryGetZirconHandleInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
51451     {
51452       return *reinterpret_cast<const VkMemoryGetZirconHandleInfoFUCHSIA *>( this );
51453     }
51454 
operator VkMemoryGetZirconHandleInfoFUCHSIA&VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51455     operator VkMemoryGetZirconHandleInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
51456     {
51457       return *reinterpret_cast<VkMemoryGetZirconHandleInfoFUCHSIA *>( this );
51458     }
51459 
51460 #  if defined( VULKAN_HPP_USE_REFLECT )
51461 #    if 14 <= VULKAN_HPP_CPP_VERSION
51462     auto
51463 #    else
51464     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
51465                const void * const &,
51466                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
51467                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
51468 #    endif
reflectVULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51469       reflect() const VULKAN_HPP_NOEXCEPT
51470     {
51471       return std::tie( sType, pNext, memory, handleType );
51472     }
51473 #  endif
51474 
51475 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51476     auto operator<=>( MemoryGetZirconHandleInfoFUCHSIA const & ) const = default;
51477 #  else
operator ==VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51478     bool operator==( MemoryGetZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
51479     {
51480 #    if defined( VULKAN_HPP_USE_REFLECT )
51481       return this->reflect() == rhs.reflect();
51482 #    else
51483       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && ( handleType == rhs.handleType );
51484 #    endif
51485     }
51486 
operator !=VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA51487     bool operator!=( MemoryGetZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
51488     {
51489       return !operator==( rhs );
51490     }
51491 #  endif
51492 
51493   public:
51494     VULKAN_HPP_NAMESPACE::StructureType                    sType      = StructureType::eMemoryGetZirconHandleInfoFUCHSIA;
51495     const void *                                           pNext      = {};
51496     VULKAN_HPP_NAMESPACE::DeviceMemory                     memory     = {};
51497     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
51498   };
51499 
51500   template <>
51501   struct CppType<StructureType, StructureType::eMemoryGetZirconHandleInfoFUCHSIA>
51502   {
51503     using Type = MemoryGetZirconHandleInfoFUCHSIA;
51504   };
51505 #endif /*VK_USE_PLATFORM_FUCHSIA*/
51506 
51507   struct MemoryHeap
51508   {
51509     using NativeType = VkMemoryHeap;
51510 
51511 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryHeapVULKAN_HPP_NAMESPACE::MemoryHeap51512     VULKAN_HPP_CONSTEXPR MemoryHeap( VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, VULKAN_HPP_NAMESPACE::MemoryHeapFlags flags_ = {} ) VULKAN_HPP_NOEXCEPT
51513       : size{ size_ }
51514       , flags{ flags_ }
51515     {
51516     }
51517 
51518     VULKAN_HPP_CONSTEXPR MemoryHeap( MemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51519 
MemoryHeapVULKAN_HPP_NAMESPACE::MemoryHeap51520     MemoryHeap( VkMemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryHeap( *reinterpret_cast<MemoryHeap const *>( &rhs ) ) {}
51521 
51522     MemoryHeap & operator=( MemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51523 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51524 
operator =VULKAN_HPP_NAMESPACE::MemoryHeap51525     MemoryHeap & operator=( VkMemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT
51526     {
51527       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryHeap const *>( &rhs );
51528       return *this;
51529     }
51530 
operator VkMemoryHeap const&VULKAN_HPP_NAMESPACE::MemoryHeap51531     operator VkMemoryHeap const &() const VULKAN_HPP_NOEXCEPT
51532     {
51533       return *reinterpret_cast<const VkMemoryHeap *>( this );
51534     }
51535 
operator VkMemoryHeap&VULKAN_HPP_NAMESPACE::MemoryHeap51536     operator VkMemoryHeap &() VULKAN_HPP_NOEXCEPT
51537     {
51538       return *reinterpret_cast<VkMemoryHeap *>( this );
51539     }
51540 
51541 #if defined( VULKAN_HPP_USE_REFLECT )
51542 #  if 14 <= VULKAN_HPP_CPP_VERSION
51543     auto
51544 #  else
51545     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::MemoryHeapFlags const &>
51546 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryHeap51547       reflect() const VULKAN_HPP_NOEXCEPT
51548     {
51549       return std::tie( size, flags );
51550     }
51551 #endif
51552 
51553 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51554     auto operator<=>( MemoryHeap const & ) const = default;
51555 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryHeap51556     bool operator==( MemoryHeap const & rhs ) const VULKAN_HPP_NOEXCEPT
51557     {
51558 #  if defined( VULKAN_HPP_USE_REFLECT )
51559       return this->reflect() == rhs.reflect();
51560 #  else
51561       return ( size == rhs.size ) && ( flags == rhs.flags );
51562 #  endif
51563     }
51564 
operator !=VULKAN_HPP_NAMESPACE::MemoryHeap51565     bool operator!=( MemoryHeap const & rhs ) const VULKAN_HPP_NOEXCEPT
51566     {
51567       return !operator==( rhs );
51568     }
51569 #endif
51570 
51571   public:
51572     VULKAN_HPP_NAMESPACE::DeviceSize      size  = {};
51573     VULKAN_HPP_NAMESPACE::MemoryHeapFlags flags = {};
51574   };
51575 
51576   struct MemoryHostPointerPropertiesEXT
51577   {
51578     using NativeType = VkMemoryHostPointerPropertiesEXT;
51579 
51580     static const bool                                  allowDuplicate = false;
51581     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryHostPointerPropertiesEXT;
51582 
51583 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryHostPointerPropertiesEXTVULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT51584     VULKAN_HPP_CONSTEXPR MemoryHostPointerPropertiesEXT( uint32_t memoryTypeBits_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
51585       : pNext{ pNext_ }
51586       , memoryTypeBits{ memoryTypeBits_ }
51587     {
51588     }
51589 
51590     VULKAN_HPP_CONSTEXPR MemoryHostPointerPropertiesEXT( MemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51591 
MemoryHostPointerPropertiesEXTVULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT51592     MemoryHostPointerPropertiesEXT( VkMemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
51593       : MemoryHostPointerPropertiesEXT( *reinterpret_cast<MemoryHostPointerPropertiesEXT const *>( &rhs ) )
51594     {
51595     }
51596 
51597     MemoryHostPointerPropertiesEXT & operator=( MemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51598 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51599 
operator =VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT51600     MemoryHostPointerPropertiesEXT & operator=( VkMemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
51601     {
51602       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT const *>( &rhs );
51603       return *this;
51604     }
51605 
operator VkMemoryHostPointerPropertiesEXT const&VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT51606     operator VkMemoryHostPointerPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
51607     {
51608       return *reinterpret_cast<const VkMemoryHostPointerPropertiesEXT *>( this );
51609     }
51610 
operator VkMemoryHostPointerPropertiesEXT&VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT51611     operator VkMemoryHostPointerPropertiesEXT &() VULKAN_HPP_NOEXCEPT
51612     {
51613       return *reinterpret_cast<VkMemoryHostPointerPropertiesEXT *>( this );
51614     }
51615 
51616 #if defined( VULKAN_HPP_USE_REFLECT )
51617 #  if 14 <= VULKAN_HPP_CPP_VERSION
51618     auto
51619 #  else
51620     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
51621 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT51622       reflect() const VULKAN_HPP_NOEXCEPT
51623     {
51624       return std::tie( sType, pNext, memoryTypeBits );
51625     }
51626 #endif
51627 
51628 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51629     auto operator<=>( MemoryHostPointerPropertiesEXT const & ) const = default;
51630 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT51631     bool operator==( MemoryHostPointerPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
51632     {
51633 #  if defined( VULKAN_HPP_USE_REFLECT )
51634       return this->reflect() == rhs.reflect();
51635 #  else
51636       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryTypeBits == rhs.memoryTypeBits );
51637 #  endif
51638     }
51639 
operator !=VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT51640     bool operator!=( MemoryHostPointerPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
51641     {
51642       return !operator==( rhs );
51643     }
51644 #endif
51645 
51646   public:
51647     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eMemoryHostPointerPropertiesEXT;
51648     void *                              pNext          = {};
51649     uint32_t                            memoryTypeBits = {};
51650   };
51651 
51652   template <>
51653   struct CppType<StructureType, StructureType::eMemoryHostPointerPropertiesEXT>
51654   {
51655     using Type = MemoryHostPointerPropertiesEXT;
51656   };
51657 
51658   struct MemoryMapInfoKHR
51659   {
51660     using NativeType = VkMemoryMapInfoKHR;
51661 
51662     static const bool                                  allowDuplicate = false;
51663     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryMapInfoKHR;
51664 
51665 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryMapInfoKHRVULKAN_HPP_NAMESPACE::MemoryMapInfoKHR51666     VULKAN_HPP_CONSTEXPR MemoryMapInfoKHR( VULKAN_HPP_NAMESPACE::MemoryMapFlags flags_  = {},
51667                                            VULKAN_HPP_NAMESPACE::DeviceMemory   memory_ = {},
51668                                            VULKAN_HPP_NAMESPACE::DeviceSize     offset_ = {},
51669                                            VULKAN_HPP_NAMESPACE::DeviceSize     size_   = {},
51670                                            const void *                         pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
51671       : pNext{ pNext_ }
51672       , flags{ flags_ }
51673       , memory{ memory_ }
51674       , offset{ offset_ }
51675       , size{ size_ }
51676     {
51677     }
51678 
51679     VULKAN_HPP_CONSTEXPR MemoryMapInfoKHR( MemoryMapInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51680 
MemoryMapInfoKHRVULKAN_HPP_NAMESPACE::MemoryMapInfoKHR51681     MemoryMapInfoKHR( VkMemoryMapInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryMapInfoKHR( *reinterpret_cast<MemoryMapInfoKHR const *>( &rhs ) ) {}
51682 
51683     MemoryMapInfoKHR & operator=( MemoryMapInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51684 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51685 
operator =VULKAN_HPP_NAMESPACE::MemoryMapInfoKHR51686     MemoryMapInfoKHR & operator=( VkMemoryMapInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
51687     {
51688       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryMapInfoKHR const *>( &rhs );
51689       return *this;
51690     }
51691 
51692 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryMapInfoKHR51693     VULKAN_HPP_CONSTEXPR_14 MemoryMapInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
51694     {
51695       pNext = pNext_;
51696       return *this;
51697     }
51698 
setFlagsVULKAN_HPP_NAMESPACE::MemoryMapInfoKHR51699     VULKAN_HPP_CONSTEXPR_14 MemoryMapInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::MemoryMapFlags flags_ ) VULKAN_HPP_NOEXCEPT
51700     {
51701       flags = flags_;
51702       return *this;
51703     }
51704 
setMemoryVULKAN_HPP_NAMESPACE::MemoryMapInfoKHR51705     VULKAN_HPP_CONSTEXPR_14 MemoryMapInfoKHR & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
51706     {
51707       memory = memory_;
51708       return *this;
51709     }
51710 
setOffsetVULKAN_HPP_NAMESPACE::MemoryMapInfoKHR51711     VULKAN_HPP_CONSTEXPR_14 MemoryMapInfoKHR & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
51712     {
51713       offset = offset_;
51714       return *this;
51715     }
51716 
setSizeVULKAN_HPP_NAMESPACE::MemoryMapInfoKHR51717     VULKAN_HPP_CONSTEXPR_14 MemoryMapInfoKHR & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
51718     {
51719       size = size_;
51720       return *this;
51721     }
51722 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51723 
operator VkMemoryMapInfoKHR const&VULKAN_HPP_NAMESPACE::MemoryMapInfoKHR51724     operator VkMemoryMapInfoKHR const &() const VULKAN_HPP_NOEXCEPT
51725     {
51726       return *reinterpret_cast<const VkMemoryMapInfoKHR *>( this );
51727     }
51728 
operator VkMemoryMapInfoKHR&VULKAN_HPP_NAMESPACE::MemoryMapInfoKHR51729     operator VkMemoryMapInfoKHR &() VULKAN_HPP_NOEXCEPT
51730     {
51731       return *reinterpret_cast<VkMemoryMapInfoKHR *>( this );
51732     }
51733 
51734 #if defined( VULKAN_HPP_USE_REFLECT )
51735 #  if 14 <= VULKAN_HPP_CPP_VERSION
51736     auto
51737 #  else
51738     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
51739                const void * const &,
51740                VULKAN_HPP_NAMESPACE::MemoryMapFlags const &,
51741                VULKAN_HPP_NAMESPACE::DeviceMemory const &,
51742                VULKAN_HPP_NAMESPACE::DeviceSize const &,
51743                VULKAN_HPP_NAMESPACE::DeviceSize const &>
51744 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryMapInfoKHR51745       reflect() const VULKAN_HPP_NOEXCEPT
51746     {
51747       return std::tie( sType, pNext, flags, memory, offset, size );
51748     }
51749 #endif
51750 
51751 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51752     auto operator<=>( MemoryMapInfoKHR const & ) const = default;
51753 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryMapInfoKHR51754     bool operator==( MemoryMapInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
51755     {
51756 #  if defined( VULKAN_HPP_USE_REFLECT )
51757       return this->reflect() == rhs.reflect();
51758 #  else
51759       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( memory == rhs.memory ) && ( offset == rhs.offset ) &&
51760              ( size == rhs.size );
51761 #  endif
51762     }
51763 
operator !=VULKAN_HPP_NAMESPACE::MemoryMapInfoKHR51764     bool operator!=( MemoryMapInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
51765     {
51766       return !operator==( rhs );
51767     }
51768 #endif
51769 
51770   public:
51771     VULKAN_HPP_NAMESPACE::StructureType  sType  = StructureType::eMemoryMapInfoKHR;
51772     const void *                         pNext  = {};
51773     VULKAN_HPP_NAMESPACE::MemoryMapFlags flags  = {};
51774     VULKAN_HPP_NAMESPACE::DeviceMemory   memory = {};
51775     VULKAN_HPP_NAMESPACE::DeviceSize     offset = {};
51776     VULKAN_HPP_NAMESPACE::DeviceSize     size   = {};
51777   };
51778 
51779   template <>
51780   struct CppType<StructureType, StructureType::eMemoryMapInfoKHR>
51781   {
51782     using Type = MemoryMapInfoKHR;
51783   };
51784 
51785   struct MemoryMapPlacedInfoEXT
51786   {
51787     using NativeType = VkMemoryMapPlacedInfoEXT;
51788 
51789     static const bool                                  allowDuplicate = false;
51790     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryMapPlacedInfoEXT;
51791 
51792 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryMapPlacedInfoEXTVULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT51793     VULKAN_HPP_CONSTEXPR MemoryMapPlacedInfoEXT( void * pPlacedAddress_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
51794       : pNext{ pNext_ }
51795       , pPlacedAddress{ pPlacedAddress_ }
51796     {
51797     }
51798 
51799     VULKAN_HPP_CONSTEXPR MemoryMapPlacedInfoEXT( MemoryMapPlacedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51800 
MemoryMapPlacedInfoEXTVULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT51801     MemoryMapPlacedInfoEXT( VkMemoryMapPlacedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
51802       : MemoryMapPlacedInfoEXT( *reinterpret_cast<MemoryMapPlacedInfoEXT const *>( &rhs ) )
51803     {
51804     }
51805 
51806     MemoryMapPlacedInfoEXT & operator=( MemoryMapPlacedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51807 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51808 
operator =VULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT51809     MemoryMapPlacedInfoEXT & operator=( VkMemoryMapPlacedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
51810     {
51811       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT const *>( &rhs );
51812       return *this;
51813     }
51814 
51815 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT51816     VULKAN_HPP_CONSTEXPR_14 MemoryMapPlacedInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
51817     {
51818       pNext = pNext_;
51819       return *this;
51820     }
51821 
setPPlacedAddressVULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT51822     VULKAN_HPP_CONSTEXPR_14 MemoryMapPlacedInfoEXT & setPPlacedAddress( void * pPlacedAddress_ ) VULKAN_HPP_NOEXCEPT
51823     {
51824       pPlacedAddress = pPlacedAddress_;
51825       return *this;
51826     }
51827 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51828 
operator VkMemoryMapPlacedInfoEXT const&VULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT51829     operator VkMemoryMapPlacedInfoEXT const &() const VULKAN_HPP_NOEXCEPT
51830     {
51831       return *reinterpret_cast<const VkMemoryMapPlacedInfoEXT *>( this );
51832     }
51833 
operator VkMemoryMapPlacedInfoEXT&VULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT51834     operator VkMemoryMapPlacedInfoEXT &() VULKAN_HPP_NOEXCEPT
51835     {
51836       return *reinterpret_cast<VkMemoryMapPlacedInfoEXT *>( this );
51837     }
51838 
51839 #if defined( VULKAN_HPP_USE_REFLECT )
51840 #  if 14 <= VULKAN_HPP_CPP_VERSION
51841     auto
51842 #  else
51843     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, void * const &>
51844 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT51845       reflect() const VULKAN_HPP_NOEXCEPT
51846     {
51847       return std::tie( sType, pNext, pPlacedAddress );
51848     }
51849 #endif
51850 
51851 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51852     auto operator<=>( MemoryMapPlacedInfoEXT const & ) const = default;
51853 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT51854     bool operator==( MemoryMapPlacedInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
51855     {
51856 #  if defined( VULKAN_HPP_USE_REFLECT )
51857       return this->reflect() == rhs.reflect();
51858 #  else
51859       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pPlacedAddress == rhs.pPlacedAddress );
51860 #  endif
51861     }
51862 
operator !=VULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT51863     bool operator!=( MemoryMapPlacedInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
51864     {
51865       return !operator==( rhs );
51866     }
51867 #endif
51868 
51869   public:
51870     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eMemoryMapPlacedInfoEXT;
51871     const void *                        pNext          = {};
51872     void *                              pPlacedAddress = {};
51873   };
51874 
51875   template <>
51876   struct CppType<StructureType, StructureType::eMemoryMapPlacedInfoEXT>
51877   {
51878     using Type = MemoryMapPlacedInfoEXT;
51879   };
51880 
51881   struct MemoryOpaqueCaptureAddressAllocateInfo
51882   {
51883     using NativeType = VkMemoryOpaqueCaptureAddressAllocateInfo;
51884 
51885     static const bool                                  allowDuplicate = false;
51886     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryOpaqueCaptureAddressAllocateInfo;
51887 
51888 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryOpaqueCaptureAddressAllocateInfoVULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo51889     VULKAN_HPP_CONSTEXPR MemoryOpaqueCaptureAddressAllocateInfo( uint64_t opaqueCaptureAddress_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
51890       : pNext{ pNext_ }
51891       , opaqueCaptureAddress{ opaqueCaptureAddress_ }
51892     {
51893     }
51894 
51895     VULKAN_HPP_CONSTEXPR MemoryOpaqueCaptureAddressAllocateInfo( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51896 
MemoryOpaqueCaptureAddressAllocateInfoVULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo51897     MemoryOpaqueCaptureAddressAllocateInfo( VkMemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
51898       : MemoryOpaqueCaptureAddressAllocateInfo( *reinterpret_cast<MemoryOpaqueCaptureAddressAllocateInfo const *>( &rhs ) )
51899     {
51900     }
51901 
51902     MemoryOpaqueCaptureAddressAllocateInfo & operator=( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51903 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
51904 
operator =VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo51905     MemoryOpaqueCaptureAddressAllocateInfo & operator=( VkMemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
51906     {
51907       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo const *>( &rhs );
51908       return *this;
51909     }
51910 
51911 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo51912     VULKAN_HPP_CONSTEXPR_14 MemoryOpaqueCaptureAddressAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
51913     {
51914       pNext = pNext_;
51915       return *this;
51916     }
51917 
setOpaqueCaptureAddressVULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo51918     VULKAN_HPP_CONSTEXPR_14 MemoryOpaqueCaptureAddressAllocateInfo & setOpaqueCaptureAddress( uint64_t opaqueCaptureAddress_ ) VULKAN_HPP_NOEXCEPT
51919     {
51920       opaqueCaptureAddress = opaqueCaptureAddress_;
51921       return *this;
51922     }
51923 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
51924 
operator VkMemoryOpaqueCaptureAddressAllocateInfo const&VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo51925     operator VkMemoryOpaqueCaptureAddressAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
51926     {
51927       return *reinterpret_cast<const VkMemoryOpaqueCaptureAddressAllocateInfo *>( this );
51928     }
51929 
operator VkMemoryOpaqueCaptureAddressAllocateInfo&VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo51930     operator VkMemoryOpaqueCaptureAddressAllocateInfo &() VULKAN_HPP_NOEXCEPT
51931     {
51932       return *reinterpret_cast<VkMemoryOpaqueCaptureAddressAllocateInfo *>( this );
51933     }
51934 
51935 #if defined( VULKAN_HPP_USE_REFLECT )
51936 #  if 14 <= VULKAN_HPP_CPP_VERSION
51937     auto
51938 #  else
51939     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint64_t const &>
51940 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo51941       reflect() const VULKAN_HPP_NOEXCEPT
51942     {
51943       return std::tie( sType, pNext, opaqueCaptureAddress );
51944     }
51945 #endif
51946 
51947 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
51948     auto operator<=>( MemoryOpaqueCaptureAddressAllocateInfo const & ) const = default;
51949 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo51950     bool operator==( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
51951     {
51952 #  if defined( VULKAN_HPP_USE_REFLECT )
51953       return this->reflect() == rhs.reflect();
51954 #  else
51955       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( opaqueCaptureAddress == rhs.opaqueCaptureAddress );
51956 #  endif
51957     }
51958 
operator !=VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo51959     bool operator!=( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
51960     {
51961       return !operator==( rhs );
51962     }
51963 #endif
51964 
51965   public:
51966     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::eMemoryOpaqueCaptureAddressAllocateInfo;
51967     const void *                        pNext                = {};
51968     uint64_t                            opaqueCaptureAddress = {};
51969   };
51970 
51971   template <>
51972   struct CppType<StructureType, StructureType::eMemoryOpaqueCaptureAddressAllocateInfo>
51973   {
51974     using Type = MemoryOpaqueCaptureAddressAllocateInfo;
51975   };
51976 
51977   using MemoryOpaqueCaptureAddressAllocateInfoKHR = MemoryOpaqueCaptureAddressAllocateInfo;
51978 
51979   struct MemoryPriorityAllocateInfoEXT
51980   {
51981     using NativeType = VkMemoryPriorityAllocateInfoEXT;
51982 
51983     static const bool                                  allowDuplicate = false;
51984     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryPriorityAllocateInfoEXT;
51985 
51986 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryPriorityAllocateInfoEXTVULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT51987     VULKAN_HPP_CONSTEXPR MemoryPriorityAllocateInfoEXT( float priority_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
51988       : pNext{ pNext_ }
51989       , priority{ priority_ }
51990     {
51991     }
51992 
51993     VULKAN_HPP_CONSTEXPR MemoryPriorityAllocateInfoEXT( MemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
51994 
MemoryPriorityAllocateInfoEXTVULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT51995     MemoryPriorityAllocateInfoEXT( VkMemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
51996       : MemoryPriorityAllocateInfoEXT( *reinterpret_cast<MemoryPriorityAllocateInfoEXT const *>( &rhs ) )
51997     {
51998     }
51999 
52000     MemoryPriorityAllocateInfoEXT & operator=( MemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52001 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52002 
operator =VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT52003     MemoryPriorityAllocateInfoEXT & operator=( VkMemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
52004     {
52005       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT const *>( &rhs );
52006       return *this;
52007     }
52008 
52009 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT52010     VULKAN_HPP_CONSTEXPR_14 MemoryPriorityAllocateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
52011     {
52012       pNext = pNext_;
52013       return *this;
52014     }
52015 
setPriorityVULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT52016     VULKAN_HPP_CONSTEXPR_14 MemoryPriorityAllocateInfoEXT & setPriority( float priority_ ) VULKAN_HPP_NOEXCEPT
52017     {
52018       priority = priority_;
52019       return *this;
52020     }
52021 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
52022 
operator VkMemoryPriorityAllocateInfoEXT const&VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT52023     operator VkMemoryPriorityAllocateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
52024     {
52025       return *reinterpret_cast<const VkMemoryPriorityAllocateInfoEXT *>( this );
52026     }
52027 
operator VkMemoryPriorityAllocateInfoEXT&VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT52028     operator VkMemoryPriorityAllocateInfoEXT &() VULKAN_HPP_NOEXCEPT
52029     {
52030       return *reinterpret_cast<VkMemoryPriorityAllocateInfoEXT *>( this );
52031     }
52032 
52033 #if defined( VULKAN_HPP_USE_REFLECT )
52034 #  if 14 <= VULKAN_HPP_CPP_VERSION
52035     auto
52036 #  else
52037     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, float const &>
52038 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT52039       reflect() const VULKAN_HPP_NOEXCEPT
52040     {
52041       return std::tie( sType, pNext, priority );
52042     }
52043 #endif
52044 
52045 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52046     auto operator<=>( MemoryPriorityAllocateInfoEXT const & ) const = default;
52047 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT52048     bool operator==( MemoryPriorityAllocateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
52049     {
52050 #  if defined( VULKAN_HPP_USE_REFLECT )
52051       return this->reflect() == rhs.reflect();
52052 #  else
52053       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( priority == rhs.priority );
52054 #  endif
52055     }
52056 
operator !=VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT52057     bool operator!=( MemoryPriorityAllocateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
52058     {
52059       return !operator==( rhs );
52060     }
52061 #endif
52062 
52063   public:
52064     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eMemoryPriorityAllocateInfoEXT;
52065     const void *                        pNext    = {};
52066     float                               priority = {};
52067   };
52068 
52069   template <>
52070   struct CppType<StructureType, StructureType::eMemoryPriorityAllocateInfoEXT>
52071   {
52072     using Type = MemoryPriorityAllocateInfoEXT;
52073   };
52074 
52075   struct MemoryRequirements
52076   {
52077     using NativeType = VkMemoryRequirements;
52078 
52079 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryRequirementsVULKAN_HPP_NAMESPACE::MemoryRequirements52080     VULKAN_HPP_CONSTEXPR MemoryRequirements( VULKAN_HPP_NAMESPACE::DeviceSize size_           = {},
52081                                              VULKAN_HPP_NAMESPACE::DeviceSize alignment_      = {},
52082                                              uint32_t                         memoryTypeBits_ = {} ) VULKAN_HPP_NOEXCEPT
52083       : size{ size_ }
52084       , alignment{ alignment_ }
52085       , memoryTypeBits{ memoryTypeBits_ }
52086     {
52087     }
52088 
52089     VULKAN_HPP_CONSTEXPR MemoryRequirements( MemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52090 
MemoryRequirementsVULKAN_HPP_NAMESPACE::MemoryRequirements52091     MemoryRequirements( VkMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryRequirements( *reinterpret_cast<MemoryRequirements const *>( &rhs ) ) {}
52092 
52093     MemoryRequirements & operator=( MemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52094 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52095 
operator =VULKAN_HPP_NAMESPACE::MemoryRequirements52096     MemoryRequirements & operator=( VkMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
52097     {
52098       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryRequirements const *>( &rhs );
52099       return *this;
52100     }
52101 
operator VkMemoryRequirements const&VULKAN_HPP_NAMESPACE::MemoryRequirements52102     operator VkMemoryRequirements const &() const VULKAN_HPP_NOEXCEPT
52103     {
52104       return *reinterpret_cast<const VkMemoryRequirements *>( this );
52105     }
52106 
operator VkMemoryRequirements&VULKAN_HPP_NAMESPACE::MemoryRequirements52107     operator VkMemoryRequirements &() VULKAN_HPP_NOEXCEPT
52108     {
52109       return *reinterpret_cast<VkMemoryRequirements *>( this );
52110     }
52111 
52112 #if defined( VULKAN_HPP_USE_REFLECT )
52113 #  if 14 <= VULKAN_HPP_CPP_VERSION
52114     auto
52115 #  else
52116     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, uint32_t const &>
52117 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryRequirements52118       reflect() const VULKAN_HPP_NOEXCEPT
52119     {
52120       return std::tie( size, alignment, memoryTypeBits );
52121     }
52122 #endif
52123 
52124 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52125     auto operator<=>( MemoryRequirements const & ) const = default;
52126 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryRequirements52127     bool operator==( MemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
52128     {
52129 #  if defined( VULKAN_HPP_USE_REFLECT )
52130       return this->reflect() == rhs.reflect();
52131 #  else
52132       return ( size == rhs.size ) && ( alignment == rhs.alignment ) && ( memoryTypeBits == rhs.memoryTypeBits );
52133 #  endif
52134     }
52135 
operator !=VULKAN_HPP_NAMESPACE::MemoryRequirements52136     bool operator!=( MemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
52137     {
52138       return !operator==( rhs );
52139     }
52140 #endif
52141 
52142   public:
52143     VULKAN_HPP_NAMESPACE::DeviceSize size           = {};
52144     VULKAN_HPP_NAMESPACE::DeviceSize alignment      = {};
52145     uint32_t                         memoryTypeBits = {};
52146   };
52147 
52148   struct MemoryRequirements2
52149   {
52150     using NativeType = VkMemoryRequirements2;
52151 
52152     static const bool                                  allowDuplicate = false;
52153     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryRequirements2;
52154 
52155 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryRequirements2VULKAN_HPP_NAMESPACE::MemoryRequirements252156     VULKAN_HPP_CONSTEXPR MemoryRequirements2( VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
52157       : pNext{ pNext_ }
52158       , memoryRequirements{ memoryRequirements_ }
52159     {
52160     }
52161 
52162     VULKAN_HPP_CONSTEXPR MemoryRequirements2( MemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52163 
MemoryRequirements2VULKAN_HPP_NAMESPACE::MemoryRequirements252164     MemoryRequirements2( VkMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryRequirements2( *reinterpret_cast<MemoryRequirements2 const *>( &rhs ) )
52165     {
52166     }
52167 
52168     MemoryRequirements2 & operator=( MemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52169 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52170 
operator =VULKAN_HPP_NAMESPACE::MemoryRequirements252171     MemoryRequirements2 & operator=( VkMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT
52172     {
52173       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryRequirements2 const *>( &rhs );
52174       return *this;
52175     }
52176 
operator VkMemoryRequirements2 const&VULKAN_HPP_NAMESPACE::MemoryRequirements252177     operator VkMemoryRequirements2 const &() const VULKAN_HPP_NOEXCEPT
52178     {
52179       return *reinterpret_cast<const VkMemoryRequirements2 *>( this );
52180     }
52181 
operator VkMemoryRequirements2&VULKAN_HPP_NAMESPACE::MemoryRequirements252182     operator VkMemoryRequirements2 &() VULKAN_HPP_NOEXCEPT
52183     {
52184       return *reinterpret_cast<VkMemoryRequirements2 *>( this );
52185     }
52186 
52187 #if defined( VULKAN_HPP_USE_REFLECT )
52188 #  if 14 <= VULKAN_HPP_CPP_VERSION
52189     auto
52190 #  else
52191     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::MemoryRequirements const &>
52192 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryRequirements252193       reflect() const VULKAN_HPP_NOEXCEPT
52194     {
52195       return std::tie( sType, pNext, memoryRequirements );
52196     }
52197 #endif
52198 
52199 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52200     auto operator<=>( MemoryRequirements2 const & ) const = default;
52201 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryRequirements252202     bool operator==( MemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT
52203     {
52204 #  if defined( VULKAN_HPP_USE_REFLECT )
52205       return this->reflect() == rhs.reflect();
52206 #  else
52207       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryRequirements == rhs.memoryRequirements );
52208 #  endif
52209     }
52210 
operator !=VULKAN_HPP_NAMESPACE::MemoryRequirements252211     bool operator!=( MemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT
52212     {
52213       return !operator==( rhs );
52214     }
52215 #endif
52216 
52217   public:
52218     VULKAN_HPP_NAMESPACE::StructureType      sType              = StructureType::eMemoryRequirements2;
52219     void *                                   pNext              = {};
52220     VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements = {};
52221   };
52222 
52223   template <>
52224   struct CppType<StructureType, StructureType::eMemoryRequirements2>
52225   {
52226     using Type = MemoryRequirements2;
52227   };
52228 
52229   using MemoryRequirements2KHR = MemoryRequirements2;
52230 
52231   struct MemoryType
52232   {
52233     using NativeType = VkMemoryType;
52234 
52235 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryTypeVULKAN_HPP_NAMESPACE::MemoryType52236     VULKAN_HPP_CONSTEXPR MemoryType( VULKAN_HPP_NAMESPACE::MemoryPropertyFlags propertyFlags_ = {}, uint32_t heapIndex_ = {} ) VULKAN_HPP_NOEXCEPT
52237       : propertyFlags{ propertyFlags_ }
52238       , heapIndex{ heapIndex_ }
52239     {
52240     }
52241 
52242     VULKAN_HPP_CONSTEXPR MemoryType( MemoryType const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52243 
MemoryTypeVULKAN_HPP_NAMESPACE::MemoryType52244     MemoryType( VkMemoryType const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryType( *reinterpret_cast<MemoryType const *>( &rhs ) ) {}
52245 
52246     MemoryType & operator=( MemoryType const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52247 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52248 
operator =VULKAN_HPP_NAMESPACE::MemoryType52249     MemoryType & operator=( VkMemoryType const & rhs ) VULKAN_HPP_NOEXCEPT
52250     {
52251       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryType const *>( &rhs );
52252       return *this;
52253     }
52254 
operator VkMemoryType const&VULKAN_HPP_NAMESPACE::MemoryType52255     operator VkMemoryType const &() const VULKAN_HPP_NOEXCEPT
52256     {
52257       return *reinterpret_cast<const VkMemoryType *>( this );
52258     }
52259 
operator VkMemoryType&VULKAN_HPP_NAMESPACE::MemoryType52260     operator VkMemoryType &() VULKAN_HPP_NOEXCEPT
52261     {
52262       return *reinterpret_cast<VkMemoryType *>( this );
52263     }
52264 
52265 #if defined( VULKAN_HPP_USE_REFLECT )
52266 #  if 14 <= VULKAN_HPP_CPP_VERSION
52267     auto
52268 #  else
52269     std::tuple<VULKAN_HPP_NAMESPACE::MemoryPropertyFlags const &, uint32_t const &>
52270 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryType52271       reflect() const VULKAN_HPP_NOEXCEPT
52272     {
52273       return std::tie( propertyFlags, heapIndex );
52274     }
52275 #endif
52276 
52277 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52278     auto operator<=>( MemoryType const & ) const = default;
52279 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryType52280     bool operator==( MemoryType const & rhs ) const VULKAN_HPP_NOEXCEPT
52281     {
52282 #  if defined( VULKAN_HPP_USE_REFLECT )
52283       return this->reflect() == rhs.reflect();
52284 #  else
52285       return ( propertyFlags == rhs.propertyFlags ) && ( heapIndex == rhs.heapIndex );
52286 #  endif
52287     }
52288 
operator !=VULKAN_HPP_NAMESPACE::MemoryType52289     bool operator!=( MemoryType const & rhs ) const VULKAN_HPP_NOEXCEPT
52290     {
52291       return !operator==( rhs );
52292     }
52293 #endif
52294 
52295   public:
52296     VULKAN_HPP_NAMESPACE::MemoryPropertyFlags propertyFlags = {};
52297     uint32_t                                  heapIndex     = {};
52298   };
52299 
52300   struct MemoryUnmapInfoKHR
52301   {
52302     using NativeType = VkMemoryUnmapInfoKHR;
52303 
52304     static const bool                                  allowDuplicate = false;
52305     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryUnmapInfoKHR;
52306 
52307 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryUnmapInfoKHRVULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR52308     VULKAN_HPP_CONSTEXPR MemoryUnmapInfoKHR( VULKAN_HPP_NAMESPACE::MemoryUnmapFlagsKHR flags_  = {},
52309                                              VULKAN_HPP_NAMESPACE::DeviceMemory        memory_ = {},
52310                                              const void *                              pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
52311       : pNext{ pNext_ }
52312       , flags{ flags_ }
52313       , memory{ memory_ }
52314     {
52315     }
52316 
52317     VULKAN_HPP_CONSTEXPR MemoryUnmapInfoKHR( MemoryUnmapInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52318 
MemoryUnmapInfoKHRVULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR52319     MemoryUnmapInfoKHR( VkMemoryUnmapInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryUnmapInfoKHR( *reinterpret_cast<MemoryUnmapInfoKHR const *>( &rhs ) ) {}
52320 
52321     MemoryUnmapInfoKHR & operator=( MemoryUnmapInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52322 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52323 
operator =VULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR52324     MemoryUnmapInfoKHR & operator=( VkMemoryUnmapInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
52325     {
52326       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR const *>( &rhs );
52327       return *this;
52328     }
52329 
52330 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR52331     VULKAN_HPP_CONSTEXPR_14 MemoryUnmapInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
52332     {
52333       pNext = pNext_;
52334       return *this;
52335     }
52336 
setFlagsVULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR52337     VULKAN_HPP_CONSTEXPR_14 MemoryUnmapInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::MemoryUnmapFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
52338     {
52339       flags = flags_;
52340       return *this;
52341     }
52342 
setMemoryVULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR52343     VULKAN_HPP_CONSTEXPR_14 MemoryUnmapInfoKHR & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
52344     {
52345       memory = memory_;
52346       return *this;
52347     }
52348 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
52349 
operator VkMemoryUnmapInfoKHR const&VULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR52350     operator VkMemoryUnmapInfoKHR const &() const VULKAN_HPP_NOEXCEPT
52351     {
52352       return *reinterpret_cast<const VkMemoryUnmapInfoKHR *>( this );
52353     }
52354 
operator VkMemoryUnmapInfoKHR&VULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR52355     operator VkMemoryUnmapInfoKHR &() VULKAN_HPP_NOEXCEPT
52356     {
52357       return *reinterpret_cast<VkMemoryUnmapInfoKHR *>( this );
52358     }
52359 
52360 #if defined( VULKAN_HPP_USE_REFLECT )
52361 #  if 14 <= VULKAN_HPP_CPP_VERSION
52362     auto
52363 #  else
52364     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
52365                const void * const &,
52366                VULKAN_HPP_NAMESPACE::MemoryUnmapFlagsKHR const &,
52367                VULKAN_HPP_NAMESPACE::DeviceMemory const &>
52368 #  endif
reflectVULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR52369       reflect() const VULKAN_HPP_NOEXCEPT
52370     {
52371       return std::tie( sType, pNext, flags, memory );
52372     }
52373 #endif
52374 
52375 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52376     auto operator<=>( MemoryUnmapInfoKHR const & ) const = default;
52377 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR52378     bool operator==( MemoryUnmapInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
52379     {
52380 #  if defined( VULKAN_HPP_USE_REFLECT )
52381       return this->reflect() == rhs.reflect();
52382 #  else
52383       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( memory == rhs.memory );
52384 #  endif
52385     }
52386 
operator !=VULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR52387     bool operator!=( MemoryUnmapInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
52388     {
52389       return !operator==( rhs );
52390     }
52391 #endif
52392 
52393   public:
52394     VULKAN_HPP_NAMESPACE::StructureType       sType  = StructureType::eMemoryUnmapInfoKHR;
52395     const void *                              pNext  = {};
52396     VULKAN_HPP_NAMESPACE::MemoryUnmapFlagsKHR flags  = {};
52397     VULKAN_HPP_NAMESPACE::DeviceMemory        memory = {};
52398   };
52399 
52400   template <>
52401   struct CppType<StructureType, StructureType::eMemoryUnmapInfoKHR>
52402   {
52403     using Type = MemoryUnmapInfoKHR;
52404   };
52405 
52406 #if defined( VK_USE_PLATFORM_WIN32_KHR )
52407   struct MemoryWin32HandlePropertiesKHR
52408   {
52409     using NativeType = VkMemoryWin32HandlePropertiesKHR;
52410 
52411     static const bool                                  allowDuplicate = false;
52412     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryWin32HandlePropertiesKHR;
52413 
52414 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryWin32HandlePropertiesKHRVULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR52415     VULKAN_HPP_CONSTEXPR MemoryWin32HandlePropertiesKHR( uint32_t memoryTypeBits_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
52416       : pNext{ pNext_ }
52417       , memoryTypeBits{ memoryTypeBits_ }
52418     {
52419     }
52420 
52421     VULKAN_HPP_CONSTEXPR MemoryWin32HandlePropertiesKHR( MemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52422 
MemoryWin32HandlePropertiesKHRVULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR52423     MemoryWin32HandlePropertiesKHR( VkMemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
52424       : MemoryWin32HandlePropertiesKHR( *reinterpret_cast<MemoryWin32HandlePropertiesKHR const *>( &rhs ) )
52425     {
52426     }
52427 
52428     MemoryWin32HandlePropertiesKHR & operator=( MemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52429 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52430 
operator =VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR52431     MemoryWin32HandlePropertiesKHR & operator=( VkMemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
52432     {
52433       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR const *>( &rhs );
52434       return *this;
52435     }
52436 
operator VkMemoryWin32HandlePropertiesKHR const&VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR52437     operator VkMemoryWin32HandlePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
52438     {
52439       return *reinterpret_cast<const VkMemoryWin32HandlePropertiesKHR *>( this );
52440     }
52441 
operator VkMemoryWin32HandlePropertiesKHR&VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR52442     operator VkMemoryWin32HandlePropertiesKHR &() VULKAN_HPP_NOEXCEPT
52443     {
52444       return *reinterpret_cast<VkMemoryWin32HandlePropertiesKHR *>( this );
52445     }
52446 
52447 #  if defined( VULKAN_HPP_USE_REFLECT )
52448 #    if 14 <= VULKAN_HPP_CPP_VERSION
52449     auto
52450 #    else
52451     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
52452 #    endif
reflectVULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR52453       reflect() const VULKAN_HPP_NOEXCEPT
52454     {
52455       return std::tie( sType, pNext, memoryTypeBits );
52456     }
52457 #  endif
52458 
52459 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52460     auto operator<=>( MemoryWin32HandlePropertiesKHR const & ) const = default;
52461 #  else
operator ==VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR52462     bool operator==( MemoryWin32HandlePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
52463     {
52464 #    if defined( VULKAN_HPP_USE_REFLECT )
52465       return this->reflect() == rhs.reflect();
52466 #    else
52467       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryTypeBits == rhs.memoryTypeBits );
52468 #    endif
52469     }
52470 
operator !=VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR52471     bool operator!=( MemoryWin32HandlePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
52472     {
52473       return !operator==( rhs );
52474     }
52475 #  endif
52476 
52477   public:
52478     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eMemoryWin32HandlePropertiesKHR;
52479     void *                              pNext          = {};
52480     uint32_t                            memoryTypeBits = {};
52481   };
52482 
52483   template <>
52484   struct CppType<StructureType, StructureType::eMemoryWin32HandlePropertiesKHR>
52485   {
52486     using Type = MemoryWin32HandlePropertiesKHR;
52487   };
52488 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
52489 
52490 #if defined( VK_USE_PLATFORM_FUCHSIA )
52491   struct MemoryZirconHandlePropertiesFUCHSIA
52492   {
52493     using NativeType = VkMemoryZirconHandlePropertiesFUCHSIA;
52494 
52495     static const bool                                  allowDuplicate = false;
52496     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMemoryZirconHandlePropertiesFUCHSIA;
52497 
52498 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryZirconHandlePropertiesFUCHSIAVULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA52499     VULKAN_HPP_CONSTEXPR MemoryZirconHandlePropertiesFUCHSIA( uint32_t memoryTypeBits_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
52500       : pNext{ pNext_ }
52501       , memoryTypeBits{ memoryTypeBits_ }
52502     {
52503     }
52504 
52505     VULKAN_HPP_CONSTEXPR MemoryZirconHandlePropertiesFUCHSIA( MemoryZirconHandlePropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52506 
MemoryZirconHandlePropertiesFUCHSIAVULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA52507     MemoryZirconHandlePropertiesFUCHSIA( VkMemoryZirconHandlePropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
52508       : MemoryZirconHandlePropertiesFUCHSIA( *reinterpret_cast<MemoryZirconHandlePropertiesFUCHSIA const *>( &rhs ) )
52509     {
52510     }
52511 
52512     MemoryZirconHandlePropertiesFUCHSIA & operator=( MemoryZirconHandlePropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52513 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52514 
operator =VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA52515     MemoryZirconHandlePropertiesFUCHSIA & operator=( VkMemoryZirconHandlePropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
52516     {
52517       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA const *>( &rhs );
52518       return *this;
52519     }
52520 
operator VkMemoryZirconHandlePropertiesFUCHSIA const&VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA52521     operator VkMemoryZirconHandlePropertiesFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
52522     {
52523       return *reinterpret_cast<const VkMemoryZirconHandlePropertiesFUCHSIA *>( this );
52524     }
52525 
operator VkMemoryZirconHandlePropertiesFUCHSIA&VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA52526     operator VkMemoryZirconHandlePropertiesFUCHSIA &() VULKAN_HPP_NOEXCEPT
52527     {
52528       return *reinterpret_cast<VkMemoryZirconHandlePropertiesFUCHSIA *>( this );
52529     }
52530 
52531 #  if defined( VULKAN_HPP_USE_REFLECT )
52532 #    if 14 <= VULKAN_HPP_CPP_VERSION
52533     auto
52534 #    else
52535     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
52536 #    endif
reflectVULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA52537       reflect() const VULKAN_HPP_NOEXCEPT
52538     {
52539       return std::tie( sType, pNext, memoryTypeBits );
52540     }
52541 #  endif
52542 
52543 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52544     auto operator<=>( MemoryZirconHandlePropertiesFUCHSIA const & ) const = default;
52545 #  else
operator ==VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA52546     bool operator==( MemoryZirconHandlePropertiesFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
52547     {
52548 #    if defined( VULKAN_HPP_USE_REFLECT )
52549       return this->reflect() == rhs.reflect();
52550 #    else
52551       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryTypeBits == rhs.memoryTypeBits );
52552 #    endif
52553     }
52554 
operator !=VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA52555     bool operator!=( MemoryZirconHandlePropertiesFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
52556     {
52557       return !operator==( rhs );
52558     }
52559 #  endif
52560 
52561   public:
52562     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eMemoryZirconHandlePropertiesFUCHSIA;
52563     void *                              pNext          = {};
52564     uint32_t                            memoryTypeBits = {};
52565   };
52566 
52567   template <>
52568   struct CppType<StructureType, StructureType::eMemoryZirconHandlePropertiesFUCHSIA>
52569   {
52570     using Type = MemoryZirconHandlePropertiesFUCHSIA;
52571   };
52572 #endif /*VK_USE_PLATFORM_FUCHSIA*/
52573 
52574 #if defined( VK_USE_PLATFORM_METAL_EXT )
52575   struct MetalSurfaceCreateInfoEXT
52576   {
52577     using NativeType = VkMetalSurfaceCreateInfoEXT;
52578 
52579     static const bool                                  allowDuplicate = false;
52580     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMetalSurfaceCreateInfoEXT;
52581 
52582 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MetalSurfaceCreateInfoEXTVULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT52583     VULKAN_HPP_CONSTEXPR MetalSurfaceCreateInfoEXT( VULKAN_HPP_NAMESPACE::MetalSurfaceCreateFlagsEXT flags_  = {},
52584                                                     const CAMetalLayer *                             pLayer_ = {},
52585                                                     const void *                                     pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
52586       : pNext{ pNext_ }
52587       , flags{ flags_ }
52588       , pLayer{ pLayer_ }
52589     {
52590     }
52591 
52592     VULKAN_HPP_CONSTEXPR MetalSurfaceCreateInfoEXT( MetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52593 
MetalSurfaceCreateInfoEXTVULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT52594     MetalSurfaceCreateInfoEXT( VkMetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
52595       : MetalSurfaceCreateInfoEXT( *reinterpret_cast<MetalSurfaceCreateInfoEXT const *>( &rhs ) )
52596     {
52597     }
52598 
52599     MetalSurfaceCreateInfoEXT & operator=( MetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52600 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52601 
operator =VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT52602     MetalSurfaceCreateInfoEXT & operator=( VkMetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
52603     {
52604       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT const *>( &rhs );
52605       return *this;
52606     }
52607 
52608 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT52609     VULKAN_HPP_CONSTEXPR_14 MetalSurfaceCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
52610     {
52611       pNext = pNext_;
52612       return *this;
52613     }
52614 
setFlagsVULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT52615     VULKAN_HPP_CONSTEXPR_14 MetalSurfaceCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::MetalSurfaceCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
52616     {
52617       flags = flags_;
52618       return *this;
52619     }
52620 
setPLayerVULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT52621     VULKAN_HPP_CONSTEXPR_14 MetalSurfaceCreateInfoEXT & setPLayer( const CAMetalLayer * pLayer_ ) VULKAN_HPP_NOEXCEPT
52622     {
52623       pLayer = pLayer_;
52624       return *this;
52625     }
52626 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
52627 
operator VkMetalSurfaceCreateInfoEXT const&VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT52628     operator VkMetalSurfaceCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
52629     {
52630       return *reinterpret_cast<const VkMetalSurfaceCreateInfoEXT *>( this );
52631     }
52632 
operator VkMetalSurfaceCreateInfoEXT&VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT52633     operator VkMetalSurfaceCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
52634     {
52635       return *reinterpret_cast<VkMetalSurfaceCreateInfoEXT *>( this );
52636     }
52637 
52638 #  if defined( VULKAN_HPP_USE_REFLECT )
52639 #    if 14 <= VULKAN_HPP_CPP_VERSION
52640     auto
52641 #    else
52642     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
52643                const void * const &,
52644                VULKAN_HPP_NAMESPACE::MetalSurfaceCreateFlagsEXT const &,
52645                const CAMetalLayer * const &>
52646 #    endif
reflectVULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT52647       reflect() const VULKAN_HPP_NOEXCEPT
52648     {
52649       return std::tie( sType, pNext, flags, pLayer );
52650     }
52651 #  endif
52652 
52653 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
52654     auto operator<=>( MetalSurfaceCreateInfoEXT const & ) const = default;
52655 #  else
operator ==VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT52656     bool operator==( MetalSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
52657     {
52658 #    if defined( VULKAN_HPP_USE_REFLECT )
52659       return this->reflect() == rhs.reflect();
52660 #    else
52661       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pLayer == rhs.pLayer );
52662 #    endif
52663     }
52664 
operator !=VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT52665     bool operator!=( MetalSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
52666     {
52667       return !operator==( rhs );
52668     }
52669 #  endif
52670 
52671   public:
52672     VULKAN_HPP_NAMESPACE::StructureType              sType  = StructureType::eMetalSurfaceCreateInfoEXT;
52673     const void *                                     pNext  = {};
52674     VULKAN_HPP_NAMESPACE::MetalSurfaceCreateFlagsEXT flags  = {};
52675     const CAMetalLayer *                             pLayer = {};
52676   };
52677 
52678   template <>
52679   struct CppType<StructureType, StructureType::eMetalSurfaceCreateInfoEXT>
52680   {
52681     using Type = MetalSurfaceCreateInfoEXT;
52682   };
52683 #endif /*VK_USE_PLATFORM_METAL_EXT*/
52684 
52685   struct MicromapBuildInfoEXT
52686   {
52687     using NativeType = VkMicromapBuildInfoEXT;
52688 
52689     static const bool                                  allowDuplicate = false;
52690     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMicromapBuildInfoEXT;
52691 
52692 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MicromapBuildInfoEXTVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT52693     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT( VULKAN_HPP_NAMESPACE::MicromapTypeEXT       type_  = VULKAN_HPP_NAMESPACE::MicromapTypeEXT::eOpacityMicromap,
52694                                                   VULKAN_HPP_NAMESPACE::BuildMicromapFlagsEXT flags_ = {},
52695                                                   VULKAN_HPP_NAMESPACE::BuildMicromapModeEXT  mode_  = VULKAN_HPP_NAMESPACE::BuildMicromapModeEXT::eBuild,
52696                                                   VULKAN_HPP_NAMESPACE::MicromapEXT           dstMicromap_                    = {},
52697                                                   uint32_t                                    usageCountsCount_               = {},
52698                                                   const VULKAN_HPP_NAMESPACE::MicromapUsageEXT *         pUsageCounts_        = {},
52699                                                   const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * ppUsageCounts_       = {},
52700                                                   VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      data_                = {},
52701                                                   VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR           scratchData_         = {},
52702                                                   VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      triangleArray_       = {},
52703                                                   VULKAN_HPP_NAMESPACE::DeviceSize                       triangleArrayStride_ = {},
52704                                                   const void *                                           pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
52705       : pNext{ pNext_ }
52706       , type{ type_ }
52707       , flags{ flags_ }
52708       , mode{ mode_ }
52709       , dstMicromap{ dstMicromap_ }
52710       , usageCountsCount{ usageCountsCount_ }
52711       , pUsageCounts{ pUsageCounts_ }
52712       , ppUsageCounts{ ppUsageCounts_ }
52713       , data{ data_ }
52714       , scratchData{ scratchData_ }
52715       , triangleArray{ triangleArray_ }
52716       , triangleArrayStride{ triangleArrayStride_ }
52717     {
52718     }
52719 
52720     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT( MicromapBuildInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52721 
MicromapBuildInfoEXTVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT52722     MicromapBuildInfoEXT( VkMicromapBuildInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
52723       : MicromapBuildInfoEXT( *reinterpret_cast<MicromapBuildInfoEXT const *>( &rhs ) )
52724     {
52725     }
52726 
52727 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
MicromapBuildInfoEXTVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT52728     MicromapBuildInfoEXT( VULKAN_HPP_NAMESPACE::MicromapTypeEXT                                                                       type_,
52729                           VULKAN_HPP_NAMESPACE::BuildMicromapFlagsEXT                                                                 flags_,
52730                           VULKAN_HPP_NAMESPACE::BuildMicromapModeEXT                                                                  mode_,
52731                           VULKAN_HPP_NAMESPACE::MicromapEXT                                                                           dstMicromap_,
52732                           VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT> const &         usageCounts_,
52733                           VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const> const & pUsageCounts_        = {},
52734                           VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR                                                           data_                = {},
52735                           VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR                                                                scratchData_         = {},
52736                           VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR                                                           triangleArray_       = {},
52737                           VULKAN_HPP_NAMESPACE::DeviceSize                                                                            triangleArrayStride_ = {},
52738                           const void *                                                                                                pNext_ = nullptr )
52739       : pNext( pNext_ )
52740       , type( type_ )
52741       , flags( flags_ )
52742       , mode( mode_ )
52743       , dstMicromap( dstMicromap_ )
52744       , usageCountsCount( static_cast<uint32_t>( !usageCounts_.empty() ? usageCounts_.size() : pUsageCounts_.size() ) )
52745       , pUsageCounts( usageCounts_.data() )
52746       , ppUsageCounts( pUsageCounts_.data() )
52747       , data( data_ )
52748       , scratchData( scratchData_ )
52749       , triangleArray( triangleArray_ )
52750       , triangleArrayStride( triangleArrayStride_ )
52751     {
52752 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
52753       VULKAN_HPP_ASSERT( ( !usageCounts_.empty() + !pUsageCounts_.empty() ) <= 1 );
52754 #    else
52755       if ( 1 < ( !usageCounts_.empty() + !pUsageCounts_.empty() ) )
52756       {
52757         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::MicromapBuildInfoEXT::MicromapBuildInfoEXT: 1 < ( !usageCounts_.empty() + !pUsageCounts_.empty() )" );
52758       }
52759 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
52760     }
52761 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
52762 
52763     MicromapBuildInfoEXT & operator=( MicromapBuildInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52764 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52765 
operator =VULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT52766     MicromapBuildInfoEXT & operator=( VkMicromapBuildInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
52767     {
52768       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT const *>( &rhs );
52769       return *this;
52770     }
52771 
52772 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT52773     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
52774     {
52775       pNext = pNext_;
52776       return *this;
52777     }
52778 
setTypeVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT52779     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setType( VULKAN_HPP_NAMESPACE::MicromapTypeEXT type_ ) VULKAN_HPP_NOEXCEPT
52780     {
52781       type = type_;
52782       return *this;
52783     }
52784 
setFlagsVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT52785     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::BuildMicromapFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
52786     {
52787       flags = flags_;
52788       return *this;
52789     }
52790 
setModeVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT52791     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setMode( VULKAN_HPP_NAMESPACE::BuildMicromapModeEXT mode_ ) VULKAN_HPP_NOEXCEPT
52792     {
52793       mode = mode_;
52794       return *this;
52795     }
52796 
setDstMicromapVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT52797     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setDstMicromap( VULKAN_HPP_NAMESPACE::MicromapEXT dstMicromap_ ) VULKAN_HPP_NOEXCEPT
52798     {
52799       dstMicromap = dstMicromap_;
52800       return *this;
52801     }
52802 
setUsageCountsCountVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT52803     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setUsageCountsCount( uint32_t usageCountsCount_ ) VULKAN_HPP_NOEXCEPT
52804     {
52805       usageCountsCount = usageCountsCount_;
52806       return *this;
52807     }
52808 
setPUsageCountsVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT52809     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setPUsageCounts( const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * pUsageCounts_ ) VULKAN_HPP_NOEXCEPT
52810     {
52811       pUsageCounts = pUsageCounts_;
52812       return *this;
52813     }
52814 
52815 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
52816     MicromapBuildInfoEXT &
setUsageCountsVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT52817       setUsageCounts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT> const & usageCounts_ ) VULKAN_HPP_NOEXCEPT
52818     {
52819       usageCountsCount = static_cast<uint32_t>( usageCounts_.size() );
52820       pUsageCounts     = usageCounts_.data();
52821       return *this;
52822     }
52823 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
52824 
setPpUsageCountsVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT52825     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setPpUsageCounts( const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * ppUsageCounts_ ) VULKAN_HPP_NOEXCEPT
52826     {
52827       ppUsageCounts = ppUsageCounts_;
52828       return *this;
52829     }
52830 
52831 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPUsageCountsVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT52832     MicromapBuildInfoEXT & setPUsageCounts(
52833       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const> const & pUsageCounts_ ) VULKAN_HPP_NOEXCEPT
52834     {
52835       usageCountsCount = static_cast<uint32_t>( pUsageCounts_.size() );
52836       ppUsageCounts    = pUsageCounts_.data();
52837       return *this;
52838     }
52839 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
52840 
setDataVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT52841     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & data_ ) VULKAN_HPP_NOEXCEPT
52842     {
52843       data = data_;
52844       return *this;
52845     }
52846 
setScratchDataVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT52847     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setScratchData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const & scratchData_ ) VULKAN_HPP_NOEXCEPT
52848     {
52849       scratchData = scratchData_;
52850       return *this;
52851     }
52852 
52853     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT &
setTriangleArrayVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT52854       setTriangleArray( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & triangleArray_ ) VULKAN_HPP_NOEXCEPT
52855     {
52856       triangleArray = triangleArray_;
52857       return *this;
52858     }
52859 
setTriangleArrayStrideVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT52860     VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setTriangleArrayStride( VULKAN_HPP_NAMESPACE::DeviceSize triangleArrayStride_ ) VULKAN_HPP_NOEXCEPT
52861     {
52862       triangleArrayStride = triangleArrayStride_;
52863       return *this;
52864     }
52865 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
52866 
operator VkMicromapBuildInfoEXT const&VULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT52867     operator VkMicromapBuildInfoEXT const &() const VULKAN_HPP_NOEXCEPT
52868     {
52869       return *reinterpret_cast<const VkMicromapBuildInfoEXT *>( this );
52870     }
52871 
operator VkMicromapBuildInfoEXT&VULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT52872     operator VkMicromapBuildInfoEXT &() VULKAN_HPP_NOEXCEPT
52873     {
52874       return *reinterpret_cast<VkMicromapBuildInfoEXT *>( this );
52875     }
52876 
52877 #if defined( VULKAN_HPP_USE_REFLECT )
52878 #  if 14 <= VULKAN_HPP_CPP_VERSION
52879     auto
52880 #  else
52881     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
52882                const void * const &,
52883                VULKAN_HPP_NAMESPACE::MicromapTypeEXT const &,
52884                VULKAN_HPP_NAMESPACE::BuildMicromapFlagsEXT const &,
52885                VULKAN_HPP_NAMESPACE::BuildMicromapModeEXT const &,
52886                VULKAN_HPP_NAMESPACE::MicromapEXT const &,
52887                uint32_t const &,
52888                const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const &,
52889                const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * const &,
52890                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
52891                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const &,
52892                VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const &,
52893                VULKAN_HPP_NAMESPACE::DeviceSize const &>
52894 #  endif
reflectVULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT52895       reflect() const VULKAN_HPP_NOEXCEPT
52896     {
52897       return std::tie(
52898         sType, pNext, type, flags, mode, dstMicromap, usageCountsCount, pUsageCounts, ppUsageCounts, data, scratchData, triangleArray, triangleArrayStride );
52899     }
52900 #endif
52901 
52902   public:
52903     VULKAN_HPP_NAMESPACE::StructureType                    sType               = StructureType::eMicromapBuildInfoEXT;
52904     const void *                                           pNext               = {};
52905     VULKAN_HPP_NAMESPACE::MicromapTypeEXT                  type                = VULKAN_HPP_NAMESPACE::MicromapTypeEXT::eOpacityMicromap;
52906     VULKAN_HPP_NAMESPACE::BuildMicromapFlagsEXT            flags               = {};
52907     VULKAN_HPP_NAMESPACE::BuildMicromapModeEXT             mode                = VULKAN_HPP_NAMESPACE::BuildMicromapModeEXT::eBuild;
52908     VULKAN_HPP_NAMESPACE::MicromapEXT                      dstMicromap         = {};
52909     uint32_t                                               usageCountsCount    = {};
52910     const VULKAN_HPP_NAMESPACE::MicromapUsageEXT *         pUsageCounts        = {};
52911     const VULKAN_HPP_NAMESPACE::MicromapUsageEXT * const * ppUsageCounts       = {};
52912     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      data                = {};
52913     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR           scratchData         = {};
52914     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR      triangleArray       = {};
52915     VULKAN_HPP_NAMESPACE::DeviceSize                       triangleArrayStride = {};
52916   };
52917 
52918   template <>
52919   struct CppType<StructureType, StructureType::eMicromapBuildInfoEXT>
52920   {
52921     using Type = MicromapBuildInfoEXT;
52922   };
52923 
52924   struct MicromapBuildSizesInfoEXT
52925   {
52926     using NativeType = VkMicromapBuildSizesInfoEXT;
52927 
52928     static const bool                                  allowDuplicate = false;
52929     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMicromapBuildSizesInfoEXT;
52930 
52931 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MicromapBuildSizesInfoEXTVULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT52932     VULKAN_HPP_CONSTEXPR MicromapBuildSizesInfoEXT( VULKAN_HPP_NAMESPACE::DeviceSize micromapSize_     = {},
52933                                                     VULKAN_HPP_NAMESPACE::DeviceSize buildScratchSize_ = {},
52934                                                     VULKAN_HPP_NAMESPACE::Bool32     discardable_      = {},
52935                                                     const void *                     pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
52936       : pNext{ pNext_ }
52937       , micromapSize{ micromapSize_ }
52938       , buildScratchSize{ buildScratchSize_ }
52939       , discardable{ discardable_ }
52940     {
52941     }
52942 
52943     VULKAN_HPP_CONSTEXPR MicromapBuildSizesInfoEXT( MicromapBuildSizesInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52944 
MicromapBuildSizesInfoEXTVULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT52945     MicromapBuildSizesInfoEXT( VkMicromapBuildSizesInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
52946       : MicromapBuildSizesInfoEXT( *reinterpret_cast<MicromapBuildSizesInfoEXT const *>( &rhs ) )
52947     {
52948     }
52949 
52950     MicromapBuildSizesInfoEXT & operator=( MicromapBuildSizesInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
52951 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
52952 
operator =VULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT52953     MicromapBuildSizesInfoEXT & operator=( VkMicromapBuildSizesInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
52954     {
52955       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT const *>( &rhs );
52956       return *this;
52957     }
52958 
52959 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT52960     VULKAN_HPP_CONSTEXPR_14 MicromapBuildSizesInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
52961     {
52962       pNext = pNext_;
52963       return *this;
52964     }
52965 
setMicromapSizeVULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT52966     VULKAN_HPP_CONSTEXPR_14 MicromapBuildSizesInfoEXT & setMicromapSize( VULKAN_HPP_NAMESPACE::DeviceSize micromapSize_ ) VULKAN_HPP_NOEXCEPT
52967     {
52968       micromapSize = micromapSize_;
52969       return *this;
52970     }
52971 
setBuildScratchSizeVULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT52972     VULKAN_HPP_CONSTEXPR_14 MicromapBuildSizesInfoEXT & setBuildScratchSize( VULKAN_HPP_NAMESPACE::DeviceSize buildScratchSize_ ) VULKAN_HPP_NOEXCEPT
52973     {
52974       buildScratchSize = buildScratchSize_;
52975       return *this;
52976     }
52977 
setDiscardableVULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT52978     VULKAN_HPP_CONSTEXPR_14 MicromapBuildSizesInfoEXT & setDiscardable( VULKAN_HPP_NAMESPACE::Bool32 discardable_ ) VULKAN_HPP_NOEXCEPT
52979     {
52980       discardable = discardable_;
52981       return *this;
52982     }
52983 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
52984 
operator VkMicromapBuildSizesInfoEXT const&VULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT52985     operator VkMicromapBuildSizesInfoEXT const &() const VULKAN_HPP_NOEXCEPT
52986     {
52987       return *reinterpret_cast<const VkMicromapBuildSizesInfoEXT *>( this );
52988     }
52989 
operator VkMicromapBuildSizesInfoEXT&VULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT52990     operator VkMicromapBuildSizesInfoEXT &() VULKAN_HPP_NOEXCEPT
52991     {
52992       return *reinterpret_cast<VkMicromapBuildSizesInfoEXT *>( this );
52993     }
52994 
52995 #if defined( VULKAN_HPP_USE_REFLECT )
52996 #  if 14 <= VULKAN_HPP_CPP_VERSION
52997     auto
52998 #  else
52999     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
53000                const void * const &,
53001                VULKAN_HPP_NAMESPACE::DeviceSize const &,
53002                VULKAN_HPP_NAMESPACE::DeviceSize const &,
53003                VULKAN_HPP_NAMESPACE::Bool32 const &>
53004 #  endif
reflectVULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT53005       reflect() const VULKAN_HPP_NOEXCEPT
53006     {
53007       return std::tie( sType, pNext, micromapSize, buildScratchSize, discardable );
53008     }
53009 #endif
53010 
53011 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53012     auto operator<=>( MicromapBuildSizesInfoEXT const & ) const = default;
53013 #else
operator ==VULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT53014     bool operator==( MicromapBuildSizesInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53015     {
53016 #  if defined( VULKAN_HPP_USE_REFLECT )
53017       return this->reflect() == rhs.reflect();
53018 #  else
53019       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( micromapSize == rhs.micromapSize ) && ( buildScratchSize == rhs.buildScratchSize ) &&
53020              ( discardable == rhs.discardable );
53021 #  endif
53022     }
53023 
operator !=VULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT53024     bool operator!=( MicromapBuildSizesInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53025     {
53026       return !operator==( rhs );
53027     }
53028 #endif
53029 
53030   public:
53031     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::eMicromapBuildSizesInfoEXT;
53032     const void *                        pNext            = {};
53033     VULKAN_HPP_NAMESPACE::DeviceSize    micromapSize     = {};
53034     VULKAN_HPP_NAMESPACE::DeviceSize    buildScratchSize = {};
53035     VULKAN_HPP_NAMESPACE::Bool32        discardable      = {};
53036   };
53037 
53038   template <>
53039   struct CppType<StructureType, StructureType::eMicromapBuildSizesInfoEXT>
53040   {
53041     using Type = MicromapBuildSizesInfoEXT;
53042   };
53043 
53044   struct MicromapCreateInfoEXT
53045   {
53046     using NativeType = VkMicromapCreateInfoEXT;
53047 
53048     static const bool                                  allowDuplicate = false;
53049     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMicromapCreateInfoEXT;
53050 
53051 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MicromapCreateInfoEXTVULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53052     VULKAN_HPP_CONSTEXPR MicromapCreateInfoEXT( VULKAN_HPP_NAMESPACE::MicromapCreateFlagsEXT createFlags_ = {},
53053                                                 VULKAN_HPP_NAMESPACE::Buffer                 buffer_      = {},
53054                                                 VULKAN_HPP_NAMESPACE::DeviceSize             offset_      = {},
53055                                                 VULKAN_HPP_NAMESPACE::DeviceSize             size_        = {},
53056                                                 VULKAN_HPP_NAMESPACE::MicromapTypeEXT        type_ = VULKAN_HPP_NAMESPACE::MicromapTypeEXT::eOpacityMicromap,
53057                                                 VULKAN_HPP_NAMESPACE::DeviceAddress          deviceAddress_ = {},
53058                                                 const void *                                 pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
53059       : pNext{ pNext_ }
53060       , createFlags{ createFlags_ }
53061       , buffer{ buffer_ }
53062       , offset{ offset_ }
53063       , size{ size_ }
53064       , type{ type_ }
53065       , deviceAddress{ deviceAddress_ }
53066     {
53067     }
53068 
53069     VULKAN_HPP_CONSTEXPR MicromapCreateInfoEXT( MicromapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53070 
MicromapCreateInfoEXTVULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53071     MicromapCreateInfoEXT( VkMicromapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53072       : MicromapCreateInfoEXT( *reinterpret_cast<MicromapCreateInfoEXT const *>( &rhs ) )
53073     {
53074     }
53075 
53076     MicromapCreateInfoEXT & operator=( MicromapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53077 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53078 
operator =VULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53079     MicromapCreateInfoEXT & operator=( VkMicromapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53080     {
53081       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT const *>( &rhs );
53082       return *this;
53083     }
53084 
53085 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53086     VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
53087     {
53088       pNext = pNext_;
53089       return *this;
53090     }
53091 
setCreateFlagsVULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53092     VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT & setCreateFlags( VULKAN_HPP_NAMESPACE::MicromapCreateFlagsEXT createFlags_ ) VULKAN_HPP_NOEXCEPT
53093     {
53094       createFlags = createFlags_;
53095       return *this;
53096     }
53097 
setBufferVULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53098     VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
53099     {
53100       buffer = buffer_;
53101       return *this;
53102     }
53103 
setOffsetVULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53104     VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
53105     {
53106       offset = offset_;
53107       return *this;
53108     }
53109 
setSizeVULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53110     VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
53111     {
53112       size = size_;
53113       return *this;
53114     }
53115 
setTypeVULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53116     VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT & setType( VULKAN_HPP_NAMESPACE::MicromapTypeEXT type_ ) VULKAN_HPP_NOEXCEPT
53117     {
53118       type = type_;
53119       return *this;
53120     }
53121 
setDeviceAddressVULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53122     VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
53123     {
53124       deviceAddress = deviceAddress_;
53125       return *this;
53126     }
53127 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
53128 
operator VkMicromapCreateInfoEXT const&VULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53129     operator VkMicromapCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
53130     {
53131       return *reinterpret_cast<const VkMicromapCreateInfoEXT *>( this );
53132     }
53133 
operator VkMicromapCreateInfoEXT&VULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53134     operator VkMicromapCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
53135     {
53136       return *reinterpret_cast<VkMicromapCreateInfoEXT *>( this );
53137     }
53138 
53139 #if defined( VULKAN_HPP_USE_REFLECT )
53140 #  if 14 <= VULKAN_HPP_CPP_VERSION
53141     auto
53142 #  else
53143     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
53144                const void * const &,
53145                VULKAN_HPP_NAMESPACE::MicromapCreateFlagsEXT const &,
53146                VULKAN_HPP_NAMESPACE::Buffer const &,
53147                VULKAN_HPP_NAMESPACE::DeviceSize const &,
53148                VULKAN_HPP_NAMESPACE::DeviceSize const &,
53149                VULKAN_HPP_NAMESPACE::MicromapTypeEXT const &,
53150                VULKAN_HPP_NAMESPACE::DeviceAddress const &>
53151 #  endif
reflectVULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53152       reflect() const VULKAN_HPP_NOEXCEPT
53153     {
53154       return std::tie( sType, pNext, createFlags, buffer, offset, size, type, deviceAddress );
53155     }
53156 #endif
53157 
53158 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53159     auto operator<=>( MicromapCreateInfoEXT const & ) const = default;
53160 #else
operator ==VULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53161     bool operator==( MicromapCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53162     {
53163 #  if defined( VULKAN_HPP_USE_REFLECT )
53164       return this->reflect() == rhs.reflect();
53165 #  else
53166       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( createFlags == rhs.createFlags ) && ( buffer == rhs.buffer ) && ( offset == rhs.offset ) &&
53167              ( size == rhs.size ) && ( type == rhs.type ) && ( deviceAddress == rhs.deviceAddress );
53168 #  endif
53169     }
53170 
operator !=VULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT53171     bool operator!=( MicromapCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53172     {
53173       return !operator==( rhs );
53174     }
53175 #endif
53176 
53177   public:
53178     VULKAN_HPP_NAMESPACE::StructureType          sType         = StructureType::eMicromapCreateInfoEXT;
53179     const void *                                 pNext         = {};
53180     VULKAN_HPP_NAMESPACE::MicromapCreateFlagsEXT createFlags   = {};
53181     VULKAN_HPP_NAMESPACE::Buffer                 buffer        = {};
53182     VULKAN_HPP_NAMESPACE::DeviceSize             offset        = {};
53183     VULKAN_HPP_NAMESPACE::DeviceSize             size          = {};
53184     VULKAN_HPP_NAMESPACE::MicromapTypeEXT        type          = VULKAN_HPP_NAMESPACE::MicromapTypeEXT::eOpacityMicromap;
53185     VULKAN_HPP_NAMESPACE::DeviceAddress          deviceAddress = {};
53186   };
53187 
53188   template <>
53189   struct CppType<StructureType, StructureType::eMicromapCreateInfoEXT>
53190   {
53191     using Type = MicromapCreateInfoEXT;
53192   };
53193 
53194   struct MicromapTriangleEXT
53195   {
53196     using NativeType = VkMicromapTriangleEXT;
53197 
53198 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MicromapTriangleEXTVULKAN_HPP_NAMESPACE::MicromapTriangleEXT53199     VULKAN_HPP_CONSTEXPR MicromapTriangleEXT( uint32_t dataOffset_ = {}, uint16_t subdivisionLevel_ = {}, uint16_t format_ = {} ) VULKAN_HPP_NOEXCEPT
53200       : dataOffset{ dataOffset_ }
53201       , subdivisionLevel{ subdivisionLevel_ }
53202       , format{ format_ }
53203     {
53204     }
53205 
53206     VULKAN_HPP_CONSTEXPR MicromapTriangleEXT( MicromapTriangleEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53207 
MicromapTriangleEXTVULKAN_HPP_NAMESPACE::MicromapTriangleEXT53208     MicromapTriangleEXT( VkMicromapTriangleEXT const & rhs ) VULKAN_HPP_NOEXCEPT : MicromapTriangleEXT( *reinterpret_cast<MicromapTriangleEXT const *>( &rhs ) )
53209     {
53210     }
53211 
53212     MicromapTriangleEXT & operator=( MicromapTriangleEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53213 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53214 
operator =VULKAN_HPP_NAMESPACE::MicromapTriangleEXT53215     MicromapTriangleEXT & operator=( VkMicromapTriangleEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53216     {
53217       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MicromapTriangleEXT const *>( &rhs );
53218       return *this;
53219     }
53220 
53221 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setDataOffsetVULKAN_HPP_NAMESPACE::MicromapTriangleEXT53222     VULKAN_HPP_CONSTEXPR_14 MicromapTriangleEXT & setDataOffset( uint32_t dataOffset_ ) VULKAN_HPP_NOEXCEPT
53223     {
53224       dataOffset = dataOffset_;
53225       return *this;
53226     }
53227 
setSubdivisionLevelVULKAN_HPP_NAMESPACE::MicromapTriangleEXT53228     VULKAN_HPP_CONSTEXPR_14 MicromapTriangleEXT & setSubdivisionLevel( uint16_t subdivisionLevel_ ) VULKAN_HPP_NOEXCEPT
53229     {
53230       subdivisionLevel = subdivisionLevel_;
53231       return *this;
53232     }
53233 
setFormatVULKAN_HPP_NAMESPACE::MicromapTriangleEXT53234     VULKAN_HPP_CONSTEXPR_14 MicromapTriangleEXT & setFormat( uint16_t format_ ) VULKAN_HPP_NOEXCEPT
53235     {
53236       format = format_;
53237       return *this;
53238     }
53239 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
53240 
operator VkMicromapTriangleEXT const&VULKAN_HPP_NAMESPACE::MicromapTriangleEXT53241     operator VkMicromapTriangleEXT const &() const VULKAN_HPP_NOEXCEPT
53242     {
53243       return *reinterpret_cast<const VkMicromapTriangleEXT *>( this );
53244     }
53245 
operator VkMicromapTriangleEXT&VULKAN_HPP_NAMESPACE::MicromapTriangleEXT53246     operator VkMicromapTriangleEXT &() VULKAN_HPP_NOEXCEPT
53247     {
53248       return *reinterpret_cast<VkMicromapTriangleEXT *>( this );
53249     }
53250 
53251 #if defined( VULKAN_HPP_USE_REFLECT )
53252 #  if 14 <= VULKAN_HPP_CPP_VERSION
53253     auto
53254 #  else
53255     std::tuple<uint32_t const &, uint16_t const &, uint16_t const &>
53256 #  endif
reflectVULKAN_HPP_NAMESPACE::MicromapTriangleEXT53257       reflect() const VULKAN_HPP_NOEXCEPT
53258     {
53259       return std::tie( dataOffset, subdivisionLevel, format );
53260     }
53261 #endif
53262 
53263 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53264     auto operator<=>( MicromapTriangleEXT const & ) const = default;
53265 #else
operator ==VULKAN_HPP_NAMESPACE::MicromapTriangleEXT53266     bool operator==( MicromapTriangleEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53267     {
53268 #  if defined( VULKAN_HPP_USE_REFLECT )
53269       return this->reflect() == rhs.reflect();
53270 #  else
53271       return ( dataOffset == rhs.dataOffset ) && ( subdivisionLevel == rhs.subdivisionLevel ) && ( format == rhs.format );
53272 #  endif
53273     }
53274 
operator !=VULKAN_HPP_NAMESPACE::MicromapTriangleEXT53275     bool operator!=( MicromapTriangleEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53276     {
53277       return !operator==( rhs );
53278     }
53279 #endif
53280 
53281   public:
53282     uint32_t dataOffset       = {};
53283     uint16_t subdivisionLevel = {};
53284     uint16_t format           = {};
53285   };
53286 
53287   struct MicromapVersionInfoEXT
53288   {
53289     using NativeType = VkMicromapVersionInfoEXT;
53290 
53291     static const bool                                  allowDuplicate = false;
53292     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMicromapVersionInfoEXT;
53293 
53294 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MicromapVersionInfoEXTVULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT53295     VULKAN_HPP_CONSTEXPR MicromapVersionInfoEXT( const uint8_t * pVersionData_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
53296       : pNext{ pNext_ }
53297       , pVersionData{ pVersionData_ }
53298     {
53299     }
53300 
53301     VULKAN_HPP_CONSTEXPR MicromapVersionInfoEXT( MicromapVersionInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53302 
MicromapVersionInfoEXTVULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT53303     MicromapVersionInfoEXT( VkMicromapVersionInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53304       : MicromapVersionInfoEXT( *reinterpret_cast<MicromapVersionInfoEXT const *>( &rhs ) )
53305     {
53306     }
53307 
53308     MicromapVersionInfoEXT & operator=( MicromapVersionInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53309 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53310 
operator =VULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT53311     MicromapVersionInfoEXT & operator=( VkMicromapVersionInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53312     {
53313       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT const *>( &rhs );
53314       return *this;
53315     }
53316 
53317 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT53318     VULKAN_HPP_CONSTEXPR_14 MicromapVersionInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
53319     {
53320       pNext = pNext_;
53321       return *this;
53322     }
53323 
setPVersionDataVULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT53324     VULKAN_HPP_CONSTEXPR_14 MicromapVersionInfoEXT & setPVersionData( const uint8_t * pVersionData_ ) VULKAN_HPP_NOEXCEPT
53325     {
53326       pVersionData = pVersionData_;
53327       return *this;
53328     }
53329 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
53330 
operator VkMicromapVersionInfoEXT const&VULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT53331     operator VkMicromapVersionInfoEXT const &() const VULKAN_HPP_NOEXCEPT
53332     {
53333       return *reinterpret_cast<const VkMicromapVersionInfoEXT *>( this );
53334     }
53335 
operator VkMicromapVersionInfoEXT&VULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT53336     operator VkMicromapVersionInfoEXT &() VULKAN_HPP_NOEXCEPT
53337     {
53338       return *reinterpret_cast<VkMicromapVersionInfoEXT *>( this );
53339     }
53340 
53341 #if defined( VULKAN_HPP_USE_REFLECT )
53342 #  if 14 <= VULKAN_HPP_CPP_VERSION
53343     auto
53344 #  else
53345     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const uint8_t * const &>
53346 #  endif
reflectVULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT53347       reflect() const VULKAN_HPP_NOEXCEPT
53348     {
53349       return std::tie( sType, pNext, pVersionData );
53350     }
53351 #endif
53352 
53353 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53354     auto operator<=>( MicromapVersionInfoEXT const & ) const = default;
53355 #else
operator ==VULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT53356     bool operator==( MicromapVersionInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53357     {
53358 #  if defined( VULKAN_HPP_USE_REFLECT )
53359       return this->reflect() == rhs.reflect();
53360 #  else
53361       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pVersionData == rhs.pVersionData );
53362 #  endif
53363     }
53364 
operator !=VULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT53365     bool operator!=( MicromapVersionInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53366     {
53367       return !operator==( rhs );
53368     }
53369 #endif
53370 
53371   public:
53372     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eMicromapVersionInfoEXT;
53373     const void *                        pNext        = {};
53374     const uint8_t *                     pVersionData = {};
53375   };
53376 
53377   template <>
53378   struct CppType<StructureType, StructureType::eMicromapVersionInfoEXT>
53379   {
53380     using Type = MicromapVersionInfoEXT;
53381   };
53382 
53383   struct MultiDrawIndexedInfoEXT
53384   {
53385     using NativeType = VkMultiDrawIndexedInfoEXT;
53386 
53387 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MultiDrawIndexedInfoEXTVULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53388     VULKAN_HPP_CONSTEXPR MultiDrawIndexedInfoEXT( uint32_t firstIndex_ = {}, uint32_t indexCount_ = {}, int32_t vertexOffset_ = {} ) VULKAN_HPP_NOEXCEPT
53389       : firstIndex{ firstIndex_ }
53390       , indexCount{ indexCount_ }
53391       , vertexOffset{ vertexOffset_ }
53392     {
53393     }
53394 
53395     VULKAN_HPP_CONSTEXPR MultiDrawIndexedInfoEXT( MultiDrawIndexedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53396 
MultiDrawIndexedInfoEXTVULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53397     MultiDrawIndexedInfoEXT( VkMultiDrawIndexedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53398       : MultiDrawIndexedInfoEXT( *reinterpret_cast<MultiDrawIndexedInfoEXT const *>( &rhs ) )
53399     {
53400     }
53401 
53402     MultiDrawIndexedInfoEXT & operator=( MultiDrawIndexedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53403 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53404 
operator =VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53405     MultiDrawIndexedInfoEXT & operator=( VkMultiDrawIndexedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53406     {
53407       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT const *>( &rhs );
53408       return *this;
53409     }
53410 
53411 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFirstIndexVULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53412     VULKAN_HPP_CONSTEXPR_14 MultiDrawIndexedInfoEXT & setFirstIndex( uint32_t firstIndex_ ) VULKAN_HPP_NOEXCEPT
53413     {
53414       firstIndex = firstIndex_;
53415       return *this;
53416     }
53417 
setIndexCountVULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53418     VULKAN_HPP_CONSTEXPR_14 MultiDrawIndexedInfoEXT & setIndexCount( uint32_t indexCount_ ) VULKAN_HPP_NOEXCEPT
53419     {
53420       indexCount = indexCount_;
53421       return *this;
53422     }
53423 
setVertexOffsetVULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53424     VULKAN_HPP_CONSTEXPR_14 MultiDrawIndexedInfoEXT & setVertexOffset( int32_t vertexOffset_ ) VULKAN_HPP_NOEXCEPT
53425     {
53426       vertexOffset = vertexOffset_;
53427       return *this;
53428     }
53429 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
53430 
operator VkMultiDrawIndexedInfoEXT const&VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53431     operator VkMultiDrawIndexedInfoEXT const &() const VULKAN_HPP_NOEXCEPT
53432     {
53433       return *reinterpret_cast<const VkMultiDrawIndexedInfoEXT *>( this );
53434     }
53435 
operator VkMultiDrawIndexedInfoEXT&VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53436     operator VkMultiDrawIndexedInfoEXT &() VULKAN_HPP_NOEXCEPT
53437     {
53438       return *reinterpret_cast<VkMultiDrawIndexedInfoEXT *>( this );
53439     }
53440 
53441 #if defined( VULKAN_HPP_USE_REFLECT )
53442 #  if 14 <= VULKAN_HPP_CPP_VERSION
53443     auto
53444 #  else
53445     std::tuple<uint32_t const &, uint32_t const &, int32_t const &>
53446 #  endif
reflectVULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53447       reflect() const VULKAN_HPP_NOEXCEPT
53448     {
53449       return std::tie( firstIndex, indexCount, vertexOffset );
53450     }
53451 #endif
53452 
53453 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53454     auto operator<=>( MultiDrawIndexedInfoEXT const & ) const = default;
53455 #else
operator ==VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53456     bool operator==( MultiDrawIndexedInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53457     {
53458 #  if defined( VULKAN_HPP_USE_REFLECT )
53459       return this->reflect() == rhs.reflect();
53460 #  else
53461       return ( firstIndex == rhs.firstIndex ) && ( indexCount == rhs.indexCount ) && ( vertexOffset == rhs.vertexOffset );
53462 #  endif
53463     }
53464 
operator !=VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT53465     bool operator!=( MultiDrawIndexedInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53466     {
53467       return !operator==( rhs );
53468     }
53469 #endif
53470 
53471   public:
53472     uint32_t firstIndex   = {};
53473     uint32_t indexCount   = {};
53474     int32_t  vertexOffset = {};
53475   };
53476 
53477   struct MultiDrawInfoEXT
53478   {
53479     using NativeType = VkMultiDrawInfoEXT;
53480 
53481 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MultiDrawInfoEXTVULKAN_HPP_NAMESPACE::MultiDrawInfoEXT53482     VULKAN_HPP_CONSTEXPR MultiDrawInfoEXT( uint32_t firstVertex_ = {}, uint32_t vertexCount_ = {} ) VULKAN_HPP_NOEXCEPT
53483       : firstVertex{ firstVertex_ }
53484       , vertexCount{ vertexCount_ }
53485     {
53486     }
53487 
53488     VULKAN_HPP_CONSTEXPR MultiDrawInfoEXT( MultiDrawInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53489 
MultiDrawInfoEXTVULKAN_HPP_NAMESPACE::MultiDrawInfoEXT53490     MultiDrawInfoEXT( VkMultiDrawInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : MultiDrawInfoEXT( *reinterpret_cast<MultiDrawInfoEXT const *>( &rhs ) ) {}
53491 
53492     MultiDrawInfoEXT & operator=( MultiDrawInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53493 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53494 
operator =VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT53495     MultiDrawInfoEXT & operator=( VkMultiDrawInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53496     {
53497       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT const *>( &rhs );
53498       return *this;
53499     }
53500 
53501 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFirstVertexVULKAN_HPP_NAMESPACE::MultiDrawInfoEXT53502     VULKAN_HPP_CONSTEXPR_14 MultiDrawInfoEXT & setFirstVertex( uint32_t firstVertex_ ) VULKAN_HPP_NOEXCEPT
53503     {
53504       firstVertex = firstVertex_;
53505       return *this;
53506     }
53507 
setVertexCountVULKAN_HPP_NAMESPACE::MultiDrawInfoEXT53508     VULKAN_HPP_CONSTEXPR_14 MultiDrawInfoEXT & setVertexCount( uint32_t vertexCount_ ) VULKAN_HPP_NOEXCEPT
53509     {
53510       vertexCount = vertexCount_;
53511       return *this;
53512     }
53513 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
53514 
operator VkMultiDrawInfoEXT const&VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT53515     operator VkMultiDrawInfoEXT const &() const VULKAN_HPP_NOEXCEPT
53516     {
53517       return *reinterpret_cast<const VkMultiDrawInfoEXT *>( this );
53518     }
53519 
operator VkMultiDrawInfoEXT&VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT53520     operator VkMultiDrawInfoEXT &() VULKAN_HPP_NOEXCEPT
53521     {
53522       return *reinterpret_cast<VkMultiDrawInfoEXT *>( this );
53523     }
53524 
53525 #if defined( VULKAN_HPP_USE_REFLECT )
53526 #  if 14 <= VULKAN_HPP_CPP_VERSION
53527     auto
53528 #  else
53529     std::tuple<uint32_t const &, uint32_t const &>
53530 #  endif
reflectVULKAN_HPP_NAMESPACE::MultiDrawInfoEXT53531       reflect() const VULKAN_HPP_NOEXCEPT
53532     {
53533       return std::tie( firstVertex, vertexCount );
53534     }
53535 #endif
53536 
53537 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53538     auto operator<=>( MultiDrawInfoEXT const & ) const = default;
53539 #else
operator ==VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT53540     bool operator==( MultiDrawInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53541     {
53542 #  if defined( VULKAN_HPP_USE_REFLECT )
53543       return this->reflect() == rhs.reflect();
53544 #  else
53545       return ( firstVertex == rhs.firstVertex ) && ( vertexCount == rhs.vertexCount );
53546 #  endif
53547     }
53548 
operator !=VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT53549     bool operator!=( MultiDrawInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53550     {
53551       return !operator==( rhs );
53552     }
53553 #endif
53554 
53555   public:
53556     uint32_t firstVertex = {};
53557     uint32_t vertexCount = {};
53558   };
53559 
53560   struct MultisamplePropertiesEXT
53561   {
53562     using NativeType = VkMultisamplePropertiesEXT;
53563 
53564     static const bool                                  allowDuplicate = false;
53565     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMultisamplePropertiesEXT;
53566 
53567 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MultisamplePropertiesEXTVULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT53568     VULKAN_HPP_CONSTEXPR MultisamplePropertiesEXT( VULKAN_HPP_NAMESPACE::Extent2D maxSampleLocationGridSize_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
53569       : pNext{ pNext_ }
53570       , maxSampleLocationGridSize{ maxSampleLocationGridSize_ }
53571     {
53572     }
53573 
53574     VULKAN_HPP_CONSTEXPR MultisamplePropertiesEXT( MultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53575 
MultisamplePropertiesEXTVULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT53576     MultisamplePropertiesEXT( VkMultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53577       : MultisamplePropertiesEXT( *reinterpret_cast<MultisamplePropertiesEXT const *>( &rhs ) )
53578     {
53579     }
53580 
53581     MultisamplePropertiesEXT & operator=( MultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53582 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53583 
operator =VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT53584     MultisamplePropertiesEXT & operator=( VkMultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53585     {
53586       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT const *>( &rhs );
53587       return *this;
53588     }
53589 
operator VkMultisamplePropertiesEXT const&VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT53590     operator VkMultisamplePropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
53591     {
53592       return *reinterpret_cast<const VkMultisamplePropertiesEXT *>( this );
53593     }
53594 
operator VkMultisamplePropertiesEXT&VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT53595     operator VkMultisamplePropertiesEXT &() VULKAN_HPP_NOEXCEPT
53596     {
53597       return *reinterpret_cast<VkMultisamplePropertiesEXT *>( this );
53598     }
53599 
53600 #if defined( VULKAN_HPP_USE_REFLECT )
53601 #  if 14 <= VULKAN_HPP_CPP_VERSION
53602     auto
53603 #  else
53604     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Extent2D const &>
53605 #  endif
reflectVULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT53606       reflect() const VULKAN_HPP_NOEXCEPT
53607     {
53608       return std::tie( sType, pNext, maxSampleLocationGridSize );
53609     }
53610 #endif
53611 
53612 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53613     auto operator<=>( MultisamplePropertiesEXT const & ) const = default;
53614 #else
operator ==VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT53615     bool operator==( MultisamplePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53616     {
53617 #  if defined( VULKAN_HPP_USE_REFLECT )
53618       return this->reflect() == rhs.reflect();
53619 #  else
53620       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize );
53621 #  endif
53622     }
53623 
operator !=VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT53624     bool operator!=( MultisamplePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53625     {
53626       return !operator==( rhs );
53627     }
53628 #endif
53629 
53630   public:
53631     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::eMultisamplePropertiesEXT;
53632     void *                              pNext                     = {};
53633     VULKAN_HPP_NAMESPACE::Extent2D      maxSampleLocationGridSize = {};
53634   };
53635 
53636   template <>
53637   struct CppType<StructureType, StructureType::eMultisamplePropertiesEXT>
53638   {
53639     using Type = MultisamplePropertiesEXT;
53640   };
53641 
53642   struct MultisampledRenderToSingleSampledInfoEXT
53643   {
53644     using NativeType = VkMultisampledRenderToSingleSampledInfoEXT;
53645 
53646     static const bool                                  allowDuplicate = false;
53647     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMultisampledRenderToSingleSampledInfoEXT;
53648 
53649 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
53650     VULKAN_HPP_CONSTEXPR
MultisampledRenderToSingleSampledInfoEXTVULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT53651       MultisampledRenderToSingleSampledInfoEXT( VULKAN_HPP_NAMESPACE::Bool32              multisampledRenderToSingleSampledEnable_ = {},
53652                                                 VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
53653                                                 const void *                              pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
53654       : pNext{ pNext_ }
53655       , multisampledRenderToSingleSampledEnable{ multisampledRenderToSingleSampledEnable_ }
53656       , rasterizationSamples{ rasterizationSamples_ }
53657     {
53658     }
53659 
53660     VULKAN_HPP_CONSTEXPR MultisampledRenderToSingleSampledInfoEXT( MultisampledRenderToSingleSampledInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53661 
MultisampledRenderToSingleSampledInfoEXTVULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT53662     MultisampledRenderToSingleSampledInfoEXT( VkMultisampledRenderToSingleSampledInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53663       : MultisampledRenderToSingleSampledInfoEXT( *reinterpret_cast<MultisampledRenderToSingleSampledInfoEXT const *>( &rhs ) )
53664     {
53665     }
53666 
53667     MultisampledRenderToSingleSampledInfoEXT & operator=( MultisampledRenderToSingleSampledInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53668 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53669 
operator =VULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT53670     MultisampledRenderToSingleSampledInfoEXT & operator=( VkMultisampledRenderToSingleSampledInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
53671     {
53672       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT const *>( &rhs );
53673       return *this;
53674     }
53675 
53676 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT53677     VULKAN_HPP_CONSTEXPR_14 MultisampledRenderToSingleSampledInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
53678     {
53679       pNext = pNext_;
53680       return *this;
53681     }
53682 
53683     VULKAN_HPP_CONSTEXPR_14 MultisampledRenderToSingleSampledInfoEXT &
setMultisampledRenderToSingleSampledEnableVULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT53684       setMultisampledRenderToSingleSampledEnable( VULKAN_HPP_NAMESPACE::Bool32 multisampledRenderToSingleSampledEnable_ ) VULKAN_HPP_NOEXCEPT
53685     {
53686       multisampledRenderToSingleSampledEnable = multisampledRenderToSingleSampledEnable_;
53687       return *this;
53688     }
53689 
53690     VULKAN_HPP_CONSTEXPR_14 MultisampledRenderToSingleSampledInfoEXT &
setRasterizationSamplesVULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT53691       setRasterizationSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ ) VULKAN_HPP_NOEXCEPT
53692     {
53693       rasterizationSamples = rasterizationSamples_;
53694       return *this;
53695     }
53696 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
53697 
operator VkMultisampledRenderToSingleSampledInfoEXT const&VULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT53698     operator VkMultisampledRenderToSingleSampledInfoEXT const &() const VULKAN_HPP_NOEXCEPT
53699     {
53700       return *reinterpret_cast<const VkMultisampledRenderToSingleSampledInfoEXT *>( this );
53701     }
53702 
operator VkMultisampledRenderToSingleSampledInfoEXT&VULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT53703     operator VkMultisampledRenderToSingleSampledInfoEXT &() VULKAN_HPP_NOEXCEPT
53704     {
53705       return *reinterpret_cast<VkMultisampledRenderToSingleSampledInfoEXT *>( this );
53706     }
53707 
53708 #if defined( VULKAN_HPP_USE_REFLECT )
53709 #  if 14 <= VULKAN_HPP_CPP_VERSION
53710     auto
53711 #  else
53712     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
53713                const void * const &,
53714                VULKAN_HPP_NAMESPACE::Bool32 const &,
53715                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &>
53716 #  endif
reflectVULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT53717       reflect() const VULKAN_HPP_NOEXCEPT
53718     {
53719       return std::tie( sType, pNext, multisampledRenderToSingleSampledEnable, rasterizationSamples );
53720     }
53721 #endif
53722 
53723 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53724     auto operator<=>( MultisampledRenderToSingleSampledInfoEXT const & ) const = default;
53725 #else
operator ==VULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT53726     bool operator==( MultisampledRenderToSingleSampledInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53727     {
53728 #  if defined( VULKAN_HPP_USE_REFLECT )
53729       return this->reflect() == rhs.reflect();
53730 #  else
53731       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( multisampledRenderToSingleSampledEnable == rhs.multisampledRenderToSingleSampledEnable ) &&
53732              ( rasterizationSamples == rhs.rasterizationSamples );
53733 #  endif
53734     }
53735 
operator !=VULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT53736     bool operator!=( MultisampledRenderToSingleSampledInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
53737     {
53738       return !operator==( rhs );
53739     }
53740 #endif
53741 
53742   public:
53743     VULKAN_HPP_NAMESPACE::StructureType       sType                                   = StructureType::eMultisampledRenderToSingleSampledInfoEXT;
53744     const void *                              pNext                                   = {};
53745     VULKAN_HPP_NAMESPACE::Bool32              multisampledRenderToSingleSampledEnable = {};
53746     VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples                    = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
53747   };
53748 
53749   template <>
53750   struct CppType<StructureType, StructureType::eMultisampledRenderToSingleSampledInfoEXT>
53751   {
53752     using Type = MultisampledRenderToSingleSampledInfoEXT;
53753   };
53754 
53755   struct MultiviewPerViewAttributesInfoNVX
53756   {
53757     using NativeType = VkMultiviewPerViewAttributesInfoNVX;
53758 
53759     static const bool                                  allowDuplicate = false;
53760     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMultiviewPerViewAttributesInfoNVX;
53761 
53762 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MultiviewPerViewAttributesInfoNVXVULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX53763     VULKAN_HPP_CONSTEXPR MultiviewPerViewAttributesInfoNVX( VULKAN_HPP_NAMESPACE::Bool32 perViewAttributes_              = {},
53764                                                             VULKAN_HPP_NAMESPACE::Bool32 perViewAttributesPositionXOnly_ = {},
53765                                                             const void *                 pNext_                          = nullptr ) VULKAN_HPP_NOEXCEPT
53766       : pNext{ pNext_ }
53767       , perViewAttributes{ perViewAttributes_ }
53768       , perViewAttributesPositionXOnly{ perViewAttributesPositionXOnly_ }
53769     {
53770     }
53771 
53772     VULKAN_HPP_CONSTEXPR MultiviewPerViewAttributesInfoNVX( MultiviewPerViewAttributesInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53773 
MultiviewPerViewAttributesInfoNVXVULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX53774     MultiviewPerViewAttributesInfoNVX( VkMultiviewPerViewAttributesInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
53775       : MultiviewPerViewAttributesInfoNVX( *reinterpret_cast<MultiviewPerViewAttributesInfoNVX const *>( &rhs ) )
53776     {
53777     }
53778 
53779     MultiviewPerViewAttributesInfoNVX & operator=( MultiviewPerViewAttributesInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53780 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53781 
operator =VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX53782     MultiviewPerViewAttributesInfoNVX & operator=( VkMultiviewPerViewAttributesInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
53783     {
53784       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX const *>( &rhs );
53785       return *this;
53786     }
53787 
53788 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX53789     VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewAttributesInfoNVX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
53790     {
53791       pNext = pNext_;
53792       return *this;
53793     }
53794 
setPerViewAttributesVULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX53795     VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewAttributesInfoNVX & setPerViewAttributes( VULKAN_HPP_NAMESPACE::Bool32 perViewAttributes_ ) VULKAN_HPP_NOEXCEPT
53796     {
53797       perViewAttributes = perViewAttributes_;
53798       return *this;
53799     }
53800 
53801     VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewAttributesInfoNVX &
setPerViewAttributesPositionXOnlyVULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX53802       setPerViewAttributesPositionXOnly( VULKAN_HPP_NAMESPACE::Bool32 perViewAttributesPositionXOnly_ ) VULKAN_HPP_NOEXCEPT
53803     {
53804       perViewAttributesPositionXOnly = perViewAttributesPositionXOnly_;
53805       return *this;
53806     }
53807 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
53808 
operator VkMultiviewPerViewAttributesInfoNVX const&VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX53809     operator VkMultiviewPerViewAttributesInfoNVX const &() const VULKAN_HPP_NOEXCEPT
53810     {
53811       return *reinterpret_cast<const VkMultiviewPerViewAttributesInfoNVX *>( this );
53812     }
53813 
operator VkMultiviewPerViewAttributesInfoNVX&VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX53814     operator VkMultiviewPerViewAttributesInfoNVX &() VULKAN_HPP_NOEXCEPT
53815     {
53816       return *reinterpret_cast<VkMultiviewPerViewAttributesInfoNVX *>( this );
53817     }
53818 
53819 #if defined( VULKAN_HPP_USE_REFLECT )
53820 #  if 14 <= VULKAN_HPP_CPP_VERSION
53821     auto
53822 #  else
53823     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
53824 #  endif
reflectVULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX53825       reflect() const VULKAN_HPP_NOEXCEPT
53826     {
53827       return std::tie( sType, pNext, perViewAttributes, perViewAttributesPositionXOnly );
53828     }
53829 #endif
53830 
53831 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53832     auto operator<=>( MultiviewPerViewAttributesInfoNVX const & ) const = default;
53833 #else
operator ==VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX53834     bool operator==( MultiviewPerViewAttributesInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
53835     {
53836 #  if defined( VULKAN_HPP_USE_REFLECT )
53837       return this->reflect() == rhs.reflect();
53838 #  else
53839       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( perViewAttributes == rhs.perViewAttributes ) &&
53840              ( perViewAttributesPositionXOnly == rhs.perViewAttributesPositionXOnly );
53841 #  endif
53842     }
53843 
operator !=VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX53844     bool operator!=( MultiviewPerViewAttributesInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
53845     {
53846       return !operator==( rhs );
53847     }
53848 #endif
53849 
53850   public:
53851     VULKAN_HPP_NAMESPACE::StructureType sType                          = StructureType::eMultiviewPerViewAttributesInfoNVX;
53852     const void *                        pNext                          = {};
53853     VULKAN_HPP_NAMESPACE::Bool32        perViewAttributes              = {};
53854     VULKAN_HPP_NAMESPACE::Bool32        perViewAttributesPositionXOnly = {};
53855   };
53856 
53857   template <>
53858   struct CppType<StructureType, StructureType::eMultiviewPerViewAttributesInfoNVX>
53859   {
53860     using Type = MultiviewPerViewAttributesInfoNVX;
53861   };
53862 
53863   struct MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM
53864   {
53865     using NativeType = VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM;
53866 
53867     static const bool                                  allowDuplicate = false;
53868     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM;
53869 
53870 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MultiviewPerViewRenderAreasRenderPassBeginInfoQCOMVULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM53871     VULKAN_HPP_CONSTEXPR MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM( uint32_t                             perViewRenderAreaCount_ = {},
53872                                                                              const VULKAN_HPP_NAMESPACE::Rect2D * pPerViewRenderAreas_    = {},
53873                                                                              const void *                         pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
53874       : pNext{ pNext_ }
53875       , perViewRenderAreaCount{ perViewRenderAreaCount_ }
53876       , pPerViewRenderAreas{ pPerViewRenderAreas_ }
53877     {
53878     }
53879 
53880     VULKAN_HPP_CONSTEXPR
53881       MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM( MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53882 
MultiviewPerViewRenderAreasRenderPassBeginInfoQCOMVULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM53883     MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM( VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
53884       : MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM( *reinterpret_cast<MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const *>( &rhs ) )
53885     {
53886     }
53887 
53888 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
MultiviewPerViewRenderAreasRenderPassBeginInfoQCOMVULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM53889     MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM(
53890       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & perViewRenderAreas_, const void * pNext_ = nullptr )
53891       : pNext( pNext_ ), perViewRenderAreaCount( static_cast<uint32_t>( perViewRenderAreas_.size() ) ), pPerViewRenderAreas( perViewRenderAreas_.data() )
53892     {
53893     }
53894 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
53895 
53896     MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM &
53897       operator=( MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
53898 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
53899 
operator =VULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM53900     MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM & operator=( VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
53901     {
53902       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const *>( &rhs );
53903       return *this;
53904     }
53905 
53906 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM53907     VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
53908     {
53909       pNext = pNext_;
53910       return *this;
53911     }
53912 
53913     VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM &
setPerViewRenderAreaCountVULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM53914       setPerViewRenderAreaCount( uint32_t perViewRenderAreaCount_ ) VULKAN_HPP_NOEXCEPT
53915     {
53916       perViewRenderAreaCount = perViewRenderAreaCount_;
53917       return *this;
53918     }
53919 
53920     VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM &
setPPerViewRenderAreasVULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM53921       setPPerViewRenderAreas( const VULKAN_HPP_NAMESPACE::Rect2D * pPerViewRenderAreas_ ) VULKAN_HPP_NOEXCEPT
53922     {
53923       pPerViewRenderAreas = pPerViewRenderAreas_;
53924       return *this;
53925     }
53926 
53927 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
53928     MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM &
setPerViewRenderAreasVULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM53929       setPerViewRenderAreas( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & perViewRenderAreas_ ) VULKAN_HPP_NOEXCEPT
53930     {
53931       perViewRenderAreaCount = static_cast<uint32_t>( perViewRenderAreas_.size() );
53932       pPerViewRenderAreas    = perViewRenderAreas_.data();
53933       return *this;
53934     }
53935 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
53936 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
53937 
operator VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const&VULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM53938     operator VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
53939     {
53940       return *reinterpret_cast<const VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM *>( this );
53941     }
53942 
operator VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM&VULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM53943     operator VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM &() VULKAN_HPP_NOEXCEPT
53944     {
53945       return *reinterpret_cast<VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM *>( this );
53946     }
53947 
53948 #if defined( VULKAN_HPP_USE_REFLECT )
53949 #  if 14 <= VULKAN_HPP_CPP_VERSION
53950     auto
53951 #  else
53952     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Rect2D * const &>
53953 #  endif
reflectVULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM53954       reflect() const VULKAN_HPP_NOEXCEPT
53955     {
53956       return std::tie( sType, pNext, perViewRenderAreaCount, pPerViewRenderAreas );
53957     }
53958 #endif
53959 
53960 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
53961     auto operator<=>( MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & ) const = default;
53962 #else
operator ==VULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM53963     bool operator==( MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
53964     {
53965 #  if defined( VULKAN_HPP_USE_REFLECT )
53966       return this->reflect() == rhs.reflect();
53967 #  else
53968       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( perViewRenderAreaCount == rhs.perViewRenderAreaCount ) &&
53969              ( pPerViewRenderAreas == rhs.pPerViewRenderAreas );
53970 #  endif
53971     }
53972 
operator !=VULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM53973     bool operator!=( MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
53974     {
53975       return !operator==( rhs );
53976     }
53977 #endif
53978 
53979   public:
53980     VULKAN_HPP_NAMESPACE::StructureType  sType                  = StructureType::eMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM;
53981     const void *                         pNext                  = {};
53982     uint32_t                             perViewRenderAreaCount = {};
53983     const VULKAN_HPP_NAMESPACE::Rect2D * pPerViewRenderAreas    = {};
53984   };
53985 
53986   template <>
53987   struct CppType<StructureType, StructureType::eMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM>
53988   {
53989     using Type = MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM;
53990   };
53991 
53992   struct MutableDescriptorTypeListEXT
53993   {
53994     using NativeType = VkMutableDescriptorTypeListEXT;
53995 
53996 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MutableDescriptorTypeListEXTVULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT53997     VULKAN_HPP_CONSTEXPR MutableDescriptorTypeListEXT( uint32_t                                     descriptorTypeCount_ = {},
53998                                                        const VULKAN_HPP_NAMESPACE::DescriptorType * pDescriptorTypes_    = {} ) VULKAN_HPP_NOEXCEPT
53999       : descriptorTypeCount{ descriptorTypeCount_ }
54000       , pDescriptorTypes{ pDescriptorTypes_ }
54001     {
54002     }
54003 
54004     VULKAN_HPP_CONSTEXPR MutableDescriptorTypeListEXT( MutableDescriptorTypeListEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54005 
MutableDescriptorTypeListEXTVULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54006     MutableDescriptorTypeListEXT( VkMutableDescriptorTypeListEXT const & rhs ) VULKAN_HPP_NOEXCEPT
54007       : MutableDescriptorTypeListEXT( *reinterpret_cast<MutableDescriptorTypeListEXT const *>( &rhs ) )
54008     {
54009     }
54010 
54011 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
MutableDescriptorTypeListEXTVULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54012     MutableDescriptorTypeListEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorType> const & descriptorTypes_ )
54013       : descriptorTypeCount( static_cast<uint32_t>( descriptorTypes_.size() ) ), pDescriptorTypes( descriptorTypes_.data() )
54014     {
54015     }
54016 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
54017 
54018     MutableDescriptorTypeListEXT & operator=( MutableDescriptorTypeListEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54019 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54020 
operator =VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54021     MutableDescriptorTypeListEXT & operator=( VkMutableDescriptorTypeListEXT const & rhs ) VULKAN_HPP_NOEXCEPT
54022     {
54023       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT const *>( &rhs );
54024       return *this;
54025     }
54026 
54027 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setDescriptorTypeCountVULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54028     VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeListEXT & setDescriptorTypeCount( uint32_t descriptorTypeCount_ ) VULKAN_HPP_NOEXCEPT
54029     {
54030       descriptorTypeCount = descriptorTypeCount_;
54031       return *this;
54032     }
54033 
54034     VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeListEXT &
setPDescriptorTypesVULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54035       setPDescriptorTypes( const VULKAN_HPP_NAMESPACE::DescriptorType * pDescriptorTypes_ ) VULKAN_HPP_NOEXCEPT
54036     {
54037       pDescriptorTypes = pDescriptorTypes_;
54038       return *this;
54039     }
54040 
54041 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDescriptorTypesVULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54042     MutableDescriptorTypeListEXT & setDescriptorTypes(
54043       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorType> const & descriptorTypes_ ) VULKAN_HPP_NOEXCEPT
54044     {
54045       descriptorTypeCount = static_cast<uint32_t>( descriptorTypes_.size() );
54046       pDescriptorTypes    = descriptorTypes_.data();
54047       return *this;
54048     }
54049 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
54050 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
54051 
operator VkMutableDescriptorTypeListEXT const&VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54052     operator VkMutableDescriptorTypeListEXT const &() const VULKAN_HPP_NOEXCEPT
54053     {
54054       return *reinterpret_cast<const VkMutableDescriptorTypeListEXT *>( this );
54055     }
54056 
operator VkMutableDescriptorTypeListEXT&VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54057     operator VkMutableDescriptorTypeListEXT &() VULKAN_HPP_NOEXCEPT
54058     {
54059       return *reinterpret_cast<VkMutableDescriptorTypeListEXT *>( this );
54060     }
54061 
54062 #if defined( VULKAN_HPP_USE_REFLECT )
54063 #  if 14 <= VULKAN_HPP_CPP_VERSION
54064     auto
54065 #  else
54066     std::tuple<uint32_t const &, const VULKAN_HPP_NAMESPACE::DescriptorType * const &>
54067 #  endif
reflectVULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54068       reflect() const VULKAN_HPP_NOEXCEPT
54069     {
54070       return std::tie( descriptorTypeCount, pDescriptorTypes );
54071     }
54072 #endif
54073 
54074 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54075     auto operator<=>( MutableDescriptorTypeListEXT const & ) const = default;
54076 #else
operator ==VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54077     bool operator==( MutableDescriptorTypeListEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54078     {
54079 #  if defined( VULKAN_HPP_USE_REFLECT )
54080       return this->reflect() == rhs.reflect();
54081 #  else
54082       return ( descriptorTypeCount == rhs.descriptorTypeCount ) && ( pDescriptorTypes == rhs.pDescriptorTypes );
54083 #  endif
54084     }
54085 
operator !=VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT54086     bool operator!=( MutableDescriptorTypeListEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54087     {
54088       return !operator==( rhs );
54089     }
54090 #endif
54091 
54092   public:
54093     uint32_t                                     descriptorTypeCount = {};
54094     const VULKAN_HPP_NAMESPACE::DescriptorType * pDescriptorTypes    = {};
54095   };
54096 
54097   using MutableDescriptorTypeListVALVE = MutableDescriptorTypeListEXT;
54098 
54099   struct MutableDescriptorTypeCreateInfoEXT
54100   {
54101     using NativeType = VkMutableDescriptorTypeCreateInfoEXT;
54102 
54103     static const bool                                  allowDuplicate = false;
54104     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eMutableDescriptorTypeCreateInfoEXT;
54105 
54106 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MutableDescriptorTypeCreateInfoEXTVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54107     VULKAN_HPP_CONSTEXPR MutableDescriptorTypeCreateInfoEXT( uint32_t                                                   mutableDescriptorTypeListCount_ = {},
54108                                                              const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT * pMutableDescriptorTypeLists_    = {},
54109                                                              const void *                                               pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
54110       : pNext{ pNext_ }
54111       , mutableDescriptorTypeListCount{ mutableDescriptorTypeListCount_ }
54112       , pMutableDescriptorTypeLists{ pMutableDescriptorTypeLists_ }
54113     {
54114     }
54115 
54116     VULKAN_HPP_CONSTEXPR MutableDescriptorTypeCreateInfoEXT( MutableDescriptorTypeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54117 
MutableDescriptorTypeCreateInfoEXTVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54118     MutableDescriptorTypeCreateInfoEXT( VkMutableDescriptorTypeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
54119       : MutableDescriptorTypeCreateInfoEXT( *reinterpret_cast<MutableDescriptorTypeCreateInfoEXT const *>( &rhs ) )
54120     {
54121     }
54122 
54123 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
MutableDescriptorTypeCreateInfoEXTVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54124     MutableDescriptorTypeCreateInfoEXT(
54125       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT> const & mutableDescriptorTypeLists_,
54126       const void *                                                                                                    pNext_ = nullptr )
54127       : pNext( pNext_ )
54128       , mutableDescriptorTypeListCount( static_cast<uint32_t>( mutableDescriptorTypeLists_.size() ) )
54129       , pMutableDescriptorTypeLists( mutableDescriptorTypeLists_.data() )
54130     {
54131     }
54132 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
54133 
54134     MutableDescriptorTypeCreateInfoEXT & operator=( MutableDescriptorTypeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54135 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54136 
operator =VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54137     MutableDescriptorTypeCreateInfoEXT & operator=( VkMutableDescriptorTypeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
54138     {
54139       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT const *>( &rhs );
54140       return *this;
54141     }
54142 
54143 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54144     VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
54145     {
54146       pNext = pNext_;
54147       return *this;
54148     }
54149 
54150     VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeCreateInfoEXT &
setMutableDescriptorTypeListCountVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54151       setMutableDescriptorTypeListCount( uint32_t mutableDescriptorTypeListCount_ ) VULKAN_HPP_NOEXCEPT
54152     {
54153       mutableDescriptorTypeListCount = mutableDescriptorTypeListCount_;
54154       return *this;
54155     }
54156 
54157     VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeCreateInfoEXT &
setPMutableDescriptorTypeListsVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54158       setPMutableDescriptorTypeLists( const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT * pMutableDescriptorTypeLists_ ) VULKAN_HPP_NOEXCEPT
54159     {
54160       pMutableDescriptorTypeLists = pMutableDescriptorTypeLists_;
54161       return *this;
54162     }
54163 
54164 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setMutableDescriptorTypeListsVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54165     MutableDescriptorTypeCreateInfoEXT & setMutableDescriptorTypeLists(
54166       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT> const & mutableDescriptorTypeLists_ )
54167       VULKAN_HPP_NOEXCEPT
54168     {
54169       mutableDescriptorTypeListCount = static_cast<uint32_t>( mutableDescriptorTypeLists_.size() );
54170       pMutableDescriptorTypeLists    = mutableDescriptorTypeLists_.data();
54171       return *this;
54172     }
54173 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
54174 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
54175 
operator VkMutableDescriptorTypeCreateInfoEXT const&VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54176     operator VkMutableDescriptorTypeCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
54177     {
54178       return *reinterpret_cast<const VkMutableDescriptorTypeCreateInfoEXT *>( this );
54179     }
54180 
operator VkMutableDescriptorTypeCreateInfoEXT&VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54181     operator VkMutableDescriptorTypeCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
54182     {
54183       return *reinterpret_cast<VkMutableDescriptorTypeCreateInfoEXT *>( this );
54184     }
54185 
54186 #if defined( VULKAN_HPP_USE_REFLECT )
54187 #  if 14 <= VULKAN_HPP_CPP_VERSION
54188     auto
54189 #  else
54190     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
54191                const void * const &,
54192                uint32_t const &,
54193                const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT * const &>
54194 #  endif
reflectVULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54195       reflect() const VULKAN_HPP_NOEXCEPT
54196     {
54197       return std::tie( sType, pNext, mutableDescriptorTypeListCount, pMutableDescriptorTypeLists );
54198     }
54199 #endif
54200 
54201 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54202     auto operator<=>( MutableDescriptorTypeCreateInfoEXT const & ) const = default;
54203 #else
operator ==VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54204     bool operator==( MutableDescriptorTypeCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54205     {
54206 #  if defined( VULKAN_HPP_USE_REFLECT )
54207       return this->reflect() == rhs.reflect();
54208 #  else
54209       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mutableDescriptorTypeListCount == rhs.mutableDescriptorTypeListCount ) &&
54210              ( pMutableDescriptorTypeLists == rhs.pMutableDescriptorTypeLists );
54211 #  endif
54212     }
54213 
operator !=VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT54214     bool operator!=( MutableDescriptorTypeCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54215     {
54216       return !operator==( rhs );
54217     }
54218 #endif
54219 
54220   public:
54221     VULKAN_HPP_NAMESPACE::StructureType                        sType                          = StructureType::eMutableDescriptorTypeCreateInfoEXT;
54222     const void *                                               pNext                          = {};
54223     uint32_t                                                   mutableDescriptorTypeListCount = {};
54224     const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT * pMutableDescriptorTypeLists    = {};
54225   };
54226 
54227   template <>
54228   struct CppType<StructureType, StructureType::eMutableDescriptorTypeCreateInfoEXT>
54229   {
54230     using Type = MutableDescriptorTypeCreateInfoEXT;
54231   };
54232 
54233   using MutableDescriptorTypeCreateInfoVALVE = MutableDescriptorTypeCreateInfoEXT;
54234 
54235   struct OpaqueCaptureDescriptorDataCreateInfoEXT
54236   {
54237     using NativeType = VkOpaqueCaptureDescriptorDataCreateInfoEXT;
54238 
54239     static const bool                                  allowDuplicate = false;
54240     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eOpaqueCaptureDescriptorDataCreateInfoEXT;
54241 
54242 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
OpaqueCaptureDescriptorDataCreateInfoEXTVULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT54243     VULKAN_HPP_CONSTEXPR OpaqueCaptureDescriptorDataCreateInfoEXT( const void * opaqueCaptureDescriptorData_ = {},
54244                                                                    const void * pNext_                       = nullptr ) VULKAN_HPP_NOEXCEPT
54245       : pNext{ pNext_ }
54246       , opaqueCaptureDescriptorData{ opaqueCaptureDescriptorData_ }
54247     {
54248     }
54249 
54250     VULKAN_HPP_CONSTEXPR OpaqueCaptureDescriptorDataCreateInfoEXT( OpaqueCaptureDescriptorDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54251 
OpaqueCaptureDescriptorDataCreateInfoEXTVULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT54252     OpaqueCaptureDescriptorDataCreateInfoEXT( VkOpaqueCaptureDescriptorDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
54253       : OpaqueCaptureDescriptorDataCreateInfoEXT( *reinterpret_cast<OpaqueCaptureDescriptorDataCreateInfoEXT const *>( &rhs ) )
54254     {
54255     }
54256 
54257     OpaqueCaptureDescriptorDataCreateInfoEXT & operator=( OpaqueCaptureDescriptorDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54258 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54259 
operator =VULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT54260     OpaqueCaptureDescriptorDataCreateInfoEXT & operator=( VkOpaqueCaptureDescriptorDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
54261     {
54262       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT const *>( &rhs );
54263       return *this;
54264     }
54265 
54266 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT54267     VULKAN_HPP_CONSTEXPR_14 OpaqueCaptureDescriptorDataCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
54268     {
54269       pNext = pNext_;
54270       return *this;
54271     }
54272 
54273     VULKAN_HPP_CONSTEXPR_14 OpaqueCaptureDescriptorDataCreateInfoEXT &
setOpaqueCaptureDescriptorDataVULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT54274       setOpaqueCaptureDescriptorData( const void * opaqueCaptureDescriptorData_ ) VULKAN_HPP_NOEXCEPT
54275     {
54276       opaqueCaptureDescriptorData = opaqueCaptureDescriptorData_;
54277       return *this;
54278     }
54279 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
54280 
operator VkOpaqueCaptureDescriptorDataCreateInfoEXT const&VULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT54281     operator VkOpaqueCaptureDescriptorDataCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
54282     {
54283       return *reinterpret_cast<const VkOpaqueCaptureDescriptorDataCreateInfoEXT *>( this );
54284     }
54285 
operator VkOpaqueCaptureDescriptorDataCreateInfoEXT&VULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT54286     operator VkOpaqueCaptureDescriptorDataCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
54287     {
54288       return *reinterpret_cast<VkOpaqueCaptureDescriptorDataCreateInfoEXT *>( this );
54289     }
54290 
54291 #if defined( VULKAN_HPP_USE_REFLECT )
54292 #  if 14 <= VULKAN_HPP_CPP_VERSION
54293     auto
54294 #  else
54295     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const void * const &>
54296 #  endif
reflectVULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT54297       reflect() const VULKAN_HPP_NOEXCEPT
54298     {
54299       return std::tie( sType, pNext, opaqueCaptureDescriptorData );
54300     }
54301 #endif
54302 
54303 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54304     auto operator<=>( OpaqueCaptureDescriptorDataCreateInfoEXT const & ) const = default;
54305 #else
operator ==VULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT54306     bool operator==( OpaqueCaptureDescriptorDataCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54307     {
54308 #  if defined( VULKAN_HPP_USE_REFLECT )
54309       return this->reflect() == rhs.reflect();
54310 #  else
54311       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( opaqueCaptureDescriptorData == rhs.opaqueCaptureDescriptorData );
54312 #  endif
54313     }
54314 
operator !=VULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT54315     bool operator!=( OpaqueCaptureDescriptorDataCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
54316     {
54317       return !operator==( rhs );
54318     }
54319 #endif
54320 
54321   public:
54322     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::eOpaqueCaptureDescriptorDataCreateInfoEXT;
54323     const void *                        pNext                       = {};
54324     const void *                        opaqueCaptureDescriptorData = {};
54325   };
54326 
54327   template <>
54328   struct CppType<StructureType, StructureType::eOpaqueCaptureDescriptorDataCreateInfoEXT>
54329   {
54330     using Type = OpaqueCaptureDescriptorDataCreateInfoEXT;
54331   };
54332 
54333   struct OpticalFlowExecuteInfoNV
54334   {
54335     using NativeType = VkOpticalFlowExecuteInfoNV;
54336 
54337     static const bool                                  allowDuplicate = false;
54338     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eOpticalFlowExecuteInfoNV;
54339 
54340 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
OpticalFlowExecuteInfoNVVULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54341     VULKAN_HPP_CONSTEXPR OpticalFlowExecuteInfoNV( VULKAN_HPP_NAMESPACE::OpticalFlowExecuteFlagsNV flags_       = {},
54342                                                    uint32_t                                        regionCount_ = {},
54343                                                    const VULKAN_HPP_NAMESPACE::Rect2D *            pRegions_    = {},
54344                                                    void *                                          pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
54345       : pNext{ pNext_ }
54346       , flags{ flags_ }
54347       , regionCount{ regionCount_ }
54348       , pRegions{ pRegions_ }
54349     {
54350     }
54351 
54352     VULKAN_HPP_CONSTEXPR OpticalFlowExecuteInfoNV( OpticalFlowExecuteInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54353 
OpticalFlowExecuteInfoNVVULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54354     OpticalFlowExecuteInfoNV( VkOpticalFlowExecuteInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
54355       : OpticalFlowExecuteInfoNV( *reinterpret_cast<OpticalFlowExecuteInfoNV const *>( &rhs ) )
54356     {
54357     }
54358 
54359 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
OpticalFlowExecuteInfoNVVULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54360     OpticalFlowExecuteInfoNV( VULKAN_HPP_NAMESPACE::OpticalFlowExecuteFlagsNV                                           flags_,
54361                               VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & regions_,
54362                               void *                                                                                    pNext_ = nullptr )
54363       : pNext( pNext_ ), flags( flags_ ), regionCount( static_cast<uint32_t>( regions_.size() ) ), pRegions( regions_.data() )
54364     {
54365     }
54366 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
54367 
54368     OpticalFlowExecuteInfoNV & operator=( OpticalFlowExecuteInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54369 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54370 
operator =VULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54371     OpticalFlowExecuteInfoNV & operator=( VkOpticalFlowExecuteInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
54372     {
54373       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV const *>( &rhs );
54374       return *this;
54375     }
54376 
54377 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54378     VULKAN_HPP_CONSTEXPR_14 OpticalFlowExecuteInfoNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
54379     {
54380       pNext = pNext_;
54381       return *this;
54382     }
54383 
setFlagsVULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54384     VULKAN_HPP_CONSTEXPR_14 OpticalFlowExecuteInfoNV & setFlags( VULKAN_HPP_NAMESPACE::OpticalFlowExecuteFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
54385     {
54386       flags = flags_;
54387       return *this;
54388     }
54389 
setRegionCountVULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54390     VULKAN_HPP_CONSTEXPR_14 OpticalFlowExecuteInfoNV & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
54391     {
54392       regionCount = regionCount_;
54393       return *this;
54394     }
54395 
setPRegionsVULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54396     VULKAN_HPP_CONSTEXPR_14 OpticalFlowExecuteInfoNV & setPRegions( const VULKAN_HPP_NAMESPACE::Rect2D * pRegions_ ) VULKAN_HPP_NOEXCEPT
54397     {
54398       pRegions = pRegions_;
54399       return *this;
54400     }
54401 
54402 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
54403     OpticalFlowExecuteInfoNV &
setRegionsVULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54404       setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & regions_ ) VULKAN_HPP_NOEXCEPT
54405     {
54406       regionCount = static_cast<uint32_t>( regions_.size() );
54407       pRegions    = regions_.data();
54408       return *this;
54409     }
54410 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
54411 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
54412 
operator VkOpticalFlowExecuteInfoNV const&VULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54413     operator VkOpticalFlowExecuteInfoNV const &() const VULKAN_HPP_NOEXCEPT
54414     {
54415       return *reinterpret_cast<const VkOpticalFlowExecuteInfoNV *>( this );
54416     }
54417 
operator VkOpticalFlowExecuteInfoNV&VULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54418     operator VkOpticalFlowExecuteInfoNV &() VULKAN_HPP_NOEXCEPT
54419     {
54420       return *reinterpret_cast<VkOpticalFlowExecuteInfoNV *>( this );
54421     }
54422 
54423 #if defined( VULKAN_HPP_USE_REFLECT )
54424 #  if 14 <= VULKAN_HPP_CPP_VERSION
54425     auto
54426 #  else
54427     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
54428                void * const &,
54429                VULKAN_HPP_NAMESPACE::OpticalFlowExecuteFlagsNV const &,
54430                uint32_t const &,
54431                const VULKAN_HPP_NAMESPACE::Rect2D * const &>
54432 #  endif
reflectVULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54433       reflect() const VULKAN_HPP_NOEXCEPT
54434     {
54435       return std::tie( sType, pNext, flags, regionCount, pRegions );
54436     }
54437 #endif
54438 
54439 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54440     auto operator<=>( OpticalFlowExecuteInfoNV const & ) const = default;
54441 #else
operator ==VULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54442     bool operator==( OpticalFlowExecuteInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
54443     {
54444 #  if defined( VULKAN_HPP_USE_REFLECT )
54445       return this->reflect() == rhs.reflect();
54446 #  else
54447       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions );
54448 #  endif
54449     }
54450 
operator !=VULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV54451     bool operator!=( OpticalFlowExecuteInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
54452     {
54453       return !operator==( rhs );
54454     }
54455 #endif
54456 
54457   public:
54458     VULKAN_HPP_NAMESPACE::StructureType             sType       = StructureType::eOpticalFlowExecuteInfoNV;
54459     void *                                          pNext       = {};
54460     VULKAN_HPP_NAMESPACE::OpticalFlowExecuteFlagsNV flags       = {};
54461     uint32_t                                        regionCount = {};
54462     const VULKAN_HPP_NAMESPACE::Rect2D *            pRegions    = {};
54463   };
54464 
54465   template <>
54466   struct CppType<StructureType, StructureType::eOpticalFlowExecuteInfoNV>
54467   {
54468     using Type = OpticalFlowExecuteInfoNV;
54469   };
54470 
54471   struct OpticalFlowImageFormatInfoNV
54472   {
54473     using NativeType = VkOpticalFlowImageFormatInfoNV;
54474 
54475     static const bool                                  allowDuplicate = false;
54476     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eOpticalFlowImageFormatInfoNV;
54477 
54478 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
OpticalFlowImageFormatInfoNVVULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV54479     VULKAN_HPP_CONSTEXPR OpticalFlowImageFormatInfoNV( VULKAN_HPP_NAMESPACE::OpticalFlowUsageFlagsNV usage_ = {},
54480                                                        const void *                                  pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
54481       : pNext{ pNext_ }
54482       , usage{ usage_ }
54483     {
54484     }
54485 
54486     VULKAN_HPP_CONSTEXPR OpticalFlowImageFormatInfoNV( OpticalFlowImageFormatInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54487 
OpticalFlowImageFormatInfoNVVULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV54488     OpticalFlowImageFormatInfoNV( VkOpticalFlowImageFormatInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
54489       : OpticalFlowImageFormatInfoNV( *reinterpret_cast<OpticalFlowImageFormatInfoNV const *>( &rhs ) )
54490     {
54491     }
54492 
54493     OpticalFlowImageFormatInfoNV & operator=( OpticalFlowImageFormatInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54494 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54495 
operator =VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV54496     OpticalFlowImageFormatInfoNV & operator=( VkOpticalFlowImageFormatInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
54497     {
54498       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV const *>( &rhs );
54499       return *this;
54500     }
54501 
54502 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV54503     VULKAN_HPP_CONSTEXPR_14 OpticalFlowImageFormatInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
54504     {
54505       pNext = pNext_;
54506       return *this;
54507     }
54508 
setUsageVULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV54509     VULKAN_HPP_CONSTEXPR_14 OpticalFlowImageFormatInfoNV & setUsage( VULKAN_HPP_NAMESPACE::OpticalFlowUsageFlagsNV usage_ ) VULKAN_HPP_NOEXCEPT
54510     {
54511       usage = usage_;
54512       return *this;
54513     }
54514 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
54515 
operator VkOpticalFlowImageFormatInfoNV const&VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV54516     operator VkOpticalFlowImageFormatInfoNV const &() const VULKAN_HPP_NOEXCEPT
54517     {
54518       return *reinterpret_cast<const VkOpticalFlowImageFormatInfoNV *>( this );
54519     }
54520 
operator VkOpticalFlowImageFormatInfoNV&VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV54521     operator VkOpticalFlowImageFormatInfoNV &() VULKAN_HPP_NOEXCEPT
54522     {
54523       return *reinterpret_cast<VkOpticalFlowImageFormatInfoNV *>( this );
54524     }
54525 
54526 #if defined( VULKAN_HPP_USE_REFLECT )
54527 #  if 14 <= VULKAN_HPP_CPP_VERSION
54528     auto
54529 #  else
54530     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::OpticalFlowUsageFlagsNV const &>
54531 #  endif
reflectVULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV54532       reflect() const VULKAN_HPP_NOEXCEPT
54533     {
54534       return std::tie( sType, pNext, usage );
54535     }
54536 #endif
54537 
54538 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54539     auto operator<=>( OpticalFlowImageFormatInfoNV const & ) const = default;
54540 #else
operator ==VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV54541     bool operator==( OpticalFlowImageFormatInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
54542     {
54543 #  if defined( VULKAN_HPP_USE_REFLECT )
54544       return this->reflect() == rhs.reflect();
54545 #  else
54546       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( usage == rhs.usage );
54547 #  endif
54548     }
54549 
operator !=VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV54550     bool operator!=( OpticalFlowImageFormatInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
54551     {
54552       return !operator==( rhs );
54553     }
54554 #endif
54555 
54556   public:
54557     VULKAN_HPP_NAMESPACE::StructureType           sType = StructureType::eOpticalFlowImageFormatInfoNV;
54558     const void *                                  pNext = {};
54559     VULKAN_HPP_NAMESPACE::OpticalFlowUsageFlagsNV usage = {};
54560   };
54561 
54562   template <>
54563   struct CppType<StructureType, StructureType::eOpticalFlowImageFormatInfoNV>
54564   {
54565     using Type = OpticalFlowImageFormatInfoNV;
54566   };
54567 
54568   struct OpticalFlowImageFormatPropertiesNV
54569   {
54570     using NativeType = VkOpticalFlowImageFormatPropertiesNV;
54571 
54572     static const bool                                  allowDuplicate = false;
54573     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eOpticalFlowImageFormatPropertiesNV;
54574 
54575 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
OpticalFlowImageFormatPropertiesNVVULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV54576     VULKAN_HPP_CONSTEXPR OpticalFlowImageFormatPropertiesNV( VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
54577                                                              const void *                 pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
54578       : pNext{ pNext_ }
54579       , format{ format_ }
54580     {
54581     }
54582 
54583     VULKAN_HPP_CONSTEXPR OpticalFlowImageFormatPropertiesNV( OpticalFlowImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54584 
OpticalFlowImageFormatPropertiesNVVULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV54585     OpticalFlowImageFormatPropertiesNV( VkOpticalFlowImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
54586       : OpticalFlowImageFormatPropertiesNV( *reinterpret_cast<OpticalFlowImageFormatPropertiesNV const *>( &rhs ) )
54587     {
54588     }
54589 
54590     OpticalFlowImageFormatPropertiesNV & operator=( OpticalFlowImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54591 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54592 
operator =VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV54593     OpticalFlowImageFormatPropertiesNV & operator=( VkOpticalFlowImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
54594     {
54595       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV const *>( &rhs );
54596       return *this;
54597     }
54598 
operator VkOpticalFlowImageFormatPropertiesNV const&VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV54599     operator VkOpticalFlowImageFormatPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
54600     {
54601       return *reinterpret_cast<const VkOpticalFlowImageFormatPropertiesNV *>( this );
54602     }
54603 
operator VkOpticalFlowImageFormatPropertiesNV&VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV54604     operator VkOpticalFlowImageFormatPropertiesNV &() VULKAN_HPP_NOEXCEPT
54605     {
54606       return *reinterpret_cast<VkOpticalFlowImageFormatPropertiesNV *>( this );
54607     }
54608 
54609 #if defined( VULKAN_HPP_USE_REFLECT )
54610 #  if 14 <= VULKAN_HPP_CPP_VERSION
54611     auto
54612 #  else
54613     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Format const &>
54614 #  endif
reflectVULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV54615       reflect() const VULKAN_HPP_NOEXCEPT
54616     {
54617       return std::tie( sType, pNext, format );
54618     }
54619 #endif
54620 
54621 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54622     auto operator<=>( OpticalFlowImageFormatPropertiesNV const & ) const = default;
54623 #else
operator ==VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV54624     bool operator==( OpticalFlowImageFormatPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
54625     {
54626 #  if defined( VULKAN_HPP_USE_REFLECT )
54627       return this->reflect() == rhs.reflect();
54628 #  else
54629       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format );
54630 #  endif
54631     }
54632 
operator !=VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV54633     bool operator!=( OpticalFlowImageFormatPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
54634     {
54635       return !operator==( rhs );
54636     }
54637 #endif
54638 
54639   public:
54640     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::eOpticalFlowImageFormatPropertiesNV;
54641     const void *                        pNext  = {};
54642     VULKAN_HPP_NAMESPACE::Format        format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
54643   };
54644 
54645   template <>
54646   struct CppType<StructureType, StructureType::eOpticalFlowImageFormatPropertiesNV>
54647   {
54648     using Type = OpticalFlowImageFormatPropertiesNV;
54649   };
54650 
54651   struct OpticalFlowSessionCreateInfoNV
54652   {
54653     using NativeType = VkOpticalFlowSessionCreateInfoNV;
54654 
54655     static const bool                                  allowDuplicate = false;
54656     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eOpticalFlowSessionCreateInfoNV;
54657 
54658 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
OpticalFlowSessionCreateInfoNVVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV54659     VULKAN_HPP_CONSTEXPR OpticalFlowSessionCreateInfoNV(
54660       uint32_t                                              width_            = {},
54661       uint32_t                                              height_           = {},
54662       VULKAN_HPP_NAMESPACE::Format                          imageFormat_      = VULKAN_HPP_NAMESPACE::Format::eUndefined,
54663       VULKAN_HPP_NAMESPACE::Format                          flowVectorFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
54664       VULKAN_HPP_NAMESPACE::Format                          costFormat_       = VULKAN_HPP_NAMESPACE::Format::eUndefined,
54665       VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV      outputGridSize_   = {},
54666       VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV      hintGridSize_     = {},
54667       VULKAN_HPP_NAMESPACE::OpticalFlowPerformanceLevelNV   performanceLevel_ = VULKAN_HPP_NAMESPACE::OpticalFlowPerformanceLevelNV::eUnknown,
54668       VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateFlagsNV flags_            = {},
54669       void *                                                pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
54670       : pNext{ pNext_ }
54671       , width{ width_ }
54672       , height{ height_ }
54673       , imageFormat{ imageFormat_ }
54674       , flowVectorFormat{ flowVectorFormat_ }
54675       , costFormat{ costFormat_ }
54676       , outputGridSize{ outputGridSize_ }
54677       , hintGridSize{ hintGridSize_ }
54678       , performanceLevel{ performanceLevel_ }
54679       , flags{ flags_ }
54680     {
54681     }
54682 
54683     VULKAN_HPP_CONSTEXPR OpticalFlowSessionCreateInfoNV( OpticalFlowSessionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54684 
OpticalFlowSessionCreateInfoNVVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV54685     OpticalFlowSessionCreateInfoNV( VkOpticalFlowSessionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
54686       : OpticalFlowSessionCreateInfoNV( *reinterpret_cast<OpticalFlowSessionCreateInfoNV const *>( &rhs ) )
54687     {
54688     }
54689 
54690     OpticalFlowSessionCreateInfoNV & operator=( OpticalFlowSessionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54691 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54692 
operator =VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV54693     OpticalFlowSessionCreateInfoNV & operator=( VkOpticalFlowSessionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
54694     {
54695       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV const *>( &rhs );
54696       return *this;
54697     }
54698 
54699 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV54700     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
54701     {
54702       pNext = pNext_;
54703       return *this;
54704     }
54705 
setWidthVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV54706     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
54707     {
54708       width = width_;
54709       return *this;
54710     }
54711 
setHeightVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV54712     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
54713     {
54714       height = height_;
54715       return *this;
54716     }
54717 
setImageFormatVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV54718     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setImageFormat( VULKAN_HPP_NAMESPACE::Format imageFormat_ ) VULKAN_HPP_NOEXCEPT
54719     {
54720       imageFormat = imageFormat_;
54721       return *this;
54722     }
54723 
setFlowVectorFormatVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV54724     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setFlowVectorFormat( VULKAN_HPP_NAMESPACE::Format flowVectorFormat_ ) VULKAN_HPP_NOEXCEPT
54725     {
54726       flowVectorFormat = flowVectorFormat_;
54727       return *this;
54728     }
54729 
setCostFormatVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV54730     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setCostFormat( VULKAN_HPP_NAMESPACE::Format costFormat_ ) VULKAN_HPP_NOEXCEPT
54731     {
54732       costFormat = costFormat_;
54733       return *this;
54734     }
54735 
54736     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV &
setOutputGridSizeVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV54737       setOutputGridSize( VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV outputGridSize_ ) VULKAN_HPP_NOEXCEPT
54738     {
54739       outputGridSize = outputGridSize_;
54740       return *this;
54741     }
54742 
54743     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV &
setHintGridSizeVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV54744       setHintGridSize( VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV hintGridSize_ ) VULKAN_HPP_NOEXCEPT
54745     {
54746       hintGridSize = hintGridSize_;
54747       return *this;
54748     }
54749 
54750     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV &
setPerformanceLevelVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV54751       setPerformanceLevel( VULKAN_HPP_NAMESPACE::OpticalFlowPerformanceLevelNV performanceLevel_ ) VULKAN_HPP_NOEXCEPT
54752     {
54753       performanceLevel = performanceLevel_;
54754       return *this;
54755     }
54756 
setFlagsVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV54757     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setFlags( VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
54758     {
54759       flags = flags_;
54760       return *this;
54761     }
54762 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
54763 
operator VkOpticalFlowSessionCreateInfoNV const&VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV54764     operator VkOpticalFlowSessionCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
54765     {
54766       return *reinterpret_cast<const VkOpticalFlowSessionCreateInfoNV *>( this );
54767     }
54768 
operator VkOpticalFlowSessionCreateInfoNV&VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV54769     operator VkOpticalFlowSessionCreateInfoNV &() VULKAN_HPP_NOEXCEPT
54770     {
54771       return *reinterpret_cast<VkOpticalFlowSessionCreateInfoNV *>( this );
54772     }
54773 
54774 #if defined( VULKAN_HPP_USE_REFLECT )
54775 #  if 14 <= VULKAN_HPP_CPP_VERSION
54776     auto
54777 #  else
54778     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
54779                void * const &,
54780                uint32_t const &,
54781                uint32_t const &,
54782                VULKAN_HPP_NAMESPACE::Format const &,
54783                VULKAN_HPP_NAMESPACE::Format const &,
54784                VULKAN_HPP_NAMESPACE::Format const &,
54785                VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV const &,
54786                VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV const &,
54787                VULKAN_HPP_NAMESPACE::OpticalFlowPerformanceLevelNV const &,
54788                VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateFlagsNV const &>
54789 #  endif
reflectVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV54790       reflect() const VULKAN_HPP_NOEXCEPT
54791     {
54792       return std::tie( sType, pNext, width, height, imageFormat, flowVectorFormat, costFormat, outputGridSize, hintGridSize, performanceLevel, flags );
54793     }
54794 #endif
54795 
54796 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54797     auto operator<=>( OpticalFlowSessionCreateInfoNV const & ) const = default;
54798 #else
operator ==VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV54799     bool operator==( OpticalFlowSessionCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
54800     {
54801 #  if defined( VULKAN_HPP_USE_REFLECT )
54802       return this->reflect() == rhs.reflect();
54803 #  else
54804       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( width == rhs.width ) && ( height == rhs.height ) && ( imageFormat == rhs.imageFormat ) &&
54805              ( flowVectorFormat == rhs.flowVectorFormat ) && ( costFormat == rhs.costFormat ) && ( outputGridSize == rhs.outputGridSize ) &&
54806              ( hintGridSize == rhs.hintGridSize ) && ( performanceLevel == rhs.performanceLevel ) && ( flags == rhs.flags );
54807 #  endif
54808     }
54809 
operator !=VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV54810     bool operator!=( OpticalFlowSessionCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
54811     {
54812       return !operator==( rhs );
54813     }
54814 #endif
54815 
54816   public:
54817     VULKAN_HPP_NAMESPACE::StructureType                   sType            = StructureType::eOpticalFlowSessionCreateInfoNV;
54818     void *                                                pNext            = {};
54819     uint32_t                                              width            = {};
54820     uint32_t                                              height           = {};
54821     VULKAN_HPP_NAMESPACE::Format                          imageFormat      = VULKAN_HPP_NAMESPACE::Format::eUndefined;
54822     VULKAN_HPP_NAMESPACE::Format                          flowVectorFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined;
54823     VULKAN_HPP_NAMESPACE::Format                          costFormat       = VULKAN_HPP_NAMESPACE::Format::eUndefined;
54824     VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV      outputGridSize   = {};
54825     VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV      hintGridSize     = {};
54826     VULKAN_HPP_NAMESPACE::OpticalFlowPerformanceLevelNV   performanceLevel = VULKAN_HPP_NAMESPACE::OpticalFlowPerformanceLevelNV::eUnknown;
54827     VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateFlagsNV flags            = {};
54828   };
54829 
54830   template <>
54831   struct CppType<StructureType, StructureType::eOpticalFlowSessionCreateInfoNV>
54832   {
54833     using Type = OpticalFlowSessionCreateInfoNV;
54834   };
54835 
54836   struct OpticalFlowSessionCreatePrivateDataInfoNV
54837   {
54838     using NativeType = VkOpticalFlowSessionCreatePrivateDataInfoNV;
54839 
54840     static const bool                                  allowDuplicate = false;
54841     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eOpticalFlowSessionCreatePrivateDataInfoNV;
54842 
54843 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
OpticalFlowSessionCreatePrivateDataInfoNVVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV54844     VULKAN_HPP_CONSTEXPR OpticalFlowSessionCreatePrivateDataInfoNV( uint32_t     id_           = {},
54845                                                                     uint32_t     size_         = {},
54846                                                                     const void * pPrivateData_ = {},
54847                                                                     void *       pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
54848       : pNext{ pNext_ }
54849       , id{ id_ }
54850       , size{ size_ }
54851       , pPrivateData{ pPrivateData_ }
54852     {
54853     }
54854 
54855     VULKAN_HPP_CONSTEXPR OpticalFlowSessionCreatePrivateDataInfoNV( OpticalFlowSessionCreatePrivateDataInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54856 
OpticalFlowSessionCreatePrivateDataInfoNVVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV54857     OpticalFlowSessionCreatePrivateDataInfoNV( VkOpticalFlowSessionCreatePrivateDataInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
54858       : OpticalFlowSessionCreatePrivateDataInfoNV( *reinterpret_cast<OpticalFlowSessionCreatePrivateDataInfoNV const *>( &rhs ) )
54859     {
54860     }
54861 
54862     OpticalFlowSessionCreatePrivateDataInfoNV & operator=( OpticalFlowSessionCreatePrivateDataInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54863 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54864 
operator =VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV54865     OpticalFlowSessionCreatePrivateDataInfoNV & operator=( VkOpticalFlowSessionCreatePrivateDataInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
54866     {
54867       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV const *>( &rhs );
54868       return *this;
54869     }
54870 
54871 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV54872     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreatePrivateDataInfoNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
54873     {
54874       pNext = pNext_;
54875       return *this;
54876     }
54877 
setIdVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV54878     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreatePrivateDataInfoNV & setId( uint32_t id_ ) VULKAN_HPP_NOEXCEPT
54879     {
54880       id = id_;
54881       return *this;
54882     }
54883 
setSizeVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV54884     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreatePrivateDataInfoNV & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT
54885     {
54886       size = size_;
54887       return *this;
54888     }
54889 
setPPrivateDataVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV54890     VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreatePrivateDataInfoNV & setPPrivateData( const void * pPrivateData_ ) VULKAN_HPP_NOEXCEPT
54891     {
54892       pPrivateData = pPrivateData_;
54893       return *this;
54894     }
54895 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
54896 
operator VkOpticalFlowSessionCreatePrivateDataInfoNV const&VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV54897     operator VkOpticalFlowSessionCreatePrivateDataInfoNV const &() const VULKAN_HPP_NOEXCEPT
54898     {
54899       return *reinterpret_cast<const VkOpticalFlowSessionCreatePrivateDataInfoNV *>( this );
54900     }
54901 
operator VkOpticalFlowSessionCreatePrivateDataInfoNV&VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV54902     operator VkOpticalFlowSessionCreatePrivateDataInfoNV &() VULKAN_HPP_NOEXCEPT
54903     {
54904       return *reinterpret_cast<VkOpticalFlowSessionCreatePrivateDataInfoNV *>( this );
54905     }
54906 
54907 #if defined( VULKAN_HPP_USE_REFLECT )
54908 #  if 14 <= VULKAN_HPP_CPP_VERSION
54909     auto
54910 #  else
54911     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &, const void * const &>
54912 #  endif
reflectVULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV54913       reflect() const VULKAN_HPP_NOEXCEPT
54914     {
54915       return std::tie( sType, pNext, id, size, pPrivateData );
54916     }
54917 #endif
54918 
54919 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
54920     auto operator<=>( OpticalFlowSessionCreatePrivateDataInfoNV const & ) const = default;
54921 #else
operator ==VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV54922     bool operator==( OpticalFlowSessionCreatePrivateDataInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
54923     {
54924 #  if defined( VULKAN_HPP_USE_REFLECT )
54925       return this->reflect() == rhs.reflect();
54926 #  else
54927       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( id == rhs.id ) && ( size == rhs.size ) && ( pPrivateData == rhs.pPrivateData );
54928 #  endif
54929     }
54930 
operator !=VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV54931     bool operator!=( OpticalFlowSessionCreatePrivateDataInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
54932     {
54933       return !operator==( rhs );
54934     }
54935 #endif
54936 
54937   public:
54938     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eOpticalFlowSessionCreatePrivateDataInfoNV;
54939     void *                              pNext        = {};
54940     uint32_t                            id           = {};
54941     uint32_t                            size         = {};
54942     const void *                        pPrivateData = {};
54943   };
54944 
54945   template <>
54946   struct CppType<StructureType, StructureType::eOpticalFlowSessionCreatePrivateDataInfoNV>
54947   {
54948     using Type = OpticalFlowSessionCreatePrivateDataInfoNV;
54949   };
54950 
54951   struct OutOfBandQueueTypeInfoNV
54952   {
54953     using NativeType = VkOutOfBandQueueTypeInfoNV;
54954 
54955     static const bool                                  allowDuplicate = false;
54956     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eOutOfBandQueueTypeInfoNV;
54957 
54958 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
OutOfBandQueueTypeInfoNVVULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV54959     VULKAN_HPP_CONSTEXPR OutOfBandQueueTypeInfoNV( VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeNV queueType_ = VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeNV::eRender,
54960                                                    const void *                               pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
54961       : pNext{ pNext_ }
54962       , queueType{ queueType_ }
54963     {
54964     }
54965 
54966     VULKAN_HPP_CONSTEXPR OutOfBandQueueTypeInfoNV( OutOfBandQueueTypeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54967 
OutOfBandQueueTypeInfoNVVULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV54968     OutOfBandQueueTypeInfoNV( VkOutOfBandQueueTypeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
54969       : OutOfBandQueueTypeInfoNV( *reinterpret_cast<OutOfBandQueueTypeInfoNV const *>( &rhs ) )
54970     {
54971     }
54972 
54973     OutOfBandQueueTypeInfoNV & operator=( OutOfBandQueueTypeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
54974 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
54975 
operator =VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV54976     OutOfBandQueueTypeInfoNV & operator=( VkOutOfBandQueueTypeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
54977     {
54978       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV const *>( &rhs );
54979       return *this;
54980     }
54981 
54982 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV54983     VULKAN_HPP_CONSTEXPR_14 OutOfBandQueueTypeInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
54984     {
54985       pNext = pNext_;
54986       return *this;
54987     }
54988 
setQueueTypeVULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV54989     VULKAN_HPP_CONSTEXPR_14 OutOfBandQueueTypeInfoNV & setQueueType( VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeNV queueType_ ) VULKAN_HPP_NOEXCEPT
54990     {
54991       queueType = queueType_;
54992       return *this;
54993     }
54994 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
54995 
operator VkOutOfBandQueueTypeInfoNV const&VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV54996     operator VkOutOfBandQueueTypeInfoNV const &() const VULKAN_HPP_NOEXCEPT
54997     {
54998       return *reinterpret_cast<const VkOutOfBandQueueTypeInfoNV *>( this );
54999     }
55000 
operator VkOutOfBandQueueTypeInfoNV&VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV55001     operator VkOutOfBandQueueTypeInfoNV &() VULKAN_HPP_NOEXCEPT
55002     {
55003       return *reinterpret_cast<VkOutOfBandQueueTypeInfoNV *>( this );
55004     }
55005 
55006 #if defined( VULKAN_HPP_USE_REFLECT )
55007 #  if 14 <= VULKAN_HPP_CPP_VERSION
55008     auto
55009 #  else
55010     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeNV const &>
55011 #  endif
reflectVULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV55012       reflect() const VULKAN_HPP_NOEXCEPT
55013     {
55014       return std::tie( sType, pNext, queueType );
55015     }
55016 #endif
55017 
55018 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55019     auto operator<=>( OutOfBandQueueTypeInfoNV const & ) const = default;
55020 #else
operator ==VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV55021     bool operator==( OutOfBandQueueTypeInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
55022     {
55023 #  if defined( VULKAN_HPP_USE_REFLECT )
55024       return this->reflect() == rhs.reflect();
55025 #  else
55026       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queueType == rhs.queueType );
55027 #  endif
55028     }
55029 
operator !=VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV55030     bool operator!=( OutOfBandQueueTypeInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
55031     {
55032       return !operator==( rhs );
55033     }
55034 #endif
55035 
55036   public:
55037     VULKAN_HPP_NAMESPACE::StructureType        sType     = StructureType::eOutOfBandQueueTypeInfoNV;
55038     const void *                               pNext     = {};
55039     VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeNV queueType = VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeNV::eRender;
55040   };
55041 
55042   template <>
55043   struct CppType<StructureType, StructureType::eOutOfBandQueueTypeInfoNV>
55044   {
55045     using Type = OutOfBandQueueTypeInfoNV;
55046   };
55047 
55048   struct PastPresentationTimingGOOGLE
55049   {
55050     using NativeType = VkPastPresentationTimingGOOGLE;
55051 
55052 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PastPresentationTimingGOOGLEVULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE55053     VULKAN_HPP_CONSTEXPR PastPresentationTimingGOOGLE( uint32_t presentID_           = {},
55054                                                        uint64_t desiredPresentTime_  = {},
55055                                                        uint64_t actualPresentTime_   = {},
55056                                                        uint64_t earliestPresentTime_ = {},
55057                                                        uint64_t presentMargin_       = {} ) VULKAN_HPP_NOEXCEPT
55058       : presentID{ presentID_ }
55059       , desiredPresentTime{ desiredPresentTime_ }
55060       , actualPresentTime{ actualPresentTime_ }
55061       , earliestPresentTime{ earliestPresentTime_ }
55062       , presentMargin{ presentMargin_ }
55063     {
55064     }
55065 
55066     VULKAN_HPP_CONSTEXPR PastPresentationTimingGOOGLE( PastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55067 
PastPresentationTimingGOOGLEVULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE55068     PastPresentationTimingGOOGLE( VkPastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
55069       : PastPresentationTimingGOOGLE( *reinterpret_cast<PastPresentationTimingGOOGLE const *>( &rhs ) )
55070     {
55071     }
55072 
55073     PastPresentationTimingGOOGLE & operator=( PastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55074 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55075 
operator =VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE55076     PastPresentationTimingGOOGLE & operator=( VkPastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
55077     {
55078       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE const *>( &rhs );
55079       return *this;
55080     }
55081 
operator VkPastPresentationTimingGOOGLE const&VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE55082     operator VkPastPresentationTimingGOOGLE const &() const VULKAN_HPP_NOEXCEPT
55083     {
55084       return *reinterpret_cast<const VkPastPresentationTimingGOOGLE *>( this );
55085     }
55086 
operator VkPastPresentationTimingGOOGLE&VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE55087     operator VkPastPresentationTimingGOOGLE &() VULKAN_HPP_NOEXCEPT
55088     {
55089       return *reinterpret_cast<VkPastPresentationTimingGOOGLE *>( this );
55090     }
55091 
55092 #if defined( VULKAN_HPP_USE_REFLECT )
55093 #  if 14 <= VULKAN_HPP_CPP_VERSION
55094     auto
55095 #  else
55096     std::tuple<uint32_t const &, uint64_t const &, uint64_t const &, uint64_t const &, uint64_t const &>
55097 #  endif
reflectVULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE55098       reflect() const VULKAN_HPP_NOEXCEPT
55099     {
55100       return std::tie( presentID, desiredPresentTime, actualPresentTime, earliestPresentTime, presentMargin );
55101     }
55102 #endif
55103 
55104 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55105     auto operator<=>( PastPresentationTimingGOOGLE const & ) const = default;
55106 #else
operator ==VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE55107     bool operator==( PastPresentationTimingGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
55108     {
55109 #  if defined( VULKAN_HPP_USE_REFLECT )
55110       return this->reflect() == rhs.reflect();
55111 #  else
55112       return ( presentID == rhs.presentID ) && ( desiredPresentTime == rhs.desiredPresentTime ) && ( actualPresentTime == rhs.actualPresentTime ) &&
55113              ( earliestPresentTime == rhs.earliestPresentTime ) && ( presentMargin == rhs.presentMargin );
55114 #  endif
55115     }
55116 
operator !=VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE55117     bool operator!=( PastPresentationTimingGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
55118     {
55119       return !operator==( rhs );
55120     }
55121 #endif
55122 
55123   public:
55124     uint32_t presentID           = {};
55125     uint64_t desiredPresentTime  = {};
55126     uint64_t actualPresentTime   = {};
55127     uint64_t earliestPresentTime = {};
55128     uint64_t presentMargin       = {};
55129   };
55130 
55131   struct PerformanceConfigurationAcquireInfoINTEL
55132   {
55133     using NativeType = VkPerformanceConfigurationAcquireInfoINTEL;
55134 
55135     static const bool                                  allowDuplicate = false;
55136     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePerformanceConfigurationAcquireInfoINTEL;
55137 
55138 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
55139     VULKAN_HPP_CONSTEXPR
PerformanceConfigurationAcquireInfoINTELVULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL55140       PerformanceConfigurationAcquireInfoINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL type_ =
55141                                                   VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL::eCommandQueueMetricsDiscoveryActivated,
55142                                                 const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
55143       : pNext{ pNext_ }
55144       , type{ type_ }
55145     {
55146     }
55147 
55148     VULKAN_HPP_CONSTEXPR PerformanceConfigurationAcquireInfoINTEL( PerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55149 
PerformanceConfigurationAcquireInfoINTELVULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL55150     PerformanceConfigurationAcquireInfoINTEL( VkPerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
55151       : PerformanceConfigurationAcquireInfoINTEL( *reinterpret_cast<PerformanceConfigurationAcquireInfoINTEL const *>( &rhs ) )
55152     {
55153     }
55154 
55155     PerformanceConfigurationAcquireInfoINTEL & operator=( PerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55156 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55157 
operator =VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL55158     PerformanceConfigurationAcquireInfoINTEL & operator=( VkPerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
55159     {
55160       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL const *>( &rhs );
55161       return *this;
55162     }
55163 
55164 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL55165     VULKAN_HPP_CONSTEXPR_14 PerformanceConfigurationAcquireInfoINTEL & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
55166     {
55167       pNext = pNext_;
55168       return *this;
55169     }
55170 
55171     VULKAN_HPP_CONSTEXPR_14 PerformanceConfigurationAcquireInfoINTEL &
setTypeVULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL55172       setType( VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL type_ ) VULKAN_HPP_NOEXCEPT
55173     {
55174       type = type_;
55175       return *this;
55176     }
55177 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
55178 
operator VkPerformanceConfigurationAcquireInfoINTEL const&VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL55179     operator VkPerformanceConfigurationAcquireInfoINTEL const &() const VULKAN_HPP_NOEXCEPT
55180     {
55181       return *reinterpret_cast<const VkPerformanceConfigurationAcquireInfoINTEL *>( this );
55182     }
55183 
operator VkPerformanceConfigurationAcquireInfoINTEL&VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL55184     operator VkPerformanceConfigurationAcquireInfoINTEL &() VULKAN_HPP_NOEXCEPT
55185     {
55186       return *reinterpret_cast<VkPerformanceConfigurationAcquireInfoINTEL *>( this );
55187     }
55188 
55189 #if defined( VULKAN_HPP_USE_REFLECT )
55190 #  if 14 <= VULKAN_HPP_CPP_VERSION
55191     auto
55192 #  else
55193     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL const &>
55194 #  endif
reflectVULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL55195       reflect() const VULKAN_HPP_NOEXCEPT
55196     {
55197       return std::tie( sType, pNext, type );
55198     }
55199 #endif
55200 
55201 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55202     auto operator<=>( PerformanceConfigurationAcquireInfoINTEL const & ) const = default;
55203 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL55204     bool operator==( PerformanceConfigurationAcquireInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
55205     {
55206 #  if defined( VULKAN_HPP_USE_REFLECT )
55207       return this->reflect() == rhs.reflect();
55208 #  else
55209       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type );
55210 #  endif
55211     }
55212 
operator !=VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL55213     bool operator!=( PerformanceConfigurationAcquireInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
55214     {
55215       return !operator==( rhs );
55216     }
55217 #endif
55218 
55219   public:
55220     VULKAN_HPP_NAMESPACE::StructureType                     sType = StructureType::ePerformanceConfigurationAcquireInfoINTEL;
55221     const void *                                            pNext = {};
55222     VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL type =
55223       VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL::eCommandQueueMetricsDiscoveryActivated;
55224   };
55225 
55226   template <>
55227   struct CppType<StructureType, StructureType::ePerformanceConfigurationAcquireInfoINTEL>
55228   {
55229     using Type = PerformanceConfigurationAcquireInfoINTEL;
55230   };
55231 
55232   struct PerformanceCounterDescriptionKHR
55233   {
55234     using NativeType = VkPerformanceCounterDescriptionKHR;
55235 
55236     static const bool                                  allowDuplicate = false;
55237     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePerformanceCounterDescriptionKHR;
55238 
55239 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PerformanceCounterDescriptionKHRVULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR55240     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterDescriptionKHR( VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionFlagsKHR flags_       = {},
55241                                                               std::array<char, VK_MAX_DESCRIPTION_SIZE> const &           name_        = {},
55242                                                               std::array<char, VK_MAX_DESCRIPTION_SIZE> const &           category_    = {},
55243                                                               std::array<char, VK_MAX_DESCRIPTION_SIZE> const &           description_ = {},
55244                                                               void *                                                      pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
55245       : pNext{ pNext_ }
55246       , flags{ flags_ }
55247       , name{ name_ }
55248       , category{ category_ }
55249       , description{ description_ }
55250     {
55251     }
55252 
55253     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterDescriptionKHR( PerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55254 
PerformanceCounterDescriptionKHRVULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR55255     PerformanceCounterDescriptionKHR( VkPerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
55256       : PerformanceCounterDescriptionKHR( *reinterpret_cast<PerformanceCounterDescriptionKHR const *>( &rhs ) )
55257     {
55258     }
55259 
55260 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PerformanceCounterDescriptionKHRVULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR55261     PerformanceCounterDescriptionKHR( VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionFlagsKHR flags_,
55262                                       std::string const &                                         name_,
55263                                       std::string const &                                         category_    = {},
55264                                       std::string const &                                         description_ = {},
55265                                       void *                                                      pNext_       = nullptr )
55266       : pNext( pNext_ ), flags( flags_ )
55267     {
55268       VULKAN_HPP_ASSERT( name_.size() < VK_MAX_DESCRIPTION_SIZE );
55269 #    if defined( WIN32 )
55270       strncpy_s( name, VK_MAX_DESCRIPTION_SIZE, name_.data(), name_.size() );
55271 #    else
55272       strncpy( name, name_.data(), std::min<size_t>( VK_MAX_DESCRIPTION_SIZE, name_.size() ) );
55273 #    endif
55274 
55275       VULKAN_HPP_ASSERT( category_.size() < VK_MAX_DESCRIPTION_SIZE );
55276 #    if defined( WIN32 )
55277       strncpy_s( category, VK_MAX_DESCRIPTION_SIZE, category_.data(), category_.size() );
55278 #    else
55279       strncpy( category, category_.data(), std::min<size_t>( VK_MAX_DESCRIPTION_SIZE, category_.size() ) );
55280 #    endif
55281 
55282       VULKAN_HPP_ASSERT( description_.size() < VK_MAX_DESCRIPTION_SIZE );
55283 #    if defined( WIN32 )
55284       strncpy_s( description, VK_MAX_DESCRIPTION_SIZE, description_.data(), description_.size() );
55285 #    else
55286       strncpy( description, description_.data(), std::min<size_t>( VK_MAX_DESCRIPTION_SIZE, description_.size() ) );
55287 #    endif
55288     }
55289 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
55290 
55291     PerformanceCounterDescriptionKHR & operator=( PerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55292 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55293 
operator =VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR55294     PerformanceCounterDescriptionKHR & operator=( VkPerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
55295     {
55296       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR const *>( &rhs );
55297       return *this;
55298     }
55299 
operator VkPerformanceCounterDescriptionKHR const&VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR55300     operator VkPerformanceCounterDescriptionKHR const &() const VULKAN_HPP_NOEXCEPT
55301     {
55302       return *reinterpret_cast<const VkPerformanceCounterDescriptionKHR *>( this );
55303     }
55304 
operator VkPerformanceCounterDescriptionKHR&VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR55305     operator VkPerformanceCounterDescriptionKHR &() VULKAN_HPP_NOEXCEPT
55306     {
55307       return *reinterpret_cast<VkPerformanceCounterDescriptionKHR *>( this );
55308     }
55309 
55310 #if defined( VULKAN_HPP_USE_REFLECT )
55311 #  if 14 <= VULKAN_HPP_CPP_VERSION
55312     auto
55313 #  else
55314     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
55315                void * const &,
55316                VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionFlagsKHR const &,
55317                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
55318                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
55319                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &>
55320 #  endif
reflectVULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR55321       reflect() const VULKAN_HPP_NOEXCEPT
55322     {
55323       return std::tie( sType, pNext, flags, name, category, description );
55324     }
55325 #endif
55326 
55327 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR55328     std::strong_ordering operator<=>( PerformanceCounterDescriptionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55329     {
55330       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
55331         return cmp;
55332       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
55333         return cmp;
55334       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
55335         return cmp;
55336       if ( auto cmp = strcmp( name, rhs.name ); cmp != 0 )
55337         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
55338       if ( auto cmp = strcmp( category, rhs.category ); cmp != 0 )
55339         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
55340       if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 )
55341         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
55342 
55343       return std::strong_ordering::equivalent;
55344     }
55345 #endif
55346 
operator ==VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR55347     bool operator==( PerformanceCounterDescriptionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55348     {
55349       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( strcmp( name, rhs.name ) == 0 ) &&
55350              ( strcmp( category, rhs.category ) == 0 ) && ( strcmp( description, rhs.description ) == 0 );
55351     }
55352 
operator !=VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR55353     bool operator!=( PerformanceCounterDescriptionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55354     {
55355       return !operator==( rhs );
55356     }
55357 
55358   public:
55359     VULKAN_HPP_NAMESPACE::StructureType                                 sType       = StructureType::ePerformanceCounterDescriptionKHR;
55360     void *                                                              pNext       = {};
55361     VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionFlagsKHR         flags       = {};
55362     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> name        = {};
55363     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> category    = {};
55364     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description = {};
55365   };
55366 
55367   template <>
55368   struct CppType<StructureType, StructureType::ePerformanceCounterDescriptionKHR>
55369   {
55370     using Type = PerformanceCounterDescriptionKHR;
55371   };
55372 
55373   struct PerformanceCounterKHR
55374   {
55375     using NativeType = VkPerformanceCounterKHR;
55376 
55377     static const bool                                  allowDuplicate = false;
55378     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePerformanceCounterKHR;
55379 
55380 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
55381     VULKAN_HPP_CONSTEXPR_14
PerformanceCounterKHRVULKAN_HPP_NAMESPACE::PerformanceCounterKHR55382       PerformanceCounterKHR( VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR    unit_    = VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR::eGeneric,
55383                              VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR   scope_   = VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR::eCommandBuffer,
55384                              VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR storage_ = VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR::eInt32,
55385                              std::array<uint8_t, VK_UUID_SIZE> const &          uuid_    = {},
55386                              void *                                             pNext_   = nullptr ) VULKAN_HPP_NOEXCEPT
55387       : pNext{ pNext_ }
55388       , unit{ unit_ }
55389       , scope{ scope_ }
55390       , storage{ storage_ }
55391       , uuid{ uuid_ }
55392     {
55393     }
55394 
55395     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterKHR( PerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55396 
PerformanceCounterKHRVULKAN_HPP_NAMESPACE::PerformanceCounterKHR55397     PerformanceCounterKHR( VkPerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT
55398       : PerformanceCounterKHR( *reinterpret_cast<PerformanceCounterKHR const *>( &rhs ) )
55399     {
55400     }
55401 
55402     PerformanceCounterKHR & operator=( PerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55403 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55404 
operator =VULKAN_HPP_NAMESPACE::PerformanceCounterKHR55405     PerformanceCounterKHR & operator=( VkPerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT
55406     {
55407       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceCounterKHR const *>( &rhs );
55408       return *this;
55409     }
55410 
operator VkPerformanceCounterKHR const&VULKAN_HPP_NAMESPACE::PerformanceCounterKHR55411     operator VkPerformanceCounterKHR const &() const VULKAN_HPP_NOEXCEPT
55412     {
55413       return *reinterpret_cast<const VkPerformanceCounterKHR *>( this );
55414     }
55415 
operator VkPerformanceCounterKHR&VULKAN_HPP_NAMESPACE::PerformanceCounterKHR55416     operator VkPerformanceCounterKHR &() VULKAN_HPP_NOEXCEPT
55417     {
55418       return *reinterpret_cast<VkPerformanceCounterKHR *>( this );
55419     }
55420 
55421 #if defined( VULKAN_HPP_USE_REFLECT )
55422 #  if 14 <= VULKAN_HPP_CPP_VERSION
55423     auto
55424 #  else
55425     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
55426                void * const &,
55427                VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR const &,
55428                VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR const &,
55429                VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR const &,
55430                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &>
55431 #  endif
reflectVULKAN_HPP_NAMESPACE::PerformanceCounterKHR55432       reflect() const VULKAN_HPP_NOEXCEPT
55433     {
55434       return std::tie( sType, pNext, unit, scope, storage, uuid );
55435     }
55436 #endif
55437 
55438 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55439     auto operator<=>( PerformanceCounterKHR const & ) const = default;
55440 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceCounterKHR55441     bool operator==( PerformanceCounterKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55442     {
55443 #  if defined( VULKAN_HPP_USE_REFLECT )
55444       return this->reflect() == rhs.reflect();
55445 #  else
55446       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( unit == rhs.unit ) && ( scope == rhs.scope ) && ( storage == rhs.storage ) &&
55447              ( uuid == rhs.uuid );
55448 #  endif
55449     }
55450 
operator !=VULKAN_HPP_NAMESPACE::PerformanceCounterKHR55451     bool operator!=( PerformanceCounterKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55452     {
55453       return !operator==( rhs );
55454     }
55455 #endif
55456 
55457   public:
55458     VULKAN_HPP_NAMESPACE::StructureType                         sType   = StructureType::ePerformanceCounterKHR;
55459     void *                                                      pNext   = {};
55460     VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR             unit    = VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR::eGeneric;
55461     VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR            scope   = VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR::eCommandBuffer;
55462     VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR          storage = VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR::eInt32;
55463     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> uuid    = {};
55464   };
55465 
55466   template <>
55467   struct CppType<StructureType, StructureType::ePerformanceCounterKHR>
55468   {
55469     using Type = PerformanceCounterKHR;
55470   };
55471 
55472   union PerformanceCounterResultKHR
55473   {
55474     using NativeType = VkPerformanceCounterResultKHR;
55475 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
55476 
PerformanceCounterResultKHR(int32_t int32_={} )55477     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( int32_t int32_ = {} ) : int32( int32_ ) {}
55478 
PerformanceCounterResultKHR(int64_t int64_)55479     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( int64_t int64_ ) : int64( int64_ ) {}
55480 
PerformanceCounterResultKHR(uint32_t uint32_)55481     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( uint32_t uint32_ ) : uint32( uint32_ ) {}
55482 
PerformanceCounterResultKHR(uint64_t uint64_)55483     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( uint64_t uint64_ ) : uint64( uint64_ ) {}
55484 
PerformanceCounterResultKHR(float float32_)55485     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( float float32_ ) : float32( float32_ ) {}
55486 
PerformanceCounterResultKHR(double float64_)55487     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( double float64_ ) : float64( float64_ ) {}
55488 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
55489 
55490 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setInt32(int32_t int32_)55491     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setInt32( int32_t int32_ ) VULKAN_HPP_NOEXCEPT
55492     {
55493       int32 = int32_;
55494       return *this;
55495     }
55496 
setInt64(int64_t int64_)55497     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setInt64( int64_t int64_ ) VULKAN_HPP_NOEXCEPT
55498     {
55499       int64 = int64_;
55500       return *this;
55501     }
55502 
setUint32(uint32_t uint32_)55503     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setUint32( uint32_t uint32_ ) VULKAN_HPP_NOEXCEPT
55504     {
55505       uint32 = uint32_;
55506       return *this;
55507     }
55508 
setUint64(uint64_t uint64_)55509     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setUint64( uint64_t uint64_ ) VULKAN_HPP_NOEXCEPT
55510     {
55511       uint64 = uint64_;
55512       return *this;
55513     }
55514 
setFloat32(float float32_)55515     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setFloat32( float float32_ ) VULKAN_HPP_NOEXCEPT
55516     {
55517       float32 = float32_;
55518       return *this;
55519     }
55520 
setFloat64(double float64_)55521     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setFloat64( double float64_ ) VULKAN_HPP_NOEXCEPT
55522     {
55523       float64 = float64_;
55524       return *this;
55525     }
55526 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
55527 
operator VkPerformanceCounterResultKHR const&() const55528     operator VkPerformanceCounterResultKHR const &() const
55529     {
55530       return *reinterpret_cast<const VkPerformanceCounterResultKHR *>( this );
55531     }
55532 
operator VkPerformanceCounterResultKHR&()55533     operator VkPerformanceCounterResultKHR &()
55534     {
55535       return *reinterpret_cast<VkPerformanceCounterResultKHR *>( this );
55536     }
55537 
55538     int32_t  int32;
55539     int64_t  int64;
55540     uint32_t uint32;
55541     uint64_t uint64;
55542     float    float32;
55543     double   float64;
55544   };
55545 
55546   struct PerformanceMarkerInfoINTEL
55547   {
55548     using NativeType = VkPerformanceMarkerInfoINTEL;
55549 
55550     static const bool                                  allowDuplicate = false;
55551     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePerformanceMarkerInfoINTEL;
55552 
55553 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PerformanceMarkerInfoINTELVULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL55554     VULKAN_HPP_CONSTEXPR PerformanceMarkerInfoINTEL( uint64_t marker_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
55555       : pNext{ pNext_ }
55556       , marker{ marker_ }
55557     {
55558     }
55559 
55560     VULKAN_HPP_CONSTEXPR PerformanceMarkerInfoINTEL( PerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55561 
PerformanceMarkerInfoINTELVULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL55562     PerformanceMarkerInfoINTEL( VkPerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
55563       : PerformanceMarkerInfoINTEL( *reinterpret_cast<PerformanceMarkerInfoINTEL const *>( &rhs ) )
55564     {
55565     }
55566 
55567     PerformanceMarkerInfoINTEL & operator=( PerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55568 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55569 
operator =VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL55570     PerformanceMarkerInfoINTEL & operator=( VkPerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
55571     {
55572       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL const *>( &rhs );
55573       return *this;
55574     }
55575 
55576 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL55577     VULKAN_HPP_CONSTEXPR_14 PerformanceMarkerInfoINTEL & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
55578     {
55579       pNext = pNext_;
55580       return *this;
55581     }
55582 
setMarkerVULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL55583     VULKAN_HPP_CONSTEXPR_14 PerformanceMarkerInfoINTEL & setMarker( uint64_t marker_ ) VULKAN_HPP_NOEXCEPT
55584     {
55585       marker = marker_;
55586       return *this;
55587     }
55588 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
55589 
operator VkPerformanceMarkerInfoINTEL const&VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL55590     operator VkPerformanceMarkerInfoINTEL const &() const VULKAN_HPP_NOEXCEPT
55591     {
55592       return *reinterpret_cast<const VkPerformanceMarkerInfoINTEL *>( this );
55593     }
55594 
operator VkPerformanceMarkerInfoINTEL&VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL55595     operator VkPerformanceMarkerInfoINTEL &() VULKAN_HPP_NOEXCEPT
55596     {
55597       return *reinterpret_cast<VkPerformanceMarkerInfoINTEL *>( this );
55598     }
55599 
55600 #if defined( VULKAN_HPP_USE_REFLECT )
55601 #  if 14 <= VULKAN_HPP_CPP_VERSION
55602     auto
55603 #  else
55604     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint64_t const &>
55605 #  endif
reflectVULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL55606       reflect() const VULKAN_HPP_NOEXCEPT
55607     {
55608       return std::tie( sType, pNext, marker );
55609     }
55610 #endif
55611 
55612 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55613     auto operator<=>( PerformanceMarkerInfoINTEL const & ) const = default;
55614 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL55615     bool operator==( PerformanceMarkerInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
55616     {
55617 #  if defined( VULKAN_HPP_USE_REFLECT )
55618       return this->reflect() == rhs.reflect();
55619 #  else
55620       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( marker == rhs.marker );
55621 #  endif
55622     }
55623 
operator !=VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL55624     bool operator!=( PerformanceMarkerInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
55625     {
55626       return !operator==( rhs );
55627     }
55628 #endif
55629 
55630   public:
55631     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::ePerformanceMarkerInfoINTEL;
55632     const void *                        pNext  = {};
55633     uint64_t                            marker = {};
55634   };
55635 
55636   template <>
55637   struct CppType<StructureType, StructureType::ePerformanceMarkerInfoINTEL>
55638   {
55639     using Type = PerformanceMarkerInfoINTEL;
55640   };
55641 
55642   struct PerformanceOverrideInfoINTEL
55643   {
55644     using NativeType = VkPerformanceOverrideInfoINTEL;
55645 
55646     static const bool                                  allowDuplicate = false;
55647     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePerformanceOverrideInfoINTEL;
55648 
55649 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PerformanceOverrideInfoINTELVULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL55650     VULKAN_HPP_CONSTEXPR PerformanceOverrideInfoINTEL(
55651       VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL type_      = VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL::eNullHardware,
55652       VULKAN_HPP_NAMESPACE::Bool32                       enable_    = {},
55653       uint64_t                                           parameter_ = {},
55654       const void *                                       pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
55655       : pNext{ pNext_ }
55656       , type{ type_ }
55657       , enable{ enable_ }
55658       , parameter{ parameter_ }
55659     {
55660     }
55661 
55662     VULKAN_HPP_CONSTEXPR PerformanceOverrideInfoINTEL( PerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55663 
PerformanceOverrideInfoINTELVULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL55664     PerformanceOverrideInfoINTEL( VkPerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
55665       : PerformanceOverrideInfoINTEL( *reinterpret_cast<PerformanceOverrideInfoINTEL const *>( &rhs ) )
55666     {
55667     }
55668 
55669     PerformanceOverrideInfoINTEL & operator=( PerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55670 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55671 
operator =VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL55672     PerformanceOverrideInfoINTEL & operator=( VkPerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
55673     {
55674       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL const *>( &rhs );
55675       return *this;
55676     }
55677 
55678 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL55679     VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
55680     {
55681       pNext = pNext_;
55682       return *this;
55683     }
55684 
setTypeVULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL55685     VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL & setType( VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL type_ ) VULKAN_HPP_NOEXCEPT
55686     {
55687       type = type_;
55688       return *this;
55689     }
55690 
setEnableVULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL55691     VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL & setEnable( VULKAN_HPP_NAMESPACE::Bool32 enable_ ) VULKAN_HPP_NOEXCEPT
55692     {
55693       enable = enable_;
55694       return *this;
55695     }
55696 
setParameterVULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL55697     VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL & setParameter( uint64_t parameter_ ) VULKAN_HPP_NOEXCEPT
55698     {
55699       parameter = parameter_;
55700       return *this;
55701     }
55702 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
55703 
operator VkPerformanceOverrideInfoINTEL const&VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL55704     operator VkPerformanceOverrideInfoINTEL const &() const VULKAN_HPP_NOEXCEPT
55705     {
55706       return *reinterpret_cast<const VkPerformanceOverrideInfoINTEL *>( this );
55707     }
55708 
operator VkPerformanceOverrideInfoINTEL&VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL55709     operator VkPerformanceOverrideInfoINTEL &() VULKAN_HPP_NOEXCEPT
55710     {
55711       return *reinterpret_cast<VkPerformanceOverrideInfoINTEL *>( this );
55712     }
55713 
55714 #if defined( VULKAN_HPP_USE_REFLECT )
55715 #  if 14 <= VULKAN_HPP_CPP_VERSION
55716     auto
55717 #  else
55718     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
55719                const void * const &,
55720                VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL const &,
55721                VULKAN_HPP_NAMESPACE::Bool32 const &,
55722                uint64_t const &>
55723 #  endif
reflectVULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL55724       reflect() const VULKAN_HPP_NOEXCEPT
55725     {
55726       return std::tie( sType, pNext, type, enable, parameter );
55727     }
55728 #endif
55729 
55730 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55731     auto operator<=>( PerformanceOverrideInfoINTEL const & ) const = default;
55732 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL55733     bool operator==( PerformanceOverrideInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
55734     {
55735 #  if defined( VULKAN_HPP_USE_REFLECT )
55736       return this->reflect() == rhs.reflect();
55737 #  else
55738       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ) && ( enable == rhs.enable ) && ( parameter == rhs.parameter );
55739 #  endif
55740     }
55741 
operator !=VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL55742     bool operator!=( PerformanceOverrideInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
55743     {
55744       return !operator==( rhs );
55745     }
55746 #endif
55747 
55748   public:
55749     VULKAN_HPP_NAMESPACE::StructureType                sType     = StructureType::ePerformanceOverrideInfoINTEL;
55750     const void *                                       pNext     = {};
55751     VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL type      = VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL::eNullHardware;
55752     VULKAN_HPP_NAMESPACE::Bool32                       enable    = {};
55753     uint64_t                                           parameter = {};
55754   };
55755 
55756   template <>
55757   struct CppType<StructureType, StructureType::ePerformanceOverrideInfoINTEL>
55758   {
55759     using Type = PerformanceOverrideInfoINTEL;
55760   };
55761 
55762   struct PerformanceQuerySubmitInfoKHR
55763   {
55764     using NativeType = VkPerformanceQuerySubmitInfoKHR;
55765 
55766     static const bool                                  allowDuplicate = false;
55767     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePerformanceQuerySubmitInfoKHR;
55768 
55769 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PerformanceQuerySubmitInfoKHRVULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR55770     VULKAN_HPP_CONSTEXPR PerformanceQuerySubmitInfoKHR( uint32_t counterPassIndex_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
55771       : pNext{ pNext_ }
55772       , counterPassIndex{ counterPassIndex_ }
55773     {
55774     }
55775 
55776     VULKAN_HPP_CONSTEXPR PerformanceQuerySubmitInfoKHR( PerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55777 
PerformanceQuerySubmitInfoKHRVULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR55778     PerformanceQuerySubmitInfoKHR( VkPerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
55779       : PerformanceQuerySubmitInfoKHR( *reinterpret_cast<PerformanceQuerySubmitInfoKHR const *>( &rhs ) )
55780     {
55781     }
55782 
55783     PerformanceQuerySubmitInfoKHR & operator=( PerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55784 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55785 
operator =VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR55786     PerformanceQuerySubmitInfoKHR & operator=( VkPerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
55787     {
55788       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR const *>( &rhs );
55789       return *this;
55790     }
55791 
55792 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR55793     VULKAN_HPP_CONSTEXPR_14 PerformanceQuerySubmitInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
55794     {
55795       pNext = pNext_;
55796       return *this;
55797     }
55798 
setCounterPassIndexVULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR55799     VULKAN_HPP_CONSTEXPR_14 PerformanceQuerySubmitInfoKHR & setCounterPassIndex( uint32_t counterPassIndex_ ) VULKAN_HPP_NOEXCEPT
55800     {
55801       counterPassIndex = counterPassIndex_;
55802       return *this;
55803     }
55804 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
55805 
operator VkPerformanceQuerySubmitInfoKHR const&VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR55806     operator VkPerformanceQuerySubmitInfoKHR const &() const VULKAN_HPP_NOEXCEPT
55807     {
55808       return *reinterpret_cast<const VkPerformanceQuerySubmitInfoKHR *>( this );
55809     }
55810 
operator VkPerformanceQuerySubmitInfoKHR&VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR55811     operator VkPerformanceQuerySubmitInfoKHR &() VULKAN_HPP_NOEXCEPT
55812     {
55813       return *reinterpret_cast<VkPerformanceQuerySubmitInfoKHR *>( this );
55814     }
55815 
55816 #if defined( VULKAN_HPP_USE_REFLECT )
55817 #  if 14 <= VULKAN_HPP_CPP_VERSION
55818     auto
55819 #  else
55820     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
55821 #  endif
reflectVULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR55822       reflect() const VULKAN_HPP_NOEXCEPT
55823     {
55824       return std::tie( sType, pNext, counterPassIndex );
55825     }
55826 #endif
55827 
55828 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55829     auto operator<=>( PerformanceQuerySubmitInfoKHR const & ) const = default;
55830 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR55831     bool operator==( PerformanceQuerySubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55832     {
55833 #  if defined( VULKAN_HPP_USE_REFLECT )
55834       return this->reflect() == rhs.reflect();
55835 #  else
55836       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( counterPassIndex == rhs.counterPassIndex );
55837 #  endif
55838     }
55839 
operator !=VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR55840     bool operator!=( PerformanceQuerySubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
55841     {
55842       return !operator==( rhs );
55843     }
55844 #endif
55845 
55846   public:
55847     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePerformanceQuerySubmitInfoKHR;
55848     const void *                        pNext            = {};
55849     uint32_t                            counterPassIndex = {};
55850   };
55851 
55852   template <>
55853   struct CppType<StructureType, StructureType::ePerformanceQuerySubmitInfoKHR>
55854   {
55855     using Type = PerformanceQuerySubmitInfoKHR;
55856   };
55857 
55858   struct PerformanceStreamMarkerInfoINTEL
55859   {
55860     using NativeType = VkPerformanceStreamMarkerInfoINTEL;
55861 
55862     static const bool                                  allowDuplicate = false;
55863     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePerformanceStreamMarkerInfoINTEL;
55864 
55865 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PerformanceStreamMarkerInfoINTELVULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL55866     VULKAN_HPP_CONSTEXPR PerformanceStreamMarkerInfoINTEL( uint32_t marker_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
55867       : pNext{ pNext_ }
55868       , marker{ marker_ }
55869     {
55870     }
55871 
55872     VULKAN_HPP_CONSTEXPR PerformanceStreamMarkerInfoINTEL( PerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55873 
PerformanceStreamMarkerInfoINTELVULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL55874     PerformanceStreamMarkerInfoINTEL( VkPerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
55875       : PerformanceStreamMarkerInfoINTEL( *reinterpret_cast<PerformanceStreamMarkerInfoINTEL const *>( &rhs ) )
55876     {
55877     }
55878 
55879     PerformanceStreamMarkerInfoINTEL & operator=( PerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
55880 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
55881 
operator =VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL55882     PerformanceStreamMarkerInfoINTEL & operator=( VkPerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
55883     {
55884       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL const *>( &rhs );
55885       return *this;
55886     }
55887 
55888 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL55889     VULKAN_HPP_CONSTEXPR_14 PerformanceStreamMarkerInfoINTEL & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
55890     {
55891       pNext = pNext_;
55892       return *this;
55893     }
55894 
setMarkerVULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL55895     VULKAN_HPP_CONSTEXPR_14 PerformanceStreamMarkerInfoINTEL & setMarker( uint32_t marker_ ) VULKAN_HPP_NOEXCEPT
55896     {
55897       marker = marker_;
55898       return *this;
55899     }
55900 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
55901 
operator VkPerformanceStreamMarkerInfoINTEL const&VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL55902     operator VkPerformanceStreamMarkerInfoINTEL const &() const VULKAN_HPP_NOEXCEPT
55903     {
55904       return *reinterpret_cast<const VkPerformanceStreamMarkerInfoINTEL *>( this );
55905     }
55906 
operator VkPerformanceStreamMarkerInfoINTEL&VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL55907     operator VkPerformanceStreamMarkerInfoINTEL &() VULKAN_HPP_NOEXCEPT
55908     {
55909       return *reinterpret_cast<VkPerformanceStreamMarkerInfoINTEL *>( this );
55910     }
55911 
55912 #if defined( VULKAN_HPP_USE_REFLECT )
55913 #  if 14 <= VULKAN_HPP_CPP_VERSION
55914     auto
55915 #  else
55916     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
55917 #  endif
reflectVULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL55918       reflect() const VULKAN_HPP_NOEXCEPT
55919     {
55920       return std::tie( sType, pNext, marker );
55921     }
55922 #endif
55923 
55924 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
55925     auto operator<=>( PerformanceStreamMarkerInfoINTEL const & ) const = default;
55926 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL55927     bool operator==( PerformanceStreamMarkerInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
55928     {
55929 #  if defined( VULKAN_HPP_USE_REFLECT )
55930       return this->reflect() == rhs.reflect();
55931 #  else
55932       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( marker == rhs.marker );
55933 #  endif
55934     }
55935 
operator !=VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL55936     bool operator!=( PerformanceStreamMarkerInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
55937     {
55938       return !operator==( rhs );
55939     }
55940 #endif
55941 
55942   public:
55943     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::ePerformanceStreamMarkerInfoINTEL;
55944     const void *                        pNext  = {};
55945     uint32_t                            marker = {};
55946   };
55947 
55948   template <>
55949   struct CppType<StructureType, StructureType::ePerformanceStreamMarkerInfoINTEL>
55950   {
55951     using Type = PerformanceStreamMarkerInfoINTEL;
55952   };
55953 
55954   union PerformanceValueDataINTEL
55955   {
55956     using NativeType = VkPerformanceValueDataINTEL;
55957 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
55958 
PerformanceValueDataINTEL(uint32_t value32_={} )55959     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL( uint32_t value32_ = {} ) : value32( value32_ ) {}
55960 
PerformanceValueDataINTEL(uint64_t value64_)55961     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL( uint64_t value64_ ) : value64( value64_ ) {}
55962 
PerformanceValueDataINTEL(float valueFloat_)55963     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL( float valueFloat_ ) : valueFloat( valueFloat_ ) {}
55964 
PerformanceValueDataINTEL(const char * valueString_)55965     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL( const char * valueString_ ) : valueString( valueString_ ) {}
55966 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
55967 
55968 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setValue32(uint32_t value32_)55969     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValue32( uint32_t value32_ ) VULKAN_HPP_NOEXCEPT
55970     {
55971       value32 = value32_;
55972       return *this;
55973     }
55974 
setValue64(uint64_t value64_)55975     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValue64( uint64_t value64_ ) VULKAN_HPP_NOEXCEPT
55976     {
55977       value64 = value64_;
55978       return *this;
55979     }
55980 
setValueFloat(float valueFloat_)55981     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValueFloat( float valueFloat_ ) VULKAN_HPP_NOEXCEPT
55982     {
55983       valueFloat = valueFloat_;
55984       return *this;
55985     }
55986 
setValueBool(VULKAN_HPP_NAMESPACE::Bool32 valueBool_)55987     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValueBool( VULKAN_HPP_NAMESPACE::Bool32 valueBool_ ) VULKAN_HPP_NOEXCEPT
55988     {
55989       valueBool = valueBool_;
55990       return *this;
55991     }
55992 
setValueString(const char * valueString_)55993     VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValueString( const char * valueString_ ) VULKAN_HPP_NOEXCEPT
55994     {
55995       valueString = valueString_;
55996       return *this;
55997     }
55998 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
55999 
operator VkPerformanceValueDataINTEL const&() const56000     operator VkPerformanceValueDataINTEL const &() const
56001     {
56002       return *reinterpret_cast<const VkPerformanceValueDataINTEL *>( this );
56003     }
56004 
operator VkPerformanceValueDataINTEL&()56005     operator VkPerformanceValueDataINTEL &()
56006     {
56007       return *reinterpret_cast<VkPerformanceValueDataINTEL *>( this );
56008     }
56009 
56010 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
56011     uint32_t                     value32;
56012     uint64_t                     value64;
56013     float                        valueFloat;
56014     VULKAN_HPP_NAMESPACE::Bool32 valueBool;
56015     const char *                 valueString;
56016 #else
56017     uint32_t     value32;
56018     uint64_t     value64;
56019     float        valueFloat;
56020     VkBool32     valueBool;
56021     const char * valueString;
56022 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
56023   };
56024 
56025   struct PerformanceValueINTEL
56026   {
56027     using NativeType = VkPerformanceValueINTEL;
56028 
56029 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
56030     VULKAN_HPP_CONSTEXPR_14
PerformanceValueINTELVULKAN_HPP_NAMESPACE::PerformanceValueINTEL56031       PerformanceValueINTEL( VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL type_ = VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL::eUint32,
56032                              VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL data_ = {} ) VULKAN_HPP_NOEXCEPT
56033       : type{ type_ }
56034       , data{ data_ }
56035     {
56036     }
56037 
56038     VULKAN_HPP_CONSTEXPR_14 PerformanceValueINTEL( PerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56039 
PerformanceValueINTELVULKAN_HPP_NAMESPACE::PerformanceValueINTEL56040     PerformanceValueINTEL( VkPerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
56041       : PerformanceValueINTEL( *reinterpret_cast<PerformanceValueINTEL const *>( &rhs ) )
56042     {
56043     }
56044 
56045     PerformanceValueINTEL & operator=( PerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56046 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56047 
operator =VULKAN_HPP_NAMESPACE::PerformanceValueINTEL56048     PerformanceValueINTEL & operator=( VkPerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
56049     {
56050       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceValueINTEL const *>( &rhs );
56051       return *this;
56052     }
56053 
operator VkPerformanceValueINTEL const&VULKAN_HPP_NAMESPACE::PerformanceValueINTEL56054     operator VkPerformanceValueINTEL const &() const VULKAN_HPP_NOEXCEPT
56055     {
56056       return *reinterpret_cast<const VkPerformanceValueINTEL *>( this );
56057     }
56058 
operator VkPerformanceValueINTEL&VULKAN_HPP_NAMESPACE::PerformanceValueINTEL56059     operator VkPerformanceValueINTEL &() VULKAN_HPP_NOEXCEPT
56060     {
56061       return *reinterpret_cast<VkPerformanceValueINTEL *>( this );
56062     }
56063 
56064 #if defined( VULKAN_HPP_USE_REFLECT )
56065 #  if 14 <= VULKAN_HPP_CPP_VERSION
56066     auto
56067 #  else
56068     std::tuple<VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL const &, VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL const &>
56069 #  endif
reflectVULKAN_HPP_NAMESPACE::PerformanceValueINTEL56070       reflect() const VULKAN_HPP_NOEXCEPT
56071     {
56072       return std::tie( type, data );
56073     }
56074 #endif
56075 
56076   public:
56077     VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL type = VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL::eUint32;
56078     VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL data = {};
56079   };
56080 
56081   struct PhysicalDevice16BitStorageFeatures
56082   {
56083     using NativeType = VkPhysicalDevice16BitStorageFeatures;
56084 
56085     static const bool                                  allowDuplicate = false;
56086     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevice16BitStorageFeatures;
56087 
56088 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevice16BitStorageFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56089     VULKAN_HPP_CONSTEXPR PhysicalDevice16BitStorageFeatures( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_           = {},
56090                                                              VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ = {},
56091                                                              VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_              = {},
56092                                                              VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_               = {},
56093                                                              void *                       pNext_                              = nullptr ) VULKAN_HPP_NOEXCEPT
56094       : pNext{ pNext_ }
56095       , storageBuffer16BitAccess{ storageBuffer16BitAccess_ }
56096       , uniformAndStorageBuffer16BitAccess{ uniformAndStorageBuffer16BitAccess_ }
56097       , storagePushConstant16{ storagePushConstant16_ }
56098       , storageInputOutput16{ storageInputOutput16_ }
56099     {
56100     }
56101 
56102     VULKAN_HPP_CONSTEXPR PhysicalDevice16BitStorageFeatures( PhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56103 
PhysicalDevice16BitStorageFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56104     PhysicalDevice16BitStorageFeatures( VkPhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
56105       : PhysicalDevice16BitStorageFeatures( *reinterpret_cast<PhysicalDevice16BitStorageFeatures const *>( &rhs ) )
56106     {
56107     }
56108 
56109     PhysicalDevice16BitStorageFeatures & operator=( PhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56110 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56111 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56112     PhysicalDevice16BitStorageFeatures & operator=( VkPhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
56113     {
56114       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures const *>( &rhs );
56115       return *this;
56116     }
56117 
56118 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56119     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
56120     {
56121       pNext = pNext_;
56122       return *this;
56123     }
56124 
56125     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures &
setStorageBuffer16BitAccessVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56126       setStorageBuffer16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT
56127     {
56128       storageBuffer16BitAccess = storageBuffer16BitAccess_;
56129       return *this;
56130     }
56131 
56132     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures &
setUniformAndStorageBuffer16BitAccessVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56133       setUniformAndStorageBuffer16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT
56134     {
56135       uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_;
56136       return *this;
56137     }
56138 
56139     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures &
setStoragePushConstant16VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56140       setStoragePushConstant16( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_ ) VULKAN_HPP_NOEXCEPT
56141     {
56142       storagePushConstant16 = storagePushConstant16_;
56143       return *this;
56144     }
56145 
56146     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures &
setStorageInputOutput16VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56147       setStorageInputOutput16( VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_ ) VULKAN_HPP_NOEXCEPT
56148     {
56149       storageInputOutput16 = storageInputOutput16_;
56150       return *this;
56151     }
56152 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
56153 
operator VkPhysicalDevice16BitStorageFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56154     operator VkPhysicalDevice16BitStorageFeatures const &() const VULKAN_HPP_NOEXCEPT
56155     {
56156       return *reinterpret_cast<const VkPhysicalDevice16BitStorageFeatures *>( this );
56157     }
56158 
operator VkPhysicalDevice16BitStorageFeatures&VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56159     operator VkPhysicalDevice16BitStorageFeatures &() VULKAN_HPP_NOEXCEPT
56160     {
56161       return *reinterpret_cast<VkPhysicalDevice16BitStorageFeatures *>( this );
56162     }
56163 
56164 #if defined( VULKAN_HPP_USE_REFLECT )
56165 #  if 14 <= VULKAN_HPP_CPP_VERSION
56166     auto
56167 #  else
56168     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
56169                void * const &,
56170                VULKAN_HPP_NAMESPACE::Bool32 const &,
56171                VULKAN_HPP_NAMESPACE::Bool32 const &,
56172                VULKAN_HPP_NAMESPACE::Bool32 const &,
56173                VULKAN_HPP_NAMESPACE::Bool32 const &>
56174 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56175       reflect() const VULKAN_HPP_NOEXCEPT
56176     {
56177       return std::tie( sType, pNext, storageBuffer16BitAccess, uniformAndStorageBuffer16BitAccess, storagePushConstant16, storageInputOutput16 );
56178     }
56179 #endif
56180 
56181 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56182     auto operator<=>( PhysicalDevice16BitStorageFeatures const & ) const = default;
56183 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56184     bool         operator==( PhysicalDevice16BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
56185     {
56186 #  if defined( VULKAN_HPP_USE_REFLECT )
56187       return this->reflect() == rhs.reflect();
56188 #  else
56189       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess ) &&
56190              ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess ) && ( storagePushConstant16 == rhs.storagePushConstant16 ) &&
56191              ( storageInputOutput16 == rhs.storageInputOutput16 );
56192 #  endif
56193     }
56194 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures56195     bool operator!=( PhysicalDevice16BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
56196     {
56197       return !operator==( rhs );
56198     }
56199 #endif
56200 
56201   public:
56202     VULKAN_HPP_NAMESPACE::StructureType sType                              = StructureType::ePhysicalDevice16BitStorageFeatures;
56203     void *                              pNext                              = {};
56204     VULKAN_HPP_NAMESPACE::Bool32        storageBuffer16BitAccess           = {};
56205     VULKAN_HPP_NAMESPACE::Bool32        uniformAndStorageBuffer16BitAccess = {};
56206     VULKAN_HPP_NAMESPACE::Bool32        storagePushConstant16              = {};
56207     VULKAN_HPP_NAMESPACE::Bool32        storageInputOutput16               = {};
56208   };
56209 
56210   template <>
56211   struct CppType<StructureType, StructureType::ePhysicalDevice16BitStorageFeatures>
56212   {
56213     using Type = PhysicalDevice16BitStorageFeatures;
56214   };
56215 
56216   using PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures;
56217 
56218   struct PhysicalDevice4444FormatsFeaturesEXT
56219   {
56220     using NativeType = VkPhysicalDevice4444FormatsFeaturesEXT;
56221 
56222     static const bool                                  allowDuplicate = false;
56223     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevice4444FormatsFeaturesEXT;
56224 
56225 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevice4444FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56226     VULKAN_HPP_CONSTEXPR PhysicalDevice4444FormatsFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 formatA4R4G4B4_ = {},
56227                                                                VULKAN_HPP_NAMESPACE::Bool32 formatA4B4G4R4_ = {},
56228                                                                void *                       pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
56229       : pNext{ pNext_ }
56230       , formatA4R4G4B4{ formatA4R4G4B4_ }
56231       , formatA4B4G4R4{ formatA4B4G4R4_ }
56232     {
56233     }
56234 
56235     VULKAN_HPP_CONSTEXPR PhysicalDevice4444FormatsFeaturesEXT( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56236 
PhysicalDevice4444FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56237     PhysicalDevice4444FormatsFeaturesEXT( VkPhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
56238       : PhysicalDevice4444FormatsFeaturesEXT( *reinterpret_cast<PhysicalDevice4444FormatsFeaturesEXT const *>( &rhs ) )
56239     {
56240     }
56241 
56242     PhysicalDevice4444FormatsFeaturesEXT & operator=( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56243 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56244 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56245     PhysicalDevice4444FormatsFeaturesEXT & operator=( VkPhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
56246     {
56247       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT const *>( &rhs );
56248       return *this;
56249     }
56250 
56251 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56252     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
56253     {
56254       pNext = pNext_;
56255       return *this;
56256     }
56257 
setFormatA4R4G4B4VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56258     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT & setFormatA4R4G4B4( VULKAN_HPP_NAMESPACE::Bool32 formatA4R4G4B4_ ) VULKAN_HPP_NOEXCEPT
56259     {
56260       formatA4R4G4B4 = formatA4R4G4B4_;
56261       return *this;
56262     }
56263 
setFormatA4B4G4R4VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56264     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT & setFormatA4B4G4R4( VULKAN_HPP_NAMESPACE::Bool32 formatA4B4G4R4_ ) VULKAN_HPP_NOEXCEPT
56265     {
56266       formatA4B4G4R4 = formatA4B4G4R4_;
56267       return *this;
56268     }
56269 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
56270 
operator VkPhysicalDevice4444FormatsFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56271     operator VkPhysicalDevice4444FormatsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
56272     {
56273       return *reinterpret_cast<const VkPhysicalDevice4444FormatsFeaturesEXT *>( this );
56274     }
56275 
operator VkPhysicalDevice4444FormatsFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56276     operator VkPhysicalDevice4444FormatsFeaturesEXT &() VULKAN_HPP_NOEXCEPT
56277     {
56278       return *reinterpret_cast<VkPhysicalDevice4444FormatsFeaturesEXT *>( this );
56279     }
56280 
56281 #if defined( VULKAN_HPP_USE_REFLECT )
56282 #  if 14 <= VULKAN_HPP_CPP_VERSION
56283     auto
56284 #  else
56285     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
56286 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56287       reflect() const VULKAN_HPP_NOEXCEPT
56288     {
56289       return std::tie( sType, pNext, formatA4R4G4B4, formatA4B4G4R4 );
56290     }
56291 #endif
56292 
56293 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56294     auto operator<=>( PhysicalDevice4444FormatsFeaturesEXT const & ) const = default;
56295 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56296     bool operator==( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
56297     {
56298 #  if defined( VULKAN_HPP_USE_REFLECT )
56299       return this->reflect() == rhs.reflect();
56300 #  else
56301       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( formatA4R4G4B4 == rhs.formatA4R4G4B4 ) && ( formatA4B4G4R4 == rhs.formatA4B4G4R4 );
56302 #  endif
56303     }
56304 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT56305     bool operator!=( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
56306     {
56307       return !operator==( rhs );
56308     }
56309 #endif
56310 
56311   public:
56312     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDevice4444FormatsFeaturesEXT;
56313     void *                              pNext          = {};
56314     VULKAN_HPP_NAMESPACE::Bool32        formatA4R4G4B4 = {};
56315     VULKAN_HPP_NAMESPACE::Bool32        formatA4B4G4R4 = {};
56316   };
56317 
56318   template <>
56319   struct CppType<StructureType, StructureType::ePhysicalDevice4444FormatsFeaturesEXT>
56320   {
56321     using Type = PhysicalDevice4444FormatsFeaturesEXT;
56322   };
56323 
56324   struct PhysicalDevice8BitStorageFeatures
56325   {
56326     using NativeType = VkPhysicalDevice8BitStorageFeatures;
56327 
56328     static const bool                                  allowDuplicate = false;
56329     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevice8BitStorageFeatures;
56330 
56331 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevice8BitStorageFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56332     VULKAN_HPP_CONSTEXPR PhysicalDevice8BitStorageFeatures( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_           = {},
56333                                                             VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_ = {},
56334                                                             VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_              = {},
56335                                                             void *                       pNext_                             = nullptr ) VULKAN_HPP_NOEXCEPT
56336       : pNext{ pNext_ }
56337       , storageBuffer8BitAccess{ storageBuffer8BitAccess_ }
56338       , uniformAndStorageBuffer8BitAccess{ uniformAndStorageBuffer8BitAccess_ }
56339       , storagePushConstant8{ storagePushConstant8_ }
56340     {
56341     }
56342 
56343     VULKAN_HPP_CONSTEXPR PhysicalDevice8BitStorageFeatures( PhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56344 
PhysicalDevice8BitStorageFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56345     PhysicalDevice8BitStorageFeatures( VkPhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
56346       : PhysicalDevice8BitStorageFeatures( *reinterpret_cast<PhysicalDevice8BitStorageFeatures const *>( &rhs ) )
56347     {
56348     }
56349 
56350     PhysicalDevice8BitStorageFeatures & operator=( PhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56351 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56352 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56353     PhysicalDevice8BitStorageFeatures & operator=( VkPhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
56354     {
56355       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures const *>( &rhs );
56356       return *this;
56357     }
56358 
56359 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56360     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
56361     {
56362       pNext = pNext_;
56363       return *this;
56364     }
56365 
56366     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures &
setStorageBuffer8BitAccessVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56367       setStorageBuffer8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT
56368     {
56369       storageBuffer8BitAccess = storageBuffer8BitAccess_;
56370       return *this;
56371     }
56372 
56373     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures &
setUniformAndStorageBuffer8BitAccessVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56374       setUniformAndStorageBuffer8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT
56375     {
56376       uniformAndStorageBuffer8BitAccess = uniformAndStorageBuffer8BitAccess_;
56377       return *this;
56378     }
56379 
56380     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures &
setStoragePushConstant8VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56381       setStoragePushConstant8( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_ ) VULKAN_HPP_NOEXCEPT
56382     {
56383       storagePushConstant8 = storagePushConstant8_;
56384       return *this;
56385     }
56386 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
56387 
operator VkPhysicalDevice8BitStorageFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56388     operator VkPhysicalDevice8BitStorageFeatures const &() const VULKAN_HPP_NOEXCEPT
56389     {
56390       return *reinterpret_cast<const VkPhysicalDevice8BitStorageFeatures *>( this );
56391     }
56392 
operator VkPhysicalDevice8BitStorageFeatures&VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56393     operator VkPhysicalDevice8BitStorageFeatures &() VULKAN_HPP_NOEXCEPT
56394     {
56395       return *reinterpret_cast<VkPhysicalDevice8BitStorageFeatures *>( this );
56396     }
56397 
56398 #if defined( VULKAN_HPP_USE_REFLECT )
56399 #  if 14 <= VULKAN_HPP_CPP_VERSION
56400     auto
56401 #  else
56402     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
56403                void * const &,
56404                VULKAN_HPP_NAMESPACE::Bool32 const &,
56405                VULKAN_HPP_NAMESPACE::Bool32 const &,
56406                VULKAN_HPP_NAMESPACE::Bool32 const &>
56407 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56408       reflect() const VULKAN_HPP_NOEXCEPT
56409     {
56410       return std::tie( sType, pNext, storageBuffer8BitAccess, uniformAndStorageBuffer8BitAccess, storagePushConstant8 );
56411     }
56412 #endif
56413 
56414 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56415     auto operator<=>( PhysicalDevice8BitStorageFeatures const & ) const = default;
56416 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56417     bool operator==( PhysicalDevice8BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
56418     {
56419 #  if defined( VULKAN_HPP_USE_REFLECT )
56420       return this->reflect() == rhs.reflect();
56421 #  else
56422       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( storageBuffer8BitAccess == rhs.storageBuffer8BitAccess ) &&
56423              ( uniformAndStorageBuffer8BitAccess == rhs.uniformAndStorageBuffer8BitAccess ) && ( storagePushConstant8 == rhs.storagePushConstant8 );
56424 #  endif
56425     }
56426 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures56427     bool operator!=( PhysicalDevice8BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
56428     {
56429       return !operator==( rhs );
56430     }
56431 #endif
56432 
56433   public:
56434     VULKAN_HPP_NAMESPACE::StructureType sType                             = StructureType::ePhysicalDevice8BitStorageFeatures;
56435     void *                              pNext                             = {};
56436     VULKAN_HPP_NAMESPACE::Bool32        storageBuffer8BitAccess           = {};
56437     VULKAN_HPP_NAMESPACE::Bool32        uniformAndStorageBuffer8BitAccess = {};
56438     VULKAN_HPP_NAMESPACE::Bool32        storagePushConstant8              = {};
56439   };
56440 
56441   template <>
56442   struct CppType<StructureType, StructureType::ePhysicalDevice8BitStorageFeatures>
56443   {
56444     using Type = PhysicalDevice8BitStorageFeatures;
56445   };
56446 
56447   using PhysicalDevice8BitStorageFeaturesKHR = PhysicalDevice8BitStorageFeatures;
56448 
56449   struct PhysicalDeviceASTCDecodeFeaturesEXT
56450   {
56451     using NativeType = VkPhysicalDeviceASTCDecodeFeaturesEXT;
56452 
56453     static const bool                                  allowDuplicate = false;
56454     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT;
56455 
56456 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceASTCDecodeFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT56457     VULKAN_HPP_CONSTEXPR PhysicalDeviceASTCDecodeFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 decodeModeSharedExponent_ = {},
56458                                                               void *                       pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
56459       : pNext{ pNext_ }
56460       , decodeModeSharedExponent{ decodeModeSharedExponent_ }
56461     {
56462     }
56463 
56464     VULKAN_HPP_CONSTEXPR PhysicalDeviceASTCDecodeFeaturesEXT( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56465 
PhysicalDeviceASTCDecodeFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT56466     PhysicalDeviceASTCDecodeFeaturesEXT( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
56467       : PhysicalDeviceASTCDecodeFeaturesEXT( *reinterpret_cast<PhysicalDeviceASTCDecodeFeaturesEXT const *>( &rhs ) )
56468     {
56469     }
56470 
56471     PhysicalDeviceASTCDecodeFeaturesEXT & operator=( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56472 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56473 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT56474     PhysicalDeviceASTCDecodeFeaturesEXT & operator=( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
56475     {
56476       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT const *>( &rhs );
56477       return *this;
56478     }
56479 
56480 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT56481     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceASTCDecodeFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
56482     {
56483       pNext = pNext_;
56484       return *this;
56485     }
56486 
56487     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceASTCDecodeFeaturesEXT &
setDecodeModeSharedExponentVULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT56488       setDecodeModeSharedExponent( VULKAN_HPP_NAMESPACE::Bool32 decodeModeSharedExponent_ ) VULKAN_HPP_NOEXCEPT
56489     {
56490       decodeModeSharedExponent = decodeModeSharedExponent_;
56491       return *this;
56492     }
56493 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
56494 
operator VkPhysicalDeviceASTCDecodeFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT56495     operator VkPhysicalDeviceASTCDecodeFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
56496     {
56497       return *reinterpret_cast<const VkPhysicalDeviceASTCDecodeFeaturesEXT *>( this );
56498     }
56499 
operator VkPhysicalDeviceASTCDecodeFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT56500     operator VkPhysicalDeviceASTCDecodeFeaturesEXT &() VULKAN_HPP_NOEXCEPT
56501     {
56502       return *reinterpret_cast<VkPhysicalDeviceASTCDecodeFeaturesEXT *>( this );
56503     }
56504 
56505 #if defined( VULKAN_HPP_USE_REFLECT )
56506 #  if 14 <= VULKAN_HPP_CPP_VERSION
56507     auto
56508 #  else
56509     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
56510 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT56511       reflect() const VULKAN_HPP_NOEXCEPT
56512     {
56513       return std::tie( sType, pNext, decodeModeSharedExponent );
56514     }
56515 #endif
56516 
56517 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56518     auto operator<=>( PhysicalDeviceASTCDecodeFeaturesEXT const & ) const = default;
56519 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT56520     bool operator==( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
56521     {
56522 #  if defined( VULKAN_HPP_USE_REFLECT )
56523       return this->reflect() == rhs.reflect();
56524 #  else
56525       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( decodeModeSharedExponent == rhs.decodeModeSharedExponent );
56526 #  endif
56527     }
56528 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT56529     bool operator!=( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
56530     {
56531       return !operator==( rhs );
56532     }
56533 #endif
56534 
56535   public:
56536     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT;
56537     void *                              pNext                    = {};
56538     VULKAN_HPP_NAMESPACE::Bool32        decodeModeSharedExponent = {};
56539   };
56540 
56541   template <>
56542   struct CppType<StructureType, StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT>
56543   {
56544     using Type = PhysicalDeviceASTCDecodeFeaturesEXT;
56545   };
56546 
56547   struct PhysicalDeviceAccelerationStructureFeaturesKHR
56548   {
56549     using NativeType = VkPhysicalDeviceAccelerationStructureFeaturesKHR;
56550 
56551     static const bool                                  allowDuplicate = false;
56552     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceAccelerationStructureFeaturesKHR;
56553 
56554 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
56555     VULKAN_HPP_CONSTEXPR
PhysicalDeviceAccelerationStructureFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56556       PhysicalDeviceAccelerationStructureFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 accelerationStructure_                                 = {},
56557                                                       VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureCaptureReplay_                    = {},
56558                                                       VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureIndirectBuild_                    = {},
56559                                                       VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureHostCommands_                     = {},
56560                                                       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingAccelerationStructureUpdateAfterBind_ = {},
56561                                                       void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
56562       : pNext{ pNext_ }
56563       , accelerationStructure{ accelerationStructure_ }
56564       , accelerationStructureCaptureReplay{ accelerationStructureCaptureReplay_ }
56565       , accelerationStructureIndirectBuild{ accelerationStructureIndirectBuild_ }
56566       , accelerationStructureHostCommands{ accelerationStructureHostCommands_ }
56567       , descriptorBindingAccelerationStructureUpdateAfterBind{ descriptorBindingAccelerationStructureUpdateAfterBind_ }
56568     {
56569     }
56570 
56571     VULKAN_HPP_CONSTEXPR
56572       PhysicalDeviceAccelerationStructureFeaturesKHR( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56573 
PhysicalDeviceAccelerationStructureFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56574     PhysicalDeviceAccelerationStructureFeaturesKHR( VkPhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
56575       : PhysicalDeviceAccelerationStructureFeaturesKHR( *reinterpret_cast<PhysicalDeviceAccelerationStructureFeaturesKHR const *>( &rhs ) )
56576     {
56577     }
56578 
56579     PhysicalDeviceAccelerationStructureFeaturesKHR & operator=( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56580 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56581 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56582     PhysicalDeviceAccelerationStructureFeaturesKHR & operator=( VkPhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
56583     {
56584       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR const *>( &rhs );
56585       return *this;
56586     }
56587 
56588 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56589     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
56590     {
56591       pNext = pNext_;
56592       return *this;
56593     }
56594 
56595     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR &
setAccelerationStructureVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56596       setAccelerationStructure( VULKAN_HPP_NAMESPACE::Bool32 accelerationStructure_ ) VULKAN_HPP_NOEXCEPT
56597     {
56598       accelerationStructure = accelerationStructure_;
56599       return *this;
56600     }
56601 
56602     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR &
setAccelerationStructureCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56603       setAccelerationStructureCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
56604     {
56605       accelerationStructureCaptureReplay = accelerationStructureCaptureReplay_;
56606       return *this;
56607     }
56608 
56609     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR &
setAccelerationStructureIndirectBuildVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56610       setAccelerationStructureIndirectBuild( VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureIndirectBuild_ ) VULKAN_HPP_NOEXCEPT
56611     {
56612       accelerationStructureIndirectBuild = accelerationStructureIndirectBuild_;
56613       return *this;
56614     }
56615 
56616     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR &
setAccelerationStructureHostCommandsVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56617       setAccelerationStructureHostCommands( VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureHostCommands_ ) VULKAN_HPP_NOEXCEPT
56618     {
56619       accelerationStructureHostCommands = accelerationStructureHostCommands_;
56620       return *this;
56621     }
56622 
setDescriptorBindingAccelerationStructureUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56623     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR & setDescriptorBindingAccelerationStructureUpdateAfterBind(
56624       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingAccelerationStructureUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
56625     {
56626       descriptorBindingAccelerationStructureUpdateAfterBind = descriptorBindingAccelerationStructureUpdateAfterBind_;
56627       return *this;
56628     }
56629 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
56630 
operator VkPhysicalDeviceAccelerationStructureFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56631     operator VkPhysicalDeviceAccelerationStructureFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
56632     {
56633       return *reinterpret_cast<const VkPhysicalDeviceAccelerationStructureFeaturesKHR *>( this );
56634     }
56635 
operator VkPhysicalDeviceAccelerationStructureFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56636     operator VkPhysicalDeviceAccelerationStructureFeaturesKHR &() VULKAN_HPP_NOEXCEPT
56637     {
56638       return *reinterpret_cast<VkPhysicalDeviceAccelerationStructureFeaturesKHR *>( this );
56639     }
56640 
56641 #if defined( VULKAN_HPP_USE_REFLECT )
56642 #  if 14 <= VULKAN_HPP_CPP_VERSION
56643     auto
56644 #  else
56645     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
56646                void * const &,
56647                VULKAN_HPP_NAMESPACE::Bool32 const &,
56648                VULKAN_HPP_NAMESPACE::Bool32 const &,
56649                VULKAN_HPP_NAMESPACE::Bool32 const &,
56650                VULKAN_HPP_NAMESPACE::Bool32 const &,
56651                VULKAN_HPP_NAMESPACE::Bool32 const &>
56652 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56653       reflect() const VULKAN_HPP_NOEXCEPT
56654     {
56655       return std::tie( sType,
56656                        pNext,
56657                        accelerationStructure,
56658                        accelerationStructureCaptureReplay,
56659                        accelerationStructureIndirectBuild,
56660                        accelerationStructureHostCommands,
56661                        descriptorBindingAccelerationStructureUpdateAfterBind );
56662     }
56663 #endif
56664 
56665 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56666     auto operator<=>( PhysicalDeviceAccelerationStructureFeaturesKHR const & ) const = default;
56667 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56668     bool operator==( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
56669     {
56670 #  if defined( VULKAN_HPP_USE_REFLECT )
56671       return this->reflect() == rhs.reflect();
56672 #  else
56673       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructure == rhs.accelerationStructure ) &&
56674              ( accelerationStructureCaptureReplay == rhs.accelerationStructureCaptureReplay ) &&
56675              ( accelerationStructureIndirectBuild == rhs.accelerationStructureIndirectBuild ) &&
56676              ( accelerationStructureHostCommands == rhs.accelerationStructureHostCommands ) &&
56677              ( descriptorBindingAccelerationStructureUpdateAfterBind == rhs.descriptorBindingAccelerationStructureUpdateAfterBind );
56678 #  endif
56679     }
56680 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR56681     bool operator!=( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
56682     {
56683       return !operator==( rhs );
56684     }
56685 #endif
56686 
56687   public:
56688     VULKAN_HPP_NAMESPACE::StructureType sType                                                 = StructureType::ePhysicalDeviceAccelerationStructureFeaturesKHR;
56689     void *                              pNext                                                 = {};
56690     VULKAN_HPP_NAMESPACE::Bool32        accelerationStructure                                 = {};
56691     VULKAN_HPP_NAMESPACE::Bool32        accelerationStructureCaptureReplay                    = {};
56692     VULKAN_HPP_NAMESPACE::Bool32        accelerationStructureIndirectBuild                    = {};
56693     VULKAN_HPP_NAMESPACE::Bool32        accelerationStructureHostCommands                     = {};
56694     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingAccelerationStructureUpdateAfterBind = {};
56695   };
56696 
56697   template <>
56698   struct CppType<StructureType, StructureType::ePhysicalDeviceAccelerationStructureFeaturesKHR>
56699   {
56700     using Type = PhysicalDeviceAccelerationStructureFeaturesKHR;
56701   };
56702 
56703   struct PhysicalDeviceAccelerationStructurePropertiesKHR
56704   {
56705     using NativeType = VkPhysicalDeviceAccelerationStructurePropertiesKHR;
56706 
56707     static const bool                                  allowDuplicate = false;
56708     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceAccelerationStructurePropertiesKHR;
56709 
56710 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceAccelerationStructurePropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR56711     VULKAN_HPP_CONSTEXPR PhysicalDeviceAccelerationStructurePropertiesKHR( uint64_t maxGeometryCount_                                           = {},
56712                                                                            uint64_t maxInstanceCount_                                           = {},
56713                                                                            uint64_t maxPrimitiveCount_                                          = {},
56714                                                                            uint32_t maxPerStageDescriptorAccelerationStructures_                = {},
56715                                                                            uint32_t maxPerStageDescriptorUpdateAfterBindAccelerationStructures_ = {},
56716                                                                            uint32_t maxDescriptorSetAccelerationStructures_                     = {},
56717                                                                            uint32_t maxDescriptorSetUpdateAfterBindAccelerationStructures_      = {},
56718                                                                            uint32_t minAccelerationStructureScratchOffsetAlignment_             = {},
56719                                                                            void *   pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
56720       : pNext{ pNext_ }
56721       , maxGeometryCount{ maxGeometryCount_ }
56722       , maxInstanceCount{ maxInstanceCount_ }
56723       , maxPrimitiveCount{ maxPrimitiveCount_ }
56724       , maxPerStageDescriptorAccelerationStructures{ maxPerStageDescriptorAccelerationStructures_ }
56725       , maxPerStageDescriptorUpdateAfterBindAccelerationStructures{ maxPerStageDescriptorUpdateAfterBindAccelerationStructures_ }
56726       , maxDescriptorSetAccelerationStructures{ maxDescriptorSetAccelerationStructures_ }
56727       , maxDescriptorSetUpdateAfterBindAccelerationStructures{ maxDescriptorSetUpdateAfterBindAccelerationStructures_ }
56728       , minAccelerationStructureScratchOffsetAlignment{ minAccelerationStructureScratchOffsetAlignment_ }
56729     {
56730     }
56731 
56732     VULKAN_HPP_CONSTEXPR
56733       PhysicalDeviceAccelerationStructurePropertiesKHR( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56734 
PhysicalDeviceAccelerationStructurePropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR56735     PhysicalDeviceAccelerationStructurePropertiesKHR( VkPhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
56736       : PhysicalDeviceAccelerationStructurePropertiesKHR( *reinterpret_cast<PhysicalDeviceAccelerationStructurePropertiesKHR const *>( &rhs ) )
56737     {
56738     }
56739 
56740     PhysicalDeviceAccelerationStructurePropertiesKHR & operator=( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56741 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56742 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR56743     PhysicalDeviceAccelerationStructurePropertiesKHR & operator=( VkPhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
56744     {
56745       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR const *>( &rhs );
56746       return *this;
56747     }
56748 
operator VkPhysicalDeviceAccelerationStructurePropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR56749     operator VkPhysicalDeviceAccelerationStructurePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
56750     {
56751       return *reinterpret_cast<const VkPhysicalDeviceAccelerationStructurePropertiesKHR *>( this );
56752     }
56753 
operator VkPhysicalDeviceAccelerationStructurePropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR56754     operator VkPhysicalDeviceAccelerationStructurePropertiesKHR &() VULKAN_HPP_NOEXCEPT
56755     {
56756       return *reinterpret_cast<VkPhysicalDeviceAccelerationStructurePropertiesKHR *>( this );
56757     }
56758 
56759 #if defined( VULKAN_HPP_USE_REFLECT )
56760 #  if 14 <= VULKAN_HPP_CPP_VERSION
56761     auto
56762 #  else
56763     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
56764                void * const &,
56765                uint64_t const &,
56766                uint64_t const &,
56767                uint64_t const &,
56768                uint32_t const &,
56769                uint32_t const &,
56770                uint32_t const &,
56771                uint32_t const &,
56772                uint32_t const &>
56773 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR56774       reflect() const VULKAN_HPP_NOEXCEPT
56775     {
56776       return std::tie( sType,
56777                        pNext,
56778                        maxGeometryCount,
56779                        maxInstanceCount,
56780                        maxPrimitiveCount,
56781                        maxPerStageDescriptorAccelerationStructures,
56782                        maxPerStageDescriptorUpdateAfterBindAccelerationStructures,
56783                        maxDescriptorSetAccelerationStructures,
56784                        maxDescriptorSetUpdateAfterBindAccelerationStructures,
56785                        minAccelerationStructureScratchOffsetAlignment );
56786     }
56787 #endif
56788 
56789 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56790     auto operator<=>( PhysicalDeviceAccelerationStructurePropertiesKHR const & ) const = default;
56791 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR56792     bool operator==( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
56793     {
56794 #  if defined( VULKAN_HPP_USE_REFLECT )
56795       return this->reflect() == rhs.reflect();
56796 #  else
56797       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxGeometryCount == rhs.maxGeometryCount ) && ( maxInstanceCount == rhs.maxInstanceCount ) &&
56798              ( maxPrimitiveCount == rhs.maxPrimitiveCount ) &&
56799              ( maxPerStageDescriptorAccelerationStructures == rhs.maxPerStageDescriptorAccelerationStructures ) &&
56800              ( maxPerStageDescriptorUpdateAfterBindAccelerationStructures == rhs.maxPerStageDescriptorUpdateAfterBindAccelerationStructures ) &&
56801              ( maxDescriptorSetAccelerationStructures == rhs.maxDescriptorSetAccelerationStructures ) &&
56802              ( maxDescriptorSetUpdateAfterBindAccelerationStructures == rhs.maxDescriptorSetUpdateAfterBindAccelerationStructures ) &&
56803              ( minAccelerationStructureScratchOffsetAlignment == rhs.minAccelerationStructureScratchOffsetAlignment );
56804 #  endif
56805     }
56806 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR56807     bool operator!=( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
56808     {
56809       return !operator==( rhs );
56810     }
56811 #endif
56812 
56813   public:
56814     VULKAN_HPP_NAMESPACE::StructureType sType                                       = StructureType::ePhysicalDeviceAccelerationStructurePropertiesKHR;
56815     void *                              pNext                                       = {};
56816     uint64_t                            maxGeometryCount                            = {};
56817     uint64_t                            maxInstanceCount                            = {};
56818     uint64_t                            maxPrimitiveCount                           = {};
56819     uint32_t                            maxPerStageDescriptorAccelerationStructures = {};
56820     uint32_t                            maxPerStageDescriptorUpdateAfterBindAccelerationStructures = {};
56821     uint32_t                            maxDescriptorSetAccelerationStructures                     = {};
56822     uint32_t                            maxDescriptorSetUpdateAfterBindAccelerationStructures      = {};
56823     uint32_t                            minAccelerationStructureScratchOffsetAlignment             = {};
56824   };
56825 
56826   template <>
56827   struct CppType<StructureType, StructureType::ePhysicalDeviceAccelerationStructurePropertiesKHR>
56828   {
56829     using Type = PhysicalDeviceAccelerationStructurePropertiesKHR;
56830   };
56831 
56832   struct PhysicalDeviceAddressBindingReportFeaturesEXT
56833   {
56834     using NativeType = VkPhysicalDeviceAddressBindingReportFeaturesEXT;
56835 
56836     static const bool                                  allowDuplicate = false;
56837     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceAddressBindingReportFeaturesEXT;
56838 
56839 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceAddressBindingReportFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT56840     VULKAN_HPP_CONSTEXPR PhysicalDeviceAddressBindingReportFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 reportAddressBinding_ = {},
56841                                                                         void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
56842       : pNext{ pNext_ }
56843       , reportAddressBinding{ reportAddressBinding_ }
56844     {
56845     }
56846 
56847     VULKAN_HPP_CONSTEXPR
56848       PhysicalDeviceAddressBindingReportFeaturesEXT( PhysicalDeviceAddressBindingReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56849 
PhysicalDeviceAddressBindingReportFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT56850     PhysicalDeviceAddressBindingReportFeaturesEXT( VkPhysicalDeviceAddressBindingReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
56851       : PhysicalDeviceAddressBindingReportFeaturesEXT( *reinterpret_cast<PhysicalDeviceAddressBindingReportFeaturesEXT const *>( &rhs ) )
56852     {
56853     }
56854 
56855     PhysicalDeviceAddressBindingReportFeaturesEXT & operator=( PhysicalDeviceAddressBindingReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56856 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56857 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT56858     PhysicalDeviceAddressBindingReportFeaturesEXT & operator=( VkPhysicalDeviceAddressBindingReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
56859     {
56860       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT const *>( &rhs );
56861       return *this;
56862     }
56863 
56864 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT56865     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAddressBindingReportFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
56866     {
56867       pNext = pNext_;
56868       return *this;
56869     }
56870 
56871     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAddressBindingReportFeaturesEXT &
setReportAddressBindingVULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT56872       setReportAddressBinding( VULKAN_HPP_NAMESPACE::Bool32 reportAddressBinding_ ) VULKAN_HPP_NOEXCEPT
56873     {
56874       reportAddressBinding = reportAddressBinding_;
56875       return *this;
56876     }
56877 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
56878 
operator VkPhysicalDeviceAddressBindingReportFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT56879     operator VkPhysicalDeviceAddressBindingReportFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
56880     {
56881       return *reinterpret_cast<const VkPhysicalDeviceAddressBindingReportFeaturesEXT *>( this );
56882     }
56883 
operator VkPhysicalDeviceAddressBindingReportFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT56884     operator VkPhysicalDeviceAddressBindingReportFeaturesEXT &() VULKAN_HPP_NOEXCEPT
56885     {
56886       return *reinterpret_cast<VkPhysicalDeviceAddressBindingReportFeaturesEXT *>( this );
56887     }
56888 
56889 #if defined( VULKAN_HPP_USE_REFLECT )
56890 #  if 14 <= VULKAN_HPP_CPP_VERSION
56891     auto
56892 #  else
56893     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
56894 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT56895       reflect() const VULKAN_HPP_NOEXCEPT
56896     {
56897       return std::tie( sType, pNext, reportAddressBinding );
56898     }
56899 #endif
56900 
56901 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56902     auto operator<=>( PhysicalDeviceAddressBindingReportFeaturesEXT const & ) const = default;
56903 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT56904     bool operator==( PhysicalDeviceAddressBindingReportFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
56905     {
56906 #  if defined( VULKAN_HPP_USE_REFLECT )
56907       return this->reflect() == rhs.reflect();
56908 #  else
56909       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( reportAddressBinding == rhs.reportAddressBinding );
56910 #  endif
56911     }
56912 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT56913     bool operator!=( PhysicalDeviceAddressBindingReportFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
56914     {
56915       return !operator==( rhs );
56916     }
56917 #endif
56918 
56919   public:
56920     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceAddressBindingReportFeaturesEXT;
56921     void *                              pNext                = {};
56922     VULKAN_HPP_NAMESPACE::Bool32        reportAddressBinding = {};
56923   };
56924 
56925   template <>
56926   struct CppType<StructureType, StructureType::ePhysicalDeviceAddressBindingReportFeaturesEXT>
56927   {
56928     using Type = PhysicalDeviceAddressBindingReportFeaturesEXT;
56929   };
56930 
56931   struct PhysicalDeviceAmigoProfilingFeaturesSEC
56932   {
56933     using NativeType = VkPhysicalDeviceAmigoProfilingFeaturesSEC;
56934 
56935     static const bool                                  allowDuplicate = false;
56936     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceAmigoProfilingFeaturesSEC;
56937 
56938 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceAmigoProfilingFeaturesSECVULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC56939     VULKAN_HPP_CONSTEXPR PhysicalDeviceAmigoProfilingFeaturesSEC( VULKAN_HPP_NAMESPACE::Bool32 amigoProfiling_ = {},
56940                                                                   void *                       pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
56941       : pNext{ pNext_ }
56942       , amigoProfiling{ amigoProfiling_ }
56943     {
56944     }
56945 
56946     VULKAN_HPP_CONSTEXPR PhysicalDeviceAmigoProfilingFeaturesSEC( PhysicalDeviceAmigoProfilingFeaturesSEC const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56947 
PhysicalDeviceAmigoProfilingFeaturesSECVULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC56948     PhysicalDeviceAmigoProfilingFeaturesSEC( VkPhysicalDeviceAmigoProfilingFeaturesSEC const & rhs ) VULKAN_HPP_NOEXCEPT
56949       : PhysicalDeviceAmigoProfilingFeaturesSEC( *reinterpret_cast<PhysicalDeviceAmigoProfilingFeaturesSEC const *>( &rhs ) )
56950     {
56951     }
56952 
56953     PhysicalDeviceAmigoProfilingFeaturesSEC & operator=( PhysicalDeviceAmigoProfilingFeaturesSEC const & rhs ) VULKAN_HPP_NOEXCEPT = default;
56954 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
56955 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC56956     PhysicalDeviceAmigoProfilingFeaturesSEC & operator=( VkPhysicalDeviceAmigoProfilingFeaturesSEC const & rhs ) VULKAN_HPP_NOEXCEPT
56957     {
56958       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC const *>( &rhs );
56959       return *this;
56960     }
56961 
56962 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC56963     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAmigoProfilingFeaturesSEC & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
56964     {
56965       pNext = pNext_;
56966       return *this;
56967     }
56968 
setAmigoProfilingVULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC56969     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAmigoProfilingFeaturesSEC & setAmigoProfiling( VULKAN_HPP_NAMESPACE::Bool32 amigoProfiling_ ) VULKAN_HPP_NOEXCEPT
56970     {
56971       amigoProfiling = amigoProfiling_;
56972       return *this;
56973     }
56974 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
56975 
operator VkPhysicalDeviceAmigoProfilingFeaturesSEC const&VULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC56976     operator VkPhysicalDeviceAmigoProfilingFeaturesSEC const &() const VULKAN_HPP_NOEXCEPT
56977     {
56978       return *reinterpret_cast<const VkPhysicalDeviceAmigoProfilingFeaturesSEC *>( this );
56979     }
56980 
operator VkPhysicalDeviceAmigoProfilingFeaturesSEC&VULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC56981     operator VkPhysicalDeviceAmigoProfilingFeaturesSEC &() VULKAN_HPP_NOEXCEPT
56982     {
56983       return *reinterpret_cast<VkPhysicalDeviceAmigoProfilingFeaturesSEC *>( this );
56984     }
56985 
56986 #if defined( VULKAN_HPP_USE_REFLECT )
56987 #  if 14 <= VULKAN_HPP_CPP_VERSION
56988     auto
56989 #  else
56990     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
56991 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC56992       reflect() const VULKAN_HPP_NOEXCEPT
56993     {
56994       return std::tie( sType, pNext, amigoProfiling );
56995     }
56996 #endif
56997 
56998 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
56999     auto operator<=>( PhysicalDeviceAmigoProfilingFeaturesSEC const & ) const = default;
57000 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC57001     bool operator==( PhysicalDeviceAmigoProfilingFeaturesSEC const & rhs ) const VULKAN_HPP_NOEXCEPT
57002     {
57003 #  if defined( VULKAN_HPP_USE_REFLECT )
57004       return this->reflect() == rhs.reflect();
57005 #  else
57006       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( amigoProfiling == rhs.amigoProfiling );
57007 #  endif
57008     }
57009 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC57010     bool operator!=( PhysicalDeviceAmigoProfilingFeaturesSEC const & rhs ) const VULKAN_HPP_NOEXCEPT
57011     {
57012       return !operator==( rhs );
57013     }
57014 #endif
57015 
57016   public:
57017     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceAmigoProfilingFeaturesSEC;
57018     void *                              pNext          = {};
57019     VULKAN_HPP_NAMESPACE::Bool32        amigoProfiling = {};
57020   };
57021 
57022   template <>
57023   struct CppType<StructureType, StructureType::ePhysicalDeviceAmigoProfilingFeaturesSEC>
57024   {
57025     using Type = PhysicalDeviceAmigoProfilingFeaturesSEC;
57026   };
57027 
57028   struct PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT
57029   {
57030     using NativeType = VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT;
57031 
57032     static const bool                                  allowDuplicate = false;
57033     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT;
57034 
57035 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT57036     VULKAN_HPP_CONSTEXPR PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 attachmentFeedbackLoopDynamicState_ = {},
57037                                                                                       void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
57038       : pNext{ pNext_ }
57039       , attachmentFeedbackLoopDynamicState{ attachmentFeedbackLoopDynamicState_ }
57040     {
57041     }
57042 
57043     VULKAN_HPP_CONSTEXPR PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT( PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & rhs )
57044       VULKAN_HPP_NOEXCEPT = default;
57045 
PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT57046     PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT( VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57047       : PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT(
57048           *reinterpret_cast<PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const *>( &rhs ) )
57049     {
57050     }
57051 
57052     PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT &
57053       operator=( PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57054 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57055 
57056     PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT57057       operator=( VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57058     {
57059       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const *>( &rhs );
57060       return *this;
57061     }
57062 
57063 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT57064     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
57065     {
57066       pNext = pNext_;
57067       return *this;
57068     }
57069 
57070     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT &
setAttachmentFeedbackLoopDynamicStateVULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT57071       setAttachmentFeedbackLoopDynamicState( VULKAN_HPP_NAMESPACE::Bool32 attachmentFeedbackLoopDynamicState_ ) VULKAN_HPP_NOEXCEPT
57072     {
57073       attachmentFeedbackLoopDynamicState = attachmentFeedbackLoopDynamicState_;
57074       return *this;
57075     }
57076 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
57077 
operator VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT57078     operator VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
57079     {
57080       return *reinterpret_cast<const VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT *>( this );
57081     }
57082 
operator VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT57083     operator VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT &() VULKAN_HPP_NOEXCEPT
57084     {
57085       return *reinterpret_cast<VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT *>( this );
57086     }
57087 
57088 #if defined( VULKAN_HPP_USE_REFLECT )
57089 #  if 14 <= VULKAN_HPP_CPP_VERSION
57090     auto
57091 #  else
57092     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
57093 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT57094       reflect() const VULKAN_HPP_NOEXCEPT
57095     {
57096       return std::tie( sType, pNext, attachmentFeedbackLoopDynamicState );
57097     }
57098 #endif
57099 
57100 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57101     auto operator<=>( PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & ) const = default;
57102 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT57103     bool operator==( PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57104     {
57105 #  if defined( VULKAN_HPP_USE_REFLECT )
57106       return this->reflect() == rhs.reflect();
57107 #  else
57108       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachmentFeedbackLoopDynamicState == rhs.attachmentFeedbackLoopDynamicState );
57109 #  endif
57110     }
57111 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT57112     bool operator!=( PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57113     {
57114       return !operator==( rhs );
57115     }
57116 #endif
57117 
57118   public:
57119     VULKAN_HPP_NAMESPACE::StructureType sType                              = StructureType::ePhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT;
57120     void *                              pNext                              = {};
57121     VULKAN_HPP_NAMESPACE::Bool32        attachmentFeedbackLoopDynamicState = {};
57122   };
57123 
57124   template <>
57125   struct CppType<StructureType, StructureType::ePhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT>
57126   {
57127     using Type = PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT;
57128   };
57129 
57130   struct PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT
57131   {
57132     using NativeType = VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT;
57133 
57134     static const bool                                  allowDuplicate = false;
57135     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT;
57136 
57137 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT57138     VULKAN_HPP_CONSTEXPR PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 attachmentFeedbackLoopLayout_ = {},
57139                                                                                 void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
57140       : pNext{ pNext_ }
57141       , attachmentFeedbackLoopLayout{ attachmentFeedbackLoopLayout_ }
57142     {
57143     }
57144 
57145     VULKAN_HPP_CONSTEXPR
57146       PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT( PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57147 
PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT57148     PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT( VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57149       : PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT( *reinterpret_cast<PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const *>( &rhs ) )
57150     {
57151     }
57152 
57153     PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT &
57154       operator=( PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57155 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57156 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT57157     PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT & operator=( VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57158     {
57159       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const *>( &rhs );
57160       return *this;
57161     }
57162 
57163 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT57164     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
57165     {
57166       pNext = pNext_;
57167       return *this;
57168     }
57169 
57170     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT &
setAttachmentFeedbackLoopLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT57171       setAttachmentFeedbackLoopLayout( VULKAN_HPP_NAMESPACE::Bool32 attachmentFeedbackLoopLayout_ ) VULKAN_HPP_NOEXCEPT
57172     {
57173       attachmentFeedbackLoopLayout = attachmentFeedbackLoopLayout_;
57174       return *this;
57175     }
57176 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
57177 
operator VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT57178     operator VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
57179     {
57180       return *reinterpret_cast<const VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT *>( this );
57181     }
57182 
operator VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT57183     operator VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT &() VULKAN_HPP_NOEXCEPT
57184     {
57185       return *reinterpret_cast<VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT *>( this );
57186     }
57187 
57188 #if defined( VULKAN_HPP_USE_REFLECT )
57189 #  if 14 <= VULKAN_HPP_CPP_VERSION
57190     auto
57191 #  else
57192     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
57193 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT57194       reflect() const VULKAN_HPP_NOEXCEPT
57195     {
57196       return std::tie( sType, pNext, attachmentFeedbackLoopLayout );
57197     }
57198 #endif
57199 
57200 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57201     auto operator<=>( PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & ) const = default;
57202 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT57203     bool operator==( PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57204     {
57205 #  if defined( VULKAN_HPP_USE_REFLECT )
57206       return this->reflect() == rhs.reflect();
57207 #  else
57208       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachmentFeedbackLoopLayout == rhs.attachmentFeedbackLoopLayout );
57209 #  endif
57210     }
57211 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT57212     bool operator!=( PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57213     {
57214       return !operator==( rhs );
57215     }
57216 #endif
57217 
57218   public:
57219     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT;
57220     void *                              pNext                        = {};
57221     VULKAN_HPP_NAMESPACE::Bool32        attachmentFeedbackLoopLayout = {};
57222   };
57223 
57224   template <>
57225   struct CppType<StructureType, StructureType::ePhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT>
57226   {
57227     using Type = PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT;
57228   };
57229 
57230   struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT
57231   {
57232     using NativeType = VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
57233 
57234     static const bool                                  allowDuplicate = false;
57235     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT;
57236 
57237 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceBlendOperationAdvancedFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT57238     VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCoherentOperations_ = {},
57239                                                                           void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
57240       : pNext{ pNext_ }
57241       , advancedBlendCoherentOperations{ advancedBlendCoherentOperations_ }
57242     {
57243     }
57244 
57245     VULKAN_HPP_CONSTEXPR
57246       PhysicalDeviceBlendOperationAdvancedFeaturesEXT( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57247 
PhysicalDeviceBlendOperationAdvancedFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT57248     PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57249       : PhysicalDeviceBlendOperationAdvancedFeaturesEXT( *reinterpret_cast<PhysicalDeviceBlendOperationAdvancedFeaturesEXT const *>( &rhs ) )
57250     {
57251     }
57252 
57253     PhysicalDeviceBlendOperationAdvancedFeaturesEXT & operator=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57254 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57255 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT57256     PhysicalDeviceBlendOperationAdvancedFeaturesEXT & operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57257     {
57258       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT const *>( &rhs );
57259       return *this;
57260     }
57261 
57262 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT57263     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBlendOperationAdvancedFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
57264     {
57265       pNext = pNext_;
57266       return *this;
57267     }
57268 
57269     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBlendOperationAdvancedFeaturesEXT &
setAdvancedBlendCoherentOperationsVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT57270       setAdvancedBlendCoherentOperations( VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCoherentOperations_ ) VULKAN_HPP_NOEXCEPT
57271     {
57272       advancedBlendCoherentOperations = advancedBlendCoherentOperations_;
57273       return *this;
57274     }
57275 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
57276 
operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT57277     operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
57278     {
57279       return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *>( this );
57280     }
57281 
operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT57282     operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT &() VULKAN_HPP_NOEXCEPT
57283     {
57284       return *reinterpret_cast<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *>( this );
57285     }
57286 
57287 #if defined( VULKAN_HPP_USE_REFLECT )
57288 #  if 14 <= VULKAN_HPP_CPP_VERSION
57289     auto
57290 #  else
57291     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
57292 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT57293       reflect() const VULKAN_HPP_NOEXCEPT
57294     {
57295       return std::tie( sType, pNext, advancedBlendCoherentOperations );
57296     }
57297 #endif
57298 
57299 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57300     auto operator<=>( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & ) const = default;
57301 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT57302     bool operator==( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57303     {
57304 #  if defined( VULKAN_HPP_USE_REFLECT )
57305       return this->reflect() == rhs.reflect();
57306 #  else
57307       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( advancedBlendCoherentOperations == rhs.advancedBlendCoherentOperations );
57308 #  endif
57309     }
57310 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT57311     bool operator!=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57312     {
57313       return !operator==( rhs );
57314     }
57315 #endif
57316 
57317   public:
57318     VULKAN_HPP_NAMESPACE::StructureType sType                           = StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT;
57319     void *                              pNext                           = {};
57320     VULKAN_HPP_NAMESPACE::Bool32        advancedBlendCoherentOperations = {};
57321   };
57322 
57323   template <>
57324   struct CppType<StructureType, StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT>
57325   {
57326     using Type = PhysicalDeviceBlendOperationAdvancedFeaturesEXT;
57327   };
57328 
57329   struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT
57330   {
57331     using NativeType = VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;
57332 
57333     static const bool                                  allowDuplicate = false;
57334     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT;
57335 
57336 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceBlendOperationAdvancedPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT57337     VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedPropertiesEXT( uint32_t                     advancedBlendMaxColorAttachments_      = {},
57338                                                                             VULKAN_HPP_NAMESPACE::Bool32 advancedBlendIndependentBlend_         = {},
57339                                                                             VULKAN_HPP_NAMESPACE::Bool32 advancedBlendNonPremultipliedSrcColor_ = {},
57340                                                                             VULKAN_HPP_NAMESPACE::Bool32 advancedBlendNonPremultipliedDstColor_ = {},
57341                                                                             VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCorrelatedOverlap_        = {},
57342                                                                             VULKAN_HPP_NAMESPACE::Bool32 advancedBlendAllOperations_            = {},
57343                                                                             void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
57344       : pNext{ pNext_ }
57345       , advancedBlendMaxColorAttachments{ advancedBlendMaxColorAttachments_ }
57346       , advancedBlendIndependentBlend{ advancedBlendIndependentBlend_ }
57347       , advancedBlendNonPremultipliedSrcColor{ advancedBlendNonPremultipliedSrcColor_ }
57348       , advancedBlendNonPremultipliedDstColor{ advancedBlendNonPremultipliedDstColor_ }
57349       , advancedBlendCorrelatedOverlap{ advancedBlendCorrelatedOverlap_ }
57350       , advancedBlendAllOperations{ advancedBlendAllOperations_ }
57351     {
57352     }
57353 
57354     VULKAN_HPP_CONSTEXPR
57355       PhysicalDeviceBlendOperationAdvancedPropertiesEXT( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57356 
PhysicalDeviceBlendOperationAdvancedPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT57357     PhysicalDeviceBlendOperationAdvancedPropertiesEXT( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57358       : PhysicalDeviceBlendOperationAdvancedPropertiesEXT( *reinterpret_cast<PhysicalDeviceBlendOperationAdvancedPropertiesEXT const *>( &rhs ) )
57359     {
57360     }
57361 
57362     PhysicalDeviceBlendOperationAdvancedPropertiesEXT &
57363       operator=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57364 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57365 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT57366     PhysicalDeviceBlendOperationAdvancedPropertiesEXT & operator=( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57367     {
57368       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT const *>( &rhs );
57369       return *this;
57370     }
57371 
operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT57372     operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
57373     {
57374       return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT *>( this );
57375     }
57376 
operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT57377     operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT &() VULKAN_HPP_NOEXCEPT
57378     {
57379       return *reinterpret_cast<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT *>( this );
57380     }
57381 
57382 #if defined( VULKAN_HPP_USE_REFLECT )
57383 #  if 14 <= VULKAN_HPP_CPP_VERSION
57384     auto
57385 #  else
57386     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
57387                void * const &,
57388                uint32_t const &,
57389                VULKAN_HPP_NAMESPACE::Bool32 const &,
57390                VULKAN_HPP_NAMESPACE::Bool32 const &,
57391                VULKAN_HPP_NAMESPACE::Bool32 const &,
57392                VULKAN_HPP_NAMESPACE::Bool32 const &,
57393                VULKAN_HPP_NAMESPACE::Bool32 const &>
57394 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT57395       reflect() const VULKAN_HPP_NOEXCEPT
57396     {
57397       return std::tie( sType,
57398                        pNext,
57399                        advancedBlendMaxColorAttachments,
57400                        advancedBlendIndependentBlend,
57401                        advancedBlendNonPremultipliedSrcColor,
57402                        advancedBlendNonPremultipliedDstColor,
57403                        advancedBlendCorrelatedOverlap,
57404                        advancedBlendAllOperations );
57405     }
57406 #endif
57407 
57408 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57409     auto operator<=>( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & ) const = default;
57410 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT57411     bool operator==( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57412     {
57413 #  if defined( VULKAN_HPP_USE_REFLECT )
57414       return this->reflect() == rhs.reflect();
57415 #  else
57416       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( advancedBlendMaxColorAttachments == rhs.advancedBlendMaxColorAttachments ) &&
57417              ( advancedBlendIndependentBlend == rhs.advancedBlendIndependentBlend ) &&
57418              ( advancedBlendNonPremultipliedSrcColor == rhs.advancedBlendNonPremultipliedSrcColor ) &&
57419              ( advancedBlendNonPremultipliedDstColor == rhs.advancedBlendNonPremultipliedDstColor ) &&
57420              ( advancedBlendCorrelatedOverlap == rhs.advancedBlendCorrelatedOverlap ) && ( advancedBlendAllOperations == rhs.advancedBlendAllOperations );
57421 #  endif
57422     }
57423 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT57424     bool operator!=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57425     {
57426       return !operator==( rhs );
57427     }
57428 #endif
57429 
57430   public:
57431     VULKAN_HPP_NAMESPACE::StructureType sType                                 = StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT;
57432     void *                              pNext                                 = {};
57433     uint32_t                            advancedBlendMaxColorAttachments      = {};
57434     VULKAN_HPP_NAMESPACE::Bool32        advancedBlendIndependentBlend         = {};
57435     VULKAN_HPP_NAMESPACE::Bool32        advancedBlendNonPremultipliedSrcColor = {};
57436     VULKAN_HPP_NAMESPACE::Bool32        advancedBlendNonPremultipliedDstColor = {};
57437     VULKAN_HPP_NAMESPACE::Bool32        advancedBlendCorrelatedOverlap        = {};
57438     VULKAN_HPP_NAMESPACE::Bool32        advancedBlendAllOperations            = {};
57439   };
57440 
57441   template <>
57442   struct CppType<StructureType, StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT>
57443   {
57444     using Type = PhysicalDeviceBlendOperationAdvancedPropertiesEXT;
57445   };
57446 
57447   struct PhysicalDeviceBorderColorSwizzleFeaturesEXT
57448   {
57449     using NativeType = VkPhysicalDeviceBorderColorSwizzleFeaturesEXT;
57450 
57451     static const bool                                  allowDuplicate = false;
57452     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceBorderColorSwizzleFeaturesEXT;
57453 
57454 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceBorderColorSwizzleFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT57455     VULKAN_HPP_CONSTEXPR PhysicalDeviceBorderColorSwizzleFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 borderColorSwizzle_          = {},
57456                                                                       VULKAN_HPP_NAMESPACE::Bool32 borderColorSwizzleFromImage_ = {},
57457                                                                       void *                       pNext_                       = nullptr ) VULKAN_HPP_NOEXCEPT
57458       : pNext{ pNext_ }
57459       , borderColorSwizzle{ borderColorSwizzle_ }
57460       , borderColorSwizzleFromImage{ borderColorSwizzleFromImage_ }
57461     {
57462     }
57463 
57464     VULKAN_HPP_CONSTEXPR PhysicalDeviceBorderColorSwizzleFeaturesEXT( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57465 
PhysicalDeviceBorderColorSwizzleFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT57466     PhysicalDeviceBorderColorSwizzleFeaturesEXT( VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57467       : PhysicalDeviceBorderColorSwizzleFeaturesEXT( *reinterpret_cast<PhysicalDeviceBorderColorSwizzleFeaturesEXT const *>( &rhs ) )
57468     {
57469     }
57470 
57471     PhysicalDeviceBorderColorSwizzleFeaturesEXT & operator=( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57472 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57473 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT57474     PhysicalDeviceBorderColorSwizzleFeaturesEXT & operator=( VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57475     {
57476       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT const *>( &rhs );
57477       return *this;
57478     }
57479 
57480 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT57481     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBorderColorSwizzleFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
57482     {
57483       pNext = pNext_;
57484       return *this;
57485     }
57486 
57487     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBorderColorSwizzleFeaturesEXT &
setBorderColorSwizzleVULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT57488       setBorderColorSwizzle( VULKAN_HPP_NAMESPACE::Bool32 borderColorSwizzle_ ) VULKAN_HPP_NOEXCEPT
57489     {
57490       borderColorSwizzle = borderColorSwizzle_;
57491       return *this;
57492     }
57493 
57494     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBorderColorSwizzleFeaturesEXT &
setBorderColorSwizzleFromImageVULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT57495       setBorderColorSwizzleFromImage( VULKAN_HPP_NAMESPACE::Bool32 borderColorSwizzleFromImage_ ) VULKAN_HPP_NOEXCEPT
57496     {
57497       borderColorSwizzleFromImage = borderColorSwizzleFromImage_;
57498       return *this;
57499     }
57500 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
57501 
operator VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT57502     operator VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
57503     {
57504       return *reinterpret_cast<const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT *>( this );
57505     }
57506 
operator VkPhysicalDeviceBorderColorSwizzleFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT57507     operator VkPhysicalDeviceBorderColorSwizzleFeaturesEXT &() VULKAN_HPP_NOEXCEPT
57508     {
57509       return *reinterpret_cast<VkPhysicalDeviceBorderColorSwizzleFeaturesEXT *>( this );
57510     }
57511 
57512 #if defined( VULKAN_HPP_USE_REFLECT )
57513 #  if 14 <= VULKAN_HPP_CPP_VERSION
57514     auto
57515 #  else
57516     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
57517 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT57518       reflect() const VULKAN_HPP_NOEXCEPT
57519     {
57520       return std::tie( sType, pNext, borderColorSwizzle, borderColorSwizzleFromImage );
57521     }
57522 #endif
57523 
57524 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57525     auto operator<=>( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & ) const = default;
57526 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT57527     bool operator==( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57528     {
57529 #  if defined( VULKAN_HPP_USE_REFLECT )
57530       return this->reflect() == rhs.reflect();
57531 #  else
57532       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( borderColorSwizzle == rhs.borderColorSwizzle ) &&
57533              ( borderColorSwizzleFromImage == rhs.borderColorSwizzleFromImage );
57534 #  endif
57535     }
57536 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT57537     bool operator!=( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57538     {
57539       return !operator==( rhs );
57540     }
57541 #endif
57542 
57543   public:
57544     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceBorderColorSwizzleFeaturesEXT;
57545     void *                              pNext                       = {};
57546     VULKAN_HPP_NAMESPACE::Bool32        borderColorSwizzle          = {};
57547     VULKAN_HPP_NAMESPACE::Bool32        borderColorSwizzleFromImage = {};
57548   };
57549 
57550   template <>
57551   struct CppType<StructureType, StructureType::ePhysicalDeviceBorderColorSwizzleFeaturesEXT>
57552   {
57553     using Type = PhysicalDeviceBorderColorSwizzleFeaturesEXT;
57554   };
57555 
57556   struct PhysicalDeviceBufferDeviceAddressFeatures
57557   {
57558     using NativeType = VkPhysicalDeviceBufferDeviceAddressFeatures;
57559 
57560     static const bool                                  allowDuplicate = false;
57561     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceBufferDeviceAddressFeatures;
57562 
57563 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceBufferDeviceAddressFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures57564     VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeatures( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_              = {},
57565                                                                     VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ = {},
57566                                                                     VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_   = {},
57567                                                                     void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
57568       : pNext{ pNext_ }
57569       , bufferDeviceAddress{ bufferDeviceAddress_ }
57570       , bufferDeviceAddressCaptureReplay{ bufferDeviceAddressCaptureReplay_ }
57571       , bufferDeviceAddressMultiDevice{ bufferDeviceAddressMultiDevice_ }
57572     {
57573     }
57574 
57575     VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeatures( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57576 
PhysicalDeviceBufferDeviceAddressFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures57577     PhysicalDeviceBufferDeviceAddressFeatures( VkPhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
57578       : PhysicalDeviceBufferDeviceAddressFeatures( *reinterpret_cast<PhysicalDeviceBufferDeviceAddressFeatures const *>( &rhs ) )
57579     {
57580     }
57581 
57582     PhysicalDeviceBufferDeviceAddressFeatures & operator=( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57583 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57584 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures57585     PhysicalDeviceBufferDeviceAddressFeatures & operator=( VkPhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
57586     {
57587       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures const *>( &rhs );
57588       return *this;
57589     }
57590 
57591 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures57592     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
57593     {
57594       pNext = pNext_;
57595       return *this;
57596     }
57597 
57598     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures &
setBufferDeviceAddressVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures57599       setBufferDeviceAddress( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ ) VULKAN_HPP_NOEXCEPT
57600     {
57601       bufferDeviceAddress = bufferDeviceAddress_;
57602       return *this;
57603     }
57604 
57605     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures &
setBufferDeviceAddressCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures57606       setBufferDeviceAddressCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
57607     {
57608       bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_;
57609       return *this;
57610     }
57611 
57612     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures &
setBufferDeviceAddressMultiDeviceVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures57613       setBufferDeviceAddressMultiDevice( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ ) VULKAN_HPP_NOEXCEPT
57614     {
57615       bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_;
57616       return *this;
57617     }
57618 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
57619 
operator VkPhysicalDeviceBufferDeviceAddressFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures57620     operator VkPhysicalDeviceBufferDeviceAddressFeatures const &() const VULKAN_HPP_NOEXCEPT
57621     {
57622       return *reinterpret_cast<const VkPhysicalDeviceBufferDeviceAddressFeatures *>( this );
57623     }
57624 
operator VkPhysicalDeviceBufferDeviceAddressFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures57625     operator VkPhysicalDeviceBufferDeviceAddressFeatures &() VULKAN_HPP_NOEXCEPT
57626     {
57627       return *reinterpret_cast<VkPhysicalDeviceBufferDeviceAddressFeatures *>( this );
57628     }
57629 
57630 #if defined( VULKAN_HPP_USE_REFLECT )
57631 #  if 14 <= VULKAN_HPP_CPP_VERSION
57632     auto
57633 #  else
57634     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
57635                void * const &,
57636                VULKAN_HPP_NAMESPACE::Bool32 const &,
57637                VULKAN_HPP_NAMESPACE::Bool32 const &,
57638                VULKAN_HPP_NAMESPACE::Bool32 const &>
57639 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures57640       reflect() const VULKAN_HPP_NOEXCEPT
57641     {
57642       return std::tie( sType, pNext, bufferDeviceAddress, bufferDeviceAddressCaptureReplay, bufferDeviceAddressMultiDevice );
57643     }
57644 #endif
57645 
57646 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57647     auto operator<=>( PhysicalDeviceBufferDeviceAddressFeatures const & ) const = default;
57648 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures57649     bool operator==( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
57650     {
57651 #  if defined( VULKAN_HPP_USE_REFLECT )
57652       return this->reflect() == rhs.reflect();
57653 #  else
57654       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( bufferDeviceAddress == rhs.bufferDeviceAddress ) &&
57655              ( bufferDeviceAddressCaptureReplay == rhs.bufferDeviceAddressCaptureReplay ) &&
57656              ( bufferDeviceAddressMultiDevice == rhs.bufferDeviceAddressMultiDevice );
57657 #  endif
57658     }
57659 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures57660     bool operator!=( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
57661     {
57662       return !operator==( rhs );
57663     }
57664 #endif
57665 
57666   public:
57667     VULKAN_HPP_NAMESPACE::StructureType sType                            = StructureType::ePhysicalDeviceBufferDeviceAddressFeatures;
57668     void *                              pNext                            = {};
57669     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddress              = {};
57670     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddressCaptureReplay = {};
57671     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddressMultiDevice   = {};
57672   };
57673 
57674   template <>
57675   struct CppType<StructureType, StructureType::ePhysicalDeviceBufferDeviceAddressFeatures>
57676   {
57677     using Type = PhysicalDeviceBufferDeviceAddressFeatures;
57678   };
57679 
57680   using PhysicalDeviceBufferDeviceAddressFeaturesKHR = PhysicalDeviceBufferDeviceAddressFeatures;
57681 
57682   struct PhysicalDeviceBufferDeviceAddressFeaturesEXT
57683   {
57684     using NativeType = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT;
57685 
57686     static const bool                                  allowDuplicate = false;
57687     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceBufferDeviceAddressFeaturesEXT;
57688 
57689 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceBufferDeviceAddressFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT57690     VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_              = {},
57691                                                                        VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ = {},
57692                                                                        VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_   = {},
57693                                                                        void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
57694       : pNext{ pNext_ }
57695       , bufferDeviceAddress{ bufferDeviceAddress_ }
57696       , bufferDeviceAddressCaptureReplay{ bufferDeviceAddressCaptureReplay_ }
57697       , bufferDeviceAddressMultiDevice{ bufferDeviceAddressMultiDevice_ }
57698     {
57699     }
57700 
57701     VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeaturesEXT( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57702 
PhysicalDeviceBufferDeviceAddressFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT57703     PhysicalDeviceBufferDeviceAddressFeaturesEXT( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57704       : PhysicalDeviceBufferDeviceAddressFeaturesEXT( *reinterpret_cast<PhysicalDeviceBufferDeviceAddressFeaturesEXT const *>( &rhs ) )
57705     {
57706     }
57707 
57708     PhysicalDeviceBufferDeviceAddressFeaturesEXT & operator=( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57709 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57710 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT57711     PhysicalDeviceBufferDeviceAddressFeaturesEXT & operator=( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
57712     {
57713       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT const *>( &rhs );
57714       return *this;
57715     }
57716 
57717 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT57718     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
57719     {
57720       pNext = pNext_;
57721       return *this;
57722     }
57723 
57724     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT &
setBufferDeviceAddressVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT57725       setBufferDeviceAddress( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ ) VULKAN_HPP_NOEXCEPT
57726     {
57727       bufferDeviceAddress = bufferDeviceAddress_;
57728       return *this;
57729     }
57730 
57731     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT &
setBufferDeviceAddressCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT57732       setBufferDeviceAddressCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
57733     {
57734       bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_;
57735       return *this;
57736     }
57737 
57738     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT &
setBufferDeviceAddressMultiDeviceVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT57739       setBufferDeviceAddressMultiDevice( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ ) VULKAN_HPP_NOEXCEPT
57740     {
57741       bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_;
57742       return *this;
57743     }
57744 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
57745 
operator VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT57746     operator VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
57747     {
57748       return *reinterpret_cast<const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *>( this );
57749     }
57750 
operator VkPhysicalDeviceBufferDeviceAddressFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT57751     operator VkPhysicalDeviceBufferDeviceAddressFeaturesEXT &() VULKAN_HPP_NOEXCEPT
57752     {
57753       return *reinterpret_cast<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *>( this );
57754     }
57755 
57756 #if defined( VULKAN_HPP_USE_REFLECT )
57757 #  if 14 <= VULKAN_HPP_CPP_VERSION
57758     auto
57759 #  else
57760     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
57761                void * const &,
57762                VULKAN_HPP_NAMESPACE::Bool32 const &,
57763                VULKAN_HPP_NAMESPACE::Bool32 const &,
57764                VULKAN_HPP_NAMESPACE::Bool32 const &>
57765 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT57766       reflect() const VULKAN_HPP_NOEXCEPT
57767     {
57768       return std::tie( sType, pNext, bufferDeviceAddress, bufferDeviceAddressCaptureReplay, bufferDeviceAddressMultiDevice );
57769     }
57770 #endif
57771 
57772 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57773     auto operator<=>( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & ) const = default;
57774 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT57775     bool operator==( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57776     {
57777 #  if defined( VULKAN_HPP_USE_REFLECT )
57778       return this->reflect() == rhs.reflect();
57779 #  else
57780       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( bufferDeviceAddress == rhs.bufferDeviceAddress ) &&
57781              ( bufferDeviceAddressCaptureReplay == rhs.bufferDeviceAddressCaptureReplay ) &&
57782              ( bufferDeviceAddressMultiDevice == rhs.bufferDeviceAddressMultiDevice );
57783 #  endif
57784     }
57785 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT57786     bool operator!=( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
57787     {
57788       return !operator==( rhs );
57789     }
57790 #endif
57791 
57792   public:
57793     VULKAN_HPP_NAMESPACE::StructureType sType                            = StructureType::ePhysicalDeviceBufferDeviceAddressFeaturesEXT;
57794     void *                              pNext                            = {};
57795     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddress              = {};
57796     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddressCaptureReplay = {};
57797     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddressMultiDevice   = {};
57798   };
57799 
57800   template <>
57801   struct CppType<StructureType, StructureType::ePhysicalDeviceBufferDeviceAddressFeaturesEXT>
57802   {
57803     using Type = PhysicalDeviceBufferDeviceAddressFeaturesEXT;
57804   };
57805 
57806   using PhysicalDeviceBufferAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT;
57807 
57808   struct PhysicalDeviceClusterCullingShaderFeaturesHUAWEI
57809   {
57810     using NativeType = VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI;
57811 
57812     static const bool                                  allowDuplicate = false;
57813     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceClusterCullingShaderFeaturesHUAWEI;
57814 
57815 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceClusterCullingShaderFeaturesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI57816     VULKAN_HPP_CONSTEXPR PhysicalDeviceClusterCullingShaderFeaturesHUAWEI( VULKAN_HPP_NAMESPACE::Bool32 clustercullingShader_          = {},
57817                                                                            VULKAN_HPP_NAMESPACE::Bool32 multiviewClusterCullingShader_ = {},
57818                                                                            void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
57819       : pNext{ pNext_ }
57820       , clustercullingShader{ clustercullingShader_ }
57821       , multiviewClusterCullingShader{ multiviewClusterCullingShader_ }
57822     {
57823     }
57824 
57825     VULKAN_HPP_CONSTEXPR
57826       PhysicalDeviceClusterCullingShaderFeaturesHUAWEI( PhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57827 
PhysicalDeviceClusterCullingShaderFeaturesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI57828     PhysicalDeviceClusterCullingShaderFeaturesHUAWEI( VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
57829       : PhysicalDeviceClusterCullingShaderFeaturesHUAWEI( *reinterpret_cast<PhysicalDeviceClusterCullingShaderFeaturesHUAWEI const *>( &rhs ) )
57830     {
57831     }
57832 
57833     PhysicalDeviceClusterCullingShaderFeaturesHUAWEI & operator=( PhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57834 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57835 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI57836     PhysicalDeviceClusterCullingShaderFeaturesHUAWEI & operator=( VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
57837     {
57838       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI const *>( &rhs );
57839       return *this;
57840     }
57841 
57842 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI57843     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderFeaturesHUAWEI & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
57844     {
57845       pNext = pNext_;
57846       return *this;
57847     }
57848 
57849     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderFeaturesHUAWEI &
setClustercullingShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI57850       setClustercullingShader( VULKAN_HPP_NAMESPACE::Bool32 clustercullingShader_ ) VULKAN_HPP_NOEXCEPT
57851     {
57852       clustercullingShader = clustercullingShader_;
57853       return *this;
57854     }
57855 
57856     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderFeaturesHUAWEI &
setMultiviewClusterCullingShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI57857       setMultiviewClusterCullingShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewClusterCullingShader_ ) VULKAN_HPP_NOEXCEPT
57858     {
57859       multiviewClusterCullingShader = multiviewClusterCullingShader_;
57860       return *this;
57861     }
57862 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
57863 
operator VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI const&VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI57864     operator VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI const &() const VULKAN_HPP_NOEXCEPT
57865     {
57866       return *reinterpret_cast<const VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI *>( this );
57867     }
57868 
operator VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI&VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI57869     operator VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI &() VULKAN_HPP_NOEXCEPT
57870     {
57871       return *reinterpret_cast<VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI *>( this );
57872     }
57873 
57874 #if defined( VULKAN_HPP_USE_REFLECT )
57875 #  if 14 <= VULKAN_HPP_CPP_VERSION
57876     auto
57877 #  else
57878     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
57879 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI57880       reflect() const VULKAN_HPP_NOEXCEPT
57881     {
57882       return std::tie( sType, pNext, clustercullingShader, multiviewClusterCullingShader );
57883     }
57884 #endif
57885 
57886 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57887     auto operator<=>( PhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & ) const = default;
57888 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI57889     bool operator==( PhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
57890     {
57891 #  if defined( VULKAN_HPP_USE_REFLECT )
57892       return this->reflect() == rhs.reflect();
57893 #  else
57894       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( clustercullingShader == rhs.clustercullingShader ) &&
57895              ( multiviewClusterCullingShader == rhs.multiviewClusterCullingShader );
57896 #  endif
57897     }
57898 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI57899     bool operator!=( PhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
57900     {
57901       return !operator==( rhs );
57902     }
57903 #endif
57904 
57905   public:
57906     VULKAN_HPP_NAMESPACE::StructureType sType                         = StructureType::ePhysicalDeviceClusterCullingShaderFeaturesHUAWEI;
57907     void *                              pNext                         = {};
57908     VULKAN_HPP_NAMESPACE::Bool32        clustercullingShader          = {};
57909     VULKAN_HPP_NAMESPACE::Bool32        multiviewClusterCullingShader = {};
57910   };
57911 
57912   template <>
57913   struct CppType<StructureType, StructureType::ePhysicalDeviceClusterCullingShaderFeaturesHUAWEI>
57914   {
57915     using Type = PhysicalDeviceClusterCullingShaderFeaturesHUAWEI;
57916   };
57917 
57918   struct PhysicalDeviceClusterCullingShaderPropertiesHUAWEI
57919   {
57920     using NativeType = VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI;
57921 
57922     static const bool                                  allowDuplicate = false;
57923     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceClusterCullingShaderPropertiesHUAWEI;
57924 
57925 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceClusterCullingShaderPropertiesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI57926     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderPropertiesHUAWEI( std::array<uint32_t, 3> const &  maxWorkGroupCount_             = {},
57927                                                                                 std::array<uint32_t, 3> const &  maxWorkGroupSize_              = {},
57928                                                                                 uint32_t                         maxOutputClusterCount_         = {},
57929                                                                                 VULKAN_HPP_NAMESPACE::DeviceSize indirectBufferOffsetAlignment_ = {},
57930                                                                                 void *                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
57931       : pNext{ pNext_ }
57932       , maxWorkGroupCount{ maxWorkGroupCount_ }
57933       , maxWorkGroupSize{ maxWorkGroupSize_ }
57934       , maxOutputClusterCount{ maxOutputClusterCount_ }
57935       , indirectBufferOffsetAlignment{ indirectBufferOffsetAlignment_ }
57936     {
57937     }
57938 
57939     VULKAN_HPP_CONSTEXPR_14
57940       PhysicalDeviceClusterCullingShaderPropertiesHUAWEI( PhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57941 
PhysicalDeviceClusterCullingShaderPropertiesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI57942     PhysicalDeviceClusterCullingShaderPropertiesHUAWEI( VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
57943       : PhysicalDeviceClusterCullingShaderPropertiesHUAWEI( *reinterpret_cast<PhysicalDeviceClusterCullingShaderPropertiesHUAWEI const *>( &rhs ) )
57944     {
57945     }
57946 
57947     PhysicalDeviceClusterCullingShaderPropertiesHUAWEI &
57948       operator=( PhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
57949 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
57950 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI57951     PhysicalDeviceClusterCullingShaderPropertiesHUAWEI & operator=( VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
57952     {
57953       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI const *>( &rhs );
57954       return *this;
57955     }
57956 
operator VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI const&VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI57957     operator VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI const &() const VULKAN_HPP_NOEXCEPT
57958     {
57959       return *reinterpret_cast<const VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI *>( this );
57960     }
57961 
operator VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI&VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI57962     operator VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI &() VULKAN_HPP_NOEXCEPT
57963     {
57964       return *reinterpret_cast<VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI *>( this );
57965     }
57966 
57967 #if defined( VULKAN_HPP_USE_REFLECT )
57968 #  if 14 <= VULKAN_HPP_CPP_VERSION
57969     auto
57970 #  else
57971     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
57972                void * const &,
57973                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
57974                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
57975                uint32_t const &,
57976                VULKAN_HPP_NAMESPACE::DeviceSize const &>
57977 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI57978       reflect() const VULKAN_HPP_NOEXCEPT
57979     {
57980       return std::tie( sType, pNext, maxWorkGroupCount, maxWorkGroupSize, maxOutputClusterCount, indirectBufferOffsetAlignment );
57981     }
57982 #endif
57983 
57984 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
57985     auto operator<=>( PhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & ) const = default;
57986 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI57987     bool operator==( PhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
57988     {
57989 #  if defined( VULKAN_HPP_USE_REFLECT )
57990       return this->reflect() == rhs.reflect();
57991 #  else
57992       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxWorkGroupCount == rhs.maxWorkGroupCount ) &&
57993              ( maxWorkGroupSize == rhs.maxWorkGroupSize ) && ( maxOutputClusterCount == rhs.maxOutputClusterCount ) &&
57994              ( indirectBufferOffsetAlignment == rhs.indirectBufferOffsetAlignment );
57995 #  endif
57996     }
57997 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI57998     bool operator!=( PhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
57999     {
58000       return !operator==( rhs );
58001     }
58002 #endif
58003 
58004   public:
58005     VULKAN_HPP_NAMESPACE::StructureType               sType                         = StructureType::ePhysicalDeviceClusterCullingShaderPropertiesHUAWEI;
58006     void *                                            pNext                         = {};
58007     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxWorkGroupCount             = {};
58008     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxWorkGroupSize              = {};
58009     uint32_t                                          maxOutputClusterCount         = {};
58010     VULKAN_HPP_NAMESPACE::DeviceSize                  indirectBufferOffsetAlignment = {};
58011   };
58012 
58013   template <>
58014   struct CppType<StructureType, StructureType::ePhysicalDeviceClusterCullingShaderPropertiesHUAWEI>
58015   {
58016     using Type = PhysicalDeviceClusterCullingShaderPropertiesHUAWEI;
58017   };
58018 
58019   struct PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI
58020   {
58021     using NativeType = VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI;
58022 
58023     static const bool                                  allowDuplicate = false;
58024     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI;
58025 
58026 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI58027     VULKAN_HPP_CONSTEXPR PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI( VULKAN_HPP_NAMESPACE::Bool32 clusterShadingRate_ = {},
58028                                                                               void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
58029       : pNext{ pNext_ }
58030       , clusterShadingRate{ clusterShadingRate_ }
58031     {
58032     }
58033 
58034     VULKAN_HPP_CONSTEXPR
58035       PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI( PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58036 
PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI58037     PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI( VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
58038       : PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI( *reinterpret_cast<PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const *>( &rhs ) )
58039     {
58040     }
58041 
58042     PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI &
58043       operator=( PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58044 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58045 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI58046     PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI & operator=( VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
58047     {
58048       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const *>( &rhs );
58049       return *this;
58050     }
58051 
58052 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI58053     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
58054     {
58055       pNext = pNext_;
58056       return *this;
58057     }
58058 
58059     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI &
setClusterShadingRateVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI58060       setClusterShadingRate( VULKAN_HPP_NAMESPACE::Bool32 clusterShadingRate_ ) VULKAN_HPP_NOEXCEPT
58061     {
58062       clusterShadingRate = clusterShadingRate_;
58063       return *this;
58064     }
58065 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
58066 
operator VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const&VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI58067     operator VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const &() const VULKAN_HPP_NOEXCEPT
58068     {
58069       return *reinterpret_cast<const VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI *>( this );
58070     }
58071 
operator VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI&VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI58072     operator VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI &() VULKAN_HPP_NOEXCEPT
58073     {
58074       return *reinterpret_cast<VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI *>( this );
58075     }
58076 
58077 #if defined( VULKAN_HPP_USE_REFLECT )
58078 #  if 14 <= VULKAN_HPP_CPP_VERSION
58079     auto
58080 #  else
58081     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
58082 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI58083       reflect() const VULKAN_HPP_NOEXCEPT
58084     {
58085       return std::tie( sType, pNext, clusterShadingRate );
58086     }
58087 #endif
58088 
58089 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58090     auto operator<=>( PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & ) const = default;
58091 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI58092     bool operator==( PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
58093     {
58094 #  if defined( VULKAN_HPP_USE_REFLECT )
58095       return this->reflect() == rhs.reflect();
58096 #  else
58097       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( clusterShadingRate == rhs.clusterShadingRate );
58098 #  endif
58099     }
58100 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI58101     bool operator!=( PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
58102     {
58103       return !operator==( rhs );
58104     }
58105 #endif
58106 
58107   public:
58108     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI;
58109     void *                              pNext              = {};
58110     VULKAN_HPP_NAMESPACE::Bool32        clusterShadingRate = {};
58111   };
58112 
58113   template <>
58114   struct CppType<StructureType, StructureType::ePhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI>
58115   {
58116     using Type = PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI;
58117   };
58118 
58119   struct PhysicalDeviceCoherentMemoryFeaturesAMD
58120   {
58121     using NativeType = VkPhysicalDeviceCoherentMemoryFeaturesAMD;
58122 
58123     static const bool                                  allowDuplicate = false;
58124     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD;
58125 
58126 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCoherentMemoryFeaturesAMDVULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD58127     VULKAN_HPP_CONSTEXPR PhysicalDeviceCoherentMemoryFeaturesAMD( VULKAN_HPP_NAMESPACE::Bool32 deviceCoherentMemory_ = {},
58128                                                                   void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
58129       : pNext{ pNext_ }
58130       , deviceCoherentMemory{ deviceCoherentMemory_ }
58131     {
58132     }
58133 
58134     VULKAN_HPP_CONSTEXPR PhysicalDeviceCoherentMemoryFeaturesAMD( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58135 
PhysicalDeviceCoherentMemoryFeaturesAMDVULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD58136     PhysicalDeviceCoherentMemoryFeaturesAMD( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
58137       : PhysicalDeviceCoherentMemoryFeaturesAMD( *reinterpret_cast<PhysicalDeviceCoherentMemoryFeaturesAMD const *>( &rhs ) )
58138     {
58139     }
58140 
58141     PhysicalDeviceCoherentMemoryFeaturesAMD & operator=( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58142 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58143 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD58144     PhysicalDeviceCoherentMemoryFeaturesAMD & operator=( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
58145     {
58146       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD const *>( &rhs );
58147       return *this;
58148     }
58149 
58150 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD58151     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoherentMemoryFeaturesAMD & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
58152     {
58153       pNext = pNext_;
58154       return *this;
58155     }
58156 
58157     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoherentMemoryFeaturesAMD &
setDeviceCoherentMemoryVULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD58158       setDeviceCoherentMemory( VULKAN_HPP_NAMESPACE::Bool32 deviceCoherentMemory_ ) VULKAN_HPP_NOEXCEPT
58159     {
58160       deviceCoherentMemory = deviceCoherentMemory_;
58161       return *this;
58162     }
58163 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
58164 
operator VkPhysicalDeviceCoherentMemoryFeaturesAMD const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD58165     operator VkPhysicalDeviceCoherentMemoryFeaturesAMD const &() const VULKAN_HPP_NOEXCEPT
58166     {
58167       return *reinterpret_cast<const VkPhysicalDeviceCoherentMemoryFeaturesAMD *>( this );
58168     }
58169 
operator VkPhysicalDeviceCoherentMemoryFeaturesAMD&VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD58170     operator VkPhysicalDeviceCoherentMemoryFeaturesAMD &() VULKAN_HPP_NOEXCEPT
58171     {
58172       return *reinterpret_cast<VkPhysicalDeviceCoherentMemoryFeaturesAMD *>( this );
58173     }
58174 
58175 #if defined( VULKAN_HPP_USE_REFLECT )
58176 #  if 14 <= VULKAN_HPP_CPP_VERSION
58177     auto
58178 #  else
58179     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
58180 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD58181       reflect() const VULKAN_HPP_NOEXCEPT
58182     {
58183       return std::tie( sType, pNext, deviceCoherentMemory );
58184     }
58185 #endif
58186 
58187 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58188     auto operator<=>( PhysicalDeviceCoherentMemoryFeaturesAMD const & ) const = default;
58189 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD58190     bool operator==( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
58191     {
58192 #  if defined( VULKAN_HPP_USE_REFLECT )
58193       return this->reflect() == rhs.reflect();
58194 #  else
58195       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceCoherentMemory == rhs.deviceCoherentMemory );
58196 #  endif
58197     }
58198 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD58199     bool operator!=( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
58200     {
58201       return !operator==( rhs );
58202     }
58203 #endif
58204 
58205   public:
58206     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD;
58207     void *                              pNext                = {};
58208     VULKAN_HPP_NAMESPACE::Bool32        deviceCoherentMemory = {};
58209   };
58210 
58211   template <>
58212   struct CppType<StructureType, StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD>
58213   {
58214     using Type = PhysicalDeviceCoherentMemoryFeaturesAMD;
58215   };
58216 
58217   struct PhysicalDeviceColorWriteEnableFeaturesEXT
58218   {
58219     using NativeType = VkPhysicalDeviceColorWriteEnableFeaturesEXT;
58220 
58221     static const bool                                  allowDuplicate = false;
58222     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceColorWriteEnableFeaturesEXT;
58223 
58224 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceColorWriteEnableFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT58225     VULKAN_HPP_CONSTEXPR PhysicalDeviceColorWriteEnableFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 colorWriteEnable_ = {},
58226                                                                     void *                       pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
58227       : pNext{ pNext_ }
58228       , colorWriteEnable{ colorWriteEnable_ }
58229     {
58230     }
58231 
58232     VULKAN_HPP_CONSTEXPR PhysicalDeviceColorWriteEnableFeaturesEXT( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58233 
PhysicalDeviceColorWriteEnableFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT58234     PhysicalDeviceColorWriteEnableFeaturesEXT( VkPhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
58235       : PhysicalDeviceColorWriteEnableFeaturesEXT( *reinterpret_cast<PhysicalDeviceColorWriteEnableFeaturesEXT const *>( &rhs ) )
58236     {
58237     }
58238 
58239     PhysicalDeviceColorWriteEnableFeaturesEXT & operator=( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58240 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58241 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT58242     PhysicalDeviceColorWriteEnableFeaturesEXT & operator=( VkPhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
58243     {
58244       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT const *>( &rhs );
58245       return *this;
58246     }
58247 
58248 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT58249     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceColorWriteEnableFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
58250     {
58251       pNext = pNext_;
58252       return *this;
58253     }
58254 
58255     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceColorWriteEnableFeaturesEXT &
setColorWriteEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT58256       setColorWriteEnable( VULKAN_HPP_NAMESPACE::Bool32 colorWriteEnable_ ) VULKAN_HPP_NOEXCEPT
58257     {
58258       colorWriteEnable = colorWriteEnable_;
58259       return *this;
58260     }
58261 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
58262 
operator VkPhysicalDeviceColorWriteEnableFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT58263     operator VkPhysicalDeviceColorWriteEnableFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
58264     {
58265       return *reinterpret_cast<const VkPhysicalDeviceColorWriteEnableFeaturesEXT *>( this );
58266     }
58267 
operator VkPhysicalDeviceColorWriteEnableFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT58268     operator VkPhysicalDeviceColorWriteEnableFeaturesEXT &() VULKAN_HPP_NOEXCEPT
58269     {
58270       return *reinterpret_cast<VkPhysicalDeviceColorWriteEnableFeaturesEXT *>( this );
58271     }
58272 
58273 #if defined( VULKAN_HPP_USE_REFLECT )
58274 #  if 14 <= VULKAN_HPP_CPP_VERSION
58275     auto
58276 #  else
58277     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
58278 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT58279       reflect() const VULKAN_HPP_NOEXCEPT
58280     {
58281       return std::tie( sType, pNext, colorWriteEnable );
58282     }
58283 #endif
58284 
58285 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58286     auto operator<=>( PhysicalDeviceColorWriteEnableFeaturesEXT const & ) const = default;
58287 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT58288     bool operator==( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
58289     {
58290 #  if defined( VULKAN_HPP_USE_REFLECT )
58291       return this->reflect() == rhs.reflect();
58292 #  else
58293       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( colorWriteEnable == rhs.colorWriteEnable );
58294 #  endif
58295     }
58296 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT58297     bool operator!=( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
58298     {
58299       return !operator==( rhs );
58300     }
58301 #endif
58302 
58303   public:
58304     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceColorWriteEnableFeaturesEXT;
58305     void *                              pNext            = {};
58306     VULKAN_HPP_NAMESPACE::Bool32        colorWriteEnable = {};
58307   };
58308 
58309   template <>
58310   struct CppType<StructureType, StructureType::ePhysicalDeviceColorWriteEnableFeaturesEXT>
58311   {
58312     using Type = PhysicalDeviceColorWriteEnableFeaturesEXT;
58313   };
58314 
58315   struct PhysicalDeviceComputeShaderDerivativesFeaturesNV
58316   {
58317     using NativeType = VkPhysicalDeviceComputeShaderDerivativesFeaturesNV;
58318 
58319     static const bool                                  allowDuplicate = false;
58320     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesNV;
58321 
58322 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceComputeShaderDerivativesFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58323     VULKAN_HPP_CONSTEXPR PhysicalDeviceComputeShaderDerivativesFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupQuads_  = {},
58324                                                                            VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupLinear_ = {},
58325                                                                            void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
58326       : pNext{ pNext_ }
58327       , computeDerivativeGroupQuads{ computeDerivativeGroupQuads_ }
58328       , computeDerivativeGroupLinear{ computeDerivativeGroupLinear_ }
58329     {
58330     }
58331 
58332     VULKAN_HPP_CONSTEXPR
58333       PhysicalDeviceComputeShaderDerivativesFeaturesNV( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58334 
PhysicalDeviceComputeShaderDerivativesFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58335     PhysicalDeviceComputeShaderDerivativesFeaturesNV( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
58336       : PhysicalDeviceComputeShaderDerivativesFeaturesNV( *reinterpret_cast<PhysicalDeviceComputeShaderDerivativesFeaturesNV const *>( &rhs ) )
58337     {
58338     }
58339 
58340     PhysicalDeviceComputeShaderDerivativesFeaturesNV & operator=( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58341 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58342 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58343     PhysicalDeviceComputeShaderDerivativesFeaturesNV & operator=( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
58344     {
58345       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV const *>( &rhs );
58346       return *this;
58347     }
58348 
58349 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58350     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeShaderDerivativesFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
58351     {
58352       pNext = pNext_;
58353       return *this;
58354     }
58355 
58356     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeShaderDerivativesFeaturesNV &
setComputeDerivativeGroupQuadsVULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58357       setComputeDerivativeGroupQuads( VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupQuads_ ) VULKAN_HPP_NOEXCEPT
58358     {
58359       computeDerivativeGroupQuads = computeDerivativeGroupQuads_;
58360       return *this;
58361     }
58362 
58363     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeShaderDerivativesFeaturesNV &
setComputeDerivativeGroupLinearVULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58364       setComputeDerivativeGroupLinear( VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupLinear_ ) VULKAN_HPP_NOEXCEPT
58365     {
58366       computeDerivativeGroupLinear = computeDerivativeGroupLinear_;
58367       return *this;
58368     }
58369 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
58370 
operator VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58371     operator VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
58372     {
58373       return *reinterpret_cast<const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *>( this );
58374     }
58375 
operator VkPhysicalDeviceComputeShaderDerivativesFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58376     operator VkPhysicalDeviceComputeShaderDerivativesFeaturesNV &() VULKAN_HPP_NOEXCEPT
58377     {
58378       return *reinterpret_cast<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *>( this );
58379     }
58380 
58381 #if defined( VULKAN_HPP_USE_REFLECT )
58382 #  if 14 <= VULKAN_HPP_CPP_VERSION
58383     auto
58384 #  else
58385     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
58386 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58387       reflect() const VULKAN_HPP_NOEXCEPT
58388     {
58389       return std::tie( sType, pNext, computeDerivativeGroupQuads, computeDerivativeGroupLinear );
58390     }
58391 #endif
58392 
58393 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58394     auto operator<=>( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & ) const = default;
58395 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58396     bool operator==( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
58397     {
58398 #  if defined( VULKAN_HPP_USE_REFLECT )
58399       return this->reflect() == rhs.reflect();
58400 #  else
58401       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( computeDerivativeGroupQuads == rhs.computeDerivativeGroupQuads ) &&
58402              ( computeDerivativeGroupLinear == rhs.computeDerivativeGroupLinear );
58403 #  endif
58404     }
58405 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV58406     bool operator!=( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
58407     {
58408       return !operator==( rhs );
58409     }
58410 #endif
58411 
58412   public:
58413     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesNV;
58414     void *                              pNext                        = {};
58415     VULKAN_HPP_NAMESPACE::Bool32        computeDerivativeGroupQuads  = {};
58416     VULKAN_HPP_NAMESPACE::Bool32        computeDerivativeGroupLinear = {};
58417   };
58418 
58419   template <>
58420   struct CppType<StructureType, StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesNV>
58421   {
58422     using Type = PhysicalDeviceComputeShaderDerivativesFeaturesNV;
58423   };
58424 
58425   struct PhysicalDeviceConditionalRenderingFeaturesEXT
58426   {
58427     using NativeType = VkPhysicalDeviceConditionalRenderingFeaturesEXT;
58428 
58429     static const bool                                  allowDuplicate = false;
58430     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT;
58431 
58432 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceConditionalRenderingFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT58433     VULKAN_HPP_CONSTEXPR PhysicalDeviceConditionalRenderingFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 conditionalRendering_          = {},
58434                                                                         VULKAN_HPP_NAMESPACE::Bool32 inheritedConditionalRendering_ = {},
58435                                                                         void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
58436       : pNext{ pNext_ }
58437       , conditionalRendering{ conditionalRendering_ }
58438       , inheritedConditionalRendering{ inheritedConditionalRendering_ }
58439     {
58440     }
58441 
58442     VULKAN_HPP_CONSTEXPR
58443       PhysicalDeviceConditionalRenderingFeaturesEXT( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58444 
PhysicalDeviceConditionalRenderingFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT58445     PhysicalDeviceConditionalRenderingFeaturesEXT( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
58446       : PhysicalDeviceConditionalRenderingFeaturesEXT( *reinterpret_cast<PhysicalDeviceConditionalRenderingFeaturesEXT const *>( &rhs ) )
58447     {
58448     }
58449 
58450     PhysicalDeviceConditionalRenderingFeaturesEXT & operator=( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58451 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58452 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT58453     PhysicalDeviceConditionalRenderingFeaturesEXT & operator=( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
58454     {
58455       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT const *>( &rhs );
58456       return *this;
58457     }
58458 
58459 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT58460     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConditionalRenderingFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
58461     {
58462       pNext = pNext_;
58463       return *this;
58464     }
58465 
58466     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConditionalRenderingFeaturesEXT &
setConditionalRenderingVULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT58467       setConditionalRendering( VULKAN_HPP_NAMESPACE::Bool32 conditionalRendering_ ) VULKAN_HPP_NOEXCEPT
58468     {
58469       conditionalRendering = conditionalRendering_;
58470       return *this;
58471     }
58472 
58473     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConditionalRenderingFeaturesEXT &
setInheritedConditionalRenderingVULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT58474       setInheritedConditionalRendering( VULKAN_HPP_NAMESPACE::Bool32 inheritedConditionalRendering_ ) VULKAN_HPP_NOEXCEPT
58475     {
58476       inheritedConditionalRendering = inheritedConditionalRendering_;
58477       return *this;
58478     }
58479 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
58480 
operator VkPhysicalDeviceConditionalRenderingFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT58481     operator VkPhysicalDeviceConditionalRenderingFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
58482     {
58483       return *reinterpret_cast<const VkPhysicalDeviceConditionalRenderingFeaturesEXT *>( this );
58484     }
58485 
operator VkPhysicalDeviceConditionalRenderingFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT58486     operator VkPhysicalDeviceConditionalRenderingFeaturesEXT &() VULKAN_HPP_NOEXCEPT
58487     {
58488       return *reinterpret_cast<VkPhysicalDeviceConditionalRenderingFeaturesEXT *>( this );
58489     }
58490 
58491 #if defined( VULKAN_HPP_USE_REFLECT )
58492 #  if 14 <= VULKAN_HPP_CPP_VERSION
58493     auto
58494 #  else
58495     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
58496 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT58497       reflect() const VULKAN_HPP_NOEXCEPT
58498     {
58499       return std::tie( sType, pNext, conditionalRendering, inheritedConditionalRendering );
58500     }
58501 #endif
58502 
58503 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58504     auto operator<=>( PhysicalDeviceConditionalRenderingFeaturesEXT const & ) const = default;
58505 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT58506     bool operator==( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
58507     {
58508 #  if defined( VULKAN_HPP_USE_REFLECT )
58509       return this->reflect() == rhs.reflect();
58510 #  else
58511       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( conditionalRendering == rhs.conditionalRendering ) &&
58512              ( inheritedConditionalRendering == rhs.inheritedConditionalRendering );
58513 #  endif
58514     }
58515 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT58516     bool operator!=( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
58517     {
58518       return !operator==( rhs );
58519     }
58520 #endif
58521 
58522   public:
58523     VULKAN_HPP_NAMESPACE::StructureType sType                         = StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT;
58524     void *                              pNext                         = {};
58525     VULKAN_HPP_NAMESPACE::Bool32        conditionalRendering          = {};
58526     VULKAN_HPP_NAMESPACE::Bool32        inheritedConditionalRendering = {};
58527   };
58528 
58529   template <>
58530   struct CppType<StructureType, StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT>
58531   {
58532     using Type = PhysicalDeviceConditionalRenderingFeaturesEXT;
58533   };
58534 
58535   struct PhysicalDeviceConservativeRasterizationPropertiesEXT
58536   {
58537     using NativeType = VkPhysicalDeviceConservativeRasterizationPropertiesEXT;
58538 
58539     static const bool                                  allowDuplicate = false;
58540     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT;
58541 
58542 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceConservativeRasterizationPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT58543     VULKAN_HPP_CONSTEXPR PhysicalDeviceConservativeRasterizationPropertiesEXT( float                        primitiveOverestimationSize_                 = {},
58544                                                                                float                        maxExtraPrimitiveOverestimationSize_         = {},
58545                                                                                float                        extraPrimitiveOverestimationSizeGranularity_ = {},
58546                                                                                VULKAN_HPP_NAMESPACE::Bool32 primitiveUnderestimation_                    = {},
58547                                                                                VULKAN_HPP_NAMESPACE::Bool32 conservativePointAndLineRasterization_       = {},
58548                                                                                VULKAN_HPP_NAMESPACE::Bool32 degenerateTrianglesRasterized_               = {},
58549                                                                                VULKAN_HPP_NAMESPACE::Bool32 degenerateLinesRasterized_                   = {},
58550                                                                                VULKAN_HPP_NAMESPACE::Bool32 fullyCoveredFragmentShaderInputVariable_     = {},
58551                                                                                VULKAN_HPP_NAMESPACE::Bool32 conservativeRasterizationPostDepthCoverage_  = {},
58552                                                                                void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
58553       : pNext{ pNext_ }
58554       , primitiveOverestimationSize{ primitiveOverestimationSize_ }
58555       , maxExtraPrimitiveOverestimationSize{ maxExtraPrimitiveOverestimationSize_ }
58556       , extraPrimitiveOverestimationSizeGranularity{ extraPrimitiveOverestimationSizeGranularity_ }
58557       , primitiveUnderestimation{ primitiveUnderestimation_ }
58558       , conservativePointAndLineRasterization{ conservativePointAndLineRasterization_ }
58559       , degenerateTrianglesRasterized{ degenerateTrianglesRasterized_ }
58560       , degenerateLinesRasterized{ degenerateLinesRasterized_ }
58561       , fullyCoveredFragmentShaderInputVariable{ fullyCoveredFragmentShaderInputVariable_ }
58562       , conservativeRasterizationPostDepthCoverage{ conservativeRasterizationPostDepthCoverage_ }
58563     {
58564     }
58565 
58566     VULKAN_HPP_CONSTEXPR
58567       PhysicalDeviceConservativeRasterizationPropertiesEXT( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58568 
PhysicalDeviceConservativeRasterizationPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT58569     PhysicalDeviceConservativeRasterizationPropertiesEXT( VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
58570       : PhysicalDeviceConservativeRasterizationPropertiesEXT( *reinterpret_cast<PhysicalDeviceConservativeRasterizationPropertiesEXT const *>( &rhs ) )
58571     {
58572     }
58573 
58574     PhysicalDeviceConservativeRasterizationPropertiesEXT &
58575       operator=( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58576 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58577 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT58578     PhysicalDeviceConservativeRasterizationPropertiesEXT & operator=( VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
58579     {
58580       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT const *>( &rhs );
58581       return *this;
58582     }
58583 
operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT58584     operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
58585     {
58586       return *reinterpret_cast<const VkPhysicalDeviceConservativeRasterizationPropertiesEXT *>( this );
58587     }
58588 
operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT58589     operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT &() VULKAN_HPP_NOEXCEPT
58590     {
58591       return *reinterpret_cast<VkPhysicalDeviceConservativeRasterizationPropertiesEXT *>( this );
58592     }
58593 
58594 #if defined( VULKAN_HPP_USE_REFLECT )
58595 #  if 14 <= VULKAN_HPP_CPP_VERSION
58596     auto
58597 #  else
58598     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
58599                void * const &,
58600                float const &,
58601                float const &,
58602                float const &,
58603                VULKAN_HPP_NAMESPACE::Bool32 const &,
58604                VULKAN_HPP_NAMESPACE::Bool32 const &,
58605                VULKAN_HPP_NAMESPACE::Bool32 const &,
58606                VULKAN_HPP_NAMESPACE::Bool32 const &,
58607                VULKAN_HPP_NAMESPACE::Bool32 const &,
58608                VULKAN_HPP_NAMESPACE::Bool32 const &>
58609 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT58610       reflect() const VULKAN_HPP_NOEXCEPT
58611     {
58612       return std::tie( sType,
58613                        pNext,
58614                        primitiveOverestimationSize,
58615                        maxExtraPrimitiveOverestimationSize,
58616                        extraPrimitiveOverestimationSizeGranularity,
58617                        primitiveUnderestimation,
58618                        conservativePointAndLineRasterization,
58619                        degenerateTrianglesRasterized,
58620                        degenerateLinesRasterized,
58621                        fullyCoveredFragmentShaderInputVariable,
58622                        conservativeRasterizationPostDepthCoverage );
58623     }
58624 #endif
58625 
58626 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58627     auto operator<=>( PhysicalDeviceConservativeRasterizationPropertiesEXT const & ) const = default;
58628 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT58629     bool operator==( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
58630     {
58631 #  if defined( VULKAN_HPP_USE_REFLECT )
58632       return this->reflect() == rhs.reflect();
58633 #  else
58634       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( primitiveOverestimationSize == rhs.primitiveOverestimationSize ) &&
58635              ( maxExtraPrimitiveOverestimationSize == rhs.maxExtraPrimitiveOverestimationSize ) &&
58636              ( extraPrimitiveOverestimationSizeGranularity == rhs.extraPrimitiveOverestimationSizeGranularity ) &&
58637              ( primitiveUnderestimation == rhs.primitiveUnderestimation ) &&
58638              ( conservativePointAndLineRasterization == rhs.conservativePointAndLineRasterization ) &&
58639              ( degenerateTrianglesRasterized == rhs.degenerateTrianglesRasterized ) && ( degenerateLinesRasterized == rhs.degenerateLinesRasterized ) &&
58640              ( fullyCoveredFragmentShaderInputVariable == rhs.fullyCoveredFragmentShaderInputVariable ) &&
58641              ( conservativeRasterizationPostDepthCoverage == rhs.conservativeRasterizationPostDepthCoverage );
58642 #  endif
58643     }
58644 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT58645     bool operator!=( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
58646     {
58647       return !operator==( rhs );
58648     }
58649 #endif
58650 
58651   public:
58652     VULKAN_HPP_NAMESPACE::StructureType sType                                       = StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT;
58653     void *                              pNext                                       = {};
58654     float                               primitiveOverestimationSize                 = {};
58655     float                               maxExtraPrimitiveOverestimationSize         = {};
58656     float                               extraPrimitiveOverestimationSizeGranularity = {};
58657     VULKAN_HPP_NAMESPACE::Bool32        primitiveUnderestimation                    = {};
58658     VULKAN_HPP_NAMESPACE::Bool32        conservativePointAndLineRasterization       = {};
58659     VULKAN_HPP_NAMESPACE::Bool32        degenerateTrianglesRasterized               = {};
58660     VULKAN_HPP_NAMESPACE::Bool32        degenerateLinesRasterized                   = {};
58661     VULKAN_HPP_NAMESPACE::Bool32        fullyCoveredFragmentShaderInputVariable     = {};
58662     VULKAN_HPP_NAMESPACE::Bool32        conservativeRasterizationPostDepthCoverage  = {};
58663   };
58664 
58665   template <>
58666   struct CppType<StructureType, StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT>
58667   {
58668     using Type = PhysicalDeviceConservativeRasterizationPropertiesEXT;
58669   };
58670 
58671   struct PhysicalDeviceCooperativeMatrixFeaturesKHR
58672   {
58673     using NativeType = VkPhysicalDeviceCooperativeMatrixFeaturesKHR;
58674 
58675     static const bool                                  allowDuplicate = false;
58676     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCooperativeMatrixFeaturesKHR;
58677 
58678 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCooperativeMatrixFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR58679     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrix_                   = {},
58680                                                                      VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrixRobustBufferAccess_ = {},
58681                                                                      void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
58682       : pNext{ pNext_ }
58683       , cooperativeMatrix{ cooperativeMatrix_ }
58684       , cooperativeMatrixRobustBufferAccess{ cooperativeMatrixRobustBufferAccess_ }
58685     {
58686     }
58687 
58688     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixFeaturesKHR( PhysicalDeviceCooperativeMatrixFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58689 
PhysicalDeviceCooperativeMatrixFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR58690     PhysicalDeviceCooperativeMatrixFeaturesKHR( VkPhysicalDeviceCooperativeMatrixFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
58691       : PhysicalDeviceCooperativeMatrixFeaturesKHR( *reinterpret_cast<PhysicalDeviceCooperativeMatrixFeaturesKHR const *>( &rhs ) )
58692     {
58693     }
58694 
58695     PhysicalDeviceCooperativeMatrixFeaturesKHR & operator=( PhysicalDeviceCooperativeMatrixFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58696 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58697 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR58698     PhysicalDeviceCooperativeMatrixFeaturesKHR & operator=( VkPhysicalDeviceCooperativeMatrixFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
58699     {
58700       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR const *>( &rhs );
58701       return *this;
58702     }
58703 
58704 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR58705     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
58706     {
58707       pNext = pNext_;
58708       return *this;
58709     }
58710 
58711     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesKHR &
setCooperativeMatrixVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR58712       setCooperativeMatrix( VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrix_ ) VULKAN_HPP_NOEXCEPT
58713     {
58714       cooperativeMatrix = cooperativeMatrix_;
58715       return *this;
58716     }
58717 
58718     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesKHR &
setCooperativeMatrixRobustBufferAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR58719       setCooperativeMatrixRobustBufferAccess( VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrixRobustBufferAccess_ ) VULKAN_HPP_NOEXCEPT
58720     {
58721       cooperativeMatrixRobustBufferAccess = cooperativeMatrixRobustBufferAccess_;
58722       return *this;
58723     }
58724 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
58725 
operator VkPhysicalDeviceCooperativeMatrixFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR58726     operator VkPhysicalDeviceCooperativeMatrixFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
58727     {
58728       return *reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixFeaturesKHR *>( this );
58729     }
58730 
operator VkPhysicalDeviceCooperativeMatrixFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR58731     operator VkPhysicalDeviceCooperativeMatrixFeaturesKHR &() VULKAN_HPP_NOEXCEPT
58732     {
58733       return *reinterpret_cast<VkPhysicalDeviceCooperativeMatrixFeaturesKHR *>( this );
58734     }
58735 
58736 #if defined( VULKAN_HPP_USE_REFLECT )
58737 #  if 14 <= VULKAN_HPP_CPP_VERSION
58738     auto
58739 #  else
58740     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
58741 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR58742       reflect() const VULKAN_HPP_NOEXCEPT
58743     {
58744       return std::tie( sType, pNext, cooperativeMatrix, cooperativeMatrixRobustBufferAccess );
58745     }
58746 #endif
58747 
58748 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58749     auto operator<=>( PhysicalDeviceCooperativeMatrixFeaturesKHR const & ) const = default;
58750 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR58751     bool operator==( PhysicalDeviceCooperativeMatrixFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
58752     {
58753 #  if defined( VULKAN_HPP_USE_REFLECT )
58754       return this->reflect() == rhs.reflect();
58755 #  else
58756       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cooperativeMatrix == rhs.cooperativeMatrix ) &&
58757              ( cooperativeMatrixRobustBufferAccess == rhs.cooperativeMatrixRobustBufferAccess );
58758 #  endif
58759     }
58760 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR58761     bool operator!=( PhysicalDeviceCooperativeMatrixFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
58762     {
58763       return !operator==( rhs );
58764     }
58765 #endif
58766 
58767   public:
58768     VULKAN_HPP_NAMESPACE::StructureType sType                               = StructureType::ePhysicalDeviceCooperativeMatrixFeaturesKHR;
58769     void *                              pNext                               = {};
58770     VULKAN_HPP_NAMESPACE::Bool32        cooperativeMatrix                   = {};
58771     VULKAN_HPP_NAMESPACE::Bool32        cooperativeMatrixRobustBufferAccess = {};
58772   };
58773 
58774   template <>
58775   struct CppType<StructureType, StructureType::ePhysicalDeviceCooperativeMatrixFeaturesKHR>
58776   {
58777     using Type = PhysicalDeviceCooperativeMatrixFeaturesKHR;
58778   };
58779 
58780   struct PhysicalDeviceCooperativeMatrixFeaturesNV
58781   {
58782     using NativeType = VkPhysicalDeviceCooperativeMatrixFeaturesNV;
58783 
58784     static const bool                                  allowDuplicate = false;
58785     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCooperativeMatrixFeaturesNV;
58786 
58787 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCooperativeMatrixFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV58788     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrix_                   = {},
58789                                                                     VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrixRobustBufferAccess_ = {},
58790                                                                     void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
58791       : pNext{ pNext_ }
58792       , cooperativeMatrix{ cooperativeMatrix_ }
58793       , cooperativeMatrixRobustBufferAccess{ cooperativeMatrixRobustBufferAccess_ }
58794     {
58795     }
58796 
58797     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixFeaturesNV( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58798 
PhysicalDeviceCooperativeMatrixFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV58799     PhysicalDeviceCooperativeMatrixFeaturesNV( VkPhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
58800       : PhysicalDeviceCooperativeMatrixFeaturesNV( *reinterpret_cast<PhysicalDeviceCooperativeMatrixFeaturesNV const *>( &rhs ) )
58801     {
58802     }
58803 
58804     PhysicalDeviceCooperativeMatrixFeaturesNV & operator=( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58805 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58806 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV58807     PhysicalDeviceCooperativeMatrixFeaturesNV & operator=( VkPhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
58808     {
58809       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV const *>( &rhs );
58810       return *this;
58811     }
58812 
58813 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV58814     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
58815     {
58816       pNext = pNext_;
58817       return *this;
58818     }
58819 
58820     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesNV &
setCooperativeMatrixVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV58821       setCooperativeMatrix( VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrix_ ) VULKAN_HPP_NOEXCEPT
58822     {
58823       cooperativeMatrix = cooperativeMatrix_;
58824       return *this;
58825     }
58826 
58827     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesNV &
setCooperativeMatrixRobustBufferAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV58828       setCooperativeMatrixRobustBufferAccess( VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrixRobustBufferAccess_ ) VULKAN_HPP_NOEXCEPT
58829     {
58830       cooperativeMatrixRobustBufferAccess = cooperativeMatrixRobustBufferAccess_;
58831       return *this;
58832     }
58833 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
58834 
operator VkPhysicalDeviceCooperativeMatrixFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV58835     operator VkPhysicalDeviceCooperativeMatrixFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
58836     {
58837       return *reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixFeaturesNV *>( this );
58838     }
58839 
operator VkPhysicalDeviceCooperativeMatrixFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV58840     operator VkPhysicalDeviceCooperativeMatrixFeaturesNV &() VULKAN_HPP_NOEXCEPT
58841     {
58842       return *reinterpret_cast<VkPhysicalDeviceCooperativeMatrixFeaturesNV *>( this );
58843     }
58844 
58845 #if defined( VULKAN_HPP_USE_REFLECT )
58846 #  if 14 <= VULKAN_HPP_CPP_VERSION
58847     auto
58848 #  else
58849     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
58850 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV58851       reflect() const VULKAN_HPP_NOEXCEPT
58852     {
58853       return std::tie( sType, pNext, cooperativeMatrix, cooperativeMatrixRobustBufferAccess );
58854     }
58855 #endif
58856 
58857 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58858     auto operator<=>( PhysicalDeviceCooperativeMatrixFeaturesNV const & ) const = default;
58859 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV58860     bool operator==( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
58861     {
58862 #  if defined( VULKAN_HPP_USE_REFLECT )
58863       return this->reflect() == rhs.reflect();
58864 #  else
58865       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cooperativeMatrix == rhs.cooperativeMatrix ) &&
58866              ( cooperativeMatrixRobustBufferAccess == rhs.cooperativeMatrixRobustBufferAccess );
58867 #  endif
58868     }
58869 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV58870     bool operator!=( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
58871     {
58872       return !operator==( rhs );
58873     }
58874 #endif
58875 
58876   public:
58877     VULKAN_HPP_NAMESPACE::StructureType sType                               = StructureType::ePhysicalDeviceCooperativeMatrixFeaturesNV;
58878     void *                              pNext                               = {};
58879     VULKAN_HPP_NAMESPACE::Bool32        cooperativeMatrix                   = {};
58880     VULKAN_HPP_NAMESPACE::Bool32        cooperativeMatrixRobustBufferAccess = {};
58881   };
58882 
58883   template <>
58884   struct CppType<StructureType, StructureType::ePhysicalDeviceCooperativeMatrixFeaturesNV>
58885   {
58886     using Type = PhysicalDeviceCooperativeMatrixFeaturesNV;
58887   };
58888 
58889   struct PhysicalDeviceCooperativeMatrixPropertiesKHR
58890   {
58891     using NativeType = VkPhysicalDeviceCooperativeMatrixPropertiesKHR;
58892 
58893     static const bool                                  allowDuplicate = false;
58894     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCooperativeMatrixPropertiesKHR;
58895 
58896 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCooperativeMatrixPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesKHR58897     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixPropertiesKHR( VULKAN_HPP_NAMESPACE::ShaderStageFlags cooperativeMatrixSupportedStages_ = {},
58898                                                                        void *                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
58899       : pNext{ pNext_ }
58900       , cooperativeMatrixSupportedStages{ cooperativeMatrixSupportedStages_ }
58901     {
58902     }
58903 
58904     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixPropertiesKHR( PhysicalDeviceCooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58905 
PhysicalDeviceCooperativeMatrixPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesKHR58906     PhysicalDeviceCooperativeMatrixPropertiesKHR( VkPhysicalDeviceCooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
58907       : PhysicalDeviceCooperativeMatrixPropertiesKHR( *reinterpret_cast<PhysicalDeviceCooperativeMatrixPropertiesKHR const *>( &rhs ) )
58908     {
58909     }
58910 
58911     PhysicalDeviceCooperativeMatrixPropertiesKHR & operator=( PhysicalDeviceCooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58912 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58913 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesKHR58914     PhysicalDeviceCooperativeMatrixPropertiesKHR & operator=( VkPhysicalDeviceCooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
58915     {
58916       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesKHR const *>( &rhs );
58917       return *this;
58918     }
58919 
operator VkPhysicalDeviceCooperativeMatrixPropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesKHR58920     operator VkPhysicalDeviceCooperativeMatrixPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
58921     {
58922       return *reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixPropertiesKHR *>( this );
58923     }
58924 
operator VkPhysicalDeviceCooperativeMatrixPropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesKHR58925     operator VkPhysicalDeviceCooperativeMatrixPropertiesKHR &() VULKAN_HPP_NOEXCEPT
58926     {
58927       return *reinterpret_cast<VkPhysicalDeviceCooperativeMatrixPropertiesKHR *>( this );
58928     }
58929 
58930 #if defined( VULKAN_HPP_USE_REFLECT )
58931 #  if 14 <= VULKAN_HPP_CPP_VERSION
58932     auto
58933 #  else
58934     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ShaderStageFlags const &>
58935 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesKHR58936       reflect() const VULKAN_HPP_NOEXCEPT
58937     {
58938       return std::tie( sType, pNext, cooperativeMatrixSupportedStages );
58939     }
58940 #endif
58941 
58942 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
58943     auto operator<=>( PhysicalDeviceCooperativeMatrixPropertiesKHR const & ) const = default;
58944 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesKHR58945     bool operator==( PhysicalDeviceCooperativeMatrixPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
58946     {
58947 #  if defined( VULKAN_HPP_USE_REFLECT )
58948       return this->reflect() == rhs.reflect();
58949 #  else
58950       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cooperativeMatrixSupportedStages == rhs.cooperativeMatrixSupportedStages );
58951 #  endif
58952     }
58953 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesKHR58954     bool operator!=( PhysicalDeviceCooperativeMatrixPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
58955     {
58956       return !operator==( rhs );
58957     }
58958 #endif
58959 
58960   public:
58961     VULKAN_HPP_NAMESPACE::StructureType    sType                            = StructureType::ePhysicalDeviceCooperativeMatrixPropertiesKHR;
58962     void *                                 pNext                            = {};
58963     VULKAN_HPP_NAMESPACE::ShaderStageFlags cooperativeMatrixSupportedStages = {};
58964   };
58965 
58966   template <>
58967   struct CppType<StructureType, StructureType::ePhysicalDeviceCooperativeMatrixPropertiesKHR>
58968   {
58969     using Type = PhysicalDeviceCooperativeMatrixPropertiesKHR;
58970   };
58971 
58972   struct PhysicalDeviceCooperativeMatrixPropertiesNV
58973   {
58974     using NativeType = VkPhysicalDeviceCooperativeMatrixPropertiesNV;
58975 
58976     static const bool                                  allowDuplicate = false;
58977     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCooperativeMatrixPropertiesNV;
58978 
58979 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCooperativeMatrixPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV58980     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixPropertiesNV( VULKAN_HPP_NAMESPACE::ShaderStageFlags cooperativeMatrixSupportedStages_ = {},
58981                                                                       void *                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
58982       : pNext{ pNext_ }
58983       , cooperativeMatrixSupportedStages{ cooperativeMatrixSupportedStages_ }
58984     {
58985     }
58986 
58987     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixPropertiesNV( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58988 
PhysicalDeviceCooperativeMatrixPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV58989     PhysicalDeviceCooperativeMatrixPropertiesNV( VkPhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
58990       : PhysicalDeviceCooperativeMatrixPropertiesNV( *reinterpret_cast<PhysicalDeviceCooperativeMatrixPropertiesNV const *>( &rhs ) )
58991     {
58992     }
58993 
58994     PhysicalDeviceCooperativeMatrixPropertiesNV & operator=( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
58995 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
58996 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV58997     PhysicalDeviceCooperativeMatrixPropertiesNV & operator=( VkPhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
58998     {
58999       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV const *>( &rhs );
59000       return *this;
59001     }
59002 
operator VkPhysicalDeviceCooperativeMatrixPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV59003     operator VkPhysicalDeviceCooperativeMatrixPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
59004     {
59005       return *reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixPropertiesNV *>( this );
59006     }
59007 
operator VkPhysicalDeviceCooperativeMatrixPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV59008     operator VkPhysicalDeviceCooperativeMatrixPropertiesNV &() VULKAN_HPP_NOEXCEPT
59009     {
59010       return *reinterpret_cast<VkPhysicalDeviceCooperativeMatrixPropertiesNV *>( this );
59011     }
59012 
59013 #if defined( VULKAN_HPP_USE_REFLECT )
59014 #  if 14 <= VULKAN_HPP_CPP_VERSION
59015     auto
59016 #  else
59017     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ShaderStageFlags const &>
59018 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV59019       reflect() const VULKAN_HPP_NOEXCEPT
59020     {
59021       return std::tie( sType, pNext, cooperativeMatrixSupportedStages );
59022     }
59023 #endif
59024 
59025 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59026     auto operator<=>( PhysicalDeviceCooperativeMatrixPropertiesNV const & ) const = default;
59027 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV59028     bool operator==( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59029     {
59030 #  if defined( VULKAN_HPP_USE_REFLECT )
59031       return this->reflect() == rhs.reflect();
59032 #  else
59033       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cooperativeMatrixSupportedStages == rhs.cooperativeMatrixSupportedStages );
59034 #  endif
59035     }
59036 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV59037     bool operator!=( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59038     {
59039       return !operator==( rhs );
59040     }
59041 #endif
59042 
59043   public:
59044     VULKAN_HPP_NAMESPACE::StructureType    sType                            = StructureType::ePhysicalDeviceCooperativeMatrixPropertiesNV;
59045     void *                                 pNext                            = {};
59046     VULKAN_HPP_NAMESPACE::ShaderStageFlags cooperativeMatrixSupportedStages = {};
59047   };
59048 
59049   template <>
59050   struct CppType<StructureType, StructureType::ePhysicalDeviceCooperativeMatrixPropertiesNV>
59051   {
59052     using Type = PhysicalDeviceCooperativeMatrixPropertiesNV;
59053   };
59054 
59055   struct PhysicalDeviceCopyMemoryIndirectFeaturesNV
59056   {
59057     using NativeType = VkPhysicalDeviceCopyMemoryIndirectFeaturesNV;
59058 
59059     static const bool                                  allowDuplicate = false;
59060     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCopyMemoryIndirectFeaturesNV;
59061 
59062 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCopyMemoryIndirectFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV59063     VULKAN_HPP_CONSTEXPR PhysicalDeviceCopyMemoryIndirectFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 indirectCopy_ = {},
59064                                                                      void *                       pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
59065       : pNext{ pNext_ }
59066       , indirectCopy{ indirectCopy_ }
59067     {
59068     }
59069 
59070     VULKAN_HPP_CONSTEXPR PhysicalDeviceCopyMemoryIndirectFeaturesNV( PhysicalDeviceCopyMemoryIndirectFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59071 
PhysicalDeviceCopyMemoryIndirectFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV59072     PhysicalDeviceCopyMemoryIndirectFeaturesNV( VkPhysicalDeviceCopyMemoryIndirectFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59073       : PhysicalDeviceCopyMemoryIndirectFeaturesNV( *reinterpret_cast<PhysicalDeviceCopyMemoryIndirectFeaturesNV const *>( &rhs ) )
59074     {
59075     }
59076 
59077     PhysicalDeviceCopyMemoryIndirectFeaturesNV & operator=( PhysicalDeviceCopyMemoryIndirectFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59078 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59079 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV59080     PhysicalDeviceCopyMemoryIndirectFeaturesNV & operator=( VkPhysicalDeviceCopyMemoryIndirectFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59081     {
59082       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV const *>( &rhs );
59083       return *this;
59084     }
59085 
59086 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV59087     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCopyMemoryIndirectFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
59088     {
59089       pNext = pNext_;
59090       return *this;
59091     }
59092 
setIndirectCopyVULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV59093     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCopyMemoryIndirectFeaturesNV & setIndirectCopy( VULKAN_HPP_NAMESPACE::Bool32 indirectCopy_ ) VULKAN_HPP_NOEXCEPT
59094     {
59095       indirectCopy = indirectCopy_;
59096       return *this;
59097     }
59098 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
59099 
operator VkPhysicalDeviceCopyMemoryIndirectFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV59100     operator VkPhysicalDeviceCopyMemoryIndirectFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
59101     {
59102       return *reinterpret_cast<const VkPhysicalDeviceCopyMemoryIndirectFeaturesNV *>( this );
59103     }
59104 
operator VkPhysicalDeviceCopyMemoryIndirectFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV59105     operator VkPhysicalDeviceCopyMemoryIndirectFeaturesNV &() VULKAN_HPP_NOEXCEPT
59106     {
59107       return *reinterpret_cast<VkPhysicalDeviceCopyMemoryIndirectFeaturesNV *>( this );
59108     }
59109 
59110 #if defined( VULKAN_HPP_USE_REFLECT )
59111 #  if 14 <= VULKAN_HPP_CPP_VERSION
59112     auto
59113 #  else
59114     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
59115 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV59116       reflect() const VULKAN_HPP_NOEXCEPT
59117     {
59118       return std::tie( sType, pNext, indirectCopy );
59119     }
59120 #endif
59121 
59122 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59123     auto operator<=>( PhysicalDeviceCopyMemoryIndirectFeaturesNV const & ) const = default;
59124 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV59125     bool operator==( PhysicalDeviceCopyMemoryIndirectFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59126     {
59127 #  if defined( VULKAN_HPP_USE_REFLECT )
59128       return this->reflect() == rhs.reflect();
59129 #  else
59130       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( indirectCopy == rhs.indirectCopy );
59131 #  endif
59132     }
59133 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV59134     bool operator!=( PhysicalDeviceCopyMemoryIndirectFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59135     {
59136       return !operator==( rhs );
59137     }
59138 #endif
59139 
59140   public:
59141     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::ePhysicalDeviceCopyMemoryIndirectFeaturesNV;
59142     void *                              pNext        = {};
59143     VULKAN_HPP_NAMESPACE::Bool32        indirectCopy = {};
59144   };
59145 
59146   template <>
59147   struct CppType<StructureType, StructureType::ePhysicalDeviceCopyMemoryIndirectFeaturesNV>
59148   {
59149     using Type = PhysicalDeviceCopyMemoryIndirectFeaturesNV;
59150   };
59151 
59152   struct PhysicalDeviceCopyMemoryIndirectPropertiesNV
59153   {
59154     using NativeType = VkPhysicalDeviceCopyMemoryIndirectPropertiesNV;
59155 
59156     static const bool                                  allowDuplicate = false;
59157     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCopyMemoryIndirectPropertiesNV;
59158 
59159 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCopyMemoryIndirectPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesNV59160     VULKAN_HPP_CONSTEXPR PhysicalDeviceCopyMemoryIndirectPropertiesNV( VULKAN_HPP_NAMESPACE::QueueFlags supportedQueues_ = {},
59161                                                                        void *                           pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
59162       : pNext{ pNext_ }
59163       , supportedQueues{ supportedQueues_ }
59164     {
59165     }
59166 
59167     VULKAN_HPP_CONSTEXPR PhysicalDeviceCopyMemoryIndirectPropertiesNV( PhysicalDeviceCopyMemoryIndirectPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59168 
PhysicalDeviceCopyMemoryIndirectPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesNV59169     PhysicalDeviceCopyMemoryIndirectPropertiesNV( VkPhysicalDeviceCopyMemoryIndirectPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59170       : PhysicalDeviceCopyMemoryIndirectPropertiesNV( *reinterpret_cast<PhysicalDeviceCopyMemoryIndirectPropertiesNV const *>( &rhs ) )
59171     {
59172     }
59173 
59174     PhysicalDeviceCopyMemoryIndirectPropertiesNV & operator=( PhysicalDeviceCopyMemoryIndirectPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59175 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59176 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesNV59177     PhysicalDeviceCopyMemoryIndirectPropertiesNV & operator=( VkPhysicalDeviceCopyMemoryIndirectPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59178     {
59179       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesNV const *>( &rhs );
59180       return *this;
59181     }
59182 
operator VkPhysicalDeviceCopyMemoryIndirectPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesNV59183     operator VkPhysicalDeviceCopyMemoryIndirectPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
59184     {
59185       return *reinterpret_cast<const VkPhysicalDeviceCopyMemoryIndirectPropertiesNV *>( this );
59186     }
59187 
operator VkPhysicalDeviceCopyMemoryIndirectPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesNV59188     operator VkPhysicalDeviceCopyMemoryIndirectPropertiesNV &() VULKAN_HPP_NOEXCEPT
59189     {
59190       return *reinterpret_cast<VkPhysicalDeviceCopyMemoryIndirectPropertiesNV *>( this );
59191     }
59192 
59193 #if defined( VULKAN_HPP_USE_REFLECT )
59194 #  if 14 <= VULKAN_HPP_CPP_VERSION
59195     auto
59196 #  else
59197     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::QueueFlags const &>
59198 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesNV59199       reflect() const VULKAN_HPP_NOEXCEPT
59200     {
59201       return std::tie( sType, pNext, supportedQueues );
59202     }
59203 #endif
59204 
59205 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59206     auto operator<=>( PhysicalDeviceCopyMemoryIndirectPropertiesNV const & ) const = default;
59207 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesNV59208     bool operator==( PhysicalDeviceCopyMemoryIndirectPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59209     {
59210 #  if defined( VULKAN_HPP_USE_REFLECT )
59211       return this->reflect() == rhs.reflect();
59212 #  else
59213       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportedQueues == rhs.supportedQueues );
59214 #  endif
59215     }
59216 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesNV59217     bool operator!=( PhysicalDeviceCopyMemoryIndirectPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59218     {
59219       return !operator==( rhs );
59220     }
59221 #endif
59222 
59223   public:
59224     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::ePhysicalDeviceCopyMemoryIndirectPropertiesNV;
59225     void *                              pNext           = {};
59226     VULKAN_HPP_NAMESPACE::QueueFlags    supportedQueues = {};
59227   };
59228 
59229   template <>
59230   struct CppType<StructureType, StructureType::ePhysicalDeviceCopyMemoryIndirectPropertiesNV>
59231   {
59232     using Type = PhysicalDeviceCopyMemoryIndirectPropertiesNV;
59233   };
59234 
59235   struct PhysicalDeviceCornerSampledImageFeaturesNV
59236   {
59237     using NativeType = VkPhysicalDeviceCornerSampledImageFeaturesNV;
59238 
59239     static const bool                                  allowDuplicate = false;
59240     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV;
59241 
59242 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCornerSampledImageFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV59243     VULKAN_HPP_CONSTEXPR PhysicalDeviceCornerSampledImageFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 cornerSampledImage_ = {},
59244                                                                      void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
59245       : pNext{ pNext_ }
59246       , cornerSampledImage{ cornerSampledImage_ }
59247     {
59248     }
59249 
59250     VULKAN_HPP_CONSTEXPR PhysicalDeviceCornerSampledImageFeaturesNV( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59251 
PhysicalDeviceCornerSampledImageFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV59252     PhysicalDeviceCornerSampledImageFeaturesNV( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59253       : PhysicalDeviceCornerSampledImageFeaturesNV( *reinterpret_cast<PhysicalDeviceCornerSampledImageFeaturesNV const *>( &rhs ) )
59254     {
59255     }
59256 
59257     PhysicalDeviceCornerSampledImageFeaturesNV & operator=( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59258 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59259 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV59260     PhysicalDeviceCornerSampledImageFeaturesNV & operator=( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59261     {
59262       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV const *>( &rhs );
59263       return *this;
59264     }
59265 
59266 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV59267     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCornerSampledImageFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
59268     {
59269       pNext = pNext_;
59270       return *this;
59271     }
59272 
59273     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCornerSampledImageFeaturesNV &
setCornerSampledImageVULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV59274       setCornerSampledImage( VULKAN_HPP_NAMESPACE::Bool32 cornerSampledImage_ ) VULKAN_HPP_NOEXCEPT
59275     {
59276       cornerSampledImage = cornerSampledImage_;
59277       return *this;
59278     }
59279 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
59280 
operator VkPhysicalDeviceCornerSampledImageFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV59281     operator VkPhysicalDeviceCornerSampledImageFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
59282     {
59283       return *reinterpret_cast<const VkPhysicalDeviceCornerSampledImageFeaturesNV *>( this );
59284     }
59285 
operator VkPhysicalDeviceCornerSampledImageFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV59286     operator VkPhysicalDeviceCornerSampledImageFeaturesNV &() VULKAN_HPP_NOEXCEPT
59287     {
59288       return *reinterpret_cast<VkPhysicalDeviceCornerSampledImageFeaturesNV *>( this );
59289     }
59290 
59291 #if defined( VULKAN_HPP_USE_REFLECT )
59292 #  if 14 <= VULKAN_HPP_CPP_VERSION
59293     auto
59294 #  else
59295     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
59296 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV59297       reflect() const VULKAN_HPP_NOEXCEPT
59298     {
59299       return std::tie( sType, pNext, cornerSampledImage );
59300     }
59301 #endif
59302 
59303 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59304     auto operator<=>( PhysicalDeviceCornerSampledImageFeaturesNV const & ) const = default;
59305 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV59306     bool operator==( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59307     {
59308 #  if defined( VULKAN_HPP_USE_REFLECT )
59309       return this->reflect() == rhs.reflect();
59310 #  else
59311       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cornerSampledImage == rhs.cornerSampledImage );
59312 #  endif
59313     }
59314 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV59315     bool operator!=( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59316     {
59317       return !operator==( rhs );
59318     }
59319 #endif
59320 
59321   public:
59322     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV;
59323     void *                              pNext              = {};
59324     VULKAN_HPP_NAMESPACE::Bool32        cornerSampledImage = {};
59325   };
59326 
59327   template <>
59328   struct CppType<StructureType, StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV>
59329   {
59330     using Type = PhysicalDeviceCornerSampledImageFeaturesNV;
59331   };
59332 
59333   struct PhysicalDeviceCoverageReductionModeFeaturesNV
59334   {
59335     using NativeType = VkPhysicalDeviceCoverageReductionModeFeaturesNV;
59336 
59337     static const bool                                  allowDuplicate = false;
59338     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCoverageReductionModeFeaturesNV;
59339 
59340 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCoverageReductionModeFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV59341     VULKAN_HPP_CONSTEXPR PhysicalDeviceCoverageReductionModeFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 coverageReductionMode_ = {},
59342                                                                         void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
59343       : pNext{ pNext_ }
59344       , coverageReductionMode{ coverageReductionMode_ }
59345     {
59346     }
59347 
59348     VULKAN_HPP_CONSTEXPR
59349       PhysicalDeviceCoverageReductionModeFeaturesNV( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59350 
PhysicalDeviceCoverageReductionModeFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV59351     PhysicalDeviceCoverageReductionModeFeaturesNV( VkPhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59352       : PhysicalDeviceCoverageReductionModeFeaturesNV( *reinterpret_cast<PhysicalDeviceCoverageReductionModeFeaturesNV const *>( &rhs ) )
59353     {
59354     }
59355 
59356     PhysicalDeviceCoverageReductionModeFeaturesNV & operator=( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59357 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59358 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV59359     PhysicalDeviceCoverageReductionModeFeaturesNV & operator=( VkPhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59360     {
59361       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV const *>( &rhs );
59362       return *this;
59363     }
59364 
59365 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV59366     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoverageReductionModeFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
59367     {
59368       pNext = pNext_;
59369       return *this;
59370     }
59371 
59372     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoverageReductionModeFeaturesNV &
setCoverageReductionModeVULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV59373       setCoverageReductionMode( VULKAN_HPP_NAMESPACE::Bool32 coverageReductionMode_ ) VULKAN_HPP_NOEXCEPT
59374     {
59375       coverageReductionMode = coverageReductionMode_;
59376       return *this;
59377     }
59378 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
59379 
operator VkPhysicalDeviceCoverageReductionModeFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV59380     operator VkPhysicalDeviceCoverageReductionModeFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
59381     {
59382       return *reinterpret_cast<const VkPhysicalDeviceCoverageReductionModeFeaturesNV *>( this );
59383     }
59384 
operator VkPhysicalDeviceCoverageReductionModeFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV59385     operator VkPhysicalDeviceCoverageReductionModeFeaturesNV &() VULKAN_HPP_NOEXCEPT
59386     {
59387       return *reinterpret_cast<VkPhysicalDeviceCoverageReductionModeFeaturesNV *>( this );
59388     }
59389 
59390 #if defined( VULKAN_HPP_USE_REFLECT )
59391 #  if 14 <= VULKAN_HPP_CPP_VERSION
59392     auto
59393 #  else
59394     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
59395 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV59396       reflect() const VULKAN_HPP_NOEXCEPT
59397     {
59398       return std::tie( sType, pNext, coverageReductionMode );
59399     }
59400 #endif
59401 
59402 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59403     auto operator<=>( PhysicalDeviceCoverageReductionModeFeaturesNV const & ) const = default;
59404 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV59405     bool operator==( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59406     {
59407 #  if defined( VULKAN_HPP_USE_REFLECT )
59408       return this->reflect() == rhs.reflect();
59409 #  else
59410       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( coverageReductionMode == rhs.coverageReductionMode );
59411 #  endif
59412     }
59413 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV59414     bool operator!=( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59415     {
59416       return !operator==( rhs );
59417     }
59418 #endif
59419 
59420   public:
59421     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceCoverageReductionModeFeaturesNV;
59422     void *                              pNext                 = {};
59423     VULKAN_HPP_NAMESPACE::Bool32        coverageReductionMode = {};
59424   };
59425 
59426   template <>
59427   struct CppType<StructureType, StructureType::ePhysicalDeviceCoverageReductionModeFeaturesNV>
59428   {
59429     using Type = PhysicalDeviceCoverageReductionModeFeaturesNV;
59430   };
59431 
59432   struct PhysicalDeviceCubicClampFeaturesQCOM
59433   {
59434     using NativeType = VkPhysicalDeviceCubicClampFeaturesQCOM;
59435 
59436     static const bool                                  allowDuplicate = false;
59437     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCubicClampFeaturesQCOM;
59438 
59439 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCubicClampFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM59440     VULKAN_HPP_CONSTEXPR PhysicalDeviceCubicClampFeaturesQCOM( VULKAN_HPP_NAMESPACE::Bool32 cubicRangeClamp_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
59441       : pNext{ pNext_ }
59442       , cubicRangeClamp{ cubicRangeClamp_ }
59443     {
59444     }
59445 
59446     VULKAN_HPP_CONSTEXPR PhysicalDeviceCubicClampFeaturesQCOM( PhysicalDeviceCubicClampFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59447 
PhysicalDeviceCubicClampFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM59448     PhysicalDeviceCubicClampFeaturesQCOM( VkPhysicalDeviceCubicClampFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
59449       : PhysicalDeviceCubicClampFeaturesQCOM( *reinterpret_cast<PhysicalDeviceCubicClampFeaturesQCOM const *>( &rhs ) )
59450     {
59451     }
59452 
59453     PhysicalDeviceCubicClampFeaturesQCOM & operator=( PhysicalDeviceCubicClampFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59454 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59455 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM59456     PhysicalDeviceCubicClampFeaturesQCOM & operator=( VkPhysicalDeviceCubicClampFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
59457     {
59458       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM const *>( &rhs );
59459       return *this;
59460     }
59461 
59462 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM59463     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCubicClampFeaturesQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
59464     {
59465       pNext = pNext_;
59466       return *this;
59467     }
59468 
setCubicRangeClampVULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM59469     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCubicClampFeaturesQCOM & setCubicRangeClamp( VULKAN_HPP_NAMESPACE::Bool32 cubicRangeClamp_ ) VULKAN_HPP_NOEXCEPT
59470     {
59471       cubicRangeClamp = cubicRangeClamp_;
59472       return *this;
59473     }
59474 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
59475 
operator VkPhysicalDeviceCubicClampFeaturesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM59476     operator VkPhysicalDeviceCubicClampFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT
59477     {
59478       return *reinterpret_cast<const VkPhysicalDeviceCubicClampFeaturesQCOM *>( this );
59479     }
59480 
operator VkPhysicalDeviceCubicClampFeaturesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM59481     operator VkPhysicalDeviceCubicClampFeaturesQCOM &() VULKAN_HPP_NOEXCEPT
59482     {
59483       return *reinterpret_cast<VkPhysicalDeviceCubicClampFeaturesQCOM *>( this );
59484     }
59485 
59486 #if defined( VULKAN_HPP_USE_REFLECT )
59487 #  if 14 <= VULKAN_HPP_CPP_VERSION
59488     auto
59489 #  else
59490     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
59491 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM59492       reflect() const VULKAN_HPP_NOEXCEPT
59493     {
59494       return std::tie( sType, pNext, cubicRangeClamp );
59495     }
59496 #endif
59497 
59498 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59499     auto operator<=>( PhysicalDeviceCubicClampFeaturesQCOM const & ) const = default;
59500 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM59501     bool operator==( PhysicalDeviceCubicClampFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
59502     {
59503 #  if defined( VULKAN_HPP_USE_REFLECT )
59504       return this->reflect() == rhs.reflect();
59505 #  else
59506       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cubicRangeClamp == rhs.cubicRangeClamp );
59507 #  endif
59508     }
59509 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM59510     bool operator!=( PhysicalDeviceCubicClampFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
59511     {
59512       return !operator==( rhs );
59513     }
59514 #endif
59515 
59516   public:
59517     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::ePhysicalDeviceCubicClampFeaturesQCOM;
59518     void *                              pNext           = {};
59519     VULKAN_HPP_NAMESPACE::Bool32        cubicRangeClamp = {};
59520   };
59521 
59522   template <>
59523   struct CppType<StructureType, StructureType::ePhysicalDeviceCubicClampFeaturesQCOM>
59524   {
59525     using Type = PhysicalDeviceCubicClampFeaturesQCOM;
59526   };
59527 
59528   struct PhysicalDeviceCubicWeightsFeaturesQCOM
59529   {
59530     using NativeType = VkPhysicalDeviceCubicWeightsFeaturesQCOM;
59531 
59532     static const bool                                  allowDuplicate = false;
59533     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCubicWeightsFeaturesQCOM;
59534 
59535 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCubicWeightsFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM59536     VULKAN_HPP_CONSTEXPR PhysicalDeviceCubicWeightsFeaturesQCOM( VULKAN_HPP_NAMESPACE::Bool32 selectableCubicWeights_ = {},
59537                                                                  void *                       pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
59538       : pNext{ pNext_ }
59539       , selectableCubicWeights{ selectableCubicWeights_ }
59540     {
59541     }
59542 
59543     VULKAN_HPP_CONSTEXPR PhysicalDeviceCubicWeightsFeaturesQCOM( PhysicalDeviceCubicWeightsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59544 
PhysicalDeviceCubicWeightsFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM59545     PhysicalDeviceCubicWeightsFeaturesQCOM( VkPhysicalDeviceCubicWeightsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
59546       : PhysicalDeviceCubicWeightsFeaturesQCOM( *reinterpret_cast<PhysicalDeviceCubicWeightsFeaturesQCOM const *>( &rhs ) )
59547     {
59548     }
59549 
59550     PhysicalDeviceCubicWeightsFeaturesQCOM & operator=( PhysicalDeviceCubicWeightsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59551 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59552 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM59553     PhysicalDeviceCubicWeightsFeaturesQCOM & operator=( VkPhysicalDeviceCubicWeightsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
59554     {
59555       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM const *>( &rhs );
59556       return *this;
59557     }
59558 
59559 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM59560     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCubicWeightsFeaturesQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
59561     {
59562       pNext = pNext_;
59563       return *this;
59564     }
59565 
59566     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCubicWeightsFeaturesQCOM &
setSelectableCubicWeightsVULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM59567       setSelectableCubicWeights( VULKAN_HPP_NAMESPACE::Bool32 selectableCubicWeights_ ) VULKAN_HPP_NOEXCEPT
59568     {
59569       selectableCubicWeights = selectableCubicWeights_;
59570       return *this;
59571     }
59572 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
59573 
operator VkPhysicalDeviceCubicWeightsFeaturesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM59574     operator VkPhysicalDeviceCubicWeightsFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT
59575     {
59576       return *reinterpret_cast<const VkPhysicalDeviceCubicWeightsFeaturesQCOM *>( this );
59577     }
59578 
operator VkPhysicalDeviceCubicWeightsFeaturesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM59579     operator VkPhysicalDeviceCubicWeightsFeaturesQCOM &() VULKAN_HPP_NOEXCEPT
59580     {
59581       return *reinterpret_cast<VkPhysicalDeviceCubicWeightsFeaturesQCOM *>( this );
59582     }
59583 
59584 #if defined( VULKAN_HPP_USE_REFLECT )
59585 #  if 14 <= VULKAN_HPP_CPP_VERSION
59586     auto
59587 #  else
59588     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
59589 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM59590       reflect() const VULKAN_HPP_NOEXCEPT
59591     {
59592       return std::tie( sType, pNext, selectableCubicWeights );
59593     }
59594 #endif
59595 
59596 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59597     auto operator<=>( PhysicalDeviceCubicWeightsFeaturesQCOM const & ) const = default;
59598 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM59599     bool operator==( PhysicalDeviceCubicWeightsFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
59600     {
59601 #  if defined( VULKAN_HPP_USE_REFLECT )
59602       return this->reflect() == rhs.reflect();
59603 #  else
59604       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( selectableCubicWeights == rhs.selectableCubicWeights );
59605 #  endif
59606     }
59607 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM59608     bool operator!=( PhysicalDeviceCubicWeightsFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
59609     {
59610       return !operator==( rhs );
59611     }
59612 #endif
59613 
59614   public:
59615     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::ePhysicalDeviceCubicWeightsFeaturesQCOM;
59616     void *                              pNext                  = {};
59617     VULKAN_HPP_NAMESPACE::Bool32        selectableCubicWeights = {};
59618   };
59619 
59620   template <>
59621   struct CppType<StructureType, StructureType::ePhysicalDeviceCubicWeightsFeaturesQCOM>
59622   {
59623     using Type = PhysicalDeviceCubicWeightsFeaturesQCOM;
59624   };
59625 
59626 #if defined( VK_ENABLE_BETA_EXTENSIONS )
59627   struct PhysicalDeviceCudaKernelLaunchFeaturesNV
59628   {
59629     using NativeType = VkPhysicalDeviceCudaKernelLaunchFeaturesNV;
59630 
59631     static const bool                                  allowDuplicate = false;
59632     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCudaKernelLaunchFeaturesNV;
59633 
59634 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCudaKernelLaunchFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV59635     VULKAN_HPP_CONSTEXPR PhysicalDeviceCudaKernelLaunchFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 cudaKernelLaunchFeatures_ = {},
59636                                                                    void *                       pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
59637       : pNext{ pNext_ }
59638       , cudaKernelLaunchFeatures{ cudaKernelLaunchFeatures_ }
59639     {
59640     }
59641 
59642     VULKAN_HPP_CONSTEXPR PhysicalDeviceCudaKernelLaunchFeaturesNV( PhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59643 
PhysicalDeviceCudaKernelLaunchFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV59644     PhysicalDeviceCudaKernelLaunchFeaturesNV( VkPhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59645       : PhysicalDeviceCudaKernelLaunchFeaturesNV( *reinterpret_cast<PhysicalDeviceCudaKernelLaunchFeaturesNV const *>( &rhs ) )
59646     {
59647     }
59648 
59649     PhysicalDeviceCudaKernelLaunchFeaturesNV & operator=( PhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59650 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59651 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV59652     PhysicalDeviceCudaKernelLaunchFeaturesNV & operator=( VkPhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59653     {
59654       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV const *>( &rhs );
59655       return *this;
59656     }
59657 
59658 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV59659     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCudaKernelLaunchFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
59660     {
59661       pNext = pNext_;
59662       return *this;
59663     }
59664 
59665     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCudaKernelLaunchFeaturesNV &
setCudaKernelLaunchFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV59666       setCudaKernelLaunchFeatures( VULKAN_HPP_NAMESPACE::Bool32 cudaKernelLaunchFeatures_ ) VULKAN_HPP_NOEXCEPT
59667     {
59668       cudaKernelLaunchFeatures = cudaKernelLaunchFeatures_;
59669       return *this;
59670     }
59671 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
59672 
operator VkPhysicalDeviceCudaKernelLaunchFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV59673     operator VkPhysicalDeviceCudaKernelLaunchFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
59674     {
59675       return *reinterpret_cast<const VkPhysicalDeviceCudaKernelLaunchFeaturesNV *>( this );
59676     }
59677 
operator VkPhysicalDeviceCudaKernelLaunchFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV59678     operator VkPhysicalDeviceCudaKernelLaunchFeaturesNV &() VULKAN_HPP_NOEXCEPT
59679     {
59680       return *reinterpret_cast<VkPhysicalDeviceCudaKernelLaunchFeaturesNV *>( this );
59681     }
59682 
59683 #  if defined( VULKAN_HPP_USE_REFLECT )
59684 #    if 14 <= VULKAN_HPP_CPP_VERSION
59685     auto
59686 #    else
59687     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
59688 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV59689       reflect() const VULKAN_HPP_NOEXCEPT
59690     {
59691       return std::tie( sType, pNext, cudaKernelLaunchFeatures );
59692     }
59693 #  endif
59694 
59695 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59696     auto operator<=>( PhysicalDeviceCudaKernelLaunchFeaturesNV const & ) const = default;
59697 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV59698     bool operator==( PhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59699     {
59700 #    if defined( VULKAN_HPP_USE_REFLECT )
59701       return this->reflect() == rhs.reflect();
59702 #    else
59703       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cudaKernelLaunchFeatures == rhs.cudaKernelLaunchFeatures );
59704 #    endif
59705     }
59706 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV59707     bool operator!=( PhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59708     {
59709       return !operator==( rhs );
59710     }
59711 #  endif
59712 
59713   public:
59714     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDeviceCudaKernelLaunchFeaturesNV;
59715     void *                              pNext                    = {};
59716     VULKAN_HPP_NAMESPACE::Bool32        cudaKernelLaunchFeatures = {};
59717   };
59718 
59719   template <>
59720   struct CppType<StructureType, StructureType::ePhysicalDeviceCudaKernelLaunchFeaturesNV>
59721   {
59722     using Type = PhysicalDeviceCudaKernelLaunchFeaturesNV;
59723   };
59724 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
59725 
59726 #if defined( VK_ENABLE_BETA_EXTENSIONS )
59727   struct PhysicalDeviceCudaKernelLaunchPropertiesNV
59728   {
59729     using NativeType = VkPhysicalDeviceCudaKernelLaunchPropertiesNV;
59730 
59731     static const bool                                  allowDuplicate = false;
59732     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCudaKernelLaunchPropertiesNV;
59733 
59734 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCudaKernelLaunchPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV59735     VULKAN_HPP_CONSTEXPR PhysicalDeviceCudaKernelLaunchPropertiesNV( uint32_t computeCapabilityMinor_ = {},
59736                                                                      uint32_t computeCapabilityMajor_ = {},
59737                                                                      void *   pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
59738       : pNext{ pNext_ }
59739       , computeCapabilityMinor{ computeCapabilityMinor_ }
59740       , computeCapabilityMajor{ computeCapabilityMajor_ }
59741     {
59742     }
59743 
59744     VULKAN_HPP_CONSTEXPR PhysicalDeviceCudaKernelLaunchPropertiesNV( PhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59745 
PhysicalDeviceCudaKernelLaunchPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV59746     PhysicalDeviceCudaKernelLaunchPropertiesNV( VkPhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59747       : PhysicalDeviceCudaKernelLaunchPropertiesNV( *reinterpret_cast<PhysicalDeviceCudaKernelLaunchPropertiesNV const *>( &rhs ) )
59748     {
59749     }
59750 
59751     PhysicalDeviceCudaKernelLaunchPropertiesNV & operator=( PhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59752 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59753 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV59754     PhysicalDeviceCudaKernelLaunchPropertiesNV & operator=( VkPhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
59755     {
59756       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV const *>( &rhs );
59757       return *this;
59758     }
59759 
operator VkPhysicalDeviceCudaKernelLaunchPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV59760     operator VkPhysicalDeviceCudaKernelLaunchPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
59761     {
59762       return *reinterpret_cast<const VkPhysicalDeviceCudaKernelLaunchPropertiesNV *>( this );
59763     }
59764 
operator VkPhysicalDeviceCudaKernelLaunchPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV59765     operator VkPhysicalDeviceCudaKernelLaunchPropertiesNV &() VULKAN_HPP_NOEXCEPT
59766     {
59767       return *reinterpret_cast<VkPhysicalDeviceCudaKernelLaunchPropertiesNV *>( this );
59768     }
59769 
59770 #  if defined( VULKAN_HPP_USE_REFLECT )
59771 #    if 14 <= VULKAN_HPP_CPP_VERSION
59772     auto
59773 #    else
59774     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &>
59775 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV59776       reflect() const VULKAN_HPP_NOEXCEPT
59777     {
59778       return std::tie( sType, pNext, computeCapabilityMinor, computeCapabilityMajor );
59779     }
59780 #  endif
59781 
59782 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59783     auto operator<=>( PhysicalDeviceCudaKernelLaunchPropertiesNV const & ) const = default;
59784 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV59785     bool operator==( PhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59786     {
59787 #    if defined( VULKAN_HPP_USE_REFLECT )
59788       return this->reflect() == rhs.reflect();
59789 #    else
59790       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( computeCapabilityMinor == rhs.computeCapabilityMinor ) &&
59791              ( computeCapabilityMajor == rhs.computeCapabilityMajor );
59792 #    endif
59793     }
59794 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV59795     bool operator!=( PhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
59796     {
59797       return !operator==( rhs );
59798     }
59799 #  endif
59800 
59801   public:
59802     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::ePhysicalDeviceCudaKernelLaunchPropertiesNV;
59803     void *                              pNext                  = {};
59804     uint32_t                            computeCapabilityMinor = {};
59805     uint32_t                            computeCapabilityMajor = {};
59806   };
59807 
59808   template <>
59809   struct CppType<StructureType, StructureType::ePhysicalDeviceCudaKernelLaunchPropertiesNV>
59810   {
59811     using Type = PhysicalDeviceCudaKernelLaunchPropertiesNV;
59812   };
59813 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
59814 
59815   struct PhysicalDeviceCustomBorderColorFeaturesEXT
59816   {
59817     using NativeType = VkPhysicalDeviceCustomBorderColorFeaturesEXT;
59818 
59819     static const bool                                  allowDuplicate = false;
59820     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT;
59821 
59822 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCustomBorderColorFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT59823     VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 customBorderColors_             = {},
59824                                                                      VULKAN_HPP_NAMESPACE::Bool32 customBorderColorWithoutFormat_ = {},
59825                                                                      void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
59826       : pNext{ pNext_ }
59827       , customBorderColors{ customBorderColors_ }
59828       , customBorderColorWithoutFormat{ customBorderColorWithoutFormat_ }
59829     {
59830     }
59831 
59832     VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorFeaturesEXT( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59833 
PhysicalDeviceCustomBorderColorFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT59834     PhysicalDeviceCustomBorderColorFeaturesEXT( VkPhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
59835       : PhysicalDeviceCustomBorderColorFeaturesEXT( *reinterpret_cast<PhysicalDeviceCustomBorderColorFeaturesEXT const *>( &rhs ) )
59836     {
59837     }
59838 
59839     PhysicalDeviceCustomBorderColorFeaturesEXT & operator=( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59840 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59841 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT59842     PhysicalDeviceCustomBorderColorFeaturesEXT & operator=( VkPhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
59843     {
59844       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT const *>( &rhs );
59845       return *this;
59846     }
59847 
59848 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT59849     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
59850     {
59851       pNext = pNext_;
59852       return *this;
59853     }
59854 
59855     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT &
setCustomBorderColorsVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT59856       setCustomBorderColors( VULKAN_HPP_NAMESPACE::Bool32 customBorderColors_ ) VULKAN_HPP_NOEXCEPT
59857     {
59858       customBorderColors = customBorderColors_;
59859       return *this;
59860     }
59861 
59862     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT &
setCustomBorderColorWithoutFormatVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT59863       setCustomBorderColorWithoutFormat( VULKAN_HPP_NAMESPACE::Bool32 customBorderColorWithoutFormat_ ) VULKAN_HPP_NOEXCEPT
59864     {
59865       customBorderColorWithoutFormat = customBorderColorWithoutFormat_;
59866       return *this;
59867     }
59868 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
59869 
operator VkPhysicalDeviceCustomBorderColorFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT59870     operator VkPhysicalDeviceCustomBorderColorFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
59871     {
59872       return *reinterpret_cast<const VkPhysicalDeviceCustomBorderColorFeaturesEXT *>( this );
59873     }
59874 
operator VkPhysicalDeviceCustomBorderColorFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT59875     operator VkPhysicalDeviceCustomBorderColorFeaturesEXT &() VULKAN_HPP_NOEXCEPT
59876     {
59877       return *reinterpret_cast<VkPhysicalDeviceCustomBorderColorFeaturesEXT *>( this );
59878     }
59879 
59880 #if defined( VULKAN_HPP_USE_REFLECT )
59881 #  if 14 <= VULKAN_HPP_CPP_VERSION
59882     auto
59883 #  else
59884     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
59885 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT59886       reflect() const VULKAN_HPP_NOEXCEPT
59887     {
59888       return std::tie( sType, pNext, customBorderColors, customBorderColorWithoutFormat );
59889     }
59890 #endif
59891 
59892 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59893     auto operator<=>( PhysicalDeviceCustomBorderColorFeaturesEXT const & ) const = default;
59894 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT59895     bool operator==( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
59896     {
59897 #  if defined( VULKAN_HPP_USE_REFLECT )
59898       return this->reflect() == rhs.reflect();
59899 #  else
59900       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( customBorderColors == rhs.customBorderColors ) &&
59901              ( customBorderColorWithoutFormat == rhs.customBorderColorWithoutFormat );
59902 #  endif
59903     }
59904 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT59905     bool operator!=( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
59906     {
59907       return !operator==( rhs );
59908     }
59909 #endif
59910 
59911   public:
59912     VULKAN_HPP_NAMESPACE::StructureType sType                          = StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT;
59913     void *                              pNext                          = {};
59914     VULKAN_HPP_NAMESPACE::Bool32        customBorderColors             = {};
59915     VULKAN_HPP_NAMESPACE::Bool32        customBorderColorWithoutFormat = {};
59916   };
59917 
59918   template <>
59919   struct CppType<StructureType, StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT>
59920   {
59921     using Type = PhysicalDeviceCustomBorderColorFeaturesEXT;
59922   };
59923 
59924   struct PhysicalDeviceCustomBorderColorPropertiesEXT
59925   {
59926     using NativeType = VkPhysicalDeviceCustomBorderColorPropertiesEXT;
59927 
59928     static const bool                                  allowDuplicate = false;
59929     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT;
59930 
59931 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCustomBorderColorPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT59932     VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorPropertiesEXT( uint32_t maxCustomBorderColorSamplers_ = {},
59933                                                                        void *   pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
59934       : pNext{ pNext_ }
59935       , maxCustomBorderColorSamplers{ maxCustomBorderColorSamplers_ }
59936     {
59937     }
59938 
59939     VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorPropertiesEXT( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59940 
PhysicalDeviceCustomBorderColorPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT59941     PhysicalDeviceCustomBorderColorPropertiesEXT( VkPhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
59942       : PhysicalDeviceCustomBorderColorPropertiesEXT( *reinterpret_cast<PhysicalDeviceCustomBorderColorPropertiesEXT const *>( &rhs ) )
59943     {
59944     }
59945 
59946     PhysicalDeviceCustomBorderColorPropertiesEXT & operator=( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
59947 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
59948 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT59949     PhysicalDeviceCustomBorderColorPropertiesEXT & operator=( VkPhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
59950     {
59951       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT const *>( &rhs );
59952       return *this;
59953     }
59954 
operator VkPhysicalDeviceCustomBorderColorPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT59955     operator VkPhysicalDeviceCustomBorderColorPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
59956     {
59957       return *reinterpret_cast<const VkPhysicalDeviceCustomBorderColorPropertiesEXT *>( this );
59958     }
59959 
operator VkPhysicalDeviceCustomBorderColorPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT59960     operator VkPhysicalDeviceCustomBorderColorPropertiesEXT &() VULKAN_HPP_NOEXCEPT
59961     {
59962       return *reinterpret_cast<VkPhysicalDeviceCustomBorderColorPropertiesEXT *>( this );
59963     }
59964 
59965 #if defined( VULKAN_HPP_USE_REFLECT )
59966 #  if 14 <= VULKAN_HPP_CPP_VERSION
59967     auto
59968 #  else
59969     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
59970 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT59971       reflect() const VULKAN_HPP_NOEXCEPT
59972     {
59973       return std::tie( sType, pNext, maxCustomBorderColorSamplers );
59974     }
59975 #endif
59976 
59977 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
59978     auto operator<=>( PhysicalDeviceCustomBorderColorPropertiesEXT const & ) const = default;
59979 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT59980     bool operator==( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
59981     {
59982 #  if defined( VULKAN_HPP_USE_REFLECT )
59983       return this->reflect() == rhs.reflect();
59984 #  else
59985       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxCustomBorderColorSamplers == rhs.maxCustomBorderColorSamplers );
59986 #  endif
59987     }
59988 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT59989     bool operator!=( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
59990     {
59991       return !operator==( rhs );
59992     }
59993 #endif
59994 
59995   public:
59996     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT;
59997     void *                              pNext                        = {};
59998     uint32_t                            maxCustomBorderColorSamplers = {};
59999   };
60000 
60001   template <>
60002   struct CppType<StructureType, StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT>
60003   {
60004     using Type = PhysicalDeviceCustomBorderColorPropertiesEXT;
60005   };
60006 
60007   struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
60008   {
60009     using NativeType = VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
60010 
60011     static const bool                                  allowDuplicate = false;
60012     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
60013 
60014 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV60015     VULKAN_HPP_CONSTEXPR PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocationImageAliasing_ = {},
60016                                                                                    void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
60017       : pNext{ pNext_ }
60018       , dedicatedAllocationImageAliasing{ dedicatedAllocationImageAliasing_ }
60019     {
60020     }
60021 
60022     VULKAN_HPP_CONSTEXPR PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs )
60023       VULKAN_HPP_NOEXCEPT = default;
60024 
PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV60025     PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
60026       : PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( *reinterpret_cast<PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const *>( &rhs ) )
60027     {
60028     }
60029 
60030     PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV &
60031       operator=( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60032 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60033 
60034     PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV60035       operator=( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
60036     {
60037       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const *>( &rhs );
60038       return *this;
60039     }
60040 
60041 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV60042     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
60043     {
60044       pNext = pNext_;
60045       return *this;
60046     }
60047 
60048     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV &
setDedicatedAllocationImageAliasingVULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV60049       setDedicatedAllocationImageAliasing( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocationImageAliasing_ ) VULKAN_HPP_NOEXCEPT
60050     {
60051       dedicatedAllocationImageAliasing = dedicatedAllocationImageAliasing_;
60052       return *this;
60053     }
60054 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
60055 
operator VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV60056     operator VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
60057     {
60058       return *reinterpret_cast<const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *>( this );
60059     }
60060 
operator VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV60061     operator VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV &() VULKAN_HPP_NOEXCEPT
60062     {
60063       return *reinterpret_cast<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *>( this );
60064     }
60065 
60066 #if defined( VULKAN_HPP_USE_REFLECT )
60067 #  if 14 <= VULKAN_HPP_CPP_VERSION
60068     auto
60069 #  else
60070     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
60071 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV60072       reflect() const VULKAN_HPP_NOEXCEPT
60073     {
60074       return std::tie( sType, pNext, dedicatedAllocationImageAliasing );
60075     }
60076 #endif
60077 
60078 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60079     auto operator<=>( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & ) const = default;
60080 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV60081     bool operator==( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
60082     {
60083 #  if defined( VULKAN_HPP_USE_REFLECT )
60084       return this->reflect() == rhs.reflect();
60085 #  else
60086       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dedicatedAllocationImageAliasing == rhs.dedicatedAllocationImageAliasing );
60087 #  endif
60088     }
60089 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV60090     bool operator!=( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
60091     {
60092       return !operator==( rhs );
60093     }
60094 #endif
60095 
60096   public:
60097     VULKAN_HPP_NAMESPACE::StructureType sType                            = StructureType::ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
60098     void *                              pNext                            = {};
60099     VULKAN_HPP_NAMESPACE::Bool32        dedicatedAllocationImageAliasing = {};
60100   };
60101 
60102   template <>
60103   struct CppType<StructureType, StructureType::ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>
60104   {
60105     using Type = PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
60106   };
60107 
60108   struct PhysicalDeviceDepthBiasControlFeaturesEXT
60109   {
60110     using NativeType = VkPhysicalDeviceDepthBiasControlFeaturesEXT;
60111 
60112     static const bool                                  allowDuplicate = false;
60113     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDepthBiasControlFeaturesEXT;
60114 
60115 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDepthBiasControlFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60116     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthBiasControlFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 depthBiasControl_                                = {},
60117                                                                     VULKAN_HPP_NAMESPACE::Bool32 leastRepresentableValueForceUnormRepresentation_ = {},
60118                                                                     VULKAN_HPP_NAMESPACE::Bool32 floatRepresentation_                             = {},
60119                                                                     VULKAN_HPP_NAMESPACE::Bool32 depthBiasExact_                                  = {},
60120                                                                     void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
60121       : pNext{ pNext_ }
60122       , depthBiasControl{ depthBiasControl_ }
60123       , leastRepresentableValueForceUnormRepresentation{ leastRepresentableValueForceUnormRepresentation_ }
60124       , floatRepresentation{ floatRepresentation_ }
60125       , depthBiasExact{ depthBiasExact_ }
60126     {
60127     }
60128 
60129     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthBiasControlFeaturesEXT( PhysicalDeviceDepthBiasControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60130 
PhysicalDeviceDepthBiasControlFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60131     PhysicalDeviceDepthBiasControlFeaturesEXT( VkPhysicalDeviceDepthBiasControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60132       : PhysicalDeviceDepthBiasControlFeaturesEXT( *reinterpret_cast<PhysicalDeviceDepthBiasControlFeaturesEXT const *>( &rhs ) )
60133     {
60134     }
60135 
60136     PhysicalDeviceDepthBiasControlFeaturesEXT & operator=( PhysicalDeviceDepthBiasControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60137 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60138 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60139     PhysicalDeviceDepthBiasControlFeaturesEXT & operator=( VkPhysicalDeviceDepthBiasControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60140     {
60141       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT const *>( &rhs );
60142       return *this;
60143     }
60144 
60145 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60146     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthBiasControlFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
60147     {
60148       pNext = pNext_;
60149       return *this;
60150     }
60151 
60152     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthBiasControlFeaturesEXT &
setDepthBiasControlVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60153       setDepthBiasControl( VULKAN_HPP_NAMESPACE::Bool32 depthBiasControl_ ) VULKAN_HPP_NOEXCEPT
60154     {
60155       depthBiasControl = depthBiasControl_;
60156       return *this;
60157     }
60158 
60159     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthBiasControlFeaturesEXT &
setLeastRepresentableValueForceUnormRepresentationVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60160       setLeastRepresentableValueForceUnormRepresentation( VULKAN_HPP_NAMESPACE::Bool32 leastRepresentableValueForceUnormRepresentation_ ) VULKAN_HPP_NOEXCEPT
60161     {
60162       leastRepresentableValueForceUnormRepresentation = leastRepresentableValueForceUnormRepresentation_;
60163       return *this;
60164     }
60165 
60166     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthBiasControlFeaturesEXT &
setFloatRepresentationVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60167       setFloatRepresentation( VULKAN_HPP_NAMESPACE::Bool32 floatRepresentation_ ) VULKAN_HPP_NOEXCEPT
60168     {
60169       floatRepresentation = floatRepresentation_;
60170       return *this;
60171     }
60172 
setDepthBiasExactVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60173     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthBiasControlFeaturesEXT & setDepthBiasExact( VULKAN_HPP_NAMESPACE::Bool32 depthBiasExact_ ) VULKAN_HPP_NOEXCEPT
60174     {
60175       depthBiasExact = depthBiasExact_;
60176       return *this;
60177     }
60178 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
60179 
operator VkPhysicalDeviceDepthBiasControlFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60180     operator VkPhysicalDeviceDepthBiasControlFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
60181     {
60182       return *reinterpret_cast<const VkPhysicalDeviceDepthBiasControlFeaturesEXT *>( this );
60183     }
60184 
operator VkPhysicalDeviceDepthBiasControlFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60185     operator VkPhysicalDeviceDepthBiasControlFeaturesEXT &() VULKAN_HPP_NOEXCEPT
60186     {
60187       return *reinterpret_cast<VkPhysicalDeviceDepthBiasControlFeaturesEXT *>( this );
60188     }
60189 
60190 #if defined( VULKAN_HPP_USE_REFLECT )
60191 #  if 14 <= VULKAN_HPP_CPP_VERSION
60192     auto
60193 #  else
60194     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
60195                void * const &,
60196                VULKAN_HPP_NAMESPACE::Bool32 const &,
60197                VULKAN_HPP_NAMESPACE::Bool32 const &,
60198                VULKAN_HPP_NAMESPACE::Bool32 const &,
60199                VULKAN_HPP_NAMESPACE::Bool32 const &>
60200 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60201       reflect() const VULKAN_HPP_NOEXCEPT
60202     {
60203       return std::tie( sType, pNext, depthBiasControl, leastRepresentableValueForceUnormRepresentation, floatRepresentation, depthBiasExact );
60204     }
60205 #endif
60206 
60207 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60208     auto operator<=>( PhysicalDeviceDepthBiasControlFeaturesEXT const & ) const = default;
60209 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60210     bool operator==( PhysicalDeviceDepthBiasControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60211     {
60212 #  if defined( VULKAN_HPP_USE_REFLECT )
60213       return this->reflect() == rhs.reflect();
60214 #  else
60215       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthBiasControl == rhs.depthBiasControl ) &&
60216              ( leastRepresentableValueForceUnormRepresentation == rhs.leastRepresentableValueForceUnormRepresentation ) &&
60217              ( floatRepresentation == rhs.floatRepresentation ) && ( depthBiasExact == rhs.depthBiasExact );
60218 #  endif
60219     }
60220 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT60221     bool operator!=( PhysicalDeviceDepthBiasControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60222     {
60223       return !operator==( rhs );
60224     }
60225 #endif
60226 
60227   public:
60228     VULKAN_HPP_NAMESPACE::StructureType sType                                           = StructureType::ePhysicalDeviceDepthBiasControlFeaturesEXT;
60229     void *                              pNext                                           = {};
60230     VULKAN_HPP_NAMESPACE::Bool32        depthBiasControl                                = {};
60231     VULKAN_HPP_NAMESPACE::Bool32        leastRepresentableValueForceUnormRepresentation = {};
60232     VULKAN_HPP_NAMESPACE::Bool32        floatRepresentation                             = {};
60233     VULKAN_HPP_NAMESPACE::Bool32        depthBiasExact                                  = {};
60234   };
60235 
60236   template <>
60237   struct CppType<StructureType, StructureType::ePhysicalDeviceDepthBiasControlFeaturesEXT>
60238   {
60239     using Type = PhysicalDeviceDepthBiasControlFeaturesEXT;
60240   };
60241 
60242   struct PhysicalDeviceDepthClampZeroOneFeaturesEXT
60243   {
60244     using NativeType = VkPhysicalDeviceDepthClampZeroOneFeaturesEXT;
60245 
60246     static const bool                                  allowDuplicate = false;
60247     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDepthClampZeroOneFeaturesEXT;
60248 
60249 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDepthClampZeroOneFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT60250     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClampZeroOneFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 depthClampZeroOne_ = {},
60251                                                                      void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
60252       : pNext{ pNext_ }
60253       , depthClampZeroOne{ depthClampZeroOne_ }
60254     {
60255     }
60256 
60257     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClampZeroOneFeaturesEXT( PhysicalDeviceDepthClampZeroOneFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60258 
PhysicalDeviceDepthClampZeroOneFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT60259     PhysicalDeviceDepthClampZeroOneFeaturesEXT( VkPhysicalDeviceDepthClampZeroOneFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60260       : PhysicalDeviceDepthClampZeroOneFeaturesEXT( *reinterpret_cast<PhysicalDeviceDepthClampZeroOneFeaturesEXT const *>( &rhs ) )
60261     {
60262     }
60263 
60264     PhysicalDeviceDepthClampZeroOneFeaturesEXT & operator=( PhysicalDeviceDepthClampZeroOneFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60265 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60266 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT60267     PhysicalDeviceDepthClampZeroOneFeaturesEXT & operator=( VkPhysicalDeviceDepthClampZeroOneFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60268     {
60269       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT const *>( &rhs );
60270       return *this;
60271     }
60272 
60273 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT60274     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClampZeroOneFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
60275     {
60276       pNext = pNext_;
60277       return *this;
60278     }
60279 
60280     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClampZeroOneFeaturesEXT &
setDepthClampZeroOneVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT60281       setDepthClampZeroOne( VULKAN_HPP_NAMESPACE::Bool32 depthClampZeroOne_ ) VULKAN_HPP_NOEXCEPT
60282     {
60283       depthClampZeroOne = depthClampZeroOne_;
60284       return *this;
60285     }
60286 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
60287 
operator VkPhysicalDeviceDepthClampZeroOneFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT60288     operator VkPhysicalDeviceDepthClampZeroOneFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
60289     {
60290       return *reinterpret_cast<const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT *>( this );
60291     }
60292 
operator VkPhysicalDeviceDepthClampZeroOneFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT60293     operator VkPhysicalDeviceDepthClampZeroOneFeaturesEXT &() VULKAN_HPP_NOEXCEPT
60294     {
60295       return *reinterpret_cast<VkPhysicalDeviceDepthClampZeroOneFeaturesEXT *>( this );
60296     }
60297 
60298 #if defined( VULKAN_HPP_USE_REFLECT )
60299 #  if 14 <= VULKAN_HPP_CPP_VERSION
60300     auto
60301 #  else
60302     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
60303 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT60304       reflect() const VULKAN_HPP_NOEXCEPT
60305     {
60306       return std::tie( sType, pNext, depthClampZeroOne );
60307     }
60308 #endif
60309 
60310 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60311     auto operator<=>( PhysicalDeviceDepthClampZeroOneFeaturesEXT const & ) const = default;
60312 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT60313     bool operator==( PhysicalDeviceDepthClampZeroOneFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60314     {
60315 #  if defined( VULKAN_HPP_USE_REFLECT )
60316       return this->reflect() == rhs.reflect();
60317 #  else
60318       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthClampZeroOne == rhs.depthClampZeroOne );
60319 #  endif
60320     }
60321 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT60322     bool operator!=( PhysicalDeviceDepthClampZeroOneFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60323     {
60324       return !operator==( rhs );
60325     }
60326 #endif
60327 
60328   public:
60329     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceDepthClampZeroOneFeaturesEXT;
60330     void *                              pNext             = {};
60331     VULKAN_HPP_NAMESPACE::Bool32        depthClampZeroOne = {};
60332   };
60333 
60334   template <>
60335   struct CppType<StructureType, StructureType::ePhysicalDeviceDepthClampZeroOneFeaturesEXT>
60336   {
60337     using Type = PhysicalDeviceDepthClampZeroOneFeaturesEXT;
60338   };
60339 
60340   struct PhysicalDeviceDepthClipControlFeaturesEXT
60341   {
60342     using NativeType = VkPhysicalDeviceDepthClipControlFeaturesEXT;
60343 
60344     static const bool                                  allowDuplicate = false;
60345     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDepthClipControlFeaturesEXT;
60346 
60347 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDepthClipControlFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT60348     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipControlFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 depthClipControl_ = {},
60349                                                                     void *                       pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
60350       : pNext{ pNext_ }
60351       , depthClipControl{ depthClipControl_ }
60352     {
60353     }
60354 
60355     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipControlFeaturesEXT( PhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60356 
PhysicalDeviceDepthClipControlFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT60357     PhysicalDeviceDepthClipControlFeaturesEXT( VkPhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60358       : PhysicalDeviceDepthClipControlFeaturesEXT( *reinterpret_cast<PhysicalDeviceDepthClipControlFeaturesEXT const *>( &rhs ) )
60359     {
60360     }
60361 
60362     PhysicalDeviceDepthClipControlFeaturesEXT & operator=( PhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60363 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60364 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT60365     PhysicalDeviceDepthClipControlFeaturesEXT & operator=( VkPhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60366     {
60367       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT const *>( &rhs );
60368       return *this;
60369     }
60370 
60371 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT60372     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipControlFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
60373     {
60374       pNext = pNext_;
60375       return *this;
60376     }
60377 
60378     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipControlFeaturesEXT &
setDepthClipControlVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT60379       setDepthClipControl( VULKAN_HPP_NAMESPACE::Bool32 depthClipControl_ ) VULKAN_HPP_NOEXCEPT
60380     {
60381       depthClipControl = depthClipControl_;
60382       return *this;
60383     }
60384 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
60385 
operator VkPhysicalDeviceDepthClipControlFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT60386     operator VkPhysicalDeviceDepthClipControlFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
60387     {
60388       return *reinterpret_cast<const VkPhysicalDeviceDepthClipControlFeaturesEXT *>( this );
60389     }
60390 
operator VkPhysicalDeviceDepthClipControlFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT60391     operator VkPhysicalDeviceDepthClipControlFeaturesEXT &() VULKAN_HPP_NOEXCEPT
60392     {
60393       return *reinterpret_cast<VkPhysicalDeviceDepthClipControlFeaturesEXT *>( this );
60394     }
60395 
60396 #if defined( VULKAN_HPP_USE_REFLECT )
60397 #  if 14 <= VULKAN_HPP_CPP_VERSION
60398     auto
60399 #  else
60400     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
60401 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT60402       reflect() const VULKAN_HPP_NOEXCEPT
60403     {
60404       return std::tie( sType, pNext, depthClipControl );
60405     }
60406 #endif
60407 
60408 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60409     auto operator<=>( PhysicalDeviceDepthClipControlFeaturesEXT const & ) const = default;
60410 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT60411     bool operator==( PhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60412     {
60413 #  if defined( VULKAN_HPP_USE_REFLECT )
60414       return this->reflect() == rhs.reflect();
60415 #  else
60416       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthClipControl == rhs.depthClipControl );
60417 #  endif
60418     }
60419 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT60420     bool operator!=( PhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60421     {
60422       return !operator==( rhs );
60423     }
60424 #endif
60425 
60426   public:
60427     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceDepthClipControlFeaturesEXT;
60428     void *                              pNext            = {};
60429     VULKAN_HPP_NAMESPACE::Bool32        depthClipControl = {};
60430   };
60431 
60432   template <>
60433   struct CppType<StructureType, StructureType::ePhysicalDeviceDepthClipControlFeaturesEXT>
60434   {
60435     using Type = PhysicalDeviceDepthClipControlFeaturesEXT;
60436   };
60437 
60438   struct PhysicalDeviceDepthClipEnableFeaturesEXT
60439   {
60440     using NativeType = VkPhysicalDeviceDepthClipEnableFeaturesEXT;
60441 
60442     static const bool                                  allowDuplicate = false;
60443     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT;
60444 
60445 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDepthClipEnableFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT60446     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipEnableFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_ = {},
60447                                                                    void *                       pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
60448       : pNext{ pNext_ }
60449       , depthClipEnable{ depthClipEnable_ }
60450     {
60451     }
60452 
60453     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipEnableFeaturesEXT( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60454 
PhysicalDeviceDepthClipEnableFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT60455     PhysicalDeviceDepthClipEnableFeaturesEXT( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60456       : PhysicalDeviceDepthClipEnableFeaturesEXT( *reinterpret_cast<PhysicalDeviceDepthClipEnableFeaturesEXT const *>( &rhs ) )
60457     {
60458     }
60459 
60460     PhysicalDeviceDepthClipEnableFeaturesEXT & operator=( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60461 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60462 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT60463     PhysicalDeviceDepthClipEnableFeaturesEXT & operator=( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60464     {
60465       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT const *>( &rhs );
60466       return *this;
60467     }
60468 
60469 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT60470     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipEnableFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
60471     {
60472       pNext = pNext_;
60473       return *this;
60474     }
60475 
setDepthClipEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT60476     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipEnableFeaturesEXT & setDepthClipEnable( VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_ ) VULKAN_HPP_NOEXCEPT
60477     {
60478       depthClipEnable = depthClipEnable_;
60479       return *this;
60480     }
60481 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
60482 
operator VkPhysicalDeviceDepthClipEnableFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT60483     operator VkPhysicalDeviceDepthClipEnableFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
60484     {
60485       return *reinterpret_cast<const VkPhysicalDeviceDepthClipEnableFeaturesEXT *>( this );
60486     }
60487 
operator VkPhysicalDeviceDepthClipEnableFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT60488     operator VkPhysicalDeviceDepthClipEnableFeaturesEXT &() VULKAN_HPP_NOEXCEPT
60489     {
60490       return *reinterpret_cast<VkPhysicalDeviceDepthClipEnableFeaturesEXT *>( this );
60491     }
60492 
60493 #if defined( VULKAN_HPP_USE_REFLECT )
60494 #  if 14 <= VULKAN_HPP_CPP_VERSION
60495     auto
60496 #  else
60497     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
60498 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT60499       reflect() const VULKAN_HPP_NOEXCEPT
60500     {
60501       return std::tie( sType, pNext, depthClipEnable );
60502     }
60503 #endif
60504 
60505 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60506     auto operator<=>( PhysicalDeviceDepthClipEnableFeaturesEXT const & ) const = default;
60507 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT60508     bool operator==( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60509     {
60510 #  if defined( VULKAN_HPP_USE_REFLECT )
60511       return this->reflect() == rhs.reflect();
60512 #  else
60513       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthClipEnable == rhs.depthClipEnable );
60514 #  endif
60515     }
60516 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT60517     bool operator!=( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60518     {
60519       return !operator==( rhs );
60520     }
60521 #endif
60522 
60523   public:
60524     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT;
60525     void *                              pNext           = {};
60526     VULKAN_HPP_NAMESPACE::Bool32        depthClipEnable = {};
60527   };
60528 
60529   template <>
60530   struct CppType<StructureType, StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT>
60531   {
60532     using Type = PhysicalDeviceDepthClipEnableFeaturesEXT;
60533   };
60534 
60535   struct PhysicalDeviceDepthStencilResolveProperties
60536   {
60537     using NativeType = VkPhysicalDeviceDepthStencilResolveProperties;
60538 
60539     static const bool                                  allowDuplicate = false;
60540     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDepthStencilResolveProperties;
60541 
60542 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDepthStencilResolvePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties60543     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthStencilResolveProperties( VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedDepthResolveModes_   = {},
60544                                                                       VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedStencilResolveModes_ = {},
60545                                                                       VULKAN_HPP_NAMESPACE::Bool32           independentResolveNone_       = {},
60546                                                                       VULKAN_HPP_NAMESPACE::Bool32           independentResolve_           = {},
60547                                                                       void *                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
60548       : pNext{ pNext_ }
60549       , supportedDepthResolveModes{ supportedDepthResolveModes_ }
60550       , supportedStencilResolveModes{ supportedStencilResolveModes_ }
60551       , independentResolveNone{ independentResolveNone_ }
60552       , independentResolve{ independentResolve_ }
60553     {
60554     }
60555 
60556     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthStencilResolveProperties( PhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60557 
PhysicalDeviceDepthStencilResolvePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties60558     PhysicalDeviceDepthStencilResolveProperties( VkPhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT
60559       : PhysicalDeviceDepthStencilResolveProperties( *reinterpret_cast<PhysicalDeviceDepthStencilResolveProperties const *>( &rhs ) )
60560     {
60561     }
60562 
60563     PhysicalDeviceDepthStencilResolveProperties & operator=( PhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60564 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60565 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties60566     PhysicalDeviceDepthStencilResolveProperties & operator=( VkPhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT
60567     {
60568       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties const *>( &rhs );
60569       return *this;
60570     }
60571 
operator VkPhysicalDeviceDepthStencilResolveProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties60572     operator VkPhysicalDeviceDepthStencilResolveProperties const &() const VULKAN_HPP_NOEXCEPT
60573     {
60574       return *reinterpret_cast<const VkPhysicalDeviceDepthStencilResolveProperties *>( this );
60575     }
60576 
operator VkPhysicalDeviceDepthStencilResolveProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties60577     operator VkPhysicalDeviceDepthStencilResolveProperties &() VULKAN_HPP_NOEXCEPT
60578     {
60579       return *reinterpret_cast<VkPhysicalDeviceDepthStencilResolveProperties *>( this );
60580     }
60581 
60582 #if defined( VULKAN_HPP_USE_REFLECT )
60583 #  if 14 <= VULKAN_HPP_CPP_VERSION
60584     auto
60585 #  else
60586     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
60587                void * const &,
60588                VULKAN_HPP_NAMESPACE::ResolveModeFlags const &,
60589                VULKAN_HPP_NAMESPACE::ResolveModeFlags const &,
60590                VULKAN_HPP_NAMESPACE::Bool32 const &,
60591                VULKAN_HPP_NAMESPACE::Bool32 const &>
60592 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties60593       reflect() const VULKAN_HPP_NOEXCEPT
60594     {
60595       return std::tie( sType, pNext, supportedDepthResolveModes, supportedStencilResolveModes, independentResolveNone, independentResolve );
60596     }
60597 #endif
60598 
60599 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60600     auto operator<=>( PhysicalDeviceDepthStencilResolveProperties const & ) const = default;
60601 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties60602     bool operator==( PhysicalDeviceDepthStencilResolveProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
60603     {
60604 #  if defined( VULKAN_HPP_USE_REFLECT )
60605       return this->reflect() == rhs.reflect();
60606 #  else
60607       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportedDepthResolveModes == rhs.supportedDepthResolveModes ) &&
60608              ( supportedStencilResolveModes == rhs.supportedStencilResolveModes ) && ( independentResolveNone == rhs.independentResolveNone ) &&
60609              ( independentResolve == rhs.independentResolve );
60610 #  endif
60611     }
60612 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties60613     bool operator!=( PhysicalDeviceDepthStencilResolveProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
60614     {
60615       return !operator==( rhs );
60616     }
60617 #endif
60618 
60619   public:
60620     VULKAN_HPP_NAMESPACE::StructureType    sType                        = StructureType::ePhysicalDeviceDepthStencilResolveProperties;
60621     void *                                 pNext                        = {};
60622     VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedDepthResolveModes   = {};
60623     VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedStencilResolveModes = {};
60624     VULKAN_HPP_NAMESPACE::Bool32           independentResolveNone       = {};
60625     VULKAN_HPP_NAMESPACE::Bool32           independentResolve           = {};
60626   };
60627 
60628   template <>
60629   struct CppType<StructureType, StructureType::ePhysicalDeviceDepthStencilResolveProperties>
60630   {
60631     using Type = PhysicalDeviceDepthStencilResolveProperties;
60632   };
60633 
60634   using PhysicalDeviceDepthStencilResolvePropertiesKHR = PhysicalDeviceDepthStencilResolveProperties;
60635 
60636   struct PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT
60637   {
60638     using NativeType = VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT;
60639 
60640     static const bool                                  allowDuplicate = false;
60641     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDescriptorBufferDensityMapPropertiesEXT;
60642 
60643 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDescriptorBufferDensityMapPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT60644     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT( size_t combinedImageSamplerDensityMapDescriptorSize_ = {},
60645                                                                                 void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
60646       : pNext{ pNext_ }
60647       , combinedImageSamplerDensityMapDescriptorSize{ combinedImageSamplerDensityMapDescriptorSize_ }
60648     {
60649     }
60650 
60651     VULKAN_HPP_CONSTEXPR
60652       PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT( PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60653 
PhysicalDeviceDescriptorBufferDensityMapPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT60654     PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT( VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60655       : PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT( *reinterpret_cast<PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const *>( &rhs ) )
60656     {
60657     }
60658 
60659     PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT &
60660       operator=( PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60661 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60662 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT60663     PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT & operator=( VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60664     {
60665       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const *>( &rhs );
60666       return *this;
60667     }
60668 
operator VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT60669     operator VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
60670     {
60671       return *reinterpret_cast<const VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT *>( this );
60672     }
60673 
operator VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT60674     operator VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT &() VULKAN_HPP_NOEXCEPT
60675     {
60676       return *reinterpret_cast<VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT *>( this );
60677     }
60678 
60679 #if defined( VULKAN_HPP_USE_REFLECT )
60680 #  if 14 <= VULKAN_HPP_CPP_VERSION
60681     auto
60682 #  else
60683     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, size_t const &>
60684 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT60685       reflect() const VULKAN_HPP_NOEXCEPT
60686     {
60687       return std::tie( sType, pNext, combinedImageSamplerDensityMapDescriptorSize );
60688     }
60689 #endif
60690 
60691 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60692     auto operator<=>( PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & ) const = default;
60693 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT60694     bool operator==( PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60695     {
60696 #  if defined( VULKAN_HPP_USE_REFLECT )
60697       return this->reflect() == rhs.reflect();
60698 #  else
60699       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) &&
60700              ( combinedImageSamplerDensityMapDescriptorSize == rhs.combinedImageSamplerDensityMapDescriptorSize );
60701 #  endif
60702     }
60703 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT60704     bool operator!=( PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60705     {
60706       return !operator==( rhs );
60707     }
60708 #endif
60709 
60710   public:
60711     VULKAN_HPP_NAMESPACE::StructureType sType                                        = StructureType::ePhysicalDeviceDescriptorBufferDensityMapPropertiesEXT;
60712     void *                              pNext                                        = {};
60713     size_t                              combinedImageSamplerDensityMapDescriptorSize = {};
60714   };
60715 
60716   template <>
60717   struct CppType<StructureType, StructureType::ePhysicalDeviceDescriptorBufferDensityMapPropertiesEXT>
60718   {
60719     using Type = PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT;
60720   };
60721 
60722   struct PhysicalDeviceDescriptorBufferFeaturesEXT
60723   {
60724     using NativeType = VkPhysicalDeviceDescriptorBufferFeaturesEXT;
60725 
60726     static const bool                                  allowDuplicate = false;
60727     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDescriptorBufferFeaturesEXT;
60728 
60729 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDescriptorBufferFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT60730     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorBufferFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 descriptorBuffer_                   = {},
60731                                                                     VULKAN_HPP_NAMESPACE::Bool32 descriptorBufferCaptureReplay_      = {},
60732                                                                     VULKAN_HPP_NAMESPACE::Bool32 descriptorBufferImageLayoutIgnored_ = {},
60733                                                                     VULKAN_HPP_NAMESPACE::Bool32 descriptorBufferPushDescriptors_    = {},
60734                                                                     void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
60735       : pNext{ pNext_ }
60736       , descriptorBuffer{ descriptorBuffer_ }
60737       , descriptorBufferCaptureReplay{ descriptorBufferCaptureReplay_ }
60738       , descriptorBufferImageLayoutIgnored{ descriptorBufferImageLayoutIgnored_ }
60739       , descriptorBufferPushDescriptors{ descriptorBufferPushDescriptors_ }
60740     {
60741     }
60742 
60743     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorBufferFeaturesEXT( PhysicalDeviceDescriptorBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60744 
PhysicalDeviceDescriptorBufferFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT60745     PhysicalDeviceDescriptorBufferFeaturesEXT( VkPhysicalDeviceDescriptorBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60746       : PhysicalDeviceDescriptorBufferFeaturesEXT( *reinterpret_cast<PhysicalDeviceDescriptorBufferFeaturesEXT const *>( &rhs ) )
60747     {
60748     }
60749 
60750     PhysicalDeviceDescriptorBufferFeaturesEXT & operator=( PhysicalDeviceDescriptorBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60751 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60752 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT60753     PhysicalDeviceDescriptorBufferFeaturesEXT & operator=( VkPhysicalDeviceDescriptorBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60754     {
60755       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT const *>( &rhs );
60756       return *this;
60757     }
60758 
60759 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT60760     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
60761     {
60762       pNext = pNext_;
60763       return *this;
60764     }
60765 
60766     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferFeaturesEXT &
setDescriptorBufferVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT60767       setDescriptorBuffer( VULKAN_HPP_NAMESPACE::Bool32 descriptorBuffer_ ) VULKAN_HPP_NOEXCEPT
60768     {
60769       descriptorBuffer = descriptorBuffer_;
60770       return *this;
60771     }
60772 
60773     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferFeaturesEXT &
setDescriptorBufferCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT60774       setDescriptorBufferCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 descriptorBufferCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
60775     {
60776       descriptorBufferCaptureReplay = descriptorBufferCaptureReplay_;
60777       return *this;
60778     }
60779 
60780     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferFeaturesEXT &
setDescriptorBufferImageLayoutIgnoredVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT60781       setDescriptorBufferImageLayoutIgnored( VULKAN_HPP_NAMESPACE::Bool32 descriptorBufferImageLayoutIgnored_ ) VULKAN_HPP_NOEXCEPT
60782     {
60783       descriptorBufferImageLayoutIgnored = descriptorBufferImageLayoutIgnored_;
60784       return *this;
60785     }
60786 
60787     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferFeaturesEXT &
setDescriptorBufferPushDescriptorsVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT60788       setDescriptorBufferPushDescriptors( VULKAN_HPP_NAMESPACE::Bool32 descriptorBufferPushDescriptors_ ) VULKAN_HPP_NOEXCEPT
60789     {
60790       descriptorBufferPushDescriptors = descriptorBufferPushDescriptors_;
60791       return *this;
60792     }
60793 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
60794 
operator VkPhysicalDeviceDescriptorBufferFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT60795     operator VkPhysicalDeviceDescriptorBufferFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
60796     {
60797       return *reinterpret_cast<const VkPhysicalDeviceDescriptorBufferFeaturesEXT *>( this );
60798     }
60799 
operator VkPhysicalDeviceDescriptorBufferFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT60800     operator VkPhysicalDeviceDescriptorBufferFeaturesEXT &() VULKAN_HPP_NOEXCEPT
60801     {
60802       return *reinterpret_cast<VkPhysicalDeviceDescriptorBufferFeaturesEXT *>( this );
60803     }
60804 
60805 #if defined( VULKAN_HPP_USE_REFLECT )
60806 #  if 14 <= VULKAN_HPP_CPP_VERSION
60807     auto
60808 #  else
60809     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
60810                void * const &,
60811                VULKAN_HPP_NAMESPACE::Bool32 const &,
60812                VULKAN_HPP_NAMESPACE::Bool32 const &,
60813                VULKAN_HPP_NAMESPACE::Bool32 const &,
60814                VULKAN_HPP_NAMESPACE::Bool32 const &>
60815 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT60816       reflect() const VULKAN_HPP_NOEXCEPT
60817     {
60818       return std::tie( sType, pNext, descriptorBuffer, descriptorBufferCaptureReplay, descriptorBufferImageLayoutIgnored, descriptorBufferPushDescriptors );
60819     }
60820 #endif
60821 
60822 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
60823     auto operator<=>( PhysicalDeviceDescriptorBufferFeaturesEXT const & ) const = default;
60824 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT60825     bool operator==( PhysicalDeviceDescriptorBufferFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60826     {
60827 #  if defined( VULKAN_HPP_USE_REFLECT )
60828       return this->reflect() == rhs.reflect();
60829 #  else
60830       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorBuffer == rhs.descriptorBuffer ) &&
60831              ( descriptorBufferCaptureReplay == rhs.descriptorBufferCaptureReplay ) &&
60832              ( descriptorBufferImageLayoutIgnored == rhs.descriptorBufferImageLayoutIgnored ) &&
60833              ( descriptorBufferPushDescriptors == rhs.descriptorBufferPushDescriptors );
60834 #  endif
60835     }
60836 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT60837     bool operator!=( PhysicalDeviceDescriptorBufferFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
60838     {
60839       return !operator==( rhs );
60840     }
60841 #endif
60842 
60843   public:
60844     VULKAN_HPP_NAMESPACE::StructureType sType                              = StructureType::ePhysicalDeviceDescriptorBufferFeaturesEXT;
60845     void *                              pNext                              = {};
60846     VULKAN_HPP_NAMESPACE::Bool32        descriptorBuffer                   = {};
60847     VULKAN_HPP_NAMESPACE::Bool32        descriptorBufferCaptureReplay      = {};
60848     VULKAN_HPP_NAMESPACE::Bool32        descriptorBufferImageLayoutIgnored = {};
60849     VULKAN_HPP_NAMESPACE::Bool32        descriptorBufferPushDescriptors    = {};
60850   };
60851 
60852   template <>
60853   struct CppType<StructureType, StructureType::ePhysicalDeviceDescriptorBufferFeaturesEXT>
60854   {
60855     using Type = PhysicalDeviceDescriptorBufferFeaturesEXT;
60856   };
60857 
60858   struct PhysicalDeviceDescriptorBufferPropertiesEXT
60859   {
60860     using NativeType = VkPhysicalDeviceDescriptorBufferPropertiesEXT;
60861 
60862     static const bool                                  allowDuplicate = false;
60863     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDescriptorBufferPropertiesEXT;
60864 
60865 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDescriptorBufferPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT60866     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorBufferPropertiesEXT( VULKAN_HPP_NAMESPACE::Bool32     combinedImageSamplerDescriptorSingleArray_ = {},
60867                                                                       VULKAN_HPP_NAMESPACE::Bool32     bufferlessPushDescriptors_                 = {},
60868                                                                       VULKAN_HPP_NAMESPACE::Bool32     allowSamplerImageViewPostSubmitCreation_   = {},
60869                                                                       VULKAN_HPP_NAMESPACE::DeviceSize descriptorBufferOffsetAlignment_           = {},
60870                                                                       uint32_t                         maxDescriptorBufferBindings_               = {},
60871                                                                       uint32_t                         maxResourceDescriptorBufferBindings_       = {},
60872                                                                       uint32_t                         maxSamplerDescriptorBufferBindings_        = {},
60873                                                                       uint32_t                         maxEmbeddedImmutableSamplerBindings_       = {},
60874                                                                       uint32_t                         maxEmbeddedImmutableSamplers_              = {},
60875                                                                       size_t                           bufferCaptureReplayDescriptorDataSize_     = {},
60876                                                                       size_t                           imageCaptureReplayDescriptorDataSize_      = {},
60877                                                                       size_t                           imageViewCaptureReplayDescriptorDataSize_  = {},
60878                                                                       size_t                           samplerCaptureReplayDescriptorDataSize_    = {},
60879                                                                       size_t accelerationStructureCaptureReplayDescriptorDataSize_                = {},
60880                                                                       size_t samplerDescriptorSize_                                               = {},
60881                                                                       size_t combinedImageSamplerDescriptorSize_                                  = {},
60882                                                                       size_t sampledImageDescriptorSize_                                          = {},
60883                                                                       size_t storageImageDescriptorSize_                                          = {},
60884                                                                       size_t uniformTexelBufferDescriptorSize_                                    = {},
60885                                                                       size_t robustUniformTexelBufferDescriptorSize_                              = {},
60886                                                                       size_t storageTexelBufferDescriptorSize_                                    = {},
60887                                                                       size_t robustStorageTexelBufferDescriptorSize_                              = {},
60888                                                                       size_t uniformBufferDescriptorSize_                                         = {},
60889                                                                       size_t robustUniformBufferDescriptorSize_                                   = {},
60890                                                                       size_t storageBufferDescriptorSize_                                         = {},
60891                                                                       size_t robustStorageBufferDescriptorSize_                                   = {},
60892                                                                       size_t inputAttachmentDescriptorSize_                                       = {},
60893                                                                       size_t accelerationStructureDescriptorSize_                                 = {},
60894                                                                       VULKAN_HPP_NAMESPACE::DeviceSize maxSamplerDescriptorBufferRange_           = {},
60895                                                                       VULKAN_HPP_NAMESPACE::DeviceSize maxResourceDescriptorBufferRange_          = {},
60896                                                                       VULKAN_HPP_NAMESPACE::DeviceSize samplerDescriptorBufferAddressSpaceSize_   = {},
60897                                                                       VULKAN_HPP_NAMESPACE::DeviceSize resourceDescriptorBufferAddressSpaceSize_  = {},
60898                                                                       VULKAN_HPP_NAMESPACE::DeviceSize descriptorBufferAddressSpaceSize_          = {},
60899                                                                       void *                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
60900       : pNext{ pNext_ }
60901       , combinedImageSamplerDescriptorSingleArray{ combinedImageSamplerDescriptorSingleArray_ }
60902       , bufferlessPushDescriptors{ bufferlessPushDescriptors_ }
60903       , allowSamplerImageViewPostSubmitCreation{ allowSamplerImageViewPostSubmitCreation_ }
60904       , descriptorBufferOffsetAlignment{ descriptorBufferOffsetAlignment_ }
60905       , maxDescriptorBufferBindings{ maxDescriptorBufferBindings_ }
60906       , maxResourceDescriptorBufferBindings{ maxResourceDescriptorBufferBindings_ }
60907       , maxSamplerDescriptorBufferBindings{ maxSamplerDescriptorBufferBindings_ }
60908       , maxEmbeddedImmutableSamplerBindings{ maxEmbeddedImmutableSamplerBindings_ }
60909       , maxEmbeddedImmutableSamplers{ maxEmbeddedImmutableSamplers_ }
60910       , bufferCaptureReplayDescriptorDataSize{ bufferCaptureReplayDescriptorDataSize_ }
60911       , imageCaptureReplayDescriptorDataSize{ imageCaptureReplayDescriptorDataSize_ }
60912       , imageViewCaptureReplayDescriptorDataSize{ imageViewCaptureReplayDescriptorDataSize_ }
60913       , samplerCaptureReplayDescriptorDataSize{ samplerCaptureReplayDescriptorDataSize_ }
60914       , accelerationStructureCaptureReplayDescriptorDataSize{ accelerationStructureCaptureReplayDescriptorDataSize_ }
60915       , samplerDescriptorSize{ samplerDescriptorSize_ }
60916       , combinedImageSamplerDescriptorSize{ combinedImageSamplerDescriptorSize_ }
60917       , sampledImageDescriptorSize{ sampledImageDescriptorSize_ }
60918       , storageImageDescriptorSize{ storageImageDescriptorSize_ }
60919       , uniformTexelBufferDescriptorSize{ uniformTexelBufferDescriptorSize_ }
60920       , robustUniformTexelBufferDescriptorSize{ robustUniformTexelBufferDescriptorSize_ }
60921       , storageTexelBufferDescriptorSize{ storageTexelBufferDescriptorSize_ }
60922       , robustStorageTexelBufferDescriptorSize{ robustStorageTexelBufferDescriptorSize_ }
60923       , uniformBufferDescriptorSize{ uniformBufferDescriptorSize_ }
60924       , robustUniformBufferDescriptorSize{ robustUniformBufferDescriptorSize_ }
60925       , storageBufferDescriptorSize{ storageBufferDescriptorSize_ }
60926       , robustStorageBufferDescriptorSize{ robustStorageBufferDescriptorSize_ }
60927       , inputAttachmentDescriptorSize{ inputAttachmentDescriptorSize_ }
60928       , accelerationStructureDescriptorSize{ accelerationStructureDescriptorSize_ }
60929       , maxSamplerDescriptorBufferRange{ maxSamplerDescriptorBufferRange_ }
60930       , maxResourceDescriptorBufferRange{ maxResourceDescriptorBufferRange_ }
60931       , samplerDescriptorBufferAddressSpaceSize{ samplerDescriptorBufferAddressSpaceSize_ }
60932       , resourceDescriptorBufferAddressSpaceSize{ resourceDescriptorBufferAddressSpaceSize_ }
60933       , descriptorBufferAddressSpaceSize{ descriptorBufferAddressSpaceSize_ }
60934     {
60935     }
60936 
60937     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorBufferPropertiesEXT( PhysicalDeviceDescriptorBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60938 
PhysicalDeviceDescriptorBufferPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT60939     PhysicalDeviceDescriptorBufferPropertiesEXT( VkPhysicalDeviceDescriptorBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60940       : PhysicalDeviceDescriptorBufferPropertiesEXT( *reinterpret_cast<PhysicalDeviceDescriptorBufferPropertiesEXT const *>( &rhs ) )
60941     {
60942     }
60943 
60944     PhysicalDeviceDescriptorBufferPropertiesEXT & operator=( PhysicalDeviceDescriptorBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
60945 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
60946 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT60947     PhysicalDeviceDescriptorBufferPropertiesEXT & operator=( VkPhysicalDeviceDescriptorBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
60948     {
60949       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT const *>( &rhs );
60950       return *this;
60951     }
60952 
operator VkPhysicalDeviceDescriptorBufferPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT60953     operator VkPhysicalDeviceDescriptorBufferPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
60954     {
60955       return *reinterpret_cast<const VkPhysicalDeviceDescriptorBufferPropertiesEXT *>( this );
60956     }
60957 
operator VkPhysicalDeviceDescriptorBufferPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT60958     operator VkPhysicalDeviceDescriptorBufferPropertiesEXT &() VULKAN_HPP_NOEXCEPT
60959     {
60960       return *reinterpret_cast<VkPhysicalDeviceDescriptorBufferPropertiesEXT *>( this );
60961     }
60962 
60963 #if defined( VULKAN_HPP_USE_REFLECT )
60964 #  if 14 <= VULKAN_HPP_CPP_VERSION
60965     auto
60966 #  else
60967     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
60968                void * const &,
60969                VULKAN_HPP_NAMESPACE::Bool32 const &,
60970                VULKAN_HPP_NAMESPACE::Bool32 const &,
60971                VULKAN_HPP_NAMESPACE::Bool32 const &,
60972                VULKAN_HPP_NAMESPACE::DeviceSize const &,
60973                uint32_t const &,
60974                uint32_t const &,
60975                uint32_t const &,
60976                uint32_t const &,
60977                uint32_t const &,
60978                size_t const &,
60979                size_t const &,
60980                size_t const &,
60981                size_t const &,
60982                size_t const &,
60983                size_t const &,
60984                size_t const &,
60985                size_t const &,
60986                size_t const &,
60987                size_t const &,
60988                size_t const &,
60989                size_t const &,
60990                size_t const &,
60991                size_t const &,
60992                size_t const &,
60993                size_t const &,
60994                size_t const &,
60995                size_t const &,
60996                size_t const &,
60997                VULKAN_HPP_NAMESPACE::DeviceSize const &,
60998                VULKAN_HPP_NAMESPACE::DeviceSize const &,
60999                VULKAN_HPP_NAMESPACE::DeviceSize const &,
61000                VULKAN_HPP_NAMESPACE::DeviceSize const &,
61001                VULKAN_HPP_NAMESPACE::DeviceSize const &>
61002 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT61003       reflect() const VULKAN_HPP_NOEXCEPT
61004     {
61005       return std::tie( sType,
61006                        pNext,
61007                        combinedImageSamplerDescriptorSingleArray,
61008                        bufferlessPushDescriptors,
61009                        allowSamplerImageViewPostSubmitCreation,
61010                        descriptorBufferOffsetAlignment,
61011                        maxDescriptorBufferBindings,
61012                        maxResourceDescriptorBufferBindings,
61013                        maxSamplerDescriptorBufferBindings,
61014                        maxEmbeddedImmutableSamplerBindings,
61015                        maxEmbeddedImmutableSamplers,
61016                        bufferCaptureReplayDescriptorDataSize,
61017                        imageCaptureReplayDescriptorDataSize,
61018                        imageViewCaptureReplayDescriptorDataSize,
61019                        samplerCaptureReplayDescriptorDataSize,
61020                        accelerationStructureCaptureReplayDescriptorDataSize,
61021                        samplerDescriptorSize,
61022                        combinedImageSamplerDescriptorSize,
61023                        sampledImageDescriptorSize,
61024                        storageImageDescriptorSize,
61025                        uniformTexelBufferDescriptorSize,
61026                        robustUniformTexelBufferDescriptorSize,
61027                        storageTexelBufferDescriptorSize,
61028                        robustStorageTexelBufferDescriptorSize,
61029                        uniformBufferDescriptorSize,
61030                        robustUniformBufferDescriptorSize,
61031                        storageBufferDescriptorSize,
61032                        robustStorageBufferDescriptorSize,
61033                        inputAttachmentDescriptorSize,
61034                        accelerationStructureDescriptorSize,
61035                        maxSamplerDescriptorBufferRange,
61036                        maxResourceDescriptorBufferRange,
61037                        samplerDescriptorBufferAddressSpaceSize,
61038                        resourceDescriptorBufferAddressSpaceSize,
61039                        descriptorBufferAddressSpaceSize );
61040     }
61041 #endif
61042 
61043 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
61044     auto operator<=>( PhysicalDeviceDescriptorBufferPropertiesEXT const & ) const = default;
61045 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT61046     bool operator==( PhysicalDeviceDescriptorBufferPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
61047     {
61048 #  if defined( VULKAN_HPP_USE_REFLECT )
61049       return this->reflect() == rhs.reflect();
61050 #  else
61051       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) &&
61052              ( combinedImageSamplerDescriptorSingleArray == rhs.combinedImageSamplerDescriptorSingleArray ) &&
61053              ( bufferlessPushDescriptors == rhs.bufferlessPushDescriptors ) &&
61054              ( allowSamplerImageViewPostSubmitCreation == rhs.allowSamplerImageViewPostSubmitCreation ) &&
61055              ( descriptorBufferOffsetAlignment == rhs.descriptorBufferOffsetAlignment ) && ( maxDescriptorBufferBindings == rhs.maxDescriptorBufferBindings ) &&
61056              ( maxResourceDescriptorBufferBindings == rhs.maxResourceDescriptorBufferBindings ) &&
61057              ( maxSamplerDescriptorBufferBindings == rhs.maxSamplerDescriptorBufferBindings ) &&
61058              ( maxEmbeddedImmutableSamplerBindings == rhs.maxEmbeddedImmutableSamplerBindings ) &&
61059              ( maxEmbeddedImmutableSamplers == rhs.maxEmbeddedImmutableSamplers ) &&
61060              ( bufferCaptureReplayDescriptorDataSize == rhs.bufferCaptureReplayDescriptorDataSize ) &&
61061              ( imageCaptureReplayDescriptorDataSize == rhs.imageCaptureReplayDescriptorDataSize ) &&
61062              ( imageViewCaptureReplayDescriptorDataSize == rhs.imageViewCaptureReplayDescriptorDataSize ) &&
61063              ( samplerCaptureReplayDescriptorDataSize == rhs.samplerCaptureReplayDescriptorDataSize ) &&
61064              ( accelerationStructureCaptureReplayDescriptorDataSize == rhs.accelerationStructureCaptureReplayDescriptorDataSize ) &&
61065              ( samplerDescriptorSize == rhs.samplerDescriptorSize ) && ( combinedImageSamplerDescriptorSize == rhs.combinedImageSamplerDescriptorSize ) &&
61066              ( sampledImageDescriptorSize == rhs.sampledImageDescriptorSize ) && ( storageImageDescriptorSize == rhs.storageImageDescriptorSize ) &&
61067              ( uniformTexelBufferDescriptorSize == rhs.uniformTexelBufferDescriptorSize ) &&
61068              ( robustUniformTexelBufferDescriptorSize == rhs.robustUniformTexelBufferDescriptorSize ) &&
61069              ( storageTexelBufferDescriptorSize == rhs.storageTexelBufferDescriptorSize ) &&
61070              ( robustStorageTexelBufferDescriptorSize == rhs.robustStorageTexelBufferDescriptorSize ) &&
61071              ( uniformBufferDescriptorSize == rhs.uniformBufferDescriptorSize ) &&
61072              ( robustUniformBufferDescriptorSize == rhs.robustUniformBufferDescriptorSize ) &&
61073              ( storageBufferDescriptorSize == rhs.storageBufferDescriptorSize ) &&
61074              ( robustStorageBufferDescriptorSize == rhs.robustStorageBufferDescriptorSize ) &&
61075              ( inputAttachmentDescriptorSize == rhs.inputAttachmentDescriptorSize ) &&
61076              ( accelerationStructureDescriptorSize == rhs.accelerationStructureDescriptorSize ) &&
61077              ( maxSamplerDescriptorBufferRange == rhs.maxSamplerDescriptorBufferRange ) &&
61078              ( maxResourceDescriptorBufferRange == rhs.maxResourceDescriptorBufferRange ) &&
61079              ( samplerDescriptorBufferAddressSpaceSize == rhs.samplerDescriptorBufferAddressSpaceSize ) &&
61080              ( resourceDescriptorBufferAddressSpaceSize == rhs.resourceDescriptorBufferAddressSpaceSize ) &&
61081              ( descriptorBufferAddressSpaceSize == rhs.descriptorBufferAddressSpaceSize );
61082 #  endif
61083     }
61084 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT61085     bool operator!=( PhysicalDeviceDescriptorBufferPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
61086     {
61087       return !operator==( rhs );
61088     }
61089 #endif
61090 
61091   public:
61092     VULKAN_HPP_NAMESPACE::StructureType sType                                                = StructureType::ePhysicalDeviceDescriptorBufferPropertiesEXT;
61093     void *                              pNext                                                = {};
61094     VULKAN_HPP_NAMESPACE::Bool32        combinedImageSamplerDescriptorSingleArray            = {};
61095     VULKAN_HPP_NAMESPACE::Bool32        bufferlessPushDescriptors                            = {};
61096     VULKAN_HPP_NAMESPACE::Bool32        allowSamplerImageViewPostSubmitCreation              = {};
61097     VULKAN_HPP_NAMESPACE::DeviceSize    descriptorBufferOffsetAlignment                      = {};
61098     uint32_t                            maxDescriptorBufferBindings                          = {};
61099     uint32_t                            maxResourceDescriptorBufferBindings                  = {};
61100     uint32_t                            maxSamplerDescriptorBufferBindings                   = {};
61101     uint32_t                            maxEmbeddedImmutableSamplerBindings                  = {};
61102     uint32_t                            maxEmbeddedImmutableSamplers                         = {};
61103     size_t                              bufferCaptureReplayDescriptorDataSize                = {};
61104     size_t                              imageCaptureReplayDescriptorDataSize                 = {};
61105     size_t                              imageViewCaptureReplayDescriptorDataSize             = {};
61106     size_t                              samplerCaptureReplayDescriptorDataSize               = {};
61107     size_t                              accelerationStructureCaptureReplayDescriptorDataSize = {};
61108     size_t                              samplerDescriptorSize                                = {};
61109     size_t                              combinedImageSamplerDescriptorSize                   = {};
61110     size_t                              sampledImageDescriptorSize                           = {};
61111     size_t                              storageImageDescriptorSize                           = {};
61112     size_t                              uniformTexelBufferDescriptorSize                     = {};
61113     size_t                              robustUniformTexelBufferDescriptorSize               = {};
61114     size_t                              storageTexelBufferDescriptorSize                     = {};
61115     size_t                              robustStorageTexelBufferDescriptorSize               = {};
61116     size_t                              uniformBufferDescriptorSize                          = {};
61117     size_t                              robustUniformBufferDescriptorSize                    = {};
61118     size_t                              storageBufferDescriptorSize                          = {};
61119     size_t                              robustStorageBufferDescriptorSize                    = {};
61120     size_t                              inputAttachmentDescriptorSize                        = {};
61121     size_t                              accelerationStructureDescriptorSize                  = {};
61122     VULKAN_HPP_NAMESPACE::DeviceSize    maxSamplerDescriptorBufferRange                      = {};
61123     VULKAN_HPP_NAMESPACE::DeviceSize    maxResourceDescriptorBufferRange                     = {};
61124     VULKAN_HPP_NAMESPACE::DeviceSize    samplerDescriptorBufferAddressSpaceSize              = {};
61125     VULKAN_HPP_NAMESPACE::DeviceSize    resourceDescriptorBufferAddressSpaceSize             = {};
61126     VULKAN_HPP_NAMESPACE::DeviceSize    descriptorBufferAddressSpaceSize                     = {};
61127   };
61128 
61129   template <>
61130   struct CppType<StructureType, StructureType::ePhysicalDeviceDescriptorBufferPropertiesEXT>
61131   {
61132     using Type = PhysicalDeviceDescriptorBufferPropertiesEXT;
61133   };
61134 
61135   struct PhysicalDeviceDescriptorIndexingFeatures
61136   {
61137     using NativeType = VkPhysicalDeviceDescriptorIndexingFeatures;
61138 
61139     static const bool                                  allowDuplicate = false;
61140     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDescriptorIndexingFeatures;
61141 
61142 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDescriptorIndexingFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61143     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingFeatures( VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_          = {},
61144                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_       = {},
61145                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_       = {},
61146                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_         = {},
61147                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_          = {},
61148                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_         = {},
61149                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_          = {},
61150                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_       = {},
61151                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_    = {},
61152                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_    = {},
61153                                                                    VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_      = {},
61154                                                                    VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_       = {},
61155                                                                    VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_       = {},
61156                                                                    VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_      = {},
61157                                                                    VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ = {},
61158                                                                    VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ = {},
61159                                                                    VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_          = {},
61160                                                                    VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_                    = {},
61161                                                                    VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_           = {},
61162                                                                    VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_                             = {},
61163                                                                    void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
61164       : pNext{ pNext_ }
61165       , shaderInputAttachmentArrayDynamicIndexing{ shaderInputAttachmentArrayDynamicIndexing_ }
61166       , shaderUniformTexelBufferArrayDynamicIndexing{ shaderUniformTexelBufferArrayDynamicIndexing_ }
61167       , shaderStorageTexelBufferArrayDynamicIndexing{ shaderStorageTexelBufferArrayDynamicIndexing_ }
61168       , shaderUniformBufferArrayNonUniformIndexing{ shaderUniformBufferArrayNonUniformIndexing_ }
61169       , shaderSampledImageArrayNonUniformIndexing{ shaderSampledImageArrayNonUniformIndexing_ }
61170       , shaderStorageBufferArrayNonUniformIndexing{ shaderStorageBufferArrayNonUniformIndexing_ }
61171       , shaderStorageImageArrayNonUniformIndexing{ shaderStorageImageArrayNonUniformIndexing_ }
61172       , shaderInputAttachmentArrayNonUniformIndexing{ shaderInputAttachmentArrayNonUniformIndexing_ }
61173       , shaderUniformTexelBufferArrayNonUniformIndexing{ shaderUniformTexelBufferArrayNonUniformIndexing_ }
61174       , shaderStorageTexelBufferArrayNonUniformIndexing{ shaderStorageTexelBufferArrayNonUniformIndexing_ }
61175       , descriptorBindingUniformBufferUpdateAfterBind{ descriptorBindingUniformBufferUpdateAfterBind_ }
61176       , descriptorBindingSampledImageUpdateAfterBind{ descriptorBindingSampledImageUpdateAfterBind_ }
61177       , descriptorBindingStorageImageUpdateAfterBind{ descriptorBindingStorageImageUpdateAfterBind_ }
61178       , descriptorBindingStorageBufferUpdateAfterBind{ descriptorBindingStorageBufferUpdateAfterBind_ }
61179       , descriptorBindingUniformTexelBufferUpdateAfterBind{ descriptorBindingUniformTexelBufferUpdateAfterBind_ }
61180       , descriptorBindingStorageTexelBufferUpdateAfterBind{ descriptorBindingStorageTexelBufferUpdateAfterBind_ }
61181       , descriptorBindingUpdateUnusedWhilePending{ descriptorBindingUpdateUnusedWhilePending_ }
61182       , descriptorBindingPartiallyBound{ descriptorBindingPartiallyBound_ }
61183       , descriptorBindingVariableDescriptorCount{ descriptorBindingVariableDescriptorCount_ }
61184       , runtimeDescriptorArray{ runtimeDescriptorArray_ }
61185     {
61186     }
61187 
61188     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingFeatures( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61189 
PhysicalDeviceDescriptorIndexingFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61190     PhysicalDeviceDescriptorIndexingFeatures( VkPhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
61191       : PhysicalDeviceDescriptorIndexingFeatures( *reinterpret_cast<PhysicalDeviceDescriptorIndexingFeatures const *>( &rhs ) )
61192     {
61193     }
61194 
61195     PhysicalDeviceDescriptorIndexingFeatures & operator=( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61196 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
61197 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61198     PhysicalDeviceDescriptorIndexingFeatures & operator=( VkPhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
61199     {
61200       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures const *>( &rhs );
61201       return *this;
61202     }
61203 
61204 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61205     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
61206     {
61207       pNext = pNext_;
61208       return *this;
61209     }
61210 
61211     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderInputAttachmentArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61212       setShaderInputAttachmentArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
61213     {
61214       shaderInputAttachmentArrayDynamicIndexing = shaderInputAttachmentArrayDynamicIndexing_;
61215       return *this;
61216     }
61217 
61218     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderUniformTexelBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61219       setShaderUniformTexelBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
61220     {
61221       shaderUniformTexelBufferArrayDynamicIndexing = shaderUniformTexelBufferArrayDynamicIndexing_;
61222       return *this;
61223     }
61224 
61225     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderStorageTexelBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61226       setShaderStorageTexelBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
61227     {
61228       shaderStorageTexelBufferArrayDynamicIndexing = shaderStorageTexelBufferArrayDynamicIndexing_;
61229       return *this;
61230     }
61231 
61232     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderUniformBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61233       setShaderUniformBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
61234     {
61235       shaderUniformBufferArrayNonUniformIndexing = shaderUniformBufferArrayNonUniformIndexing_;
61236       return *this;
61237     }
61238 
61239     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderSampledImageArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61240       setShaderSampledImageArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
61241     {
61242       shaderSampledImageArrayNonUniformIndexing = shaderSampledImageArrayNonUniformIndexing_;
61243       return *this;
61244     }
61245 
61246     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderStorageBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61247       setShaderStorageBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
61248     {
61249       shaderStorageBufferArrayNonUniformIndexing = shaderStorageBufferArrayNonUniformIndexing_;
61250       return *this;
61251     }
61252 
61253     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderStorageImageArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61254       setShaderStorageImageArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
61255     {
61256       shaderStorageImageArrayNonUniformIndexing = shaderStorageImageArrayNonUniformIndexing_;
61257       return *this;
61258     }
61259 
61260     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderInputAttachmentArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61261       setShaderInputAttachmentArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
61262     {
61263       shaderInputAttachmentArrayNonUniformIndexing = shaderInputAttachmentArrayNonUniformIndexing_;
61264       return *this;
61265     }
61266 
61267     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderUniformTexelBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61268       setShaderUniformTexelBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
61269     {
61270       shaderUniformTexelBufferArrayNonUniformIndexing = shaderUniformTexelBufferArrayNonUniformIndexing_;
61271       return *this;
61272     }
61273 
61274     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setShaderStorageTexelBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61275       setShaderStorageTexelBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
61276     {
61277       shaderStorageTexelBufferArrayNonUniformIndexing = shaderStorageTexelBufferArrayNonUniformIndexing_;
61278       return *this;
61279     }
61280 
61281     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setDescriptorBindingUniformBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61282       setDescriptorBindingUniformBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
61283     {
61284       descriptorBindingUniformBufferUpdateAfterBind = descriptorBindingUniformBufferUpdateAfterBind_;
61285       return *this;
61286     }
61287 
61288     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setDescriptorBindingSampledImageUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61289       setDescriptorBindingSampledImageUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
61290     {
61291       descriptorBindingSampledImageUpdateAfterBind = descriptorBindingSampledImageUpdateAfterBind_;
61292       return *this;
61293     }
61294 
61295     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setDescriptorBindingStorageImageUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61296       setDescriptorBindingStorageImageUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
61297     {
61298       descriptorBindingStorageImageUpdateAfterBind = descriptorBindingStorageImageUpdateAfterBind_;
61299       return *this;
61300     }
61301 
61302     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setDescriptorBindingStorageBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61303       setDescriptorBindingStorageBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
61304     {
61305       descriptorBindingStorageBufferUpdateAfterBind = descriptorBindingStorageBufferUpdateAfterBind_;
61306       return *this;
61307     }
61308 
setDescriptorBindingUniformTexelBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61309     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingUniformTexelBufferUpdateAfterBind(
61310       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
61311     {
61312       descriptorBindingUniformTexelBufferUpdateAfterBind = descriptorBindingUniformTexelBufferUpdateAfterBind_;
61313       return *this;
61314     }
61315 
setDescriptorBindingStorageTexelBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61316     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingStorageTexelBufferUpdateAfterBind(
61317       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
61318     {
61319       descriptorBindingStorageTexelBufferUpdateAfterBind = descriptorBindingStorageTexelBufferUpdateAfterBind_;
61320       return *this;
61321     }
61322 
61323     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setDescriptorBindingUpdateUnusedWhilePendingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61324       setDescriptorBindingUpdateUnusedWhilePending( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_ ) VULKAN_HPP_NOEXCEPT
61325     {
61326       descriptorBindingUpdateUnusedWhilePending = descriptorBindingUpdateUnusedWhilePending_;
61327       return *this;
61328     }
61329 
61330     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setDescriptorBindingPartiallyBoundVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61331       setDescriptorBindingPartiallyBound( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_ ) VULKAN_HPP_NOEXCEPT
61332     {
61333       descriptorBindingPartiallyBound = descriptorBindingPartiallyBound_;
61334       return *this;
61335     }
61336 
61337     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setDescriptorBindingVariableDescriptorCountVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61338       setDescriptorBindingVariableDescriptorCount( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_ ) VULKAN_HPP_NOEXCEPT
61339     {
61340       descriptorBindingVariableDescriptorCount = descriptorBindingVariableDescriptorCount_;
61341       return *this;
61342     }
61343 
61344     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures &
setRuntimeDescriptorArrayVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61345       setRuntimeDescriptorArray( VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_ ) VULKAN_HPP_NOEXCEPT
61346     {
61347       runtimeDescriptorArray = runtimeDescriptorArray_;
61348       return *this;
61349     }
61350 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
61351 
operator VkPhysicalDeviceDescriptorIndexingFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61352     operator VkPhysicalDeviceDescriptorIndexingFeatures const &() const VULKAN_HPP_NOEXCEPT
61353     {
61354       return *reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingFeatures *>( this );
61355     }
61356 
operator VkPhysicalDeviceDescriptorIndexingFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61357     operator VkPhysicalDeviceDescriptorIndexingFeatures &() VULKAN_HPP_NOEXCEPT
61358     {
61359       return *reinterpret_cast<VkPhysicalDeviceDescriptorIndexingFeatures *>( this );
61360     }
61361 
61362 #if defined( VULKAN_HPP_USE_REFLECT )
61363 #  if 14 <= VULKAN_HPP_CPP_VERSION
61364     auto
61365 #  else
61366     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
61367                void * const &,
61368                VULKAN_HPP_NAMESPACE::Bool32 const &,
61369                VULKAN_HPP_NAMESPACE::Bool32 const &,
61370                VULKAN_HPP_NAMESPACE::Bool32 const &,
61371                VULKAN_HPP_NAMESPACE::Bool32 const &,
61372                VULKAN_HPP_NAMESPACE::Bool32 const &,
61373                VULKAN_HPP_NAMESPACE::Bool32 const &,
61374                VULKAN_HPP_NAMESPACE::Bool32 const &,
61375                VULKAN_HPP_NAMESPACE::Bool32 const &,
61376                VULKAN_HPP_NAMESPACE::Bool32 const &,
61377                VULKAN_HPP_NAMESPACE::Bool32 const &,
61378                VULKAN_HPP_NAMESPACE::Bool32 const &,
61379                VULKAN_HPP_NAMESPACE::Bool32 const &,
61380                VULKAN_HPP_NAMESPACE::Bool32 const &,
61381                VULKAN_HPP_NAMESPACE::Bool32 const &,
61382                VULKAN_HPP_NAMESPACE::Bool32 const &,
61383                VULKAN_HPP_NAMESPACE::Bool32 const &,
61384                VULKAN_HPP_NAMESPACE::Bool32 const &,
61385                VULKAN_HPP_NAMESPACE::Bool32 const &,
61386                VULKAN_HPP_NAMESPACE::Bool32 const &,
61387                VULKAN_HPP_NAMESPACE::Bool32 const &>
61388 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61389       reflect() const VULKAN_HPP_NOEXCEPT
61390     {
61391       return std::tie( sType,
61392                        pNext,
61393                        shaderInputAttachmentArrayDynamicIndexing,
61394                        shaderUniformTexelBufferArrayDynamicIndexing,
61395                        shaderStorageTexelBufferArrayDynamicIndexing,
61396                        shaderUniformBufferArrayNonUniformIndexing,
61397                        shaderSampledImageArrayNonUniformIndexing,
61398                        shaderStorageBufferArrayNonUniformIndexing,
61399                        shaderStorageImageArrayNonUniformIndexing,
61400                        shaderInputAttachmentArrayNonUniformIndexing,
61401                        shaderUniformTexelBufferArrayNonUniformIndexing,
61402                        shaderStorageTexelBufferArrayNonUniformIndexing,
61403                        descriptorBindingUniformBufferUpdateAfterBind,
61404                        descriptorBindingSampledImageUpdateAfterBind,
61405                        descriptorBindingStorageImageUpdateAfterBind,
61406                        descriptorBindingStorageBufferUpdateAfterBind,
61407                        descriptorBindingUniformTexelBufferUpdateAfterBind,
61408                        descriptorBindingStorageTexelBufferUpdateAfterBind,
61409                        descriptorBindingUpdateUnusedWhilePending,
61410                        descriptorBindingPartiallyBound,
61411                        descriptorBindingVariableDescriptorCount,
61412                        runtimeDescriptorArray );
61413     }
61414 #endif
61415 
61416 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
61417     auto operator<=>( PhysicalDeviceDescriptorIndexingFeatures const & ) const = default;
61418 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61419     bool operator==( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
61420     {
61421 #  if defined( VULKAN_HPP_USE_REFLECT )
61422       return this->reflect() == rhs.reflect();
61423 #  else
61424       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) &&
61425              ( shaderInputAttachmentArrayDynamicIndexing == rhs.shaderInputAttachmentArrayDynamicIndexing ) &&
61426              ( shaderUniformTexelBufferArrayDynamicIndexing == rhs.shaderUniformTexelBufferArrayDynamicIndexing ) &&
61427              ( shaderStorageTexelBufferArrayDynamicIndexing == rhs.shaderStorageTexelBufferArrayDynamicIndexing ) &&
61428              ( shaderUniformBufferArrayNonUniformIndexing == rhs.shaderUniformBufferArrayNonUniformIndexing ) &&
61429              ( shaderSampledImageArrayNonUniformIndexing == rhs.shaderSampledImageArrayNonUniformIndexing ) &&
61430              ( shaderStorageBufferArrayNonUniformIndexing == rhs.shaderStorageBufferArrayNonUniformIndexing ) &&
61431              ( shaderStorageImageArrayNonUniformIndexing == rhs.shaderStorageImageArrayNonUniformIndexing ) &&
61432              ( shaderInputAttachmentArrayNonUniformIndexing == rhs.shaderInputAttachmentArrayNonUniformIndexing ) &&
61433              ( shaderUniformTexelBufferArrayNonUniformIndexing == rhs.shaderUniformTexelBufferArrayNonUniformIndexing ) &&
61434              ( shaderStorageTexelBufferArrayNonUniformIndexing == rhs.shaderStorageTexelBufferArrayNonUniformIndexing ) &&
61435              ( descriptorBindingUniformBufferUpdateAfterBind == rhs.descriptorBindingUniformBufferUpdateAfterBind ) &&
61436              ( descriptorBindingSampledImageUpdateAfterBind == rhs.descriptorBindingSampledImageUpdateAfterBind ) &&
61437              ( descriptorBindingStorageImageUpdateAfterBind == rhs.descriptorBindingStorageImageUpdateAfterBind ) &&
61438              ( descriptorBindingStorageBufferUpdateAfterBind == rhs.descriptorBindingStorageBufferUpdateAfterBind ) &&
61439              ( descriptorBindingUniformTexelBufferUpdateAfterBind == rhs.descriptorBindingUniformTexelBufferUpdateAfterBind ) &&
61440              ( descriptorBindingStorageTexelBufferUpdateAfterBind == rhs.descriptorBindingStorageTexelBufferUpdateAfterBind ) &&
61441              ( descriptorBindingUpdateUnusedWhilePending == rhs.descriptorBindingUpdateUnusedWhilePending ) &&
61442              ( descriptorBindingPartiallyBound == rhs.descriptorBindingPartiallyBound ) &&
61443              ( descriptorBindingVariableDescriptorCount == rhs.descriptorBindingVariableDescriptorCount ) &&
61444              ( runtimeDescriptorArray == rhs.runtimeDescriptorArray );
61445 #  endif
61446     }
61447 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures61448     bool operator!=( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
61449     {
61450       return !operator==( rhs );
61451     }
61452 #endif
61453 
61454   public:
61455     VULKAN_HPP_NAMESPACE::StructureType sType                                              = StructureType::ePhysicalDeviceDescriptorIndexingFeatures;
61456     void *                              pNext                                              = {};
61457     VULKAN_HPP_NAMESPACE::Bool32        shaderInputAttachmentArrayDynamicIndexing          = {};
61458     VULKAN_HPP_NAMESPACE::Bool32        shaderUniformTexelBufferArrayDynamicIndexing       = {};
61459     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageTexelBufferArrayDynamicIndexing       = {};
61460     VULKAN_HPP_NAMESPACE::Bool32        shaderUniformBufferArrayNonUniformIndexing         = {};
61461     VULKAN_HPP_NAMESPACE::Bool32        shaderSampledImageArrayNonUniformIndexing          = {};
61462     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageBufferArrayNonUniformIndexing         = {};
61463     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageImageArrayNonUniformIndexing          = {};
61464     VULKAN_HPP_NAMESPACE::Bool32        shaderInputAttachmentArrayNonUniformIndexing       = {};
61465     VULKAN_HPP_NAMESPACE::Bool32        shaderUniformTexelBufferArrayNonUniformIndexing    = {};
61466     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageTexelBufferArrayNonUniformIndexing    = {};
61467     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingUniformBufferUpdateAfterBind      = {};
61468     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingSampledImageUpdateAfterBind       = {};
61469     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingStorageImageUpdateAfterBind       = {};
61470     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingStorageBufferUpdateAfterBind      = {};
61471     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingUniformTexelBufferUpdateAfterBind = {};
61472     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingStorageTexelBufferUpdateAfterBind = {};
61473     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingUpdateUnusedWhilePending          = {};
61474     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingPartiallyBound                    = {};
61475     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingVariableDescriptorCount           = {};
61476     VULKAN_HPP_NAMESPACE::Bool32        runtimeDescriptorArray                             = {};
61477   };
61478 
61479   template <>
61480   struct CppType<StructureType, StructureType::ePhysicalDeviceDescriptorIndexingFeatures>
61481   {
61482     using Type = PhysicalDeviceDescriptorIndexingFeatures;
61483   };
61484 
61485   using PhysicalDeviceDescriptorIndexingFeaturesEXT = PhysicalDeviceDescriptorIndexingFeatures;
61486 
61487   struct PhysicalDeviceDescriptorIndexingProperties
61488   {
61489     using NativeType = VkPhysicalDeviceDescriptorIndexingProperties;
61490 
61491     static const bool                                  allowDuplicate = false;
61492     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDescriptorIndexingProperties;
61493 
61494 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDescriptorIndexingPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties61495     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingProperties( uint32_t                     maxUpdateAfterBindDescriptorsInAllPools_              = {},
61496                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexingNative_     = {},
61497                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexingNative_      = {},
61498                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexingNative_     = {},
61499                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexingNative_      = {},
61500                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexingNative_   = {},
61501                                                                      VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccessUpdateAfterBind_                    = {},
61502                                                                      VULKAN_HPP_NAMESPACE::Bool32 quadDivergentImplicitLod_                             = {},
61503                                                                      uint32_t                     maxPerStageDescriptorUpdateAfterBindSamplers_         = {},
61504                                                                      uint32_t                     maxPerStageDescriptorUpdateAfterBindUniformBuffers_   = {},
61505                                                                      uint32_t                     maxPerStageDescriptorUpdateAfterBindStorageBuffers_   = {},
61506                                                                      uint32_t                     maxPerStageDescriptorUpdateAfterBindSampledImages_    = {},
61507                                                                      uint32_t                     maxPerStageDescriptorUpdateAfterBindStorageImages_    = {},
61508                                                                      uint32_t                     maxPerStageDescriptorUpdateAfterBindInputAttachments_ = {},
61509                                                                      uint32_t                     maxPerStageUpdateAfterBindResources_                  = {},
61510                                                                      uint32_t                     maxDescriptorSetUpdateAfterBindSamplers_              = {},
61511                                                                      uint32_t                     maxDescriptorSetUpdateAfterBindUniformBuffers_        = {},
61512                                                                      uint32_t                     maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ = {},
61513                                                                      uint32_t                     maxDescriptorSetUpdateAfterBindStorageBuffers_        = {},
61514                                                                      uint32_t                     maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ = {},
61515                                                                      uint32_t                     maxDescriptorSetUpdateAfterBindSampledImages_         = {},
61516                                                                      uint32_t                     maxDescriptorSetUpdateAfterBindStorageImages_         = {},
61517                                                                      uint32_t                     maxDescriptorSetUpdateAfterBindInputAttachments_      = {},
61518                                                                      void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
61519       : pNext{ pNext_ }
61520       , maxUpdateAfterBindDescriptorsInAllPools{ maxUpdateAfterBindDescriptorsInAllPools_ }
61521       , shaderUniformBufferArrayNonUniformIndexingNative{ shaderUniformBufferArrayNonUniformIndexingNative_ }
61522       , shaderSampledImageArrayNonUniformIndexingNative{ shaderSampledImageArrayNonUniformIndexingNative_ }
61523       , shaderStorageBufferArrayNonUniformIndexingNative{ shaderStorageBufferArrayNonUniformIndexingNative_ }
61524       , shaderStorageImageArrayNonUniformIndexingNative{ shaderStorageImageArrayNonUniformIndexingNative_ }
61525       , shaderInputAttachmentArrayNonUniformIndexingNative{ shaderInputAttachmentArrayNonUniformIndexingNative_ }
61526       , robustBufferAccessUpdateAfterBind{ robustBufferAccessUpdateAfterBind_ }
61527       , quadDivergentImplicitLod{ quadDivergentImplicitLod_ }
61528       , maxPerStageDescriptorUpdateAfterBindSamplers{ maxPerStageDescriptorUpdateAfterBindSamplers_ }
61529       , maxPerStageDescriptorUpdateAfterBindUniformBuffers{ maxPerStageDescriptorUpdateAfterBindUniformBuffers_ }
61530       , maxPerStageDescriptorUpdateAfterBindStorageBuffers{ maxPerStageDescriptorUpdateAfterBindStorageBuffers_ }
61531       , maxPerStageDescriptorUpdateAfterBindSampledImages{ maxPerStageDescriptorUpdateAfterBindSampledImages_ }
61532       , maxPerStageDescriptorUpdateAfterBindStorageImages{ maxPerStageDescriptorUpdateAfterBindStorageImages_ }
61533       , maxPerStageDescriptorUpdateAfterBindInputAttachments{ maxPerStageDescriptorUpdateAfterBindInputAttachments_ }
61534       , maxPerStageUpdateAfterBindResources{ maxPerStageUpdateAfterBindResources_ }
61535       , maxDescriptorSetUpdateAfterBindSamplers{ maxDescriptorSetUpdateAfterBindSamplers_ }
61536       , maxDescriptorSetUpdateAfterBindUniformBuffers{ maxDescriptorSetUpdateAfterBindUniformBuffers_ }
61537       , maxDescriptorSetUpdateAfterBindUniformBuffersDynamic{ maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ }
61538       , maxDescriptorSetUpdateAfterBindStorageBuffers{ maxDescriptorSetUpdateAfterBindStorageBuffers_ }
61539       , maxDescriptorSetUpdateAfterBindStorageBuffersDynamic{ maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ }
61540       , maxDescriptorSetUpdateAfterBindSampledImages{ maxDescriptorSetUpdateAfterBindSampledImages_ }
61541       , maxDescriptorSetUpdateAfterBindStorageImages{ maxDescriptorSetUpdateAfterBindStorageImages_ }
61542       , maxDescriptorSetUpdateAfterBindInputAttachments{ maxDescriptorSetUpdateAfterBindInputAttachments_ }
61543     {
61544     }
61545 
61546     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingProperties( PhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61547 
PhysicalDeviceDescriptorIndexingPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties61548     PhysicalDeviceDescriptorIndexingProperties( VkPhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT
61549       : PhysicalDeviceDescriptorIndexingProperties( *reinterpret_cast<PhysicalDeviceDescriptorIndexingProperties const *>( &rhs ) )
61550     {
61551     }
61552 
61553     PhysicalDeviceDescriptorIndexingProperties & operator=( PhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61554 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
61555 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties61556     PhysicalDeviceDescriptorIndexingProperties & operator=( VkPhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT
61557     {
61558       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties const *>( &rhs );
61559       return *this;
61560     }
61561 
operator VkPhysicalDeviceDescriptorIndexingProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties61562     operator VkPhysicalDeviceDescriptorIndexingProperties const &() const VULKAN_HPP_NOEXCEPT
61563     {
61564       return *reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingProperties *>( this );
61565     }
61566 
operator VkPhysicalDeviceDescriptorIndexingProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties61567     operator VkPhysicalDeviceDescriptorIndexingProperties &() VULKAN_HPP_NOEXCEPT
61568     {
61569       return *reinterpret_cast<VkPhysicalDeviceDescriptorIndexingProperties *>( this );
61570     }
61571 
61572 #if defined( VULKAN_HPP_USE_REFLECT )
61573 #  if 14 <= VULKAN_HPP_CPP_VERSION
61574     auto
61575 #  else
61576     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
61577                void * const &,
61578                uint32_t const &,
61579                VULKAN_HPP_NAMESPACE::Bool32 const &,
61580                VULKAN_HPP_NAMESPACE::Bool32 const &,
61581                VULKAN_HPP_NAMESPACE::Bool32 const &,
61582                VULKAN_HPP_NAMESPACE::Bool32 const &,
61583                VULKAN_HPP_NAMESPACE::Bool32 const &,
61584                VULKAN_HPP_NAMESPACE::Bool32 const &,
61585                VULKAN_HPP_NAMESPACE::Bool32 const &,
61586                uint32_t const &,
61587                uint32_t const &,
61588                uint32_t const &,
61589                uint32_t const &,
61590                uint32_t const &,
61591                uint32_t const &,
61592                uint32_t const &,
61593                uint32_t const &,
61594                uint32_t const &,
61595                uint32_t const &,
61596                uint32_t const &,
61597                uint32_t const &,
61598                uint32_t const &,
61599                uint32_t const &,
61600                uint32_t const &>
61601 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties61602       reflect() const VULKAN_HPP_NOEXCEPT
61603     {
61604       return std::tie( sType,
61605                        pNext,
61606                        maxUpdateAfterBindDescriptorsInAllPools,
61607                        shaderUniformBufferArrayNonUniformIndexingNative,
61608                        shaderSampledImageArrayNonUniformIndexingNative,
61609                        shaderStorageBufferArrayNonUniformIndexingNative,
61610                        shaderStorageImageArrayNonUniformIndexingNative,
61611                        shaderInputAttachmentArrayNonUniformIndexingNative,
61612                        robustBufferAccessUpdateAfterBind,
61613                        quadDivergentImplicitLod,
61614                        maxPerStageDescriptorUpdateAfterBindSamplers,
61615                        maxPerStageDescriptorUpdateAfterBindUniformBuffers,
61616                        maxPerStageDescriptorUpdateAfterBindStorageBuffers,
61617                        maxPerStageDescriptorUpdateAfterBindSampledImages,
61618                        maxPerStageDescriptorUpdateAfterBindStorageImages,
61619                        maxPerStageDescriptorUpdateAfterBindInputAttachments,
61620                        maxPerStageUpdateAfterBindResources,
61621                        maxDescriptorSetUpdateAfterBindSamplers,
61622                        maxDescriptorSetUpdateAfterBindUniformBuffers,
61623                        maxDescriptorSetUpdateAfterBindUniformBuffersDynamic,
61624                        maxDescriptorSetUpdateAfterBindStorageBuffers,
61625                        maxDescriptorSetUpdateAfterBindStorageBuffersDynamic,
61626                        maxDescriptorSetUpdateAfterBindSampledImages,
61627                        maxDescriptorSetUpdateAfterBindStorageImages,
61628                        maxDescriptorSetUpdateAfterBindInputAttachments );
61629     }
61630 #endif
61631 
61632 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
61633     auto operator<=>( PhysicalDeviceDescriptorIndexingProperties const & ) const = default;
61634 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties61635     bool operator==( PhysicalDeviceDescriptorIndexingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
61636     {
61637 #  if defined( VULKAN_HPP_USE_REFLECT )
61638       return this->reflect() == rhs.reflect();
61639 #  else
61640       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxUpdateAfterBindDescriptorsInAllPools == rhs.maxUpdateAfterBindDescriptorsInAllPools ) &&
61641              ( shaderUniformBufferArrayNonUniformIndexingNative == rhs.shaderUniformBufferArrayNonUniformIndexingNative ) &&
61642              ( shaderSampledImageArrayNonUniformIndexingNative == rhs.shaderSampledImageArrayNonUniformIndexingNative ) &&
61643              ( shaderStorageBufferArrayNonUniformIndexingNative == rhs.shaderStorageBufferArrayNonUniformIndexingNative ) &&
61644              ( shaderStorageImageArrayNonUniformIndexingNative == rhs.shaderStorageImageArrayNonUniformIndexingNative ) &&
61645              ( shaderInputAttachmentArrayNonUniformIndexingNative == rhs.shaderInputAttachmentArrayNonUniformIndexingNative ) &&
61646              ( robustBufferAccessUpdateAfterBind == rhs.robustBufferAccessUpdateAfterBind ) && ( quadDivergentImplicitLod == rhs.quadDivergentImplicitLod ) &&
61647              ( maxPerStageDescriptorUpdateAfterBindSamplers == rhs.maxPerStageDescriptorUpdateAfterBindSamplers ) &&
61648              ( maxPerStageDescriptorUpdateAfterBindUniformBuffers == rhs.maxPerStageDescriptorUpdateAfterBindUniformBuffers ) &&
61649              ( maxPerStageDescriptorUpdateAfterBindStorageBuffers == rhs.maxPerStageDescriptorUpdateAfterBindStorageBuffers ) &&
61650              ( maxPerStageDescriptorUpdateAfterBindSampledImages == rhs.maxPerStageDescriptorUpdateAfterBindSampledImages ) &&
61651              ( maxPerStageDescriptorUpdateAfterBindStorageImages == rhs.maxPerStageDescriptorUpdateAfterBindStorageImages ) &&
61652              ( maxPerStageDescriptorUpdateAfterBindInputAttachments == rhs.maxPerStageDescriptorUpdateAfterBindInputAttachments ) &&
61653              ( maxPerStageUpdateAfterBindResources == rhs.maxPerStageUpdateAfterBindResources ) &&
61654              ( maxDescriptorSetUpdateAfterBindSamplers == rhs.maxDescriptorSetUpdateAfterBindSamplers ) &&
61655              ( maxDescriptorSetUpdateAfterBindUniformBuffers == rhs.maxDescriptorSetUpdateAfterBindUniformBuffers ) &&
61656              ( maxDescriptorSetUpdateAfterBindUniformBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic ) &&
61657              ( maxDescriptorSetUpdateAfterBindStorageBuffers == rhs.maxDescriptorSetUpdateAfterBindStorageBuffers ) &&
61658              ( maxDescriptorSetUpdateAfterBindStorageBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic ) &&
61659              ( maxDescriptorSetUpdateAfterBindSampledImages == rhs.maxDescriptorSetUpdateAfterBindSampledImages ) &&
61660              ( maxDescriptorSetUpdateAfterBindStorageImages == rhs.maxDescriptorSetUpdateAfterBindStorageImages ) &&
61661              ( maxDescriptorSetUpdateAfterBindInputAttachments == rhs.maxDescriptorSetUpdateAfterBindInputAttachments );
61662 #  endif
61663     }
61664 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties61665     bool operator!=( PhysicalDeviceDescriptorIndexingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
61666     {
61667       return !operator==( rhs );
61668     }
61669 #endif
61670 
61671   public:
61672     VULKAN_HPP_NAMESPACE::StructureType sType                                                = StructureType::ePhysicalDeviceDescriptorIndexingProperties;
61673     void *                              pNext                                                = {};
61674     uint32_t                            maxUpdateAfterBindDescriptorsInAllPools              = {};
61675     VULKAN_HPP_NAMESPACE::Bool32        shaderUniformBufferArrayNonUniformIndexingNative     = {};
61676     VULKAN_HPP_NAMESPACE::Bool32        shaderSampledImageArrayNonUniformIndexingNative      = {};
61677     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageBufferArrayNonUniformIndexingNative     = {};
61678     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageImageArrayNonUniformIndexingNative      = {};
61679     VULKAN_HPP_NAMESPACE::Bool32        shaderInputAttachmentArrayNonUniformIndexingNative   = {};
61680     VULKAN_HPP_NAMESPACE::Bool32        robustBufferAccessUpdateAfterBind                    = {};
61681     VULKAN_HPP_NAMESPACE::Bool32        quadDivergentImplicitLod                             = {};
61682     uint32_t                            maxPerStageDescriptorUpdateAfterBindSamplers         = {};
61683     uint32_t                            maxPerStageDescriptorUpdateAfterBindUniformBuffers   = {};
61684     uint32_t                            maxPerStageDescriptorUpdateAfterBindStorageBuffers   = {};
61685     uint32_t                            maxPerStageDescriptorUpdateAfterBindSampledImages    = {};
61686     uint32_t                            maxPerStageDescriptorUpdateAfterBindStorageImages    = {};
61687     uint32_t                            maxPerStageDescriptorUpdateAfterBindInputAttachments = {};
61688     uint32_t                            maxPerStageUpdateAfterBindResources                  = {};
61689     uint32_t                            maxDescriptorSetUpdateAfterBindSamplers              = {};
61690     uint32_t                            maxDescriptorSetUpdateAfterBindUniformBuffers        = {};
61691     uint32_t                            maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = {};
61692     uint32_t                            maxDescriptorSetUpdateAfterBindStorageBuffers        = {};
61693     uint32_t                            maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = {};
61694     uint32_t                            maxDescriptorSetUpdateAfterBindSampledImages         = {};
61695     uint32_t                            maxDescriptorSetUpdateAfterBindStorageImages         = {};
61696     uint32_t                            maxDescriptorSetUpdateAfterBindInputAttachments      = {};
61697   };
61698 
61699   template <>
61700   struct CppType<StructureType, StructureType::ePhysicalDeviceDescriptorIndexingProperties>
61701   {
61702     using Type = PhysicalDeviceDescriptorIndexingProperties;
61703   };
61704 
61705   using PhysicalDeviceDescriptorIndexingPropertiesEXT = PhysicalDeviceDescriptorIndexingProperties;
61706 
61707   struct PhysicalDeviceDescriptorPoolOverallocationFeaturesNV
61708   {
61709     using NativeType = VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV;
61710 
61711     static const bool                                  allowDuplicate = false;
61712     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDescriptorPoolOverallocationFeaturesNV;
61713 
61714 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDescriptorPoolOverallocationFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV61715     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorPoolOverallocationFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 descriptorPoolOverallocation_ = {},
61716                                                                                void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
61717       : pNext{ pNext_ }
61718       , descriptorPoolOverallocation{ descriptorPoolOverallocation_ }
61719     {
61720     }
61721 
61722     VULKAN_HPP_CONSTEXPR
61723       PhysicalDeviceDescriptorPoolOverallocationFeaturesNV( PhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61724 
PhysicalDeviceDescriptorPoolOverallocationFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV61725     PhysicalDeviceDescriptorPoolOverallocationFeaturesNV( VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
61726       : PhysicalDeviceDescriptorPoolOverallocationFeaturesNV( *reinterpret_cast<PhysicalDeviceDescriptorPoolOverallocationFeaturesNV const *>( &rhs ) )
61727     {
61728     }
61729 
61730     PhysicalDeviceDescriptorPoolOverallocationFeaturesNV &
61731       operator=( PhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61732 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
61733 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV61734     PhysicalDeviceDescriptorPoolOverallocationFeaturesNV & operator=( VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
61735     {
61736       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV const *>( &rhs );
61737       return *this;
61738     }
61739 
61740 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV61741     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorPoolOverallocationFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
61742     {
61743       pNext = pNext_;
61744       return *this;
61745     }
61746 
61747     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorPoolOverallocationFeaturesNV &
setDescriptorPoolOverallocationVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV61748       setDescriptorPoolOverallocation( VULKAN_HPP_NAMESPACE::Bool32 descriptorPoolOverallocation_ ) VULKAN_HPP_NOEXCEPT
61749     {
61750       descriptorPoolOverallocation = descriptorPoolOverallocation_;
61751       return *this;
61752     }
61753 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
61754 
operator VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV61755     operator VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
61756     {
61757       return *reinterpret_cast<const VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV *>( this );
61758     }
61759 
operator VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV61760     operator VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV &() VULKAN_HPP_NOEXCEPT
61761     {
61762       return *reinterpret_cast<VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV *>( this );
61763     }
61764 
61765 #if defined( VULKAN_HPP_USE_REFLECT )
61766 #  if 14 <= VULKAN_HPP_CPP_VERSION
61767     auto
61768 #  else
61769     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
61770 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV61771       reflect() const VULKAN_HPP_NOEXCEPT
61772     {
61773       return std::tie( sType, pNext, descriptorPoolOverallocation );
61774     }
61775 #endif
61776 
61777 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
61778     auto operator<=>( PhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & ) const = default;
61779 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV61780     bool operator==( PhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
61781     {
61782 #  if defined( VULKAN_HPP_USE_REFLECT )
61783       return this->reflect() == rhs.reflect();
61784 #  else
61785       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorPoolOverallocation == rhs.descriptorPoolOverallocation );
61786 #  endif
61787     }
61788 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV61789     bool operator!=( PhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
61790     {
61791       return !operator==( rhs );
61792     }
61793 #endif
61794 
61795   public:
61796     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDeviceDescriptorPoolOverallocationFeaturesNV;
61797     void *                              pNext                        = {};
61798     VULKAN_HPP_NAMESPACE::Bool32        descriptorPoolOverallocation = {};
61799   };
61800 
61801   template <>
61802   struct CppType<StructureType, StructureType::ePhysicalDeviceDescriptorPoolOverallocationFeaturesNV>
61803   {
61804     using Type = PhysicalDeviceDescriptorPoolOverallocationFeaturesNV;
61805   };
61806 
61807   struct PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE
61808   {
61809     using NativeType = VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE;
61810 
61811     static const bool                                  allowDuplicate = false;
61812     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDescriptorSetHostMappingFeaturesVALVE;
61813 
61814 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDescriptorSetHostMappingFeaturesVALVEVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE61815     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE( VULKAN_HPP_NAMESPACE::Bool32 descriptorSetHostMapping_ = {},
61816                                                                               void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
61817       : pNext{ pNext_ }
61818       , descriptorSetHostMapping{ descriptorSetHostMapping_ }
61819     {
61820     }
61821 
61822     VULKAN_HPP_CONSTEXPR
61823       PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE( PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61824 
PhysicalDeviceDescriptorSetHostMappingFeaturesVALVEVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE61825     PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE( VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
61826       : PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE( *reinterpret_cast<PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const *>( &rhs ) )
61827     {
61828     }
61829 
61830     PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE &
61831       operator=( PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61832 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
61833 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE61834     PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE & operator=( VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
61835     {
61836       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const *>( &rhs );
61837       return *this;
61838     }
61839 
61840 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE61841     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
61842     {
61843       pNext = pNext_;
61844       return *this;
61845     }
61846 
61847     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE &
setDescriptorSetHostMappingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE61848       setDescriptorSetHostMapping( VULKAN_HPP_NAMESPACE::Bool32 descriptorSetHostMapping_ ) VULKAN_HPP_NOEXCEPT
61849     {
61850       descriptorSetHostMapping = descriptorSetHostMapping_;
61851       return *this;
61852     }
61853 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
61854 
operator VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE61855     operator VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const &() const VULKAN_HPP_NOEXCEPT
61856     {
61857       return *reinterpret_cast<const VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE *>( this );
61858     }
61859 
operator VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE61860     operator VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE &() VULKAN_HPP_NOEXCEPT
61861     {
61862       return *reinterpret_cast<VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE *>( this );
61863     }
61864 
61865 #if defined( VULKAN_HPP_USE_REFLECT )
61866 #  if 14 <= VULKAN_HPP_CPP_VERSION
61867     auto
61868 #  else
61869     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
61870 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE61871       reflect() const VULKAN_HPP_NOEXCEPT
61872     {
61873       return std::tie( sType, pNext, descriptorSetHostMapping );
61874     }
61875 #endif
61876 
61877 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
61878     auto operator<=>( PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & ) const = default;
61879 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE61880     bool operator==( PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT
61881     {
61882 #  if defined( VULKAN_HPP_USE_REFLECT )
61883       return this->reflect() == rhs.reflect();
61884 #  else
61885       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorSetHostMapping == rhs.descriptorSetHostMapping );
61886 #  endif
61887     }
61888 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE61889     bool operator!=( PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT
61890     {
61891       return !operator==( rhs );
61892     }
61893 #endif
61894 
61895   public:
61896     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDeviceDescriptorSetHostMappingFeaturesVALVE;
61897     void *                              pNext                    = {};
61898     VULKAN_HPP_NAMESPACE::Bool32        descriptorSetHostMapping = {};
61899   };
61900 
61901   template <>
61902   struct CppType<StructureType, StructureType::ePhysicalDeviceDescriptorSetHostMappingFeaturesVALVE>
61903   {
61904     using Type = PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE;
61905   };
61906 
61907   struct PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV
61908   {
61909     using NativeType = VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV;
61910 
61911     static const bool                                  allowDuplicate = false;
61912     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV;
61913 
61914 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV61915     VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCompute_              = {},
61916                                                                                  VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedComputePipelines_     = {},
61917                                                                                  VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedComputeCaptureReplay_ = {},
61918                                                                                  void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
61919       : pNext{ pNext_ }
61920       , deviceGeneratedCompute{ deviceGeneratedCompute_ }
61921       , deviceGeneratedComputePipelines{ deviceGeneratedComputePipelines_ }
61922       , deviceGeneratedComputeCaptureReplay{ deviceGeneratedComputeCaptureReplay_ }
61923     {
61924     }
61925 
61926     VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV( PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & rhs )
61927       VULKAN_HPP_NOEXCEPT = default;
61928 
PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV61929     PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV( VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
61930       : PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV( *reinterpret_cast<PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const *>( &rhs ) )
61931     {
61932     }
61933 
61934     PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV &
61935       operator=( PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
61936 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
61937 
61938     PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV61939       operator=( VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
61940     {
61941       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const *>( &rhs );
61942       return *this;
61943     }
61944 
61945 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV61946     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
61947     {
61948       pNext = pNext_;
61949       return *this;
61950     }
61951 
61952     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV &
setDeviceGeneratedComputeVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV61953       setDeviceGeneratedCompute( VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCompute_ ) VULKAN_HPP_NOEXCEPT
61954     {
61955       deviceGeneratedCompute = deviceGeneratedCompute_;
61956       return *this;
61957     }
61958 
61959     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV &
setDeviceGeneratedComputePipelinesVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV61960       setDeviceGeneratedComputePipelines( VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedComputePipelines_ ) VULKAN_HPP_NOEXCEPT
61961     {
61962       deviceGeneratedComputePipelines = deviceGeneratedComputePipelines_;
61963       return *this;
61964     }
61965 
61966     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV &
setDeviceGeneratedComputeCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV61967       setDeviceGeneratedComputeCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedComputeCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
61968     {
61969       deviceGeneratedComputeCaptureReplay = deviceGeneratedComputeCaptureReplay_;
61970       return *this;
61971     }
61972 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
61973 
operator VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV61974     operator VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
61975     {
61976       return *reinterpret_cast<const VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV *>( this );
61977     }
61978 
operator VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV61979     operator VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV &() VULKAN_HPP_NOEXCEPT
61980     {
61981       return *reinterpret_cast<VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV *>( this );
61982     }
61983 
61984 #if defined( VULKAN_HPP_USE_REFLECT )
61985 #  if 14 <= VULKAN_HPP_CPP_VERSION
61986     auto
61987 #  else
61988     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
61989                void * const &,
61990                VULKAN_HPP_NAMESPACE::Bool32 const &,
61991                VULKAN_HPP_NAMESPACE::Bool32 const &,
61992                VULKAN_HPP_NAMESPACE::Bool32 const &>
61993 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV61994       reflect() const VULKAN_HPP_NOEXCEPT
61995     {
61996       return std::tie( sType, pNext, deviceGeneratedCompute, deviceGeneratedComputePipelines, deviceGeneratedComputeCaptureReplay );
61997     }
61998 #endif
61999 
62000 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62001     auto operator<=>( PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & ) const = default;
62002 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV62003     bool operator==( PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
62004     {
62005 #  if defined( VULKAN_HPP_USE_REFLECT )
62006       return this->reflect() == rhs.reflect();
62007 #  else
62008       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceGeneratedCompute == rhs.deviceGeneratedCompute ) &&
62009              ( deviceGeneratedComputePipelines == rhs.deviceGeneratedComputePipelines ) &&
62010              ( deviceGeneratedComputeCaptureReplay == rhs.deviceGeneratedComputeCaptureReplay );
62011 #  endif
62012     }
62013 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV62014     bool operator!=( PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
62015     {
62016       return !operator==( rhs );
62017     }
62018 #endif
62019 
62020   public:
62021     VULKAN_HPP_NAMESPACE::StructureType sType                               = StructureType::ePhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV;
62022     void *                              pNext                               = {};
62023     VULKAN_HPP_NAMESPACE::Bool32        deviceGeneratedCompute              = {};
62024     VULKAN_HPP_NAMESPACE::Bool32        deviceGeneratedComputePipelines     = {};
62025     VULKAN_HPP_NAMESPACE::Bool32        deviceGeneratedComputeCaptureReplay = {};
62026   };
62027 
62028   template <>
62029   struct CppType<StructureType, StructureType::ePhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV>
62030   {
62031     using Type = PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV;
62032   };
62033 
62034   struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV
62035   {
62036     using NativeType = VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
62037 
62038     static const bool                                  allowDuplicate = false;
62039     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
62040 
62041 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDeviceGeneratedCommandsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV62042     VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCommands_ = {},
62043                                                                           void *                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
62044       : pNext{ pNext_ }
62045       , deviceGeneratedCommands{ deviceGeneratedCommands_ }
62046     {
62047     }
62048 
62049     VULKAN_HPP_CONSTEXPR
62050       PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62051 
PhysicalDeviceDeviceGeneratedCommandsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV62052     PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
62053       : PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( *reinterpret_cast<PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const *>( &rhs ) )
62054     {
62055     }
62056 
62057     PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & operator=( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62058 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62059 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV62060     PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & operator=( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
62061     {
62062       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const *>( &rhs );
62063       return *this;
62064     }
62065 
62066 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV62067     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
62068     {
62069       pNext = pNext_;
62070       return *this;
62071     }
62072 
62073     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesNV &
setDeviceGeneratedCommandsVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV62074       setDeviceGeneratedCommands( VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCommands_ ) VULKAN_HPP_NOEXCEPT
62075     {
62076       deviceGeneratedCommands = deviceGeneratedCommands_;
62077       return *this;
62078     }
62079 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
62080 
operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV62081     operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
62082     {
62083       return *reinterpret_cast<const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV *>( this );
62084     }
62085 
operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV62086     operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV &() VULKAN_HPP_NOEXCEPT
62087     {
62088       return *reinterpret_cast<VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV *>( this );
62089     }
62090 
62091 #if defined( VULKAN_HPP_USE_REFLECT )
62092 #  if 14 <= VULKAN_HPP_CPP_VERSION
62093     auto
62094 #  else
62095     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
62096 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV62097       reflect() const VULKAN_HPP_NOEXCEPT
62098     {
62099       return std::tie( sType, pNext, deviceGeneratedCommands );
62100     }
62101 #endif
62102 
62103 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62104     auto operator<=>( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & ) const = default;
62105 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV62106     bool operator==( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
62107     {
62108 #  if defined( VULKAN_HPP_USE_REFLECT )
62109       return this->reflect() == rhs.reflect();
62110 #  else
62111       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceGeneratedCommands == rhs.deviceGeneratedCommands );
62112 #  endif
62113     }
62114 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV62115     bool operator!=( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
62116     {
62117       return !operator==( rhs );
62118     }
62119 #endif
62120 
62121   public:
62122     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
62123     void *                              pNext                   = {};
62124     VULKAN_HPP_NAMESPACE::Bool32        deviceGeneratedCommands = {};
62125   };
62126 
62127   template <>
62128   struct CppType<StructureType, StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesNV>
62129   {
62130     using Type = PhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
62131   };
62132 
62133   struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV
62134   {
62135     using NativeType = VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
62136 
62137     static const bool                                  allowDuplicate = false;
62138     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
62139 
62140 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDeviceGeneratedCommandsPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV62141     VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsPropertiesNV( uint32_t maxGraphicsShaderGroupCount_              = {},
62142                                                                             uint32_t maxIndirectSequenceCount_                 = {},
62143                                                                             uint32_t maxIndirectCommandsTokenCount_            = {},
62144                                                                             uint32_t maxIndirectCommandsStreamCount_           = {},
62145                                                                             uint32_t maxIndirectCommandsTokenOffset_           = {},
62146                                                                             uint32_t maxIndirectCommandsStreamStride_          = {},
62147                                                                             uint32_t minSequencesCountBufferOffsetAlignment_   = {},
62148                                                                             uint32_t minSequencesIndexBufferOffsetAlignment_   = {},
62149                                                                             uint32_t minIndirectCommandsBufferOffsetAlignment_ = {},
62150                                                                             void *   pNext_                                    = nullptr ) VULKAN_HPP_NOEXCEPT
62151       : pNext{ pNext_ }
62152       , maxGraphicsShaderGroupCount{ maxGraphicsShaderGroupCount_ }
62153       , maxIndirectSequenceCount{ maxIndirectSequenceCount_ }
62154       , maxIndirectCommandsTokenCount{ maxIndirectCommandsTokenCount_ }
62155       , maxIndirectCommandsStreamCount{ maxIndirectCommandsStreamCount_ }
62156       , maxIndirectCommandsTokenOffset{ maxIndirectCommandsTokenOffset_ }
62157       , maxIndirectCommandsStreamStride{ maxIndirectCommandsStreamStride_ }
62158       , minSequencesCountBufferOffsetAlignment{ minSequencesCountBufferOffsetAlignment_ }
62159       , minSequencesIndexBufferOffsetAlignment{ minSequencesIndexBufferOffsetAlignment_ }
62160       , minIndirectCommandsBufferOffsetAlignment{ minIndirectCommandsBufferOffsetAlignment_ }
62161     {
62162     }
62163 
62164     VULKAN_HPP_CONSTEXPR
62165       PhysicalDeviceDeviceGeneratedCommandsPropertiesNV( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62166 
PhysicalDeviceDeviceGeneratedCommandsPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV62167     PhysicalDeviceDeviceGeneratedCommandsPropertiesNV( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
62168       : PhysicalDeviceDeviceGeneratedCommandsPropertiesNV( *reinterpret_cast<PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const *>( &rhs ) )
62169     {
62170     }
62171 
62172     PhysicalDeviceDeviceGeneratedCommandsPropertiesNV &
62173       operator=( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62174 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62175 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV62176     PhysicalDeviceDeviceGeneratedCommandsPropertiesNV & operator=( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
62177     {
62178       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const *>( &rhs );
62179       return *this;
62180     }
62181 
operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV62182     operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
62183     {
62184       return *reinterpret_cast<const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV *>( this );
62185     }
62186 
operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV62187     operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV &() VULKAN_HPP_NOEXCEPT
62188     {
62189       return *reinterpret_cast<VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV *>( this );
62190     }
62191 
62192 #if defined( VULKAN_HPP_USE_REFLECT )
62193 #  if 14 <= VULKAN_HPP_CPP_VERSION
62194     auto
62195 #  else
62196     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
62197                void * const &,
62198                uint32_t const &,
62199                uint32_t const &,
62200                uint32_t const &,
62201                uint32_t const &,
62202                uint32_t const &,
62203                uint32_t const &,
62204                uint32_t const &,
62205                uint32_t const &,
62206                uint32_t const &>
62207 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV62208       reflect() const VULKAN_HPP_NOEXCEPT
62209     {
62210       return std::tie( sType,
62211                        pNext,
62212                        maxGraphicsShaderGroupCount,
62213                        maxIndirectSequenceCount,
62214                        maxIndirectCommandsTokenCount,
62215                        maxIndirectCommandsStreamCount,
62216                        maxIndirectCommandsTokenOffset,
62217                        maxIndirectCommandsStreamStride,
62218                        minSequencesCountBufferOffsetAlignment,
62219                        minSequencesIndexBufferOffsetAlignment,
62220                        minIndirectCommandsBufferOffsetAlignment );
62221     }
62222 #endif
62223 
62224 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62225     auto operator<=>( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & ) const = default;
62226 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV62227     bool operator==( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
62228     {
62229 #  if defined( VULKAN_HPP_USE_REFLECT )
62230       return this->reflect() == rhs.reflect();
62231 #  else
62232       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxGraphicsShaderGroupCount == rhs.maxGraphicsShaderGroupCount ) &&
62233              ( maxIndirectSequenceCount == rhs.maxIndirectSequenceCount ) && ( maxIndirectCommandsTokenCount == rhs.maxIndirectCommandsTokenCount ) &&
62234              ( maxIndirectCommandsStreamCount == rhs.maxIndirectCommandsStreamCount ) &&
62235              ( maxIndirectCommandsTokenOffset == rhs.maxIndirectCommandsTokenOffset ) &&
62236              ( maxIndirectCommandsStreamStride == rhs.maxIndirectCommandsStreamStride ) &&
62237              ( minSequencesCountBufferOffsetAlignment == rhs.minSequencesCountBufferOffsetAlignment ) &&
62238              ( minSequencesIndexBufferOffsetAlignment == rhs.minSequencesIndexBufferOffsetAlignment ) &&
62239              ( minIndirectCommandsBufferOffsetAlignment == rhs.minIndirectCommandsBufferOffsetAlignment );
62240 #  endif
62241     }
62242 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV62243     bool operator!=( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
62244     {
62245       return !operator==( rhs );
62246     }
62247 #endif
62248 
62249   public:
62250     VULKAN_HPP_NAMESPACE::StructureType sType                                    = StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
62251     void *                              pNext                                    = {};
62252     uint32_t                            maxGraphicsShaderGroupCount              = {};
62253     uint32_t                            maxIndirectSequenceCount                 = {};
62254     uint32_t                            maxIndirectCommandsTokenCount            = {};
62255     uint32_t                            maxIndirectCommandsStreamCount           = {};
62256     uint32_t                            maxIndirectCommandsTokenOffset           = {};
62257     uint32_t                            maxIndirectCommandsStreamStride          = {};
62258     uint32_t                            minSequencesCountBufferOffsetAlignment   = {};
62259     uint32_t                            minSequencesIndexBufferOffsetAlignment   = {};
62260     uint32_t                            minIndirectCommandsBufferOffsetAlignment = {};
62261   };
62262 
62263   template <>
62264   struct CppType<StructureType, StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesNV>
62265   {
62266     using Type = PhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
62267   };
62268 
62269   struct PhysicalDeviceDeviceMemoryReportFeaturesEXT
62270   {
62271     using NativeType = VkPhysicalDeviceDeviceMemoryReportFeaturesEXT;
62272 
62273     static const bool                                  allowDuplicate = false;
62274     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDeviceMemoryReportFeaturesEXT;
62275 
62276 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDeviceMemoryReportFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT62277     VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceMemoryReportFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 deviceMemoryReport_ = {},
62278                                                                       void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
62279       : pNext{ pNext_ }
62280       , deviceMemoryReport{ deviceMemoryReport_ }
62281     {
62282     }
62283 
62284     VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceMemoryReportFeaturesEXT( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62285 
PhysicalDeviceDeviceMemoryReportFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT62286     PhysicalDeviceDeviceMemoryReportFeaturesEXT( VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
62287       : PhysicalDeviceDeviceMemoryReportFeaturesEXT( *reinterpret_cast<PhysicalDeviceDeviceMemoryReportFeaturesEXT const *>( &rhs ) )
62288     {
62289     }
62290 
62291     PhysicalDeviceDeviceMemoryReportFeaturesEXT & operator=( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62292 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62293 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT62294     PhysicalDeviceDeviceMemoryReportFeaturesEXT & operator=( VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
62295     {
62296       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT const *>( &rhs );
62297       return *this;
62298     }
62299 
62300 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT62301     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceMemoryReportFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
62302     {
62303       pNext = pNext_;
62304       return *this;
62305     }
62306 
62307     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceMemoryReportFeaturesEXT &
setDeviceMemoryReportVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT62308       setDeviceMemoryReport( VULKAN_HPP_NAMESPACE::Bool32 deviceMemoryReport_ ) VULKAN_HPP_NOEXCEPT
62309     {
62310       deviceMemoryReport = deviceMemoryReport_;
62311       return *this;
62312     }
62313 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
62314 
operator VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT62315     operator VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
62316     {
62317       return *reinterpret_cast<const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT *>( this );
62318     }
62319 
operator VkPhysicalDeviceDeviceMemoryReportFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT62320     operator VkPhysicalDeviceDeviceMemoryReportFeaturesEXT &() VULKAN_HPP_NOEXCEPT
62321     {
62322       return *reinterpret_cast<VkPhysicalDeviceDeviceMemoryReportFeaturesEXT *>( this );
62323     }
62324 
62325 #if defined( VULKAN_HPP_USE_REFLECT )
62326 #  if 14 <= VULKAN_HPP_CPP_VERSION
62327     auto
62328 #  else
62329     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
62330 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT62331       reflect() const VULKAN_HPP_NOEXCEPT
62332     {
62333       return std::tie( sType, pNext, deviceMemoryReport );
62334     }
62335 #endif
62336 
62337 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62338     auto operator<=>( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & ) const = default;
62339 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT62340     bool operator==( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
62341     {
62342 #  if defined( VULKAN_HPP_USE_REFLECT )
62343       return this->reflect() == rhs.reflect();
62344 #  else
62345       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceMemoryReport == rhs.deviceMemoryReport );
62346 #  endif
62347     }
62348 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT62349     bool operator!=( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
62350     {
62351       return !operator==( rhs );
62352     }
62353 #endif
62354 
62355   public:
62356     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceDeviceMemoryReportFeaturesEXT;
62357     void *                              pNext              = {};
62358     VULKAN_HPP_NAMESPACE::Bool32        deviceMemoryReport = {};
62359   };
62360 
62361   template <>
62362   struct CppType<StructureType, StructureType::ePhysicalDeviceDeviceMemoryReportFeaturesEXT>
62363   {
62364     using Type = PhysicalDeviceDeviceMemoryReportFeaturesEXT;
62365   };
62366 
62367   struct PhysicalDeviceDiagnosticsConfigFeaturesNV
62368   {
62369     using NativeType = VkPhysicalDeviceDiagnosticsConfigFeaturesNV;
62370 
62371     static const bool                                  allowDuplicate = false;
62372     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDiagnosticsConfigFeaturesNV;
62373 
62374 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDiagnosticsConfigFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV62375     VULKAN_HPP_CONSTEXPR PhysicalDeviceDiagnosticsConfigFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 diagnosticsConfig_ = {},
62376                                                                     void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
62377       : pNext{ pNext_ }
62378       , diagnosticsConfig{ diagnosticsConfig_ }
62379     {
62380     }
62381 
62382     VULKAN_HPP_CONSTEXPR PhysicalDeviceDiagnosticsConfigFeaturesNV( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62383 
PhysicalDeviceDiagnosticsConfigFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV62384     PhysicalDeviceDiagnosticsConfigFeaturesNV( VkPhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
62385       : PhysicalDeviceDiagnosticsConfigFeaturesNV( *reinterpret_cast<PhysicalDeviceDiagnosticsConfigFeaturesNV const *>( &rhs ) )
62386     {
62387     }
62388 
62389     PhysicalDeviceDiagnosticsConfigFeaturesNV & operator=( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62390 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62391 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV62392     PhysicalDeviceDiagnosticsConfigFeaturesNV & operator=( VkPhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
62393     {
62394       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV const *>( &rhs );
62395       return *this;
62396     }
62397 
62398 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV62399     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDiagnosticsConfigFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
62400     {
62401       pNext = pNext_;
62402       return *this;
62403     }
62404 
62405     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDiagnosticsConfigFeaturesNV &
setDiagnosticsConfigVULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV62406       setDiagnosticsConfig( VULKAN_HPP_NAMESPACE::Bool32 diagnosticsConfig_ ) VULKAN_HPP_NOEXCEPT
62407     {
62408       diagnosticsConfig = diagnosticsConfig_;
62409       return *this;
62410     }
62411 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
62412 
operator VkPhysicalDeviceDiagnosticsConfigFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV62413     operator VkPhysicalDeviceDiagnosticsConfigFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
62414     {
62415       return *reinterpret_cast<const VkPhysicalDeviceDiagnosticsConfigFeaturesNV *>( this );
62416     }
62417 
operator VkPhysicalDeviceDiagnosticsConfigFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV62418     operator VkPhysicalDeviceDiagnosticsConfigFeaturesNV &() VULKAN_HPP_NOEXCEPT
62419     {
62420       return *reinterpret_cast<VkPhysicalDeviceDiagnosticsConfigFeaturesNV *>( this );
62421     }
62422 
62423 #if defined( VULKAN_HPP_USE_REFLECT )
62424 #  if 14 <= VULKAN_HPP_CPP_VERSION
62425     auto
62426 #  else
62427     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
62428 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV62429       reflect() const VULKAN_HPP_NOEXCEPT
62430     {
62431       return std::tie( sType, pNext, diagnosticsConfig );
62432     }
62433 #endif
62434 
62435 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62436     auto operator<=>( PhysicalDeviceDiagnosticsConfigFeaturesNV const & ) const = default;
62437 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV62438     bool operator==( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
62439     {
62440 #  if defined( VULKAN_HPP_USE_REFLECT )
62441       return this->reflect() == rhs.reflect();
62442 #  else
62443       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( diagnosticsConfig == rhs.diagnosticsConfig );
62444 #  endif
62445     }
62446 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV62447     bool operator!=( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
62448     {
62449       return !operator==( rhs );
62450     }
62451 #endif
62452 
62453   public:
62454     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceDiagnosticsConfigFeaturesNV;
62455     void *                              pNext             = {};
62456     VULKAN_HPP_NAMESPACE::Bool32        diagnosticsConfig = {};
62457   };
62458 
62459   template <>
62460   struct CppType<StructureType, StructureType::ePhysicalDeviceDiagnosticsConfigFeaturesNV>
62461   {
62462     using Type = PhysicalDeviceDiagnosticsConfigFeaturesNV;
62463   };
62464 
62465   struct PhysicalDeviceDiscardRectanglePropertiesEXT
62466   {
62467     using NativeType = VkPhysicalDeviceDiscardRectanglePropertiesEXT;
62468 
62469     static const bool                                  allowDuplicate = false;
62470     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT;
62471 
62472 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDiscardRectanglePropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT62473     VULKAN_HPP_CONSTEXPR PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
62474       : pNext{ pNext_ }
62475       , maxDiscardRectangles{ maxDiscardRectangles_ }
62476     {
62477     }
62478 
62479     VULKAN_HPP_CONSTEXPR PhysicalDeviceDiscardRectanglePropertiesEXT( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62480 
PhysicalDeviceDiscardRectanglePropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT62481     PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
62482       : PhysicalDeviceDiscardRectanglePropertiesEXT( *reinterpret_cast<PhysicalDeviceDiscardRectanglePropertiesEXT const *>( &rhs ) )
62483     {
62484     }
62485 
62486     PhysicalDeviceDiscardRectanglePropertiesEXT & operator=( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62487 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62488 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT62489     PhysicalDeviceDiscardRectanglePropertiesEXT & operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
62490     {
62491       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT const *>( &rhs );
62492       return *this;
62493     }
62494 
operator VkPhysicalDeviceDiscardRectanglePropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT62495     operator VkPhysicalDeviceDiscardRectanglePropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
62496     {
62497       return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT *>( this );
62498     }
62499 
operator VkPhysicalDeviceDiscardRectanglePropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT62500     operator VkPhysicalDeviceDiscardRectanglePropertiesEXT &() VULKAN_HPP_NOEXCEPT
62501     {
62502       return *reinterpret_cast<VkPhysicalDeviceDiscardRectanglePropertiesEXT *>( this );
62503     }
62504 
62505 #if defined( VULKAN_HPP_USE_REFLECT )
62506 #  if 14 <= VULKAN_HPP_CPP_VERSION
62507     auto
62508 #  else
62509     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
62510 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT62511       reflect() const VULKAN_HPP_NOEXCEPT
62512     {
62513       return std::tie( sType, pNext, maxDiscardRectangles );
62514     }
62515 #endif
62516 
62517 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62518     auto operator<=>( PhysicalDeviceDiscardRectanglePropertiesEXT const & ) const = default;
62519 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT62520     bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
62521     {
62522 #  if defined( VULKAN_HPP_USE_REFLECT )
62523       return this->reflect() == rhs.reflect();
62524 #  else
62525       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxDiscardRectangles == rhs.maxDiscardRectangles );
62526 #  endif
62527     }
62528 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT62529     bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
62530     {
62531       return !operator==( rhs );
62532     }
62533 #endif
62534 
62535   public:
62536     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT;
62537     void *                              pNext                = {};
62538     uint32_t                            maxDiscardRectangles = {};
62539   };
62540 
62541   template <>
62542   struct CppType<StructureType, StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT>
62543   {
62544     using Type = PhysicalDeviceDiscardRectanglePropertiesEXT;
62545   };
62546 
62547 #if defined( VK_ENABLE_BETA_EXTENSIONS )
62548   struct PhysicalDeviceDisplacementMicromapFeaturesNV
62549   {
62550     using NativeType = VkPhysicalDeviceDisplacementMicromapFeaturesNV;
62551 
62552     static const bool                                  allowDuplicate = false;
62553     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDisplacementMicromapFeaturesNV;
62554 
62555 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDisplacementMicromapFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV62556     VULKAN_HPP_CONSTEXPR PhysicalDeviceDisplacementMicromapFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 displacementMicromap_ = {},
62557                                                                        void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
62558       : pNext{ pNext_ }
62559       , displacementMicromap{ displacementMicromap_ }
62560     {
62561     }
62562 
62563     VULKAN_HPP_CONSTEXPR PhysicalDeviceDisplacementMicromapFeaturesNV( PhysicalDeviceDisplacementMicromapFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62564 
PhysicalDeviceDisplacementMicromapFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV62565     PhysicalDeviceDisplacementMicromapFeaturesNV( VkPhysicalDeviceDisplacementMicromapFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
62566       : PhysicalDeviceDisplacementMicromapFeaturesNV( *reinterpret_cast<PhysicalDeviceDisplacementMicromapFeaturesNV const *>( &rhs ) )
62567     {
62568     }
62569 
62570     PhysicalDeviceDisplacementMicromapFeaturesNV & operator=( PhysicalDeviceDisplacementMicromapFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62571 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62572 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV62573     PhysicalDeviceDisplacementMicromapFeaturesNV & operator=( VkPhysicalDeviceDisplacementMicromapFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
62574     {
62575       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV const *>( &rhs );
62576       return *this;
62577     }
62578 
62579 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV62580     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDisplacementMicromapFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
62581     {
62582       pNext = pNext_;
62583       return *this;
62584     }
62585 
62586     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDisplacementMicromapFeaturesNV &
setDisplacementMicromapVULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV62587       setDisplacementMicromap( VULKAN_HPP_NAMESPACE::Bool32 displacementMicromap_ ) VULKAN_HPP_NOEXCEPT
62588     {
62589       displacementMicromap = displacementMicromap_;
62590       return *this;
62591     }
62592 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
62593 
operator VkPhysicalDeviceDisplacementMicromapFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV62594     operator VkPhysicalDeviceDisplacementMicromapFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
62595     {
62596       return *reinterpret_cast<const VkPhysicalDeviceDisplacementMicromapFeaturesNV *>( this );
62597     }
62598 
operator VkPhysicalDeviceDisplacementMicromapFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV62599     operator VkPhysicalDeviceDisplacementMicromapFeaturesNV &() VULKAN_HPP_NOEXCEPT
62600     {
62601       return *reinterpret_cast<VkPhysicalDeviceDisplacementMicromapFeaturesNV *>( this );
62602     }
62603 
62604 #  if defined( VULKAN_HPP_USE_REFLECT )
62605 #    if 14 <= VULKAN_HPP_CPP_VERSION
62606     auto
62607 #    else
62608     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
62609 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV62610       reflect() const VULKAN_HPP_NOEXCEPT
62611     {
62612       return std::tie( sType, pNext, displacementMicromap );
62613     }
62614 #  endif
62615 
62616 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62617     auto operator<=>( PhysicalDeviceDisplacementMicromapFeaturesNV const & ) const = default;
62618 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV62619     bool operator==( PhysicalDeviceDisplacementMicromapFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
62620     {
62621 #    if defined( VULKAN_HPP_USE_REFLECT )
62622       return this->reflect() == rhs.reflect();
62623 #    else
62624       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displacementMicromap == rhs.displacementMicromap );
62625 #    endif
62626     }
62627 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV62628     bool operator!=( PhysicalDeviceDisplacementMicromapFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
62629     {
62630       return !operator==( rhs );
62631     }
62632 #  endif
62633 
62634   public:
62635     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceDisplacementMicromapFeaturesNV;
62636     void *                              pNext                = {};
62637     VULKAN_HPP_NAMESPACE::Bool32        displacementMicromap = {};
62638   };
62639 
62640   template <>
62641   struct CppType<StructureType, StructureType::ePhysicalDeviceDisplacementMicromapFeaturesNV>
62642   {
62643     using Type = PhysicalDeviceDisplacementMicromapFeaturesNV;
62644   };
62645 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
62646 
62647 #if defined( VK_ENABLE_BETA_EXTENSIONS )
62648   struct PhysicalDeviceDisplacementMicromapPropertiesNV
62649   {
62650     using NativeType = VkPhysicalDeviceDisplacementMicromapPropertiesNV;
62651 
62652     static const bool                                  allowDuplicate = false;
62653     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDisplacementMicromapPropertiesNV;
62654 
62655 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDisplacementMicromapPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapPropertiesNV62656     VULKAN_HPP_CONSTEXPR PhysicalDeviceDisplacementMicromapPropertiesNV( uint32_t maxDisplacementMicromapSubdivisionLevel_ = {},
62657                                                                          void *   pNext_                                   = nullptr ) VULKAN_HPP_NOEXCEPT
62658       : pNext{ pNext_ }
62659       , maxDisplacementMicromapSubdivisionLevel{ maxDisplacementMicromapSubdivisionLevel_ }
62660     {
62661     }
62662 
62663     VULKAN_HPP_CONSTEXPR
62664       PhysicalDeviceDisplacementMicromapPropertiesNV( PhysicalDeviceDisplacementMicromapPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62665 
PhysicalDeviceDisplacementMicromapPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapPropertiesNV62666     PhysicalDeviceDisplacementMicromapPropertiesNV( VkPhysicalDeviceDisplacementMicromapPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
62667       : PhysicalDeviceDisplacementMicromapPropertiesNV( *reinterpret_cast<PhysicalDeviceDisplacementMicromapPropertiesNV const *>( &rhs ) )
62668     {
62669     }
62670 
62671     PhysicalDeviceDisplacementMicromapPropertiesNV & operator=( PhysicalDeviceDisplacementMicromapPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62672 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62673 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapPropertiesNV62674     PhysicalDeviceDisplacementMicromapPropertiesNV & operator=( VkPhysicalDeviceDisplacementMicromapPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
62675     {
62676       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapPropertiesNV const *>( &rhs );
62677       return *this;
62678     }
62679 
operator VkPhysicalDeviceDisplacementMicromapPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapPropertiesNV62680     operator VkPhysicalDeviceDisplacementMicromapPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
62681     {
62682       return *reinterpret_cast<const VkPhysicalDeviceDisplacementMicromapPropertiesNV *>( this );
62683     }
62684 
operator VkPhysicalDeviceDisplacementMicromapPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapPropertiesNV62685     operator VkPhysicalDeviceDisplacementMicromapPropertiesNV &() VULKAN_HPP_NOEXCEPT
62686     {
62687       return *reinterpret_cast<VkPhysicalDeviceDisplacementMicromapPropertiesNV *>( this );
62688     }
62689 
62690 #  if defined( VULKAN_HPP_USE_REFLECT )
62691 #    if 14 <= VULKAN_HPP_CPP_VERSION
62692     auto
62693 #    else
62694     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
62695 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapPropertiesNV62696       reflect() const VULKAN_HPP_NOEXCEPT
62697     {
62698       return std::tie( sType, pNext, maxDisplacementMicromapSubdivisionLevel );
62699     }
62700 #  endif
62701 
62702 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62703     auto operator<=>( PhysicalDeviceDisplacementMicromapPropertiesNV const & ) const = default;
62704 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapPropertiesNV62705     bool operator==( PhysicalDeviceDisplacementMicromapPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
62706     {
62707 #    if defined( VULKAN_HPP_USE_REFLECT )
62708       return this->reflect() == rhs.reflect();
62709 #    else
62710       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxDisplacementMicromapSubdivisionLevel == rhs.maxDisplacementMicromapSubdivisionLevel );
62711 #    endif
62712     }
62713 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapPropertiesNV62714     bool operator!=( PhysicalDeviceDisplacementMicromapPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
62715     {
62716       return !operator==( rhs );
62717     }
62718 #  endif
62719 
62720   public:
62721     VULKAN_HPP_NAMESPACE::StructureType sType                                   = StructureType::ePhysicalDeviceDisplacementMicromapPropertiesNV;
62722     void *                              pNext                                   = {};
62723     uint32_t                            maxDisplacementMicromapSubdivisionLevel = {};
62724   };
62725 
62726   template <>
62727   struct CppType<StructureType, StructureType::ePhysicalDeviceDisplacementMicromapPropertiesNV>
62728   {
62729     using Type = PhysicalDeviceDisplacementMicromapPropertiesNV;
62730   };
62731 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
62732 
62733   struct PhysicalDeviceDriverProperties
62734   {
62735     using NativeType = VkPhysicalDeviceDriverProperties;
62736 
62737     static const bool                                  allowDuplicate = false;
62738     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDriverProperties;
62739 
62740 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDriverPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties62741     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDriverProperties( VULKAN_HPP_NAMESPACE::DriverId driverID_ = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary,
62742                                                             std::array<char, VK_MAX_DRIVER_NAME_SIZE> const & driverName_         = {},
62743                                                             std::array<char, VK_MAX_DRIVER_INFO_SIZE> const & driverInfo_         = {},
62744                                                             VULKAN_HPP_NAMESPACE::ConformanceVersion          conformanceVersion_ = {},
62745                                                             void *                                            pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
62746       : pNext{ pNext_ }
62747       , driverID{ driverID_ }
62748       , driverName{ driverName_ }
62749       , driverInfo{ driverInfo_ }
62750       , conformanceVersion{ conformanceVersion_ }
62751     {
62752     }
62753 
62754     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDriverProperties( PhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62755 
PhysicalDeviceDriverPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties62756     PhysicalDeviceDriverProperties( VkPhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT
62757       : PhysicalDeviceDriverProperties( *reinterpret_cast<PhysicalDeviceDriverProperties const *>( &rhs ) )
62758     {
62759     }
62760 
62761 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PhysicalDeviceDriverPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties62762     PhysicalDeviceDriverProperties( VULKAN_HPP_NAMESPACE::DriverId           driverID_,
62763                                     std::string const &                      driverName_,
62764                                     std::string const &                      driverInfo_         = {},
62765                                     VULKAN_HPP_NAMESPACE::ConformanceVersion conformanceVersion_ = {},
62766                                     void *                                   pNext_              = nullptr )
62767       : pNext( pNext_ ), driverID( driverID_ ), conformanceVersion( conformanceVersion_ )
62768     {
62769       VULKAN_HPP_ASSERT( driverName_.size() < VK_MAX_DRIVER_NAME_SIZE );
62770 #    if defined( WIN32 )
62771       strncpy_s( driverName, VK_MAX_DRIVER_NAME_SIZE, driverName_.data(), driverName_.size() );
62772 #    else
62773       strncpy( driverName, driverName_.data(), std::min<size_t>( VK_MAX_DRIVER_NAME_SIZE, driverName_.size() ) );
62774 #    endif
62775 
62776       VULKAN_HPP_ASSERT( driverInfo_.size() < VK_MAX_DRIVER_INFO_SIZE );
62777 #    if defined( WIN32 )
62778       strncpy_s( driverInfo, VK_MAX_DRIVER_INFO_SIZE, driverInfo_.data(), driverInfo_.size() );
62779 #    else
62780       strncpy( driverInfo, driverInfo_.data(), std::min<size_t>( VK_MAX_DRIVER_INFO_SIZE, driverInfo_.size() ) );
62781 #    endif
62782     }
62783 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
62784 
62785     PhysicalDeviceDriverProperties & operator=( PhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62786 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62787 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties62788     PhysicalDeviceDriverProperties & operator=( VkPhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT
62789     {
62790       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties const *>( &rhs );
62791       return *this;
62792     }
62793 
operator VkPhysicalDeviceDriverProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties62794     operator VkPhysicalDeviceDriverProperties const &() const VULKAN_HPP_NOEXCEPT
62795     {
62796       return *reinterpret_cast<const VkPhysicalDeviceDriverProperties *>( this );
62797     }
62798 
operator VkPhysicalDeviceDriverProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties62799     operator VkPhysicalDeviceDriverProperties &() VULKAN_HPP_NOEXCEPT
62800     {
62801       return *reinterpret_cast<VkPhysicalDeviceDriverProperties *>( this );
62802     }
62803 
62804 #if defined( VULKAN_HPP_USE_REFLECT )
62805 #  if 14 <= VULKAN_HPP_CPP_VERSION
62806     auto
62807 #  else
62808     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
62809                void * const &,
62810                VULKAN_HPP_NAMESPACE::DriverId const &,
62811                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_NAME_SIZE> const &,
62812                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_INFO_SIZE> const &,
62813                VULKAN_HPP_NAMESPACE::ConformanceVersion const &>
62814 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties62815       reflect() const VULKAN_HPP_NOEXCEPT
62816     {
62817       return std::tie( sType, pNext, driverID, driverName, driverInfo, conformanceVersion );
62818     }
62819 #endif
62820 
62821 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties62822     std::strong_ordering operator<=>( PhysicalDeviceDriverProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
62823     {
62824       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
62825         return cmp;
62826       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
62827         return cmp;
62828       if ( auto cmp = driverID <=> rhs.driverID; cmp != 0 )
62829         return cmp;
62830       if ( auto cmp = strcmp( driverName, rhs.driverName ); cmp != 0 )
62831         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
62832       if ( auto cmp = strcmp( driverInfo, rhs.driverInfo ); cmp != 0 )
62833         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
62834       if ( auto cmp = conformanceVersion <=> rhs.conformanceVersion; cmp != 0 )
62835         return cmp;
62836 
62837       return std::strong_ordering::equivalent;
62838     }
62839 #endif
62840 
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties62841     bool operator==( PhysicalDeviceDriverProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
62842     {
62843       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( driverID == rhs.driverID ) && ( strcmp( driverName, rhs.driverName ) == 0 ) &&
62844              ( strcmp( driverInfo, rhs.driverInfo ) == 0 ) && ( conformanceVersion == rhs.conformanceVersion );
62845     }
62846 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties62847     bool operator!=( PhysicalDeviceDriverProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
62848     {
62849       return !operator==( rhs );
62850     }
62851 
62852   public:
62853     VULKAN_HPP_NAMESPACE::StructureType                                 sType              = StructureType::ePhysicalDeviceDriverProperties;
62854     void *                                                              pNext              = {};
62855     VULKAN_HPP_NAMESPACE::DriverId                                      driverID           = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary;
62856     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_NAME_SIZE> driverName         = {};
62857     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_INFO_SIZE> driverInfo         = {};
62858     VULKAN_HPP_NAMESPACE::ConformanceVersion                            conformanceVersion = {};
62859   };
62860 
62861   template <>
62862   struct CppType<StructureType, StructureType::ePhysicalDeviceDriverProperties>
62863   {
62864     using Type = PhysicalDeviceDriverProperties;
62865   };
62866 
62867   using PhysicalDeviceDriverPropertiesKHR = PhysicalDeviceDriverProperties;
62868 
62869   struct PhysicalDeviceDrmPropertiesEXT
62870   {
62871     using NativeType = VkPhysicalDeviceDrmPropertiesEXT;
62872 
62873     static const bool                                  allowDuplicate = false;
62874     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDrmPropertiesEXT;
62875 
62876 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDrmPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT62877     VULKAN_HPP_CONSTEXPR PhysicalDeviceDrmPropertiesEXT( VULKAN_HPP_NAMESPACE::Bool32 hasPrimary_   = {},
62878                                                          VULKAN_HPP_NAMESPACE::Bool32 hasRender_    = {},
62879                                                          int64_t                      primaryMajor_ = {},
62880                                                          int64_t                      primaryMinor_ = {},
62881                                                          int64_t                      renderMajor_  = {},
62882                                                          int64_t                      renderMinor_  = {},
62883                                                          void *                       pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
62884       : pNext{ pNext_ }
62885       , hasPrimary{ hasPrimary_ }
62886       , hasRender{ hasRender_ }
62887       , primaryMajor{ primaryMajor_ }
62888       , primaryMinor{ primaryMinor_ }
62889       , renderMajor{ renderMajor_ }
62890       , renderMinor{ renderMinor_ }
62891     {
62892     }
62893 
62894     VULKAN_HPP_CONSTEXPR PhysicalDeviceDrmPropertiesEXT( PhysicalDeviceDrmPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62895 
PhysicalDeviceDrmPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT62896     PhysicalDeviceDrmPropertiesEXT( VkPhysicalDeviceDrmPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
62897       : PhysicalDeviceDrmPropertiesEXT( *reinterpret_cast<PhysicalDeviceDrmPropertiesEXT const *>( &rhs ) )
62898     {
62899     }
62900 
62901     PhysicalDeviceDrmPropertiesEXT & operator=( PhysicalDeviceDrmPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62902 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
62903 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT62904     PhysicalDeviceDrmPropertiesEXT & operator=( VkPhysicalDeviceDrmPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
62905     {
62906       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT const *>( &rhs );
62907       return *this;
62908     }
62909 
operator VkPhysicalDeviceDrmPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT62910     operator VkPhysicalDeviceDrmPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
62911     {
62912       return *reinterpret_cast<const VkPhysicalDeviceDrmPropertiesEXT *>( this );
62913     }
62914 
operator VkPhysicalDeviceDrmPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT62915     operator VkPhysicalDeviceDrmPropertiesEXT &() VULKAN_HPP_NOEXCEPT
62916     {
62917       return *reinterpret_cast<VkPhysicalDeviceDrmPropertiesEXT *>( this );
62918     }
62919 
62920 #if defined( VULKAN_HPP_USE_REFLECT )
62921 #  if 14 <= VULKAN_HPP_CPP_VERSION
62922     auto
62923 #  else
62924     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
62925                void * const &,
62926                VULKAN_HPP_NAMESPACE::Bool32 const &,
62927                VULKAN_HPP_NAMESPACE::Bool32 const &,
62928                int64_t const &,
62929                int64_t const &,
62930                int64_t const &,
62931                int64_t const &>
62932 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT62933       reflect() const VULKAN_HPP_NOEXCEPT
62934     {
62935       return std::tie( sType, pNext, hasPrimary, hasRender, primaryMajor, primaryMinor, renderMajor, renderMinor );
62936     }
62937 #endif
62938 
62939 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
62940     auto operator<=>( PhysicalDeviceDrmPropertiesEXT const & ) const = default;
62941 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT62942     bool operator==( PhysicalDeviceDrmPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
62943     {
62944 #  if defined( VULKAN_HPP_USE_REFLECT )
62945       return this->reflect() == rhs.reflect();
62946 #  else
62947       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hasPrimary == rhs.hasPrimary ) && ( hasRender == rhs.hasRender ) &&
62948              ( primaryMajor == rhs.primaryMajor ) && ( primaryMinor == rhs.primaryMinor ) && ( renderMajor == rhs.renderMajor ) &&
62949              ( renderMinor == rhs.renderMinor );
62950 #  endif
62951     }
62952 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT62953     bool operator!=( PhysicalDeviceDrmPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
62954     {
62955       return !operator==( rhs );
62956     }
62957 #endif
62958 
62959   public:
62960     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::ePhysicalDeviceDrmPropertiesEXT;
62961     void *                              pNext        = {};
62962     VULKAN_HPP_NAMESPACE::Bool32        hasPrimary   = {};
62963     VULKAN_HPP_NAMESPACE::Bool32        hasRender    = {};
62964     int64_t                             primaryMajor = {};
62965     int64_t                             primaryMinor = {};
62966     int64_t                             renderMajor  = {};
62967     int64_t                             renderMinor  = {};
62968   };
62969 
62970   template <>
62971   struct CppType<StructureType, StructureType::ePhysicalDeviceDrmPropertiesEXT>
62972   {
62973     using Type = PhysicalDeviceDrmPropertiesEXT;
62974   };
62975 
62976   struct PhysicalDeviceDynamicRenderingFeatures
62977   {
62978     using NativeType = VkPhysicalDeviceDynamicRenderingFeatures;
62979 
62980     static const bool                                  allowDuplicate = false;
62981     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDynamicRenderingFeatures;
62982 
62983 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDynamicRenderingFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures62984     VULKAN_HPP_CONSTEXPR PhysicalDeviceDynamicRenderingFeatures( VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering_ = {},
62985                                                                  void *                       pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
62986       : pNext{ pNext_ }
62987       , dynamicRendering{ dynamicRendering_ }
62988     {
62989     }
62990 
62991     VULKAN_HPP_CONSTEXPR PhysicalDeviceDynamicRenderingFeatures( PhysicalDeviceDynamicRenderingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62992 
PhysicalDeviceDynamicRenderingFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures62993     PhysicalDeviceDynamicRenderingFeatures( VkPhysicalDeviceDynamicRenderingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
62994       : PhysicalDeviceDynamicRenderingFeatures( *reinterpret_cast<PhysicalDeviceDynamicRenderingFeatures const *>( &rhs ) )
62995     {
62996     }
62997 
62998     PhysicalDeviceDynamicRenderingFeatures & operator=( PhysicalDeviceDynamicRenderingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
62999 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63000 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures63001     PhysicalDeviceDynamicRenderingFeatures & operator=( VkPhysicalDeviceDynamicRenderingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
63002     {
63003       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures const *>( &rhs );
63004       return *this;
63005     }
63006 
63007 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures63008     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
63009     {
63010       pNext = pNext_;
63011       return *this;
63012     }
63013 
setDynamicRenderingVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures63014     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingFeatures & setDynamicRendering( VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering_ ) VULKAN_HPP_NOEXCEPT
63015     {
63016       dynamicRendering = dynamicRendering_;
63017       return *this;
63018     }
63019 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
63020 
operator VkPhysicalDeviceDynamicRenderingFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures63021     operator VkPhysicalDeviceDynamicRenderingFeatures const &() const VULKAN_HPP_NOEXCEPT
63022     {
63023       return *reinterpret_cast<const VkPhysicalDeviceDynamicRenderingFeatures *>( this );
63024     }
63025 
operator VkPhysicalDeviceDynamicRenderingFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures63026     operator VkPhysicalDeviceDynamicRenderingFeatures &() VULKAN_HPP_NOEXCEPT
63027     {
63028       return *reinterpret_cast<VkPhysicalDeviceDynamicRenderingFeatures *>( this );
63029     }
63030 
63031 #if defined( VULKAN_HPP_USE_REFLECT )
63032 #  if 14 <= VULKAN_HPP_CPP_VERSION
63033     auto
63034 #  else
63035     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
63036 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures63037       reflect() const VULKAN_HPP_NOEXCEPT
63038     {
63039       return std::tie( sType, pNext, dynamicRendering );
63040     }
63041 #endif
63042 
63043 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63044     auto operator<=>( PhysicalDeviceDynamicRenderingFeatures const & ) const = default;
63045 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures63046     bool operator==( PhysicalDeviceDynamicRenderingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
63047     {
63048 #  if defined( VULKAN_HPP_USE_REFLECT )
63049       return this->reflect() == rhs.reflect();
63050 #  else
63051       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dynamicRendering == rhs.dynamicRendering );
63052 #  endif
63053     }
63054 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures63055     bool operator!=( PhysicalDeviceDynamicRenderingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
63056     {
63057       return !operator==( rhs );
63058     }
63059 #endif
63060 
63061   public:
63062     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceDynamicRenderingFeatures;
63063     void *                              pNext            = {};
63064     VULKAN_HPP_NAMESPACE::Bool32        dynamicRendering = {};
63065   };
63066 
63067   template <>
63068   struct CppType<StructureType, StructureType::ePhysicalDeviceDynamicRenderingFeatures>
63069   {
63070     using Type = PhysicalDeviceDynamicRenderingFeatures;
63071   };
63072 
63073   using PhysicalDeviceDynamicRenderingFeaturesKHR = PhysicalDeviceDynamicRenderingFeatures;
63074 
63075   struct PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR
63076   {
63077     using NativeType = VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR;
63078 
63079     static const bool                                  allowDuplicate = false;
63080     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDynamicRenderingLocalReadFeaturesKHR;
63081 
63082 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDynamicRenderingLocalReadFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR63083     VULKAN_HPP_CONSTEXPR PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 dynamicRenderingLocalRead_ = {},
63084                                                                              void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
63085       : pNext{ pNext_ }
63086       , dynamicRenderingLocalRead{ dynamicRenderingLocalRead_ }
63087     {
63088     }
63089 
63090     VULKAN_HPP_CONSTEXPR
63091       PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR( PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63092 
PhysicalDeviceDynamicRenderingLocalReadFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR63093     PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR( VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
63094       : PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR( *reinterpret_cast<PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR const *>( &rhs ) )
63095     {
63096     }
63097 
63098     PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR &
63099       operator=( PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63100 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63101 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR63102     PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR & operator=( VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
63103     {
63104       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR const *>( &rhs );
63105       return *this;
63106     }
63107 
63108 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR63109     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
63110     {
63111       pNext = pNext_;
63112       return *this;
63113     }
63114 
63115     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR &
setDynamicRenderingLocalReadVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR63116       setDynamicRenderingLocalRead( VULKAN_HPP_NAMESPACE::Bool32 dynamicRenderingLocalRead_ ) VULKAN_HPP_NOEXCEPT
63117     {
63118       dynamicRenderingLocalRead = dynamicRenderingLocalRead_;
63119       return *this;
63120     }
63121 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
63122 
operator VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR63123     operator VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
63124     {
63125       return *reinterpret_cast<const VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR *>( this );
63126     }
63127 
operator VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR63128     operator VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR &() VULKAN_HPP_NOEXCEPT
63129     {
63130       return *reinterpret_cast<VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR *>( this );
63131     }
63132 
63133 #if defined( VULKAN_HPP_USE_REFLECT )
63134 #  if 14 <= VULKAN_HPP_CPP_VERSION
63135     auto
63136 #  else
63137     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
63138 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR63139       reflect() const VULKAN_HPP_NOEXCEPT
63140     {
63141       return std::tie( sType, pNext, dynamicRenderingLocalRead );
63142     }
63143 #endif
63144 
63145 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63146     auto operator<=>( PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR const & ) const = default;
63147 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR63148     bool operator==( PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
63149     {
63150 #  if defined( VULKAN_HPP_USE_REFLECT )
63151       return this->reflect() == rhs.reflect();
63152 #  else
63153       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dynamicRenderingLocalRead == rhs.dynamicRenderingLocalRead );
63154 #  endif
63155     }
63156 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR63157     bool operator!=( PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
63158     {
63159       return !operator==( rhs );
63160     }
63161 #endif
63162 
63163   public:
63164     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::ePhysicalDeviceDynamicRenderingLocalReadFeaturesKHR;
63165     void *                              pNext                     = {};
63166     VULKAN_HPP_NAMESPACE::Bool32        dynamicRenderingLocalRead = {};
63167   };
63168 
63169   template <>
63170   struct CppType<StructureType, StructureType::ePhysicalDeviceDynamicRenderingLocalReadFeaturesKHR>
63171   {
63172     using Type = PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR;
63173   };
63174 
63175   struct PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT
63176   {
63177     using NativeType = VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT;
63178 
63179     static const bool                                  allowDuplicate = false;
63180     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT;
63181 
63182 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT63183     VULKAN_HPP_CONSTEXPR PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 dynamicRenderingUnusedAttachments_ = {},
63184                                                                                      void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
63185       : pNext{ pNext_ }
63186       , dynamicRenderingUnusedAttachments{ dynamicRenderingUnusedAttachments_ }
63187     {
63188     }
63189 
63190     VULKAN_HPP_CONSTEXPR PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT( PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & rhs )
63191       VULKAN_HPP_NOEXCEPT = default;
63192 
PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT63193     PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT( VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
63194       : PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT(
63195           *reinterpret_cast<PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const *>( &rhs ) )
63196     {
63197     }
63198 
63199     PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT &
63200       operator=( PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63201 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63202 
63203     PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT63204       operator=( VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
63205     {
63206       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const *>( &rhs );
63207       return *this;
63208     }
63209 
63210 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT63211     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
63212     {
63213       pNext = pNext_;
63214       return *this;
63215     }
63216 
63217     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT &
setDynamicRenderingUnusedAttachmentsVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT63218       setDynamicRenderingUnusedAttachments( VULKAN_HPP_NAMESPACE::Bool32 dynamicRenderingUnusedAttachments_ ) VULKAN_HPP_NOEXCEPT
63219     {
63220       dynamicRenderingUnusedAttachments = dynamicRenderingUnusedAttachments_;
63221       return *this;
63222     }
63223 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
63224 
operator VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT63225     operator VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
63226     {
63227       return *reinterpret_cast<const VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT *>( this );
63228     }
63229 
operator VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT63230     operator VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT &() VULKAN_HPP_NOEXCEPT
63231     {
63232       return *reinterpret_cast<VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT *>( this );
63233     }
63234 
63235 #if defined( VULKAN_HPP_USE_REFLECT )
63236 #  if 14 <= VULKAN_HPP_CPP_VERSION
63237     auto
63238 #  else
63239     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
63240 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT63241       reflect() const VULKAN_HPP_NOEXCEPT
63242     {
63243       return std::tie( sType, pNext, dynamicRenderingUnusedAttachments );
63244     }
63245 #endif
63246 
63247 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63248     auto operator<=>( PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & ) const = default;
63249 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT63250     bool operator==( PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63251     {
63252 #  if defined( VULKAN_HPP_USE_REFLECT )
63253       return this->reflect() == rhs.reflect();
63254 #  else
63255       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dynamicRenderingUnusedAttachments == rhs.dynamicRenderingUnusedAttachments );
63256 #  endif
63257     }
63258 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT63259     bool operator!=( PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63260     {
63261       return !operator==( rhs );
63262     }
63263 #endif
63264 
63265   public:
63266     VULKAN_HPP_NAMESPACE::StructureType sType                             = StructureType::ePhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT;
63267     void *                              pNext                             = {};
63268     VULKAN_HPP_NAMESPACE::Bool32        dynamicRenderingUnusedAttachments = {};
63269   };
63270 
63271   template <>
63272   struct CppType<StructureType, StructureType::ePhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT>
63273   {
63274     using Type = PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT;
63275   };
63276 
63277   struct PhysicalDeviceExclusiveScissorFeaturesNV
63278   {
63279     using NativeType = VkPhysicalDeviceExclusiveScissorFeaturesNV;
63280 
63281     static const bool                                  allowDuplicate = false;
63282     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV;
63283 
63284 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExclusiveScissorFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV63285     VULKAN_HPP_CONSTEXPR PhysicalDeviceExclusiveScissorFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 exclusiveScissor_ = {},
63286                                                                    void *                       pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
63287       : pNext{ pNext_ }
63288       , exclusiveScissor{ exclusiveScissor_ }
63289     {
63290     }
63291 
63292     VULKAN_HPP_CONSTEXPR PhysicalDeviceExclusiveScissorFeaturesNV( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63293 
PhysicalDeviceExclusiveScissorFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV63294     PhysicalDeviceExclusiveScissorFeaturesNV( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
63295       : PhysicalDeviceExclusiveScissorFeaturesNV( *reinterpret_cast<PhysicalDeviceExclusiveScissorFeaturesNV const *>( &rhs ) )
63296     {
63297     }
63298 
63299     PhysicalDeviceExclusiveScissorFeaturesNV & operator=( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63300 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63301 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV63302     PhysicalDeviceExclusiveScissorFeaturesNV & operator=( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
63303     {
63304       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV const *>( &rhs );
63305       return *this;
63306     }
63307 
63308 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV63309     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExclusiveScissorFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
63310     {
63311       pNext = pNext_;
63312       return *this;
63313     }
63314 
setExclusiveScissorVULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV63315     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExclusiveScissorFeaturesNV & setExclusiveScissor( VULKAN_HPP_NAMESPACE::Bool32 exclusiveScissor_ ) VULKAN_HPP_NOEXCEPT
63316     {
63317       exclusiveScissor = exclusiveScissor_;
63318       return *this;
63319     }
63320 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
63321 
operator VkPhysicalDeviceExclusiveScissorFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV63322     operator VkPhysicalDeviceExclusiveScissorFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
63323     {
63324       return *reinterpret_cast<const VkPhysicalDeviceExclusiveScissorFeaturesNV *>( this );
63325     }
63326 
operator VkPhysicalDeviceExclusiveScissorFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV63327     operator VkPhysicalDeviceExclusiveScissorFeaturesNV &() VULKAN_HPP_NOEXCEPT
63328     {
63329       return *reinterpret_cast<VkPhysicalDeviceExclusiveScissorFeaturesNV *>( this );
63330     }
63331 
63332 #if defined( VULKAN_HPP_USE_REFLECT )
63333 #  if 14 <= VULKAN_HPP_CPP_VERSION
63334     auto
63335 #  else
63336     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
63337 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV63338       reflect() const VULKAN_HPP_NOEXCEPT
63339     {
63340       return std::tie( sType, pNext, exclusiveScissor );
63341     }
63342 #endif
63343 
63344 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63345     auto operator<=>( PhysicalDeviceExclusiveScissorFeaturesNV const & ) const = default;
63346 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV63347     bool operator==( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
63348     {
63349 #  if defined( VULKAN_HPP_USE_REFLECT )
63350       return this->reflect() == rhs.reflect();
63351 #  else
63352       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( exclusiveScissor == rhs.exclusiveScissor );
63353 #  endif
63354     }
63355 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV63356     bool operator!=( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
63357     {
63358       return !operator==( rhs );
63359     }
63360 #endif
63361 
63362   public:
63363     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV;
63364     void *                              pNext            = {};
63365     VULKAN_HPP_NAMESPACE::Bool32        exclusiveScissor = {};
63366   };
63367 
63368   template <>
63369   struct CppType<StructureType, StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV>
63370   {
63371     using Type = PhysicalDeviceExclusiveScissorFeaturesNV;
63372   };
63373 
63374   struct PhysicalDeviceExtendedDynamicState2FeaturesEXT
63375   {
63376     using NativeType = VkPhysicalDeviceExtendedDynamicState2FeaturesEXT;
63377 
63378     static const bool                                  allowDuplicate = false;
63379     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExtendedDynamicState2FeaturesEXT;
63380 
63381 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExtendedDynamicState2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT63382     VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicState2FeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2_                   = {},
63383                                                                          VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2LogicOp_            = {},
63384                                                                          VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2PatchControlPoints_ = {},
63385                                                                          void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
63386       : pNext{ pNext_ }
63387       , extendedDynamicState2{ extendedDynamicState2_ }
63388       , extendedDynamicState2LogicOp{ extendedDynamicState2LogicOp_ }
63389       , extendedDynamicState2PatchControlPoints{ extendedDynamicState2PatchControlPoints_ }
63390     {
63391     }
63392 
63393     VULKAN_HPP_CONSTEXPR
63394       PhysicalDeviceExtendedDynamicState2FeaturesEXT( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63395 
PhysicalDeviceExtendedDynamicState2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT63396     PhysicalDeviceExtendedDynamicState2FeaturesEXT( VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
63397       : PhysicalDeviceExtendedDynamicState2FeaturesEXT( *reinterpret_cast<PhysicalDeviceExtendedDynamicState2FeaturesEXT const *>( &rhs ) )
63398     {
63399     }
63400 
63401     PhysicalDeviceExtendedDynamicState2FeaturesEXT & operator=( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63402 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63403 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT63404     PhysicalDeviceExtendedDynamicState2FeaturesEXT & operator=( VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
63405     {
63406       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT const *>( &rhs );
63407       return *this;
63408     }
63409 
63410 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT63411     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
63412     {
63413       pNext = pNext_;
63414       return *this;
63415     }
63416 
63417     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT &
setExtendedDynamicState2VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT63418       setExtendedDynamicState2( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2_ ) VULKAN_HPP_NOEXCEPT
63419     {
63420       extendedDynamicState2 = extendedDynamicState2_;
63421       return *this;
63422     }
63423 
63424     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT &
setExtendedDynamicState2LogicOpVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT63425       setExtendedDynamicState2LogicOp( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2LogicOp_ ) VULKAN_HPP_NOEXCEPT
63426     {
63427       extendedDynamicState2LogicOp = extendedDynamicState2LogicOp_;
63428       return *this;
63429     }
63430 
63431     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT &
setExtendedDynamicState2PatchControlPointsVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT63432       setExtendedDynamicState2PatchControlPoints( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2PatchControlPoints_ ) VULKAN_HPP_NOEXCEPT
63433     {
63434       extendedDynamicState2PatchControlPoints = extendedDynamicState2PatchControlPoints_;
63435       return *this;
63436     }
63437 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
63438 
operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT63439     operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
63440     {
63441       return *reinterpret_cast<const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *>( this );
63442     }
63443 
operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT63444     operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT &() VULKAN_HPP_NOEXCEPT
63445     {
63446       return *reinterpret_cast<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *>( this );
63447     }
63448 
63449 #if defined( VULKAN_HPP_USE_REFLECT )
63450 #  if 14 <= VULKAN_HPP_CPP_VERSION
63451     auto
63452 #  else
63453     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
63454                void * const &,
63455                VULKAN_HPP_NAMESPACE::Bool32 const &,
63456                VULKAN_HPP_NAMESPACE::Bool32 const &,
63457                VULKAN_HPP_NAMESPACE::Bool32 const &>
63458 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT63459       reflect() const VULKAN_HPP_NOEXCEPT
63460     {
63461       return std::tie( sType, pNext, extendedDynamicState2, extendedDynamicState2LogicOp, extendedDynamicState2PatchControlPoints );
63462     }
63463 #endif
63464 
63465 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63466     auto operator<=>( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & ) const = default;
63467 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT63468     bool operator==( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63469     {
63470 #  if defined( VULKAN_HPP_USE_REFLECT )
63471       return this->reflect() == rhs.reflect();
63472 #  else
63473       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( extendedDynamicState2 == rhs.extendedDynamicState2 ) &&
63474              ( extendedDynamicState2LogicOp == rhs.extendedDynamicState2LogicOp ) &&
63475              ( extendedDynamicState2PatchControlPoints == rhs.extendedDynamicState2PatchControlPoints );
63476 #  endif
63477     }
63478 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT63479     bool operator!=( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63480     {
63481       return !operator==( rhs );
63482     }
63483 #endif
63484 
63485   public:
63486     VULKAN_HPP_NAMESPACE::StructureType sType                                   = StructureType::ePhysicalDeviceExtendedDynamicState2FeaturesEXT;
63487     void *                              pNext                                   = {};
63488     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState2                   = {};
63489     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState2LogicOp            = {};
63490     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState2PatchControlPoints = {};
63491   };
63492 
63493   template <>
63494   struct CppType<StructureType, StructureType::ePhysicalDeviceExtendedDynamicState2FeaturesEXT>
63495   {
63496     using Type = PhysicalDeviceExtendedDynamicState2FeaturesEXT;
63497   };
63498 
63499   struct PhysicalDeviceExtendedDynamicState3FeaturesEXT
63500   {
63501     using NativeType = VkPhysicalDeviceExtendedDynamicState3FeaturesEXT;
63502 
63503     static const bool                                  allowDuplicate = false;
63504     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExtendedDynamicState3FeaturesEXT;
63505 
63506 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
63507     VULKAN_HPP_CONSTEXPR
PhysicalDeviceExtendedDynamicState3FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63508       PhysicalDeviceExtendedDynamicState3FeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3TessellationDomainOrigin_         = {},
63509                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3DepthClampEnable_                 = {},
63510                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3PolygonMode_                      = {},
63511                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3RasterizationSamples_             = {},
63512                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3SampleMask_                       = {},
63513                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3AlphaToCoverageEnable_            = {},
63514                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3AlphaToOneEnable_                 = {},
63515                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3LogicOpEnable_                    = {},
63516                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ColorBlendEnable_                 = {},
63517                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ColorBlendEquation_               = {},
63518                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ColorWriteMask_                   = {},
63519                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3RasterizationStream_              = {},
63520                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ConservativeRasterizationMode_    = {},
63521                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ExtraPrimitiveOverestimationSize_ = {},
63522                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3DepthClipEnable_                  = {},
63523                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3SampleLocationsEnable_            = {},
63524                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ColorBlendAdvanced_               = {},
63525                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ProvokingVertexMode_              = {},
63526                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3LineRasterizationMode_            = {},
63527                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3LineStippleEnable_                = {},
63528                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3DepthClipNegativeOneToOne_        = {},
63529                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ViewportWScalingEnable_           = {},
63530                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ViewportSwizzle_                  = {},
63531                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageToColorEnable_            = {},
63532                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageToColorLocation_          = {},
63533                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageModulationMode_           = {},
63534                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageModulationTableEnable_    = {},
63535                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageModulationTable_          = {},
63536                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageReductionMode_            = {},
63537                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3RepresentativeFragmentTestEnable_ = {},
63538                                                       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ShadingRateImageEnable_           = {},
63539                                                       void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
63540       : pNext{ pNext_ }
63541       , extendedDynamicState3TessellationDomainOrigin{ extendedDynamicState3TessellationDomainOrigin_ }
63542       , extendedDynamicState3DepthClampEnable{ extendedDynamicState3DepthClampEnable_ }
63543       , extendedDynamicState3PolygonMode{ extendedDynamicState3PolygonMode_ }
63544       , extendedDynamicState3RasterizationSamples{ extendedDynamicState3RasterizationSamples_ }
63545       , extendedDynamicState3SampleMask{ extendedDynamicState3SampleMask_ }
63546       , extendedDynamicState3AlphaToCoverageEnable{ extendedDynamicState3AlphaToCoverageEnable_ }
63547       , extendedDynamicState3AlphaToOneEnable{ extendedDynamicState3AlphaToOneEnable_ }
63548       , extendedDynamicState3LogicOpEnable{ extendedDynamicState3LogicOpEnable_ }
63549       , extendedDynamicState3ColorBlendEnable{ extendedDynamicState3ColorBlendEnable_ }
63550       , extendedDynamicState3ColorBlendEquation{ extendedDynamicState3ColorBlendEquation_ }
63551       , extendedDynamicState3ColorWriteMask{ extendedDynamicState3ColorWriteMask_ }
63552       , extendedDynamicState3RasterizationStream{ extendedDynamicState3RasterizationStream_ }
63553       , extendedDynamicState3ConservativeRasterizationMode{ extendedDynamicState3ConservativeRasterizationMode_ }
63554       , extendedDynamicState3ExtraPrimitiveOverestimationSize{ extendedDynamicState3ExtraPrimitiveOverestimationSize_ }
63555       , extendedDynamicState3DepthClipEnable{ extendedDynamicState3DepthClipEnable_ }
63556       , extendedDynamicState3SampleLocationsEnable{ extendedDynamicState3SampleLocationsEnable_ }
63557       , extendedDynamicState3ColorBlendAdvanced{ extendedDynamicState3ColorBlendAdvanced_ }
63558       , extendedDynamicState3ProvokingVertexMode{ extendedDynamicState3ProvokingVertexMode_ }
63559       , extendedDynamicState3LineRasterizationMode{ extendedDynamicState3LineRasterizationMode_ }
63560       , extendedDynamicState3LineStippleEnable{ extendedDynamicState3LineStippleEnable_ }
63561       , extendedDynamicState3DepthClipNegativeOneToOne{ extendedDynamicState3DepthClipNegativeOneToOne_ }
63562       , extendedDynamicState3ViewportWScalingEnable{ extendedDynamicState3ViewportWScalingEnable_ }
63563       , extendedDynamicState3ViewportSwizzle{ extendedDynamicState3ViewportSwizzle_ }
63564       , extendedDynamicState3CoverageToColorEnable{ extendedDynamicState3CoverageToColorEnable_ }
63565       , extendedDynamicState3CoverageToColorLocation{ extendedDynamicState3CoverageToColorLocation_ }
63566       , extendedDynamicState3CoverageModulationMode{ extendedDynamicState3CoverageModulationMode_ }
63567       , extendedDynamicState3CoverageModulationTableEnable{ extendedDynamicState3CoverageModulationTableEnable_ }
63568       , extendedDynamicState3CoverageModulationTable{ extendedDynamicState3CoverageModulationTable_ }
63569       , extendedDynamicState3CoverageReductionMode{ extendedDynamicState3CoverageReductionMode_ }
63570       , extendedDynamicState3RepresentativeFragmentTestEnable{ extendedDynamicState3RepresentativeFragmentTestEnable_ }
63571       , extendedDynamicState3ShadingRateImageEnable{ extendedDynamicState3ShadingRateImageEnable_ }
63572     {
63573     }
63574 
63575     VULKAN_HPP_CONSTEXPR
63576       PhysicalDeviceExtendedDynamicState3FeaturesEXT( PhysicalDeviceExtendedDynamicState3FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63577 
PhysicalDeviceExtendedDynamicState3FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63578     PhysicalDeviceExtendedDynamicState3FeaturesEXT( VkPhysicalDeviceExtendedDynamicState3FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
63579       : PhysicalDeviceExtendedDynamicState3FeaturesEXT( *reinterpret_cast<PhysicalDeviceExtendedDynamicState3FeaturesEXT const *>( &rhs ) )
63580     {
63581     }
63582 
63583     PhysicalDeviceExtendedDynamicState3FeaturesEXT & operator=( PhysicalDeviceExtendedDynamicState3FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
63584 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
63585 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63586     PhysicalDeviceExtendedDynamicState3FeaturesEXT & operator=( VkPhysicalDeviceExtendedDynamicState3FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
63587     {
63588       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT const *>( &rhs );
63589       return *this;
63590     }
63591 
63592 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63593     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
63594     {
63595       pNext = pNext_;
63596       return *this;
63597     }
63598 
63599     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3TessellationDomainOriginVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63600       setExtendedDynamicState3TessellationDomainOrigin( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3TessellationDomainOrigin_ ) VULKAN_HPP_NOEXCEPT
63601     {
63602       extendedDynamicState3TessellationDomainOrigin = extendedDynamicState3TessellationDomainOrigin_;
63603       return *this;
63604     }
63605 
63606     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3DepthClampEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63607       setExtendedDynamicState3DepthClampEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3DepthClampEnable_ ) VULKAN_HPP_NOEXCEPT
63608     {
63609       extendedDynamicState3DepthClampEnable = extendedDynamicState3DepthClampEnable_;
63610       return *this;
63611     }
63612 
63613     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3PolygonModeVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63614       setExtendedDynamicState3PolygonMode( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3PolygonMode_ ) VULKAN_HPP_NOEXCEPT
63615     {
63616       extendedDynamicState3PolygonMode = extendedDynamicState3PolygonMode_;
63617       return *this;
63618     }
63619 
63620     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3RasterizationSamplesVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63621       setExtendedDynamicState3RasterizationSamples( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3RasterizationSamples_ ) VULKAN_HPP_NOEXCEPT
63622     {
63623       extendedDynamicState3RasterizationSamples = extendedDynamicState3RasterizationSamples_;
63624       return *this;
63625     }
63626 
63627     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3SampleMaskVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63628       setExtendedDynamicState3SampleMask( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3SampleMask_ ) VULKAN_HPP_NOEXCEPT
63629     {
63630       extendedDynamicState3SampleMask = extendedDynamicState3SampleMask_;
63631       return *this;
63632     }
63633 
63634     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3AlphaToCoverageEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63635       setExtendedDynamicState3AlphaToCoverageEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3AlphaToCoverageEnable_ ) VULKAN_HPP_NOEXCEPT
63636     {
63637       extendedDynamicState3AlphaToCoverageEnable = extendedDynamicState3AlphaToCoverageEnable_;
63638       return *this;
63639     }
63640 
63641     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3AlphaToOneEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63642       setExtendedDynamicState3AlphaToOneEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3AlphaToOneEnable_ ) VULKAN_HPP_NOEXCEPT
63643     {
63644       extendedDynamicState3AlphaToOneEnable = extendedDynamicState3AlphaToOneEnable_;
63645       return *this;
63646     }
63647 
63648     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3LogicOpEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63649       setExtendedDynamicState3LogicOpEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3LogicOpEnable_ ) VULKAN_HPP_NOEXCEPT
63650     {
63651       extendedDynamicState3LogicOpEnable = extendedDynamicState3LogicOpEnable_;
63652       return *this;
63653     }
63654 
63655     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3ColorBlendEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63656       setExtendedDynamicState3ColorBlendEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ColorBlendEnable_ ) VULKAN_HPP_NOEXCEPT
63657     {
63658       extendedDynamicState3ColorBlendEnable = extendedDynamicState3ColorBlendEnable_;
63659       return *this;
63660     }
63661 
63662     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3ColorBlendEquationVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63663       setExtendedDynamicState3ColorBlendEquation( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ColorBlendEquation_ ) VULKAN_HPP_NOEXCEPT
63664     {
63665       extendedDynamicState3ColorBlendEquation = extendedDynamicState3ColorBlendEquation_;
63666       return *this;
63667     }
63668 
63669     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3ColorWriteMaskVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63670       setExtendedDynamicState3ColorWriteMask( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ColorWriteMask_ ) VULKAN_HPP_NOEXCEPT
63671     {
63672       extendedDynamicState3ColorWriteMask = extendedDynamicState3ColorWriteMask_;
63673       return *this;
63674     }
63675 
63676     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3RasterizationStreamVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63677       setExtendedDynamicState3RasterizationStream( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3RasterizationStream_ ) VULKAN_HPP_NOEXCEPT
63678     {
63679       extendedDynamicState3RasterizationStream = extendedDynamicState3RasterizationStream_;
63680       return *this;
63681     }
63682 
setExtendedDynamicState3ConservativeRasterizationModeVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63683     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & setExtendedDynamicState3ConservativeRasterizationMode(
63684       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ConservativeRasterizationMode_ ) VULKAN_HPP_NOEXCEPT
63685     {
63686       extendedDynamicState3ConservativeRasterizationMode = extendedDynamicState3ConservativeRasterizationMode_;
63687       return *this;
63688     }
63689 
setExtendedDynamicState3ExtraPrimitiveOverestimationSizeVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63690     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & setExtendedDynamicState3ExtraPrimitiveOverestimationSize(
63691       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ExtraPrimitiveOverestimationSize_ ) VULKAN_HPP_NOEXCEPT
63692     {
63693       extendedDynamicState3ExtraPrimitiveOverestimationSize = extendedDynamicState3ExtraPrimitiveOverestimationSize_;
63694       return *this;
63695     }
63696 
63697     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3DepthClipEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63698       setExtendedDynamicState3DepthClipEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3DepthClipEnable_ ) VULKAN_HPP_NOEXCEPT
63699     {
63700       extendedDynamicState3DepthClipEnable = extendedDynamicState3DepthClipEnable_;
63701       return *this;
63702     }
63703 
63704     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3SampleLocationsEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63705       setExtendedDynamicState3SampleLocationsEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3SampleLocationsEnable_ ) VULKAN_HPP_NOEXCEPT
63706     {
63707       extendedDynamicState3SampleLocationsEnable = extendedDynamicState3SampleLocationsEnable_;
63708       return *this;
63709     }
63710 
63711     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3ColorBlendAdvancedVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63712       setExtendedDynamicState3ColorBlendAdvanced( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ColorBlendAdvanced_ ) VULKAN_HPP_NOEXCEPT
63713     {
63714       extendedDynamicState3ColorBlendAdvanced = extendedDynamicState3ColorBlendAdvanced_;
63715       return *this;
63716     }
63717 
63718     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3ProvokingVertexModeVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63719       setExtendedDynamicState3ProvokingVertexMode( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ProvokingVertexMode_ ) VULKAN_HPP_NOEXCEPT
63720     {
63721       extendedDynamicState3ProvokingVertexMode = extendedDynamicState3ProvokingVertexMode_;
63722       return *this;
63723     }
63724 
63725     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3LineRasterizationModeVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63726       setExtendedDynamicState3LineRasterizationMode( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3LineRasterizationMode_ ) VULKAN_HPP_NOEXCEPT
63727     {
63728       extendedDynamicState3LineRasterizationMode = extendedDynamicState3LineRasterizationMode_;
63729       return *this;
63730     }
63731 
63732     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3LineStippleEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63733       setExtendedDynamicState3LineStippleEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3LineStippleEnable_ ) VULKAN_HPP_NOEXCEPT
63734     {
63735       extendedDynamicState3LineStippleEnable = extendedDynamicState3LineStippleEnable_;
63736       return *this;
63737     }
63738 
63739     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3DepthClipNegativeOneToOneVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63740       setExtendedDynamicState3DepthClipNegativeOneToOne( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3DepthClipNegativeOneToOne_ ) VULKAN_HPP_NOEXCEPT
63741     {
63742       extendedDynamicState3DepthClipNegativeOneToOne = extendedDynamicState3DepthClipNegativeOneToOne_;
63743       return *this;
63744     }
63745 
63746     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3ViewportWScalingEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63747       setExtendedDynamicState3ViewportWScalingEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ViewportWScalingEnable_ ) VULKAN_HPP_NOEXCEPT
63748     {
63749       extendedDynamicState3ViewportWScalingEnable = extendedDynamicState3ViewportWScalingEnable_;
63750       return *this;
63751     }
63752 
63753     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3ViewportSwizzleVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63754       setExtendedDynamicState3ViewportSwizzle( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ViewportSwizzle_ ) VULKAN_HPP_NOEXCEPT
63755     {
63756       extendedDynamicState3ViewportSwizzle = extendedDynamicState3ViewportSwizzle_;
63757       return *this;
63758     }
63759 
63760     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3CoverageToColorEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63761       setExtendedDynamicState3CoverageToColorEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageToColorEnable_ ) VULKAN_HPP_NOEXCEPT
63762     {
63763       extendedDynamicState3CoverageToColorEnable = extendedDynamicState3CoverageToColorEnable_;
63764       return *this;
63765     }
63766 
63767     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3CoverageToColorLocationVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63768       setExtendedDynamicState3CoverageToColorLocation( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageToColorLocation_ ) VULKAN_HPP_NOEXCEPT
63769     {
63770       extendedDynamicState3CoverageToColorLocation = extendedDynamicState3CoverageToColorLocation_;
63771       return *this;
63772     }
63773 
63774     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3CoverageModulationModeVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63775       setExtendedDynamicState3CoverageModulationMode( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageModulationMode_ ) VULKAN_HPP_NOEXCEPT
63776     {
63777       extendedDynamicState3CoverageModulationMode = extendedDynamicState3CoverageModulationMode_;
63778       return *this;
63779     }
63780 
setExtendedDynamicState3CoverageModulationTableEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63781     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & setExtendedDynamicState3CoverageModulationTableEnable(
63782       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageModulationTableEnable_ ) VULKAN_HPP_NOEXCEPT
63783     {
63784       extendedDynamicState3CoverageModulationTableEnable = extendedDynamicState3CoverageModulationTableEnable_;
63785       return *this;
63786     }
63787 
63788     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3CoverageModulationTableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63789       setExtendedDynamicState3CoverageModulationTable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageModulationTable_ ) VULKAN_HPP_NOEXCEPT
63790     {
63791       extendedDynamicState3CoverageModulationTable = extendedDynamicState3CoverageModulationTable_;
63792       return *this;
63793     }
63794 
63795     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3CoverageReductionModeVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63796       setExtendedDynamicState3CoverageReductionMode( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3CoverageReductionMode_ ) VULKAN_HPP_NOEXCEPT
63797     {
63798       extendedDynamicState3CoverageReductionMode = extendedDynamicState3CoverageReductionMode_;
63799       return *this;
63800     }
63801 
setExtendedDynamicState3RepresentativeFragmentTestEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63802     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & setExtendedDynamicState3RepresentativeFragmentTestEnable(
63803       VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3RepresentativeFragmentTestEnable_ ) VULKAN_HPP_NOEXCEPT
63804     {
63805       extendedDynamicState3RepresentativeFragmentTestEnable = extendedDynamicState3RepresentativeFragmentTestEnable_;
63806       return *this;
63807     }
63808 
63809     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT &
setExtendedDynamicState3ShadingRateImageEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63810       setExtendedDynamicState3ShadingRateImageEnable( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState3ShadingRateImageEnable_ ) VULKAN_HPP_NOEXCEPT
63811     {
63812       extendedDynamicState3ShadingRateImageEnable = extendedDynamicState3ShadingRateImageEnable_;
63813       return *this;
63814     }
63815 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
63816 
operator VkPhysicalDeviceExtendedDynamicState3FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63817     operator VkPhysicalDeviceExtendedDynamicState3FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
63818     {
63819       return *reinterpret_cast<const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *>( this );
63820     }
63821 
operator VkPhysicalDeviceExtendedDynamicState3FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63822     operator VkPhysicalDeviceExtendedDynamicState3FeaturesEXT &() VULKAN_HPP_NOEXCEPT
63823     {
63824       return *reinterpret_cast<VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *>( this );
63825     }
63826 
63827 #if defined( VULKAN_HPP_USE_REFLECT )
63828 #  if 14 <= VULKAN_HPP_CPP_VERSION
63829     auto
63830 #  else
63831     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
63832                void * const &,
63833                VULKAN_HPP_NAMESPACE::Bool32 const &,
63834                VULKAN_HPP_NAMESPACE::Bool32 const &,
63835                VULKAN_HPP_NAMESPACE::Bool32 const &,
63836                VULKAN_HPP_NAMESPACE::Bool32 const &,
63837                VULKAN_HPP_NAMESPACE::Bool32 const &,
63838                VULKAN_HPP_NAMESPACE::Bool32 const &,
63839                VULKAN_HPP_NAMESPACE::Bool32 const &,
63840                VULKAN_HPP_NAMESPACE::Bool32 const &,
63841                VULKAN_HPP_NAMESPACE::Bool32 const &,
63842                VULKAN_HPP_NAMESPACE::Bool32 const &,
63843                VULKAN_HPP_NAMESPACE::Bool32 const &,
63844                VULKAN_HPP_NAMESPACE::Bool32 const &,
63845                VULKAN_HPP_NAMESPACE::Bool32 const &,
63846                VULKAN_HPP_NAMESPACE::Bool32 const &,
63847                VULKAN_HPP_NAMESPACE::Bool32 const &,
63848                VULKAN_HPP_NAMESPACE::Bool32 const &,
63849                VULKAN_HPP_NAMESPACE::Bool32 const &,
63850                VULKAN_HPP_NAMESPACE::Bool32 const &,
63851                VULKAN_HPP_NAMESPACE::Bool32 const &,
63852                VULKAN_HPP_NAMESPACE::Bool32 const &,
63853                VULKAN_HPP_NAMESPACE::Bool32 const &,
63854                VULKAN_HPP_NAMESPACE::Bool32 const &,
63855                VULKAN_HPP_NAMESPACE::Bool32 const &,
63856                VULKAN_HPP_NAMESPACE::Bool32 const &,
63857                VULKAN_HPP_NAMESPACE::Bool32 const &,
63858                VULKAN_HPP_NAMESPACE::Bool32 const &,
63859                VULKAN_HPP_NAMESPACE::Bool32 const &,
63860                VULKAN_HPP_NAMESPACE::Bool32 const &,
63861                VULKAN_HPP_NAMESPACE::Bool32 const &,
63862                VULKAN_HPP_NAMESPACE::Bool32 const &,
63863                VULKAN_HPP_NAMESPACE::Bool32 const &>
63864 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63865       reflect() const VULKAN_HPP_NOEXCEPT
63866     {
63867       return std::tie( sType,
63868                        pNext,
63869                        extendedDynamicState3TessellationDomainOrigin,
63870                        extendedDynamicState3DepthClampEnable,
63871                        extendedDynamicState3PolygonMode,
63872                        extendedDynamicState3RasterizationSamples,
63873                        extendedDynamicState3SampleMask,
63874                        extendedDynamicState3AlphaToCoverageEnable,
63875                        extendedDynamicState3AlphaToOneEnable,
63876                        extendedDynamicState3LogicOpEnable,
63877                        extendedDynamicState3ColorBlendEnable,
63878                        extendedDynamicState3ColorBlendEquation,
63879                        extendedDynamicState3ColorWriteMask,
63880                        extendedDynamicState3RasterizationStream,
63881                        extendedDynamicState3ConservativeRasterizationMode,
63882                        extendedDynamicState3ExtraPrimitiveOverestimationSize,
63883                        extendedDynamicState3DepthClipEnable,
63884                        extendedDynamicState3SampleLocationsEnable,
63885                        extendedDynamicState3ColorBlendAdvanced,
63886                        extendedDynamicState3ProvokingVertexMode,
63887                        extendedDynamicState3LineRasterizationMode,
63888                        extendedDynamicState3LineStippleEnable,
63889                        extendedDynamicState3DepthClipNegativeOneToOne,
63890                        extendedDynamicState3ViewportWScalingEnable,
63891                        extendedDynamicState3ViewportSwizzle,
63892                        extendedDynamicState3CoverageToColorEnable,
63893                        extendedDynamicState3CoverageToColorLocation,
63894                        extendedDynamicState3CoverageModulationMode,
63895                        extendedDynamicState3CoverageModulationTableEnable,
63896                        extendedDynamicState3CoverageModulationTable,
63897                        extendedDynamicState3CoverageReductionMode,
63898                        extendedDynamicState3RepresentativeFragmentTestEnable,
63899                        extendedDynamicState3ShadingRateImageEnable );
63900     }
63901 #endif
63902 
63903 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
63904     auto operator<=>( PhysicalDeviceExtendedDynamicState3FeaturesEXT const & ) const = default;
63905 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63906     bool operator==( PhysicalDeviceExtendedDynamicState3FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63907     {
63908 #  if defined( VULKAN_HPP_USE_REFLECT )
63909       return this->reflect() == rhs.reflect();
63910 #  else
63911       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) &&
63912              ( extendedDynamicState3TessellationDomainOrigin == rhs.extendedDynamicState3TessellationDomainOrigin ) &&
63913              ( extendedDynamicState3DepthClampEnable == rhs.extendedDynamicState3DepthClampEnable ) &&
63914              ( extendedDynamicState3PolygonMode == rhs.extendedDynamicState3PolygonMode ) &&
63915              ( extendedDynamicState3RasterizationSamples == rhs.extendedDynamicState3RasterizationSamples ) &&
63916              ( extendedDynamicState3SampleMask == rhs.extendedDynamicState3SampleMask ) &&
63917              ( extendedDynamicState3AlphaToCoverageEnable == rhs.extendedDynamicState3AlphaToCoverageEnable ) &&
63918              ( extendedDynamicState3AlphaToOneEnable == rhs.extendedDynamicState3AlphaToOneEnable ) &&
63919              ( extendedDynamicState3LogicOpEnable == rhs.extendedDynamicState3LogicOpEnable ) &&
63920              ( extendedDynamicState3ColorBlendEnable == rhs.extendedDynamicState3ColorBlendEnable ) &&
63921              ( extendedDynamicState3ColorBlendEquation == rhs.extendedDynamicState3ColorBlendEquation ) &&
63922              ( extendedDynamicState3ColorWriteMask == rhs.extendedDynamicState3ColorWriteMask ) &&
63923              ( extendedDynamicState3RasterizationStream == rhs.extendedDynamicState3RasterizationStream ) &&
63924              ( extendedDynamicState3ConservativeRasterizationMode == rhs.extendedDynamicState3ConservativeRasterizationMode ) &&
63925              ( extendedDynamicState3ExtraPrimitiveOverestimationSize == rhs.extendedDynamicState3ExtraPrimitiveOverestimationSize ) &&
63926              ( extendedDynamicState3DepthClipEnable == rhs.extendedDynamicState3DepthClipEnable ) &&
63927              ( extendedDynamicState3SampleLocationsEnable == rhs.extendedDynamicState3SampleLocationsEnable ) &&
63928              ( extendedDynamicState3ColorBlendAdvanced == rhs.extendedDynamicState3ColorBlendAdvanced ) &&
63929              ( extendedDynamicState3ProvokingVertexMode == rhs.extendedDynamicState3ProvokingVertexMode ) &&
63930              ( extendedDynamicState3LineRasterizationMode == rhs.extendedDynamicState3LineRasterizationMode ) &&
63931              ( extendedDynamicState3LineStippleEnable == rhs.extendedDynamicState3LineStippleEnable ) &&
63932              ( extendedDynamicState3DepthClipNegativeOneToOne == rhs.extendedDynamicState3DepthClipNegativeOneToOne ) &&
63933              ( extendedDynamicState3ViewportWScalingEnable == rhs.extendedDynamicState3ViewportWScalingEnable ) &&
63934              ( extendedDynamicState3ViewportSwizzle == rhs.extendedDynamicState3ViewportSwizzle ) &&
63935              ( extendedDynamicState3CoverageToColorEnable == rhs.extendedDynamicState3CoverageToColorEnable ) &&
63936              ( extendedDynamicState3CoverageToColorLocation == rhs.extendedDynamicState3CoverageToColorLocation ) &&
63937              ( extendedDynamicState3CoverageModulationMode == rhs.extendedDynamicState3CoverageModulationMode ) &&
63938              ( extendedDynamicState3CoverageModulationTableEnable == rhs.extendedDynamicState3CoverageModulationTableEnable ) &&
63939              ( extendedDynamicState3CoverageModulationTable == rhs.extendedDynamicState3CoverageModulationTable ) &&
63940              ( extendedDynamicState3CoverageReductionMode == rhs.extendedDynamicState3CoverageReductionMode ) &&
63941              ( extendedDynamicState3RepresentativeFragmentTestEnable == rhs.extendedDynamicState3RepresentativeFragmentTestEnable ) &&
63942              ( extendedDynamicState3ShadingRateImageEnable == rhs.extendedDynamicState3ShadingRateImageEnable );
63943 #  endif
63944     }
63945 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT63946     bool operator!=( PhysicalDeviceExtendedDynamicState3FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
63947     {
63948       return !operator==( rhs );
63949     }
63950 #endif
63951 
63952   public:
63953     VULKAN_HPP_NAMESPACE::StructureType sType                                                 = StructureType::ePhysicalDeviceExtendedDynamicState3FeaturesEXT;
63954     void *                              pNext                                                 = {};
63955     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3TessellationDomainOrigin         = {};
63956     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3DepthClampEnable                 = {};
63957     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3PolygonMode                      = {};
63958     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3RasterizationSamples             = {};
63959     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3SampleMask                       = {};
63960     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3AlphaToCoverageEnable            = {};
63961     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3AlphaToOneEnable                 = {};
63962     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3LogicOpEnable                    = {};
63963     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3ColorBlendEnable                 = {};
63964     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3ColorBlendEquation               = {};
63965     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3ColorWriteMask                   = {};
63966     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3RasterizationStream              = {};
63967     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3ConservativeRasterizationMode    = {};
63968     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3ExtraPrimitiveOverestimationSize = {};
63969     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3DepthClipEnable                  = {};
63970     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3SampleLocationsEnable            = {};
63971     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3ColorBlendAdvanced               = {};
63972     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3ProvokingVertexMode              = {};
63973     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3LineRasterizationMode            = {};
63974     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3LineStippleEnable                = {};
63975     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3DepthClipNegativeOneToOne        = {};
63976     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3ViewportWScalingEnable           = {};
63977     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3ViewportSwizzle                  = {};
63978     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3CoverageToColorEnable            = {};
63979     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3CoverageToColorLocation          = {};
63980     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3CoverageModulationMode           = {};
63981     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3CoverageModulationTableEnable    = {};
63982     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3CoverageModulationTable          = {};
63983     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3CoverageReductionMode            = {};
63984     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3RepresentativeFragmentTestEnable = {};
63985     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState3ShadingRateImageEnable           = {};
63986   };
63987 
63988   template <>
63989   struct CppType<StructureType, StructureType::ePhysicalDeviceExtendedDynamicState3FeaturesEXT>
63990   {
63991     using Type = PhysicalDeviceExtendedDynamicState3FeaturesEXT;
63992   };
63993 
63994   struct PhysicalDeviceExtendedDynamicState3PropertiesEXT
63995   {
63996     using NativeType = VkPhysicalDeviceExtendedDynamicState3PropertiesEXT;
63997 
63998     static const bool                                  allowDuplicate = false;
63999     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExtendedDynamicState3PropertiesEXT;
64000 
64001 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExtendedDynamicState3PropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT64002     VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicState3PropertiesEXT( VULKAN_HPP_NAMESPACE::Bool32 dynamicPrimitiveTopologyUnrestricted_ = {},
64003                                                                            void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
64004       : pNext{ pNext_ }
64005       , dynamicPrimitiveTopologyUnrestricted{ dynamicPrimitiveTopologyUnrestricted_ }
64006     {
64007     }
64008 
64009     VULKAN_HPP_CONSTEXPR
64010       PhysicalDeviceExtendedDynamicState3PropertiesEXT( PhysicalDeviceExtendedDynamicState3PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64011 
PhysicalDeviceExtendedDynamicState3PropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT64012     PhysicalDeviceExtendedDynamicState3PropertiesEXT( VkPhysicalDeviceExtendedDynamicState3PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
64013       : PhysicalDeviceExtendedDynamicState3PropertiesEXT( *reinterpret_cast<PhysicalDeviceExtendedDynamicState3PropertiesEXT const *>( &rhs ) )
64014     {
64015     }
64016 
64017     PhysicalDeviceExtendedDynamicState3PropertiesEXT & operator=( PhysicalDeviceExtendedDynamicState3PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64018 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64019 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT64020     PhysicalDeviceExtendedDynamicState3PropertiesEXT & operator=( VkPhysicalDeviceExtendedDynamicState3PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
64021     {
64022       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT const *>( &rhs );
64023       return *this;
64024     }
64025 
64026 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT64027     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3PropertiesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
64028     {
64029       pNext = pNext_;
64030       return *this;
64031     }
64032 
64033     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3PropertiesEXT &
setDynamicPrimitiveTopologyUnrestrictedVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT64034       setDynamicPrimitiveTopologyUnrestricted( VULKAN_HPP_NAMESPACE::Bool32 dynamicPrimitiveTopologyUnrestricted_ ) VULKAN_HPP_NOEXCEPT
64035     {
64036       dynamicPrimitiveTopologyUnrestricted = dynamicPrimitiveTopologyUnrestricted_;
64037       return *this;
64038     }
64039 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
64040 
operator VkPhysicalDeviceExtendedDynamicState3PropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT64041     operator VkPhysicalDeviceExtendedDynamicState3PropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
64042     {
64043       return *reinterpret_cast<const VkPhysicalDeviceExtendedDynamicState3PropertiesEXT *>( this );
64044     }
64045 
operator VkPhysicalDeviceExtendedDynamicState3PropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT64046     operator VkPhysicalDeviceExtendedDynamicState3PropertiesEXT &() VULKAN_HPP_NOEXCEPT
64047     {
64048       return *reinterpret_cast<VkPhysicalDeviceExtendedDynamicState3PropertiesEXT *>( this );
64049     }
64050 
64051 #if defined( VULKAN_HPP_USE_REFLECT )
64052 #  if 14 <= VULKAN_HPP_CPP_VERSION
64053     auto
64054 #  else
64055     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
64056 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT64057       reflect() const VULKAN_HPP_NOEXCEPT
64058     {
64059       return std::tie( sType, pNext, dynamicPrimitiveTopologyUnrestricted );
64060     }
64061 #endif
64062 
64063 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64064     auto operator<=>( PhysicalDeviceExtendedDynamicState3PropertiesEXT const & ) const = default;
64065 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT64066     bool operator==( PhysicalDeviceExtendedDynamicState3PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
64067     {
64068 #  if defined( VULKAN_HPP_USE_REFLECT )
64069       return this->reflect() == rhs.reflect();
64070 #  else
64071       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dynamicPrimitiveTopologyUnrestricted == rhs.dynamicPrimitiveTopologyUnrestricted );
64072 #  endif
64073     }
64074 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT64075     bool operator!=( PhysicalDeviceExtendedDynamicState3PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
64076     {
64077       return !operator==( rhs );
64078     }
64079 #endif
64080 
64081   public:
64082     VULKAN_HPP_NAMESPACE::StructureType sType                                = StructureType::ePhysicalDeviceExtendedDynamicState3PropertiesEXT;
64083     void *                              pNext                                = {};
64084     VULKAN_HPP_NAMESPACE::Bool32        dynamicPrimitiveTopologyUnrestricted = {};
64085   };
64086 
64087   template <>
64088   struct CppType<StructureType, StructureType::ePhysicalDeviceExtendedDynamicState3PropertiesEXT>
64089   {
64090     using Type = PhysicalDeviceExtendedDynamicState3PropertiesEXT;
64091   };
64092 
64093   struct PhysicalDeviceExtendedDynamicStateFeaturesEXT
64094   {
64095     using NativeType = VkPhysicalDeviceExtendedDynamicStateFeaturesEXT;
64096 
64097     static const bool                                  allowDuplicate = false;
64098     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT;
64099 
64100 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExtendedDynamicStateFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT64101     VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicStateFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState_ = {},
64102                                                                         void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
64103       : pNext{ pNext_ }
64104       , extendedDynamicState{ extendedDynamicState_ }
64105     {
64106     }
64107 
64108     VULKAN_HPP_CONSTEXPR
64109       PhysicalDeviceExtendedDynamicStateFeaturesEXT( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64110 
PhysicalDeviceExtendedDynamicStateFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT64111     PhysicalDeviceExtendedDynamicStateFeaturesEXT( VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
64112       : PhysicalDeviceExtendedDynamicStateFeaturesEXT( *reinterpret_cast<PhysicalDeviceExtendedDynamicStateFeaturesEXT const *>( &rhs ) )
64113     {
64114     }
64115 
64116     PhysicalDeviceExtendedDynamicStateFeaturesEXT & operator=( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64117 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64118 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT64119     PhysicalDeviceExtendedDynamicStateFeaturesEXT & operator=( VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
64120     {
64121       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT const *>( &rhs );
64122       return *this;
64123     }
64124 
64125 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT64126     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicStateFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
64127     {
64128       pNext = pNext_;
64129       return *this;
64130     }
64131 
64132     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicStateFeaturesEXT &
setExtendedDynamicStateVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT64133       setExtendedDynamicState( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState_ ) VULKAN_HPP_NOEXCEPT
64134     {
64135       extendedDynamicState = extendedDynamicState_;
64136       return *this;
64137     }
64138 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
64139 
operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT64140     operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
64141     {
64142       return *reinterpret_cast<const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *>( this );
64143     }
64144 
operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT64145     operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT &() VULKAN_HPP_NOEXCEPT
64146     {
64147       return *reinterpret_cast<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *>( this );
64148     }
64149 
64150 #if defined( VULKAN_HPP_USE_REFLECT )
64151 #  if 14 <= VULKAN_HPP_CPP_VERSION
64152     auto
64153 #  else
64154     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
64155 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT64156       reflect() const VULKAN_HPP_NOEXCEPT
64157     {
64158       return std::tie( sType, pNext, extendedDynamicState );
64159     }
64160 #endif
64161 
64162 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64163     auto operator<=>( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & ) const = default;
64164 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT64165     bool operator==( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
64166     {
64167 #  if defined( VULKAN_HPP_USE_REFLECT )
64168       return this->reflect() == rhs.reflect();
64169 #  else
64170       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( extendedDynamicState == rhs.extendedDynamicState );
64171 #  endif
64172     }
64173 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT64174     bool operator!=( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
64175     {
64176       return !operator==( rhs );
64177     }
64178 #endif
64179 
64180   public:
64181     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT;
64182     void *                              pNext                = {};
64183     VULKAN_HPP_NAMESPACE::Bool32        extendedDynamicState = {};
64184   };
64185 
64186   template <>
64187   struct CppType<StructureType, StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT>
64188   {
64189     using Type = PhysicalDeviceExtendedDynamicStateFeaturesEXT;
64190   };
64191 
64192   struct PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV
64193   {
64194     using NativeType = VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV;
64195 
64196     static const bool                                  allowDuplicate = false;
64197     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExtendedSparseAddressSpaceFeaturesNV;
64198 
64199 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExtendedSparseAddressSpaceFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV64200     VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 extendedSparseAddressSpace_ = {},
64201                                                                              void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
64202       : pNext{ pNext_ }
64203       , extendedSparseAddressSpace{ extendedSparseAddressSpace_ }
64204     {
64205     }
64206 
64207     VULKAN_HPP_CONSTEXPR
64208       PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV( PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64209 
PhysicalDeviceExtendedSparseAddressSpaceFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV64210     PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV( VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
64211       : PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV( *reinterpret_cast<PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const *>( &rhs ) )
64212     {
64213     }
64214 
64215     PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV &
64216       operator=( PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64217 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64218 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV64219     PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV & operator=( VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
64220     {
64221       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const *>( &rhs );
64222       return *this;
64223     }
64224 
64225 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV64226     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
64227     {
64228       pNext = pNext_;
64229       return *this;
64230     }
64231 
64232     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV &
setExtendedSparseAddressSpaceVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV64233       setExtendedSparseAddressSpace( VULKAN_HPP_NAMESPACE::Bool32 extendedSparseAddressSpace_ ) VULKAN_HPP_NOEXCEPT
64234     {
64235       extendedSparseAddressSpace = extendedSparseAddressSpace_;
64236       return *this;
64237     }
64238 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
64239 
operator VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV64240     operator VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
64241     {
64242       return *reinterpret_cast<const VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV *>( this );
64243     }
64244 
operator VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV64245     operator VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV &() VULKAN_HPP_NOEXCEPT
64246     {
64247       return *reinterpret_cast<VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV *>( this );
64248     }
64249 
64250 #if defined( VULKAN_HPP_USE_REFLECT )
64251 #  if 14 <= VULKAN_HPP_CPP_VERSION
64252     auto
64253 #  else
64254     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
64255 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV64256       reflect() const VULKAN_HPP_NOEXCEPT
64257     {
64258       return std::tie( sType, pNext, extendedSparseAddressSpace );
64259     }
64260 #endif
64261 
64262 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64263     auto operator<=>( PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & ) const = default;
64264 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV64265     bool operator==( PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
64266     {
64267 #  if defined( VULKAN_HPP_USE_REFLECT )
64268       return this->reflect() == rhs.reflect();
64269 #  else
64270       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( extendedSparseAddressSpace == rhs.extendedSparseAddressSpace );
64271 #  endif
64272     }
64273 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV64274     bool operator!=( PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
64275     {
64276       return !operator==( rhs );
64277     }
64278 #endif
64279 
64280   public:
64281     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::ePhysicalDeviceExtendedSparseAddressSpaceFeaturesNV;
64282     void *                              pNext                      = {};
64283     VULKAN_HPP_NAMESPACE::Bool32        extendedSparseAddressSpace = {};
64284   };
64285 
64286   template <>
64287   struct CppType<StructureType, StructureType::ePhysicalDeviceExtendedSparseAddressSpaceFeaturesNV>
64288   {
64289     using Type = PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV;
64290   };
64291 
64292   struct PhysicalDeviceExtendedSparseAddressSpacePropertiesNV
64293   {
64294     using NativeType = VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV;
64295 
64296     static const bool                                  allowDuplicate = false;
64297     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExtendedSparseAddressSpacePropertiesNV;
64298 
64299 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExtendedSparseAddressSpacePropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV64300     VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedSparseAddressSpacePropertiesNV( VULKAN_HPP_NAMESPACE::DeviceSize       extendedSparseAddressSpaceSize_ = {},
64301                                                                                VULKAN_HPP_NAMESPACE::ImageUsageFlags  extendedSparseImageUsageFlags_  = {},
64302                                                                                VULKAN_HPP_NAMESPACE::BufferUsageFlags extendedSparseBufferUsageFlags_ = {},
64303                                                                                void *                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
64304       : pNext{ pNext_ }
64305       , extendedSparseAddressSpaceSize{ extendedSparseAddressSpaceSize_ }
64306       , extendedSparseImageUsageFlags{ extendedSparseImageUsageFlags_ }
64307       , extendedSparseBufferUsageFlags{ extendedSparseBufferUsageFlags_ }
64308     {
64309     }
64310 
64311     VULKAN_HPP_CONSTEXPR
64312       PhysicalDeviceExtendedSparseAddressSpacePropertiesNV( PhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64313 
PhysicalDeviceExtendedSparseAddressSpacePropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV64314     PhysicalDeviceExtendedSparseAddressSpacePropertiesNV( VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
64315       : PhysicalDeviceExtendedSparseAddressSpacePropertiesNV( *reinterpret_cast<PhysicalDeviceExtendedSparseAddressSpacePropertiesNV const *>( &rhs ) )
64316     {
64317     }
64318 
64319     PhysicalDeviceExtendedSparseAddressSpacePropertiesNV &
64320       operator=( PhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64321 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64322 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV64323     PhysicalDeviceExtendedSparseAddressSpacePropertiesNV & operator=( VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
64324     {
64325       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV const *>( &rhs );
64326       return *this;
64327     }
64328 
operator VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV64329     operator VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV const &() const VULKAN_HPP_NOEXCEPT
64330     {
64331       return *reinterpret_cast<const VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV *>( this );
64332     }
64333 
operator VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV64334     operator VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV &() VULKAN_HPP_NOEXCEPT
64335     {
64336       return *reinterpret_cast<VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV *>( this );
64337     }
64338 
64339 #if defined( VULKAN_HPP_USE_REFLECT )
64340 #  if 14 <= VULKAN_HPP_CPP_VERSION
64341     auto
64342 #  else
64343     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
64344                void * const &,
64345                VULKAN_HPP_NAMESPACE::DeviceSize const &,
64346                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &,
64347                VULKAN_HPP_NAMESPACE::BufferUsageFlags const &>
64348 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV64349       reflect() const VULKAN_HPP_NOEXCEPT
64350     {
64351       return std::tie( sType, pNext, extendedSparseAddressSpaceSize, extendedSparseImageUsageFlags, extendedSparseBufferUsageFlags );
64352     }
64353 #endif
64354 
64355 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64356     auto operator<=>( PhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & ) const = default;
64357 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV64358     bool operator==( PhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
64359     {
64360 #  if defined( VULKAN_HPP_USE_REFLECT )
64361       return this->reflect() == rhs.reflect();
64362 #  else
64363       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( extendedSparseAddressSpaceSize == rhs.extendedSparseAddressSpaceSize ) &&
64364              ( extendedSparseImageUsageFlags == rhs.extendedSparseImageUsageFlags ) && ( extendedSparseBufferUsageFlags == rhs.extendedSparseBufferUsageFlags );
64365 #  endif
64366     }
64367 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV64368     bool operator!=( PhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
64369     {
64370       return !operator==( rhs );
64371     }
64372 #endif
64373 
64374   public:
64375     VULKAN_HPP_NAMESPACE::StructureType    sType                          = StructureType::ePhysicalDeviceExtendedSparseAddressSpacePropertiesNV;
64376     void *                                 pNext                          = {};
64377     VULKAN_HPP_NAMESPACE::DeviceSize       extendedSparseAddressSpaceSize = {};
64378     VULKAN_HPP_NAMESPACE::ImageUsageFlags  extendedSparseImageUsageFlags  = {};
64379     VULKAN_HPP_NAMESPACE::BufferUsageFlags extendedSparseBufferUsageFlags = {};
64380   };
64381 
64382   template <>
64383   struct CppType<StructureType, StructureType::ePhysicalDeviceExtendedSparseAddressSpacePropertiesNV>
64384   {
64385     using Type = PhysicalDeviceExtendedSparseAddressSpacePropertiesNV;
64386   };
64387 
64388   struct PhysicalDeviceExternalBufferInfo
64389   {
64390     using NativeType = VkPhysicalDeviceExternalBufferInfo;
64391 
64392     static const bool                                  allowDuplicate = false;
64393     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExternalBufferInfo;
64394 
64395 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalBufferInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo64396     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalBufferInfo(
64397       VULKAN_HPP_NAMESPACE::BufferCreateFlags                flags_      = {},
64398       VULKAN_HPP_NAMESPACE::BufferUsageFlags                 usage_      = {},
64399       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
64400       const void *                                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
64401       : pNext{ pNext_ }
64402       , flags{ flags_ }
64403       , usage{ usage_ }
64404       , handleType{ handleType_ }
64405     {
64406     }
64407 
64408     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalBufferInfo( PhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64409 
PhysicalDeviceExternalBufferInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo64410     PhysicalDeviceExternalBufferInfo( VkPhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
64411       : PhysicalDeviceExternalBufferInfo( *reinterpret_cast<PhysicalDeviceExternalBufferInfo const *>( &rhs ) )
64412     {
64413     }
64414 
64415     PhysicalDeviceExternalBufferInfo & operator=( PhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64416 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64417 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo64418     PhysicalDeviceExternalBufferInfo & operator=( VkPhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
64419     {
64420       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo const *>( &rhs );
64421       return *this;
64422     }
64423 
64424 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo64425     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
64426     {
64427       pNext = pNext_;
64428       return *this;
64429     }
64430 
setFlagsVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo64431     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo & setFlags( VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
64432     {
64433       flags = flags_;
64434       return *this;
64435     }
64436 
setUsageVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo64437     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo & setUsage( VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
64438     {
64439       usage = usage_;
64440       return *this;
64441     }
64442 
64443     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo &
setHandleTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo64444       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
64445     {
64446       handleType = handleType_;
64447       return *this;
64448     }
64449 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
64450 
operator VkPhysicalDeviceExternalBufferInfo const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo64451     operator VkPhysicalDeviceExternalBufferInfo const &() const VULKAN_HPP_NOEXCEPT
64452     {
64453       return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo *>( this );
64454     }
64455 
operator VkPhysicalDeviceExternalBufferInfo&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo64456     operator VkPhysicalDeviceExternalBufferInfo &() VULKAN_HPP_NOEXCEPT
64457     {
64458       return *reinterpret_cast<VkPhysicalDeviceExternalBufferInfo *>( this );
64459     }
64460 
64461 #if defined( VULKAN_HPP_USE_REFLECT )
64462 #  if 14 <= VULKAN_HPP_CPP_VERSION
64463     auto
64464 #  else
64465     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
64466                const void * const &,
64467                VULKAN_HPP_NAMESPACE::BufferCreateFlags const &,
64468                VULKAN_HPP_NAMESPACE::BufferUsageFlags const &,
64469                VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
64470 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo64471       reflect() const VULKAN_HPP_NOEXCEPT
64472     {
64473       return std::tie( sType, pNext, flags, usage, handleType );
64474     }
64475 #endif
64476 
64477 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64478     auto operator<=>( PhysicalDeviceExternalBufferInfo const & ) const = default;
64479 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo64480     bool operator==( PhysicalDeviceExternalBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
64481     {
64482 #  if defined( VULKAN_HPP_USE_REFLECT )
64483       return this->reflect() == rhs.reflect();
64484 #  else
64485       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( usage == rhs.usage ) && ( handleType == rhs.handleType );
64486 #  endif
64487     }
64488 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo64489     bool operator!=( PhysicalDeviceExternalBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
64490     {
64491       return !operator==( rhs );
64492     }
64493 #endif
64494 
64495   public:
64496     VULKAN_HPP_NAMESPACE::StructureType                    sType      = StructureType::ePhysicalDeviceExternalBufferInfo;
64497     const void *                                           pNext      = {};
64498     VULKAN_HPP_NAMESPACE::BufferCreateFlags                flags      = {};
64499     VULKAN_HPP_NAMESPACE::BufferUsageFlags                 usage      = {};
64500     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
64501   };
64502 
64503   template <>
64504   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalBufferInfo>
64505   {
64506     using Type = PhysicalDeviceExternalBufferInfo;
64507   };
64508 
64509   using PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo;
64510 
64511   struct PhysicalDeviceExternalFenceInfo
64512   {
64513     using NativeType = VkPhysicalDeviceExternalFenceInfo;
64514 
64515     static const bool                                  allowDuplicate = false;
64516     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExternalFenceInfo;
64517 
64518 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalFenceInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo64519     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalFenceInfo(
64520       VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd,
64521       const void *                                          pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
64522       : pNext{ pNext_ }
64523       , handleType{ handleType_ }
64524     {
64525     }
64526 
64527     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalFenceInfo( PhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64528 
PhysicalDeviceExternalFenceInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo64529     PhysicalDeviceExternalFenceInfo( VkPhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
64530       : PhysicalDeviceExternalFenceInfo( *reinterpret_cast<PhysicalDeviceExternalFenceInfo const *>( &rhs ) )
64531     {
64532     }
64533 
64534     PhysicalDeviceExternalFenceInfo & operator=( PhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64535 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64536 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo64537     PhysicalDeviceExternalFenceInfo & operator=( VkPhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
64538     {
64539       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo const *>( &rhs );
64540       return *this;
64541     }
64542 
64543 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo64544     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFenceInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
64545     {
64546       pNext = pNext_;
64547       return *this;
64548     }
64549 
64550     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFenceInfo &
setHandleTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo64551       setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
64552     {
64553       handleType = handleType_;
64554       return *this;
64555     }
64556 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
64557 
operator VkPhysicalDeviceExternalFenceInfo const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo64558     operator VkPhysicalDeviceExternalFenceInfo const &() const VULKAN_HPP_NOEXCEPT
64559     {
64560       return *reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo *>( this );
64561     }
64562 
operator VkPhysicalDeviceExternalFenceInfo&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo64563     operator VkPhysicalDeviceExternalFenceInfo &() VULKAN_HPP_NOEXCEPT
64564     {
64565       return *reinterpret_cast<VkPhysicalDeviceExternalFenceInfo *>( this );
64566     }
64567 
64568 #if defined( VULKAN_HPP_USE_REFLECT )
64569 #  if 14 <= VULKAN_HPP_CPP_VERSION
64570     auto
64571 #  else
64572     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits const &>
64573 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo64574       reflect() const VULKAN_HPP_NOEXCEPT
64575     {
64576       return std::tie( sType, pNext, handleType );
64577     }
64578 #endif
64579 
64580 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64581     auto operator<=>( PhysicalDeviceExternalFenceInfo const & ) const = default;
64582 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo64583     bool operator==( PhysicalDeviceExternalFenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
64584     {
64585 #  if defined( VULKAN_HPP_USE_REFLECT )
64586       return this->reflect() == rhs.reflect();
64587 #  else
64588       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType );
64589 #  endif
64590     }
64591 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo64592     bool operator!=( PhysicalDeviceExternalFenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
64593     {
64594       return !operator==( rhs );
64595     }
64596 #endif
64597 
64598   public:
64599     VULKAN_HPP_NAMESPACE::StructureType                   sType      = StructureType::ePhysicalDeviceExternalFenceInfo;
64600     const void *                                          pNext      = {};
64601     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
64602   };
64603 
64604   template <>
64605   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalFenceInfo>
64606   {
64607     using Type = PhysicalDeviceExternalFenceInfo;
64608   };
64609 
64610   using PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo;
64611 
64612 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
64613   struct PhysicalDeviceExternalFormatResolveFeaturesANDROID
64614   {
64615     using NativeType = VkPhysicalDeviceExternalFormatResolveFeaturesANDROID;
64616 
64617     static const bool                                  allowDuplicate = false;
64618     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExternalFormatResolveFeaturesANDROID;
64619 
64620 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalFormatResolveFeaturesANDROIDVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID64621     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalFormatResolveFeaturesANDROID( VULKAN_HPP_NAMESPACE::Bool32 externalFormatResolve_ = {},
64622                                                                              void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
64623       : pNext{ pNext_ }
64624       , externalFormatResolve{ externalFormatResolve_ }
64625     {
64626     }
64627 
64628     VULKAN_HPP_CONSTEXPR
64629       PhysicalDeviceExternalFormatResolveFeaturesANDROID( PhysicalDeviceExternalFormatResolveFeaturesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64630 
PhysicalDeviceExternalFormatResolveFeaturesANDROIDVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID64631     PhysicalDeviceExternalFormatResolveFeaturesANDROID( VkPhysicalDeviceExternalFormatResolveFeaturesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
64632       : PhysicalDeviceExternalFormatResolveFeaturesANDROID( *reinterpret_cast<PhysicalDeviceExternalFormatResolveFeaturesANDROID const *>( &rhs ) )
64633     {
64634     }
64635 
64636     PhysicalDeviceExternalFormatResolveFeaturesANDROID &
64637       operator=( PhysicalDeviceExternalFormatResolveFeaturesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64638 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64639 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID64640     PhysicalDeviceExternalFormatResolveFeaturesANDROID & operator=( VkPhysicalDeviceExternalFormatResolveFeaturesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
64641     {
64642       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID const *>( &rhs );
64643       return *this;
64644     }
64645 
64646 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID64647     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFormatResolveFeaturesANDROID & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
64648     {
64649       pNext = pNext_;
64650       return *this;
64651     }
64652 
64653     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFormatResolveFeaturesANDROID &
setExternalFormatResolveVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID64654       setExternalFormatResolve( VULKAN_HPP_NAMESPACE::Bool32 externalFormatResolve_ ) VULKAN_HPP_NOEXCEPT
64655     {
64656       externalFormatResolve = externalFormatResolve_;
64657       return *this;
64658     }
64659 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
64660 
operator VkPhysicalDeviceExternalFormatResolveFeaturesANDROID const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID64661     operator VkPhysicalDeviceExternalFormatResolveFeaturesANDROID const &() const VULKAN_HPP_NOEXCEPT
64662     {
64663       return *reinterpret_cast<const VkPhysicalDeviceExternalFormatResolveFeaturesANDROID *>( this );
64664     }
64665 
operator VkPhysicalDeviceExternalFormatResolveFeaturesANDROID&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID64666     operator VkPhysicalDeviceExternalFormatResolveFeaturesANDROID &() VULKAN_HPP_NOEXCEPT
64667     {
64668       return *reinterpret_cast<VkPhysicalDeviceExternalFormatResolveFeaturesANDROID *>( this );
64669     }
64670 
64671 #  if defined( VULKAN_HPP_USE_REFLECT )
64672 #    if 14 <= VULKAN_HPP_CPP_VERSION
64673     auto
64674 #    else
64675     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
64676 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID64677       reflect() const VULKAN_HPP_NOEXCEPT
64678     {
64679       return std::tie( sType, pNext, externalFormatResolve );
64680     }
64681 #  endif
64682 
64683 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64684     auto operator<=>( PhysicalDeviceExternalFormatResolveFeaturesANDROID const & ) const = default;
64685 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID64686     bool operator==( PhysicalDeviceExternalFormatResolveFeaturesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
64687     {
64688 #    if defined( VULKAN_HPP_USE_REFLECT )
64689       return this->reflect() == rhs.reflect();
64690 #    else
64691       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalFormatResolve == rhs.externalFormatResolve );
64692 #    endif
64693     }
64694 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID64695     bool operator!=( PhysicalDeviceExternalFormatResolveFeaturesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
64696     {
64697       return !operator==( rhs );
64698     }
64699 #  endif
64700 
64701   public:
64702     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceExternalFormatResolveFeaturesANDROID;
64703     void *                              pNext                 = {};
64704     VULKAN_HPP_NAMESPACE::Bool32        externalFormatResolve = {};
64705   };
64706 
64707   template <>
64708   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalFormatResolveFeaturesANDROID>
64709   {
64710     using Type = PhysicalDeviceExternalFormatResolveFeaturesANDROID;
64711   };
64712 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
64713 
64714 #if defined( VK_USE_PLATFORM_ANDROID_KHR )
64715   struct PhysicalDeviceExternalFormatResolvePropertiesANDROID
64716   {
64717     using NativeType = VkPhysicalDeviceExternalFormatResolvePropertiesANDROID;
64718 
64719     static const bool                                  allowDuplicate = false;
64720     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExternalFormatResolvePropertiesANDROID;
64721 
64722 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalFormatResolvePropertiesANDROIDVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolvePropertiesANDROID64723     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalFormatResolvePropertiesANDROID(
64724       VULKAN_HPP_NAMESPACE::Bool32         nullColorAttachmentWithExternalFormatResolve_ = {},
64725       VULKAN_HPP_NAMESPACE::ChromaLocation externalFormatResolveChromaOffsetX_           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
64726       VULKAN_HPP_NAMESPACE::ChromaLocation externalFormatResolveChromaOffsetY_           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
64727       void *                               pNext_                                        = nullptr ) VULKAN_HPP_NOEXCEPT
64728       : pNext{ pNext_ }
64729       , nullColorAttachmentWithExternalFormatResolve{ nullColorAttachmentWithExternalFormatResolve_ }
64730       , externalFormatResolveChromaOffsetX{ externalFormatResolveChromaOffsetX_ }
64731       , externalFormatResolveChromaOffsetY{ externalFormatResolveChromaOffsetY_ }
64732     {
64733     }
64734 
64735     VULKAN_HPP_CONSTEXPR
64736       PhysicalDeviceExternalFormatResolvePropertiesANDROID( PhysicalDeviceExternalFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64737 
PhysicalDeviceExternalFormatResolvePropertiesANDROIDVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolvePropertiesANDROID64738     PhysicalDeviceExternalFormatResolvePropertiesANDROID( VkPhysicalDeviceExternalFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
64739       : PhysicalDeviceExternalFormatResolvePropertiesANDROID( *reinterpret_cast<PhysicalDeviceExternalFormatResolvePropertiesANDROID const *>( &rhs ) )
64740     {
64741     }
64742 
64743     PhysicalDeviceExternalFormatResolvePropertiesANDROID &
64744       operator=( PhysicalDeviceExternalFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64745 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64746 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolvePropertiesANDROID64747     PhysicalDeviceExternalFormatResolvePropertiesANDROID & operator=( VkPhysicalDeviceExternalFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
64748     {
64749       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolvePropertiesANDROID const *>( &rhs );
64750       return *this;
64751     }
64752 
operator VkPhysicalDeviceExternalFormatResolvePropertiesANDROID const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolvePropertiesANDROID64753     operator VkPhysicalDeviceExternalFormatResolvePropertiesANDROID const &() const VULKAN_HPP_NOEXCEPT
64754     {
64755       return *reinterpret_cast<const VkPhysicalDeviceExternalFormatResolvePropertiesANDROID *>( this );
64756     }
64757 
operator VkPhysicalDeviceExternalFormatResolvePropertiesANDROID&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolvePropertiesANDROID64758     operator VkPhysicalDeviceExternalFormatResolvePropertiesANDROID &() VULKAN_HPP_NOEXCEPT
64759     {
64760       return *reinterpret_cast<VkPhysicalDeviceExternalFormatResolvePropertiesANDROID *>( this );
64761     }
64762 
64763 #  if defined( VULKAN_HPP_USE_REFLECT )
64764 #    if 14 <= VULKAN_HPP_CPP_VERSION
64765     auto
64766 #    else
64767     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
64768                void * const &,
64769                VULKAN_HPP_NAMESPACE::Bool32 const &,
64770                VULKAN_HPP_NAMESPACE::ChromaLocation const &,
64771                VULKAN_HPP_NAMESPACE::ChromaLocation const &>
64772 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolvePropertiesANDROID64773       reflect() const VULKAN_HPP_NOEXCEPT
64774     {
64775       return std::tie( sType, pNext, nullColorAttachmentWithExternalFormatResolve, externalFormatResolveChromaOffsetX, externalFormatResolveChromaOffsetY );
64776     }
64777 #  endif
64778 
64779 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64780     auto operator<=>( PhysicalDeviceExternalFormatResolvePropertiesANDROID const & ) const = default;
64781 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolvePropertiesANDROID64782     bool operator==( PhysicalDeviceExternalFormatResolvePropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
64783     {
64784 #    if defined( VULKAN_HPP_USE_REFLECT )
64785       return this->reflect() == rhs.reflect();
64786 #    else
64787       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) &&
64788              ( nullColorAttachmentWithExternalFormatResolve == rhs.nullColorAttachmentWithExternalFormatResolve ) &&
64789              ( externalFormatResolveChromaOffsetX == rhs.externalFormatResolveChromaOffsetX ) &&
64790              ( externalFormatResolveChromaOffsetY == rhs.externalFormatResolveChromaOffsetY );
64791 #    endif
64792     }
64793 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolvePropertiesANDROID64794     bool operator!=( PhysicalDeviceExternalFormatResolvePropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT
64795     {
64796       return !operator==( rhs );
64797     }
64798 #  endif
64799 
64800   public:
64801     VULKAN_HPP_NAMESPACE::StructureType  sType                                        = StructureType::ePhysicalDeviceExternalFormatResolvePropertiesANDROID;
64802     void *                               pNext                                        = {};
64803     VULKAN_HPP_NAMESPACE::Bool32         nullColorAttachmentWithExternalFormatResolve = {};
64804     VULKAN_HPP_NAMESPACE::ChromaLocation externalFormatResolveChromaOffsetX           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
64805     VULKAN_HPP_NAMESPACE::ChromaLocation externalFormatResolveChromaOffsetY           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
64806   };
64807 
64808   template <>
64809   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalFormatResolvePropertiesANDROID>
64810   {
64811     using Type = PhysicalDeviceExternalFormatResolvePropertiesANDROID;
64812   };
64813 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
64814 
64815   struct PhysicalDeviceExternalImageFormatInfo
64816   {
64817     using NativeType = VkPhysicalDeviceExternalImageFormatInfo;
64818 
64819     static const bool                                  allowDuplicate = false;
64820     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExternalImageFormatInfo;
64821 
64822 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalImageFormatInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo64823     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalImageFormatInfo(
64824       VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd,
64825       const void *                                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
64826       : pNext{ pNext_ }
64827       , handleType{ handleType_ }
64828     {
64829     }
64830 
64831     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalImageFormatInfo( PhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64832 
PhysicalDeviceExternalImageFormatInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo64833     PhysicalDeviceExternalImageFormatInfo( VkPhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT
64834       : PhysicalDeviceExternalImageFormatInfo( *reinterpret_cast<PhysicalDeviceExternalImageFormatInfo const *>( &rhs ) )
64835     {
64836     }
64837 
64838     PhysicalDeviceExternalImageFormatInfo & operator=( PhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64839 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64840 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo64841     PhysicalDeviceExternalImageFormatInfo & operator=( VkPhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT
64842     {
64843       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo const *>( &rhs );
64844       return *this;
64845     }
64846 
64847 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo64848     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalImageFormatInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
64849     {
64850       pNext = pNext_;
64851       return *this;
64852     }
64853 
64854     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalImageFormatInfo &
setHandleTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo64855       setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
64856     {
64857       handleType = handleType_;
64858       return *this;
64859     }
64860 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
64861 
operator VkPhysicalDeviceExternalImageFormatInfo const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo64862     operator VkPhysicalDeviceExternalImageFormatInfo const &() const VULKAN_HPP_NOEXCEPT
64863     {
64864       return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfo *>( this );
64865     }
64866 
operator VkPhysicalDeviceExternalImageFormatInfo&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo64867     operator VkPhysicalDeviceExternalImageFormatInfo &() VULKAN_HPP_NOEXCEPT
64868     {
64869       return *reinterpret_cast<VkPhysicalDeviceExternalImageFormatInfo *>( this );
64870     }
64871 
64872 #if defined( VULKAN_HPP_USE_REFLECT )
64873 #  if 14 <= VULKAN_HPP_CPP_VERSION
64874     auto
64875 #  else
64876     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
64877 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo64878       reflect() const VULKAN_HPP_NOEXCEPT
64879     {
64880       return std::tie( sType, pNext, handleType );
64881     }
64882 #endif
64883 
64884 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64885     auto operator<=>( PhysicalDeviceExternalImageFormatInfo const & ) const = default;
64886 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo64887     bool operator==( PhysicalDeviceExternalImageFormatInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
64888     {
64889 #  if defined( VULKAN_HPP_USE_REFLECT )
64890       return this->reflect() == rhs.reflect();
64891 #  else
64892       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType );
64893 #  endif
64894     }
64895 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo64896     bool operator!=( PhysicalDeviceExternalImageFormatInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
64897     {
64898       return !operator==( rhs );
64899     }
64900 #endif
64901 
64902   public:
64903     VULKAN_HPP_NAMESPACE::StructureType                    sType      = StructureType::ePhysicalDeviceExternalImageFormatInfo;
64904     const void *                                           pNext      = {};
64905     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
64906   };
64907 
64908   template <>
64909   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalImageFormatInfo>
64910   {
64911     using Type = PhysicalDeviceExternalImageFormatInfo;
64912   };
64913 
64914   using PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo;
64915 
64916   struct PhysicalDeviceExternalMemoryHostPropertiesEXT
64917   {
64918     using NativeType = VkPhysicalDeviceExternalMemoryHostPropertiesEXT;
64919 
64920     static const bool                                  allowDuplicate = false;
64921     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT;
64922 
64923 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalMemoryHostPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT64924     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryHostPropertiesEXT( VULKAN_HPP_NAMESPACE::DeviceSize minImportedHostPointerAlignment_ = {},
64925                                                                         void *                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
64926       : pNext{ pNext_ }
64927       , minImportedHostPointerAlignment{ minImportedHostPointerAlignment_ }
64928     {
64929     }
64930 
64931     VULKAN_HPP_CONSTEXPR
64932       PhysicalDeviceExternalMemoryHostPropertiesEXT( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64933 
PhysicalDeviceExternalMemoryHostPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT64934     PhysicalDeviceExternalMemoryHostPropertiesEXT( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
64935       : PhysicalDeviceExternalMemoryHostPropertiesEXT( *reinterpret_cast<PhysicalDeviceExternalMemoryHostPropertiesEXT const *>( &rhs ) )
64936     {
64937     }
64938 
64939     PhysicalDeviceExternalMemoryHostPropertiesEXT & operator=( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
64940 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
64941 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT64942     PhysicalDeviceExternalMemoryHostPropertiesEXT & operator=( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
64943     {
64944       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT const *>( &rhs );
64945       return *this;
64946     }
64947 
operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT64948     operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
64949     {
64950       return *reinterpret_cast<const VkPhysicalDeviceExternalMemoryHostPropertiesEXT *>( this );
64951     }
64952 
operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT64953     operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT &() VULKAN_HPP_NOEXCEPT
64954     {
64955       return *reinterpret_cast<VkPhysicalDeviceExternalMemoryHostPropertiesEXT *>( this );
64956     }
64957 
64958 #if defined( VULKAN_HPP_USE_REFLECT )
64959 #  if 14 <= VULKAN_HPP_CPP_VERSION
64960     auto
64961 #  else
64962     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
64963 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT64964       reflect() const VULKAN_HPP_NOEXCEPT
64965     {
64966       return std::tie( sType, pNext, minImportedHostPointerAlignment );
64967     }
64968 #endif
64969 
64970 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
64971     auto operator<=>( PhysicalDeviceExternalMemoryHostPropertiesEXT const & ) const = default;
64972 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT64973     bool operator==( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
64974     {
64975 #  if defined( VULKAN_HPP_USE_REFLECT )
64976       return this->reflect() == rhs.reflect();
64977 #  else
64978       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minImportedHostPointerAlignment == rhs.minImportedHostPointerAlignment );
64979 #  endif
64980     }
64981 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT64982     bool operator!=( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
64983     {
64984       return !operator==( rhs );
64985     }
64986 #endif
64987 
64988   public:
64989     VULKAN_HPP_NAMESPACE::StructureType sType                           = StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT;
64990     void *                              pNext                           = {};
64991     VULKAN_HPP_NAMESPACE::DeviceSize    minImportedHostPointerAlignment = {};
64992   };
64993 
64994   template <>
64995   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT>
64996   {
64997     using Type = PhysicalDeviceExternalMemoryHostPropertiesEXT;
64998   };
64999 
65000   struct PhysicalDeviceExternalMemoryRDMAFeaturesNV
65001   {
65002     using NativeType = VkPhysicalDeviceExternalMemoryRDMAFeaturesNV;
65003 
65004     static const bool                                  allowDuplicate = false;
65005     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExternalMemoryRdmaFeaturesNV;
65006 
65007 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalMemoryRDMAFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV65008     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryRDMAFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 externalMemoryRDMA_ = {},
65009                                                                      void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
65010       : pNext{ pNext_ }
65011       , externalMemoryRDMA{ externalMemoryRDMA_ }
65012     {
65013     }
65014 
65015     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryRDMAFeaturesNV( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65016 
PhysicalDeviceExternalMemoryRDMAFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV65017     PhysicalDeviceExternalMemoryRDMAFeaturesNV( VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
65018       : PhysicalDeviceExternalMemoryRDMAFeaturesNV( *reinterpret_cast<PhysicalDeviceExternalMemoryRDMAFeaturesNV const *>( &rhs ) )
65019     {
65020     }
65021 
65022     PhysicalDeviceExternalMemoryRDMAFeaturesNV & operator=( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65023 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65024 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV65025     PhysicalDeviceExternalMemoryRDMAFeaturesNV & operator=( VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
65026     {
65027       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV const *>( &rhs );
65028       return *this;
65029     }
65030 
65031 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV65032     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryRDMAFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
65033     {
65034       pNext = pNext_;
65035       return *this;
65036     }
65037 
65038     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryRDMAFeaturesNV &
setExternalMemoryRDMAVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV65039       setExternalMemoryRDMA( VULKAN_HPP_NAMESPACE::Bool32 externalMemoryRDMA_ ) VULKAN_HPP_NOEXCEPT
65040     {
65041       externalMemoryRDMA = externalMemoryRDMA_;
65042       return *this;
65043     }
65044 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
65045 
operator VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV65046     operator VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
65047     {
65048       return *reinterpret_cast<const VkPhysicalDeviceExternalMemoryRDMAFeaturesNV *>( this );
65049     }
65050 
operator VkPhysicalDeviceExternalMemoryRDMAFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV65051     operator VkPhysicalDeviceExternalMemoryRDMAFeaturesNV &() VULKAN_HPP_NOEXCEPT
65052     {
65053       return *reinterpret_cast<VkPhysicalDeviceExternalMemoryRDMAFeaturesNV *>( this );
65054     }
65055 
65056 #if defined( VULKAN_HPP_USE_REFLECT )
65057 #  if 14 <= VULKAN_HPP_CPP_VERSION
65058     auto
65059 #  else
65060     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
65061 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV65062       reflect() const VULKAN_HPP_NOEXCEPT
65063     {
65064       return std::tie( sType, pNext, externalMemoryRDMA );
65065     }
65066 #endif
65067 
65068 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
65069     auto operator<=>( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & ) const = default;
65070 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV65071     bool operator==( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
65072     {
65073 #  if defined( VULKAN_HPP_USE_REFLECT )
65074       return this->reflect() == rhs.reflect();
65075 #  else
65076       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalMemoryRDMA == rhs.externalMemoryRDMA );
65077 #  endif
65078     }
65079 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV65080     bool operator!=( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
65081     {
65082       return !operator==( rhs );
65083     }
65084 #endif
65085 
65086   public:
65087     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceExternalMemoryRdmaFeaturesNV;
65088     void *                              pNext              = {};
65089     VULKAN_HPP_NAMESPACE::Bool32        externalMemoryRDMA = {};
65090   };
65091 
65092   template <>
65093   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalMemoryRdmaFeaturesNV>
65094   {
65095     using Type = PhysicalDeviceExternalMemoryRDMAFeaturesNV;
65096   };
65097 
65098 #if defined( VK_USE_PLATFORM_SCREEN_QNX )
65099   struct PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
65100   {
65101     using NativeType = VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX;
65102 
65103     static const bool                                  allowDuplicate = false;
65104     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExternalMemoryScreenBufferFeaturesQNX;
65105 
65106 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalMemoryScreenBufferFeaturesQNXVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX65107     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX( VULKAN_HPP_NAMESPACE::Bool32 screenBufferImport_ = {},
65108                                                                               void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
65109       : pNext{ pNext_ }
65110       , screenBufferImport{ screenBufferImport_ }
65111     {
65112     }
65113 
65114     VULKAN_HPP_CONSTEXPR
65115       PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX( PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65116 
PhysicalDeviceExternalMemoryScreenBufferFeaturesQNXVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX65117     PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX( VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) VULKAN_HPP_NOEXCEPT
65118       : PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX( *reinterpret_cast<PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const *>( &rhs ) )
65119     {
65120     }
65121 
65122     PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX &
65123       operator=( PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65124 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65125 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX65126     PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX & operator=( VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) VULKAN_HPP_NOEXCEPT
65127     {
65128       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const *>( &rhs );
65129       return *this;
65130     }
65131 
65132 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX65133     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
65134     {
65135       pNext = pNext_;
65136       return *this;
65137     }
65138 
65139     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX &
setScreenBufferImportVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX65140       setScreenBufferImport( VULKAN_HPP_NAMESPACE::Bool32 screenBufferImport_ ) VULKAN_HPP_NOEXCEPT
65141     {
65142       screenBufferImport = screenBufferImport_;
65143       return *this;
65144     }
65145 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
65146 
operator VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX65147     operator VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const &() const VULKAN_HPP_NOEXCEPT
65148     {
65149       return *reinterpret_cast<const VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX *>( this );
65150     }
65151 
operator VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX65152     operator VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX &() VULKAN_HPP_NOEXCEPT
65153     {
65154       return *reinterpret_cast<VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX *>( this );
65155     }
65156 
65157 #  if defined( VULKAN_HPP_USE_REFLECT )
65158 #    if 14 <= VULKAN_HPP_CPP_VERSION
65159     auto
65160 #    else
65161     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
65162 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX65163       reflect() const VULKAN_HPP_NOEXCEPT
65164     {
65165       return std::tie( sType, pNext, screenBufferImport );
65166     }
65167 #  endif
65168 
65169 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
65170     auto operator<=>( PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & ) const = default;
65171 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX65172     bool operator==( PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
65173     {
65174 #    if defined( VULKAN_HPP_USE_REFLECT )
65175       return this->reflect() == rhs.reflect();
65176 #    else
65177       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( screenBufferImport == rhs.screenBufferImport );
65178 #    endif
65179     }
65180 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX65181     bool operator!=( PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
65182     {
65183       return !operator==( rhs );
65184     }
65185 #  endif
65186 
65187   public:
65188     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceExternalMemoryScreenBufferFeaturesQNX;
65189     void *                              pNext              = {};
65190     VULKAN_HPP_NAMESPACE::Bool32        screenBufferImport = {};
65191   };
65192 
65193   template <>
65194   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalMemoryScreenBufferFeaturesQNX>
65195   {
65196     using Type = PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX;
65197   };
65198 #endif /*VK_USE_PLATFORM_SCREEN_QNX*/
65199 
65200   struct PhysicalDeviceExternalSemaphoreInfo
65201   {
65202     using NativeType = VkPhysicalDeviceExternalSemaphoreInfo;
65203 
65204     static const bool                                  allowDuplicate = false;
65205     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceExternalSemaphoreInfo;
65206 
65207 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalSemaphoreInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo65208     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalSemaphoreInfo(
65209       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd,
65210       const void *                                              pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
65211       : pNext{ pNext_ }
65212       , handleType{ handleType_ }
65213     {
65214     }
65215 
65216     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalSemaphoreInfo( PhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65217 
PhysicalDeviceExternalSemaphoreInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo65218     PhysicalDeviceExternalSemaphoreInfo( VkPhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT
65219       : PhysicalDeviceExternalSemaphoreInfo( *reinterpret_cast<PhysicalDeviceExternalSemaphoreInfo const *>( &rhs ) )
65220     {
65221     }
65222 
65223     PhysicalDeviceExternalSemaphoreInfo & operator=( PhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65224 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65225 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo65226     PhysicalDeviceExternalSemaphoreInfo & operator=( VkPhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT
65227     {
65228       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo const *>( &rhs );
65229       return *this;
65230     }
65231 
65232 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo65233     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSemaphoreInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
65234     {
65235       pNext = pNext_;
65236       return *this;
65237     }
65238 
65239     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSemaphoreInfo &
setHandleTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo65240       setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
65241     {
65242       handleType = handleType_;
65243       return *this;
65244     }
65245 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
65246 
operator VkPhysicalDeviceExternalSemaphoreInfo const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo65247     operator VkPhysicalDeviceExternalSemaphoreInfo const &() const VULKAN_HPP_NOEXCEPT
65248     {
65249       return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo *>( this );
65250     }
65251 
operator VkPhysicalDeviceExternalSemaphoreInfo&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo65252     operator VkPhysicalDeviceExternalSemaphoreInfo &() VULKAN_HPP_NOEXCEPT
65253     {
65254       return *reinterpret_cast<VkPhysicalDeviceExternalSemaphoreInfo *>( this );
65255     }
65256 
65257 #if defined( VULKAN_HPP_USE_REFLECT )
65258 #  if 14 <= VULKAN_HPP_CPP_VERSION
65259     auto
65260 #  else
65261     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &>
65262 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo65263       reflect() const VULKAN_HPP_NOEXCEPT
65264     {
65265       return std::tie( sType, pNext, handleType );
65266     }
65267 #endif
65268 
65269 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
65270     auto operator<=>( PhysicalDeviceExternalSemaphoreInfo const & ) const = default;
65271 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo65272     bool operator==( PhysicalDeviceExternalSemaphoreInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
65273     {
65274 #  if defined( VULKAN_HPP_USE_REFLECT )
65275       return this->reflect() == rhs.reflect();
65276 #  else
65277       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType );
65278 #  endif
65279     }
65280 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo65281     bool operator!=( PhysicalDeviceExternalSemaphoreInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
65282     {
65283       return !operator==( rhs );
65284     }
65285 #endif
65286 
65287   public:
65288     VULKAN_HPP_NAMESPACE::StructureType                       sType      = StructureType::ePhysicalDeviceExternalSemaphoreInfo;
65289     const void *                                              pNext      = {};
65290     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
65291   };
65292 
65293   template <>
65294   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalSemaphoreInfo>
65295   {
65296     using Type = PhysicalDeviceExternalSemaphoreInfo;
65297   };
65298 
65299   using PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo;
65300 
65301   struct PhysicalDeviceFaultFeaturesEXT
65302   {
65303     using NativeType = VkPhysicalDeviceFaultFeaturesEXT;
65304 
65305     static const bool                                  allowDuplicate = false;
65306     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFaultFeaturesEXT;
65307 
65308 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFaultFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65309     VULKAN_HPP_CONSTEXPR PhysicalDeviceFaultFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 deviceFault_             = {},
65310                                                          VULKAN_HPP_NAMESPACE::Bool32 deviceFaultVendorBinary_ = {},
65311                                                          void *                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
65312       : pNext{ pNext_ }
65313       , deviceFault{ deviceFault_ }
65314       , deviceFaultVendorBinary{ deviceFaultVendorBinary_ }
65315     {
65316     }
65317 
65318     VULKAN_HPP_CONSTEXPR PhysicalDeviceFaultFeaturesEXT( PhysicalDeviceFaultFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65319 
PhysicalDeviceFaultFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65320     PhysicalDeviceFaultFeaturesEXT( VkPhysicalDeviceFaultFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
65321       : PhysicalDeviceFaultFeaturesEXT( *reinterpret_cast<PhysicalDeviceFaultFeaturesEXT const *>( &rhs ) )
65322     {
65323     }
65324 
65325     PhysicalDeviceFaultFeaturesEXT & operator=( PhysicalDeviceFaultFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65326 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65327 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65328     PhysicalDeviceFaultFeaturesEXT & operator=( VkPhysicalDeviceFaultFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
65329     {
65330       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT const *>( &rhs );
65331       return *this;
65332     }
65333 
65334 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65335     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
65336     {
65337       pNext = pNext_;
65338       return *this;
65339     }
65340 
setDeviceFaultVULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65341     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesEXT & setDeviceFault( VULKAN_HPP_NAMESPACE::Bool32 deviceFault_ ) VULKAN_HPP_NOEXCEPT
65342     {
65343       deviceFault = deviceFault_;
65344       return *this;
65345     }
65346 
65347     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesEXT &
setDeviceFaultVendorBinaryVULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65348       setDeviceFaultVendorBinary( VULKAN_HPP_NAMESPACE::Bool32 deviceFaultVendorBinary_ ) VULKAN_HPP_NOEXCEPT
65349     {
65350       deviceFaultVendorBinary = deviceFaultVendorBinary_;
65351       return *this;
65352     }
65353 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
65354 
operator VkPhysicalDeviceFaultFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65355     operator VkPhysicalDeviceFaultFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
65356     {
65357       return *reinterpret_cast<const VkPhysicalDeviceFaultFeaturesEXT *>( this );
65358     }
65359 
operator VkPhysicalDeviceFaultFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65360     operator VkPhysicalDeviceFaultFeaturesEXT &() VULKAN_HPP_NOEXCEPT
65361     {
65362       return *reinterpret_cast<VkPhysicalDeviceFaultFeaturesEXT *>( this );
65363     }
65364 
65365 #if defined( VULKAN_HPP_USE_REFLECT )
65366 #  if 14 <= VULKAN_HPP_CPP_VERSION
65367     auto
65368 #  else
65369     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
65370 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65371       reflect() const VULKAN_HPP_NOEXCEPT
65372     {
65373       return std::tie( sType, pNext, deviceFault, deviceFaultVendorBinary );
65374     }
65375 #endif
65376 
65377 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
65378     auto operator<=>( PhysicalDeviceFaultFeaturesEXT const & ) const = default;
65379 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65380     bool operator==( PhysicalDeviceFaultFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
65381     {
65382 #  if defined( VULKAN_HPP_USE_REFLECT )
65383       return this->reflect() == rhs.reflect();
65384 #  else
65385       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceFault == rhs.deviceFault ) &&
65386              ( deviceFaultVendorBinary == rhs.deviceFaultVendorBinary );
65387 #  endif
65388     }
65389 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT65390     bool operator!=( PhysicalDeviceFaultFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
65391     {
65392       return !operator==( rhs );
65393     }
65394 #endif
65395 
65396   public:
65397     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDeviceFaultFeaturesEXT;
65398     void *                              pNext                   = {};
65399     VULKAN_HPP_NAMESPACE::Bool32        deviceFault             = {};
65400     VULKAN_HPP_NAMESPACE::Bool32        deviceFaultVendorBinary = {};
65401   };
65402 
65403   template <>
65404   struct CppType<StructureType, StructureType::ePhysicalDeviceFaultFeaturesEXT>
65405   {
65406     using Type = PhysicalDeviceFaultFeaturesEXT;
65407   };
65408 
65409   struct PhysicalDeviceFeatures2
65410   {
65411     using NativeType = VkPhysicalDeviceFeatures2;
65412 
65413     static const bool                                  allowDuplicate = false;
65414     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFeatures2;
65415 
65416 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFeatures2VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures265417     VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures2( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures features_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
65418       : pNext{ pNext_ }
65419       , features{ features_ }
65420     {
65421     }
65422 
65423     VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures2( PhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65424 
PhysicalDeviceFeatures2VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures265425     PhysicalDeviceFeatures2( VkPhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT
65426       : PhysicalDeviceFeatures2( *reinterpret_cast<PhysicalDeviceFeatures2 const *>( &rhs ) )
65427     {
65428     }
65429 
65430     PhysicalDeviceFeatures2 & operator=( PhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65431 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65432 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures265433     PhysicalDeviceFeatures2 & operator=( VkPhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT
65434     {
65435       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 const *>( &rhs );
65436       return *this;
65437     }
65438 
65439 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures265440     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures2 & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
65441     {
65442       pNext = pNext_;
65443       return *this;
65444     }
65445 
setFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures265446     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures2 & setFeatures( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures const & features_ ) VULKAN_HPP_NOEXCEPT
65447     {
65448       features = features_;
65449       return *this;
65450     }
65451 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
65452 
operator VkPhysicalDeviceFeatures2 const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures265453     operator VkPhysicalDeviceFeatures2 const &() const VULKAN_HPP_NOEXCEPT
65454     {
65455       return *reinterpret_cast<const VkPhysicalDeviceFeatures2 *>( this );
65456     }
65457 
operator VkPhysicalDeviceFeatures2&VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures265458     operator VkPhysicalDeviceFeatures2 &() VULKAN_HPP_NOEXCEPT
65459     {
65460       return *reinterpret_cast<VkPhysicalDeviceFeatures2 *>( this );
65461     }
65462 
65463 #if defined( VULKAN_HPP_USE_REFLECT )
65464 #  if 14 <= VULKAN_HPP_CPP_VERSION
65465     auto
65466 #  else
65467     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures const &>
65468 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures265469       reflect() const VULKAN_HPP_NOEXCEPT
65470     {
65471       return std::tie( sType, pNext, features );
65472     }
65473 #endif
65474 
65475 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
65476     auto operator<=>( PhysicalDeviceFeatures2 const & ) const = default;
65477 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures265478     bool operator==( PhysicalDeviceFeatures2 const & rhs ) const VULKAN_HPP_NOEXCEPT
65479     {
65480 #  if defined( VULKAN_HPP_USE_REFLECT )
65481       return this->reflect() == rhs.reflect();
65482 #  else
65483       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( features == rhs.features );
65484 #  endif
65485     }
65486 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures265487     bool operator!=( PhysicalDeviceFeatures2 const & rhs ) const VULKAN_HPP_NOEXCEPT
65488     {
65489       return !operator==( rhs );
65490     }
65491 #endif
65492 
65493   public:
65494     VULKAN_HPP_NAMESPACE::StructureType          sType    = StructureType::ePhysicalDeviceFeatures2;
65495     void *                                       pNext    = {};
65496     VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures features = {};
65497   };
65498 
65499   template <>
65500   struct CppType<StructureType, StructureType::ePhysicalDeviceFeatures2>
65501   {
65502     using Type = PhysicalDeviceFeatures2;
65503   };
65504 
65505   using PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2;
65506 
65507   struct PhysicalDeviceFloatControlsProperties
65508   {
65509     using NativeType = VkPhysicalDeviceFloatControlsProperties;
65510 
65511     static const bool                                  allowDuplicate = false;
65512     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFloatControlsProperties;
65513 
65514 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFloatControlsPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties65515     VULKAN_HPP_CONSTEXPR PhysicalDeviceFloatControlsProperties(
65516       VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence_ = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly,
65517       VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence_   = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly,
65518       VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat16_ = {},
65519       VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat32_ = {},
65520       VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat64_ = {},
65521       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat16_           = {},
65522       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat32_           = {},
65523       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat64_           = {},
65524       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat16_        = {},
65525       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat32_        = {},
65526       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat64_        = {},
65527       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat16_          = {},
65528       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat32_          = {},
65529       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat64_          = {},
65530       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat16_          = {},
65531       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat32_          = {},
65532       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat64_          = {},
65533       void *                                                pNext_                                 = nullptr ) VULKAN_HPP_NOEXCEPT
65534       : pNext{ pNext_ }
65535       , denormBehaviorIndependence{ denormBehaviorIndependence_ }
65536       , roundingModeIndependence{ roundingModeIndependence_ }
65537       , shaderSignedZeroInfNanPreserveFloat16{ shaderSignedZeroInfNanPreserveFloat16_ }
65538       , shaderSignedZeroInfNanPreserveFloat32{ shaderSignedZeroInfNanPreserveFloat32_ }
65539       , shaderSignedZeroInfNanPreserveFloat64{ shaderSignedZeroInfNanPreserveFloat64_ }
65540       , shaderDenormPreserveFloat16{ shaderDenormPreserveFloat16_ }
65541       , shaderDenormPreserveFloat32{ shaderDenormPreserveFloat32_ }
65542       , shaderDenormPreserveFloat64{ shaderDenormPreserveFloat64_ }
65543       , shaderDenormFlushToZeroFloat16{ shaderDenormFlushToZeroFloat16_ }
65544       , shaderDenormFlushToZeroFloat32{ shaderDenormFlushToZeroFloat32_ }
65545       , shaderDenormFlushToZeroFloat64{ shaderDenormFlushToZeroFloat64_ }
65546       , shaderRoundingModeRTEFloat16{ shaderRoundingModeRTEFloat16_ }
65547       , shaderRoundingModeRTEFloat32{ shaderRoundingModeRTEFloat32_ }
65548       , shaderRoundingModeRTEFloat64{ shaderRoundingModeRTEFloat64_ }
65549       , shaderRoundingModeRTZFloat16{ shaderRoundingModeRTZFloat16_ }
65550       , shaderRoundingModeRTZFloat32{ shaderRoundingModeRTZFloat32_ }
65551       , shaderRoundingModeRTZFloat64{ shaderRoundingModeRTZFloat64_ }
65552     {
65553     }
65554 
65555     VULKAN_HPP_CONSTEXPR PhysicalDeviceFloatControlsProperties( PhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65556 
PhysicalDeviceFloatControlsPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties65557     PhysicalDeviceFloatControlsProperties( VkPhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT
65558       : PhysicalDeviceFloatControlsProperties( *reinterpret_cast<PhysicalDeviceFloatControlsProperties const *>( &rhs ) )
65559     {
65560     }
65561 
65562     PhysicalDeviceFloatControlsProperties & operator=( PhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65563 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65564 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties65565     PhysicalDeviceFloatControlsProperties & operator=( VkPhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT
65566     {
65567       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties const *>( &rhs );
65568       return *this;
65569     }
65570 
operator VkPhysicalDeviceFloatControlsProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties65571     operator VkPhysicalDeviceFloatControlsProperties const &() const VULKAN_HPP_NOEXCEPT
65572     {
65573       return *reinterpret_cast<const VkPhysicalDeviceFloatControlsProperties *>( this );
65574     }
65575 
operator VkPhysicalDeviceFloatControlsProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties65576     operator VkPhysicalDeviceFloatControlsProperties &() VULKAN_HPP_NOEXCEPT
65577     {
65578       return *reinterpret_cast<VkPhysicalDeviceFloatControlsProperties *>( this );
65579     }
65580 
65581 #if defined( VULKAN_HPP_USE_REFLECT )
65582 #  if 14 <= VULKAN_HPP_CPP_VERSION
65583     auto
65584 #  else
65585     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
65586                void * const &,
65587                VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence const &,
65588                VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence const &,
65589                VULKAN_HPP_NAMESPACE::Bool32 const &,
65590                VULKAN_HPP_NAMESPACE::Bool32 const &,
65591                VULKAN_HPP_NAMESPACE::Bool32 const &,
65592                VULKAN_HPP_NAMESPACE::Bool32 const &,
65593                VULKAN_HPP_NAMESPACE::Bool32 const &,
65594                VULKAN_HPP_NAMESPACE::Bool32 const &,
65595                VULKAN_HPP_NAMESPACE::Bool32 const &,
65596                VULKAN_HPP_NAMESPACE::Bool32 const &,
65597                VULKAN_HPP_NAMESPACE::Bool32 const &,
65598                VULKAN_HPP_NAMESPACE::Bool32 const &,
65599                VULKAN_HPP_NAMESPACE::Bool32 const &,
65600                VULKAN_HPP_NAMESPACE::Bool32 const &,
65601                VULKAN_HPP_NAMESPACE::Bool32 const &,
65602                VULKAN_HPP_NAMESPACE::Bool32 const &,
65603                VULKAN_HPP_NAMESPACE::Bool32 const &>
65604 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties65605       reflect() const VULKAN_HPP_NOEXCEPT
65606     {
65607       return std::tie( sType,
65608                        pNext,
65609                        denormBehaviorIndependence,
65610                        roundingModeIndependence,
65611                        shaderSignedZeroInfNanPreserveFloat16,
65612                        shaderSignedZeroInfNanPreserveFloat32,
65613                        shaderSignedZeroInfNanPreserveFloat64,
65614                        shaderDenormPreserveFloat16,
65615                        shaderDenormPreserveFloat32,
65616                        shaderDenormPreserveFloat64,
65617                        shaderDenormFlushToZeroFloat16,
65618                        shaderDenormFlushToZeroFloat32,
65619                        shaderDenormFlushToZeroFloat64,
65620                        shaderRoundingModeRTEFloat16,
65621                        shaderRoundingModeRTEFloat32,
65622                        shaderRoundingModeRTEFloat64,
65623                        shaderRoundingModeRTZFloat16,
65624                        shaderRoundingModeRTZFloat32,
65625                        shaderRoundingModeRTZFloat64 );
65626     }
65627 #endif
65628 
65629 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
65630     auto operator<=>( PhysicalDeviceFloatControlsProperties const & ) const = default;
65631 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties65632     bool operator==( PhysicalDeviceFloatControlsProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
65633     {
65634 #  if defined( VULKAN_HPP_USE_REFLECT )
65635       return this->reflect() == rhs.reflect();
65636 #  else
65637       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( denormBehaviorIndependence == rhs.denormBehaviorIndependence ) &&
65638              ( roundingModeIndependence == rhs.roundingModeIndependence ) &&
65639              ( shaderSignedZeroInfNanPreserveFloat16 == rhs.shaderSignedZeroInfNanPreserveFloat16 ) &&
65640              ( shaderSignedZeroInfNanPreserveFloat32 == rhs.shaderSignedZeroInfNanPreserveFloat32 ) &&
65641              ( shaderSignedZeroInfNanPreserveFloat64 == rhs.shaderSignedZeroInfNanPreserveFloat64 ) &&
65642              ( shaderDenormPreserveFloat16 == rhs.shaderDenormPreserveFloat16 ) && ( shaderDenormPreserveFloat32 == rhs.shaderDenormPreserveFloat32 ) &&
65643              ( shaderDenormPreserveFloat64 == rhs.shaderDenormPreserveFloat64 ) && ( shaderDenormFlushToZeroFloat16 == rhs.shaderDenormFlushToZeroFloat16 ) &&
65644              ( shaderDenormFlushToZeroFloat32 == rhs.shaderDenormFlushToZeroFloat32 ) &&
65645              ( shaderDenormFlushToZeroFloat64 == rhs.shaderDenormFlushToZeroFloat64 ) && ( shaderRoundingModeRTEFloat16 == rhs.shaderRoundingModeRTEFloat16 ) &&
65646              ( shaderRoundingModeRTEFloat32 == rhs.shaderRoundingModeRTEFloat32 ) && ( shaderRoundingModeRTEFloat64 == rhs.shaderRoundingModeRTEFloat64 ) &&
65647              ( shaderRoundingModeRTZFloat16 == rhs.shaderRoundingModeRTZFloat16 ) && ( shaderRoundingModeRTZFloat32 == rhs.shaderRoundingModeRTZFloat32 ) &&
65648              ( shaderRoundingModeRTZFloat64 == rhs.shaderRoundingModeRTZFloat64 );
65649 #  endif
65650     }
65651 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties65652     bool operator!=( PhysicalDeviceFloatControlsProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
65653     {
65654       return !operator==( rhs );
65655     }
65656 #endif
65657 
65658   public:
65659     VULKAN_HPP_NAMESPACE::StructureType                   sType                      = StructureType::ePhysicalDeviceFloatControlsProperties;
65660     void *                                                pNext                      = {};
65661     VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly;
65662     VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence   = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly;
65663     VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat16 = {};
65664     VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat32 = {};
65665     VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat64 = {};
65666     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat16           = {};
65667     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat32           = {};
65668     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat64           = {};
65669     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat16        = {};
65670     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat32        = {};
65671     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat64        = {};
65672     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat16          = {};
65673     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat32          = {};
65674     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat64          = {};
65675     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat16          = {};
65676     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat32          = {};
65677     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat64          = {};
65678   };
65679 
65680   template <>
65681   struct CppType<StructureType, StructureType::ePhysicalDeviceFloatControlsProperties>
65682   {
65683     using Type = PhysicalDeviceFloatControlsProperties;
65684   };
65685 
65686   using PhysicalDeviceFloatControlsPropertiesKHR = PhysicalDeviceFloatControlsProperties;
65687 
65688   struct PhysicalDeviceFragmentDensityMap2FeaturesEXT
65689   {
65690     using NativeType = VkPhysicalDeviceFragmentDensityMap2FeaturesEXT;
65691 
65692     static const bool                                  allowDuplicate = false;
65693     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentDensityMap2FeaturesEXT;
65694 
65695 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentDensityMap2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT65696     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2FeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDeferred_ = {},
65697                                                                        void *                       pNext_                      = nullptr ) VULKAN_HPP_NOEXCEPT
65698       : pNext{ pNext_ }
65699       , fragmentDensityMapDeferred{ fragmentDensityMapDeferred_ }
65700     {
65701     }
65702 
65703     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2FeaturesEXT( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65704 
PhysicalDeviceFragmentDensityMap2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT65705     PhysicalDeviceFragmentDensityMap2FeaturesEXT( VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
65706       : PhysicalDeviceFragmentDensityMap2FeaturesEXT( *reinterpret_cast<PhysicalDeviceFragmentDensityMap2FeaturesEXT const *>( &rhs ) )
65707     {
65708     }
65709 
65710     PhysicalDeviceFragmentDensityMap2FeaturesEXT & operator=( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65711 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65712 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT65713     PhysicalDeviceFragmentDensityMap2FeaturesEXT & operator=( VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
65714     {
65715       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT const *>( &rhs );
65716       return *this;
65717     }
65718 
65719 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT65720     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMap2FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
65721     {
65722       pNext = pNext_;
65723       return *this;
65724     }
65725 
65726     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMap2FeaturesEXT &
setFragmentDensityMapDeferredVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT65727       setFragmentDensityMapDeferred( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDeferred_ ) VULKAN_HPP_NOEXCEPT
65728     {
65729       fragmentDensityMapDeferred = fragmentDensityMapDeferred_;
65730       return *this;
65731     }
65732 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
65733 
operator VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT65734     operator VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
65735     {
65736       return *reinterpret_cast<const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT *>( this );
65737     }
65738 
operator VkPhysicalDeviceFragmentDensityMap2FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT65739     operator VkPhysicalDeviceFragmentDensityMap2FeaturesEXT &() VULKAN_HPP_NOEXCEPT
65740     {
65741       return *reinterpret_cast<VkPhysicalDeviceFragmentDensityMap2FeaturesEXT *>( this );
65742     }
65743 
65744 #if defined( VULKAN_HPP_USE_REFLECT )
65745 #  if 14 <= VULKAN_HPP_CPP_VERSION
65746     auto
65747 #  else
65748     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
65749 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT65750       reflect() const VULKAN_HPP_NOEXCEPT
65751     {
65752       return std::tie( sType, pNext, fragmentDensityMapDeferred );
65753     }
65754 #endif
65755 
65756 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
65757     auto operator<=>( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & ) const = default;
65758 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT65759     bool operator==( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
65760     {
65761 #  if defined( VULKAN_HPP_USE_REFLECT )
65762       return this->reflect() == rhs.reflect();
65763 #  else
65764       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentDensityMapDeferred == rhs.fragmentDensityMapDeferred );
65765 #  endif
65766     }
65767 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT65768     bool operator!=( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
65769     {
65770       return !operator==( rhs );
65771     }
65772 #endif
65773 
65774   public:
65775     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::ePhysicalDeviceFragmentDensityMap2FeaturesEXT;
65776     void *                              pNext                      = {};
65777     VULKAN_HPP_NAMESPACE::Bool32        fragmentDensityMapDeferred = {};
65778   };
65779 
65780   template <>
65781   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentDensityMap2FeaturesEXT>
65782   {
65783     using Type = PhysicalDeviceFragmentDensityMap2FeaturesEXT;
65784   };
65785 
65786   struct PhysicalDeviceFragmentDensityMap2PropertiesEXT
65787   {
65788     using NativeType = VkPhysicalDeviceFragmentDensityMap2PropertiesEXT;
65789 
65790     static const bool                                  allowDuplicate = false;
65791     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentDensityMap2PropertiesEXT;
65792 
65793 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentDensityMap2PropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT65794     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2PropertiesEXT( VULKAN_HPP_NAMESPACE::Bool32 subsampledLoads_                           = {},
65795                                                                          VULKAN_HPP_NAMESPACE::Bool32 subsampledCoarseReconstructionEarlyAccess_ = {},
65796                                                                          uint32_t                     maxSubsampledArrayLayers_                  = {},
65797                                                                          uint32_t                     maxDescriptorSetSubsampledSamplers_        = {},
65798                                                                          void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
65799       : pNext{ pNext_ }
65800       , subsampledLoads{ subsampledLoads_ }
65801       , subsampledCoarseReconstructionEarlyAccess{ subsampledCoarseReconstructionEarlyAccess_ }
65802       , maxSubsampledArrayLayers{ maxSubsampledArrayLayers_ }
65803       , maxDescriptorSetSubsampledSamplers{ maxDescriptorSetSubsampledSamplers_ }
65804     {
65805     }
65806 
65807     VULKAN_HPP_CONSTEXPR
65808       PhysicalDeviceFragmentDensityMap2PropertiesEXT( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65809 
PhysicalDeviceFragmentDensityMap2PropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT65810     PhysicalDeviceFragmentDensityMap2PropertiesEXT( VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
65811       : PhysicalDeviceFragmentDensityMap2PropertiesEXT( *reinterpret_cast<PhysicalDeviceFragmentDensityMap2PropertiesEXT const *>( &rhs ) )
65812     {
65813     }
65814 
65815     PhysicalDeviceFragmentDensityMap2PropertiesEXT & operator=( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65816 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65817 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT65818     PhysicalDeviceFragmentDensityMap2PropertiesEXT & operator=( VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
65819     {
65820       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT const *>( &rhs );
65821       return *this;
65822     }
65823 
operator VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT65824     operator VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
65825     {
65826       return *reinterpret_cast<const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT *>( this );
65827     }
65828 
operator VkPhysicalDeviceFragmentDensityMap2PropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT65829     operator VkPhysicalDeviceFragmentDensityMap2PropertiesEXT &() VULKAN_HPP_NOEXCEPT
65830     {
65831       return *reinterpret_cast<VkPhysicalDeviceFragmentDensityMap2PropertiesEXT *>( this );
65832     }
65833 
65834 #if defined( VULKAN_HPP_USE_REFLECT )
65835 #  if 14 <= VULKAN_HPP_CPP_VERSION
65836     auto
65837 #  else
65838     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
65839                void * const &,
65840                VULKAN_HPP_NAMESPACE::Bool32 const &,
65841                VULKAN_HPP_NAMESPACE::Bool32 const &,
65842                uint32_t const &,
65843                uint32_t const &>
65844 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT65845       reflect() const VULKAN_HPP_NOEXCEPT
65846     {
65847       return std::tie( sType, pNext, subsampledLoads, subsampledCoarseReconstructionEarlyAccess, maxSubsampledArrayLayers, maxDescriptorSetSubsampledSamplers );
65848     }
65849 #endif
65850 
65851 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
65852     auto operator<=>( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & ) const = default;
65853 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT65854     bool operator==( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
65855     {
65856 #  if defined( VULKAN_HPP_USE_REFLECT )
65857       return this->reflect() == rhs.reflect();
65858 #  else
65859       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subsampledLoads == rhs.subsampledLoads ) &&
65860              ( subsampledCoarseReconstructionEarlyAccess == rhs.subsampledCoarseReconstructionEarlyAccess ) &&
65861              ( maxSubsampledArrayLayers == rhs.maxSubsampledArrayLayers ) && ( maxDescriptorSetSubsampledSamplers == rhs.maxDescriptorSetSubsampledSamplers );
65862 #  endif
65863     }
65864 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT65865     bool operator!=( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
65866     {
65867       return !operator==( rhs );
65868     }
65869 #endif
65870 
65871   public:
65872     VULKAN_HPP_NAMESPACE::StructureType sType                                     = StructureType::ePhysicalDeviceFragmentDensityMap2PropertiesEXT;
65873     void *                              pNext                                     = {};
65874     VULKAN_HPP_NAMESPACE::Bool32        subsampledLoads                           = {};
65875     VULKAN_HPP_NAMESPACE::Bool32        subsampledCoarseReconstructionEarlyAccess = {};
65876     uint32_t                            maxSubsampledArrayLayers                  = {};
65877     uint32_t                            maxDescriptorSetSubsampledSamplers        = {};
65878   };
65879 
65880   template <>
65881   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentDensityMap2PropertiesEXT>
65882   {
65883     using Type = PhysicalDeviceFragmentDensityMap2PropertiesEXT;
65884   };
65885 
65886   struct PhysicalDeviceFragmentDensityMapFeaturesEXT
65887   {
65888     using NativeType = VkPhysicalDeviceFragmentDensityMapFeaturesEXT;
65889 
65890     static const bool                                  allowDuplicate = false;
65891     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentDensityMapFeaturesEXT;
65892 
65893 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentDensityMapFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT65894     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMap_                    = {},
65895                                                                       VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDynamic_             = {},
65896                                                                       VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapNonSubsampledImages_ = {},
65897                                                                       void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
65898       : pNext{ pNext_ }
65899       , fragmentDensityMap{ fragmentDensityMap_ }
65900       , fragmentDensityMapDynamic{ fragmentDensityMapDynamic_ }
65901       , fragmentDensityMapNonSubsampledImages{ fragmentDensityMapNonSubsampledImages_ }
65902     {
65903     }
65904 
65905     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapFeaturesEXT( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65906 
PhysicalDeviceFragmentDensityMapFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT65907     PhysicalDeviceFragmentDensityMapFeaturesEXT( VkPhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
65908       : PhysicalDeviceFragmentDensityMapFeaturesEXT( *reinterpret_cast<PhysicalDeviceFragmentDensityMapFeaturesEXT const *>( &rhs ) )
65909     {
65910     }
65911 
65912     PhysicalDeviceFragmentDensityMapFeaturesEXT & operator=( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
65913 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
65914 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT65915     PhysicalDeviceFragmentDensityMapFeaturesEXT & operator=( VkPhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
65916     {
65917       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT const *>( &rhs );
65918       return *this;
65919     }
65920 
65921 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT65922     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
65923     {
65924       pNext = pNext_;
65925       return *this;
65926     }
65927 
65928     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT &
setFragmentDensityMapVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT65929       setFragmentDensityMap( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMap_ ) VULKAN_HPP_NOEXCEPT
65930     {
65931       fragmentDensityMap = fragmentDensityMap_;
65932       return *this;
65933     }
65934 
65935     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT &
setFragmentDensityMapDynamicVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT65936       setFragmentDensityMapDynamic( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDynamic_ ) VULKAN_HPP_NOEXCEPT
65937     {
65938       fragmentDensityMapDynamic = fragmentDensityMapDynamic_;
65939       return *this;
65940     }
65941 
65942     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT &
setFragmentDensityMapNonSubsampledImagesVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT65943       setFragmentDensityMapNonSubsampledImages( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapNonSubsampledImages_ ) VULKAN_HPP_NOEXCEPT
65944     {
65945       fragmentDensityMapNonSubsampledImages = fragmentDensityMapNonSubsampledImages_;
65946       return *this;
65947     }
65948 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
65949 
operator VkPhysicalDeviceFragmentDensityMapFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT65950     operator VkPhysicalDeviceFragmentDensityMapFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
65951     {
65952       return *reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT *>( this );
65953     }
65954 
operator VkPhysicalDeviceFragmentDensityMapFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT65955     operator VkPhysicalDeviceFragmentDensityMapFeaturesEXT &() VULKAN_HPP_NOEXCEPT
65956     {
65957       return *reinterpret_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT *>( this );
65958     }
65959 
65960 #if defined( VULKAN_HPP_USE_REFLECT )
65961 #  if 14 <= VULKAN_HPP_CPP_VERSION
65962     auto
65963 #  else
65964     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
65965                void * const &,
65966                VULKAN_HPP_NAMESPACE::Bool32 const &,
65967                VULKAN_HPP_NAMESPACE::Bool32 const &,
65968                VULKAN_HPP_NAMESPACE::Bool32 const &>
65969 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT65970       reflect() const VULKAN_HPP_NOEXCEPT
65971     {
65972       return std::tie( sType, pNext, fragmentDensityMap, fragmentDensityMapDynamic, fragmentDensityMapNonSubsampledImages );
65973     }
65974 #endif
65975 
65976 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
65977     auto operator<=>( PhysicalDeviceFragmentDensityMapFeaturesEXT const & ) const = default;
65978 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT65979     bool operator==( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
65980     {
65981 #  if defined( VULKAN_HPP_USE_REFLECT )
65982       return this->reflect() == rhs.reflect();
65983 #  else
65984       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentDensityMap == rhs.fragmentDensityMap ) &&
65985              ( fragmentDensityMapDynamic == rhs.fragmentDensityMapDynamic ) &&
65986              ( fragmentDensityMapNonSubsampledImages == rhs.fragmentDensityMapNonSubsampledImages );
65987 #  endif
65988     }
65989 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT65990     bool operator!=( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
65991     {
65992       return !operator==( rhs );
65993     }
65994 #endif
65995 
65996   public:
65997     VULKAN_HPP_NAMESPACE::StructureType sType                                 = StructureType::ePhysicalDeviceFragmentDensityMapFeaturesEXT;
65998     void *                              pNext                                 = {};
65999     VULKAN_HPP_NAMESPACE::Bool32        fragmentDensityMap                    = {};
66000     VULKAN_HPP_NAMESPACE::Bool32        fragmentDensityMapDynamic             = {};
66001     VULKAN_HPP_NAMESPACE::Bool32        fragmentDensityMapNonSubsampledImages = {};
66002   };
66003 
66004   template <>
66005   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentDensityMapFeaturesEXT>
66006   {
66007     using Type = PhysicalDeviceFragmentDensityMapFeaturesEXT;
66008   };
66009 
66010   struct PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM
66011   {
66012     using NativeType = VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
66013 
66014     static const bool                                  allowDuplicate = false;
66015     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
66016 
66017 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM66018     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapOffset_ = {},
66019                                                                              void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
66020       : pNext{ pNext_ }
66021       , fragmentDensityMapOffset{ fragmentDensityMapOffset_ }
66022     {
66023     }
66024 
66025     VULKAN_HPP_CONSTEXPR
66026       PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM( PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66027 
PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM66028     PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM( VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
66029       : PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM( *reinterpret_cast<PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const *>( &rhs ) )
66030     {
66031     }
66032 
66033     PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM &
66034       operator=( PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66035 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66036 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM66037     PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM & operator=( VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
66038     {
66039       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const *>( &rhs );
66040       return *this;
66041     }
66042 
66043 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM66044     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
66045     {
66046       pNext = pNext_;
66047       return *this;
66048     }
66049 
66050     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM &
setFragmentDensityMapOffsetVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM66051       setFragmentDensityMapOffset( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapOffset_ ) VULKAN_HPP_NOEXCEPT
66052     {
66053       fragmentDensityMapOffset = fragmentDensityMapOffset_;
66054       return *this;
66055     }
66056 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
66057 
operator VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM66058     operator VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT
66059     {
66060       return *reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM *>( this );
66061     }
66062 
operator VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM66063     operator VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM &() VULKAN_HPP_NOEXCEPT
66064     {
66065       return *reinterpret_cast<VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM *>( this );
66066     }
66067 
66068 #if defined( VULKAN_HPP_USE_REFLECT )
66069 #  if 14 <= VULKAN_HPP_CPP_VERSION
66070     auto
66071 #  else
66072     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
66073 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM66074       reflect() const VULKAN_HPP_NOEXCEPT
66075     {
66076       return std::tie( sType, pNext, fragmentDensityMapOffset );
66077     }
66078 #endif
66079 
66080 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66081     auto operator<=>( PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & ) const = default;
66082 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM66083     bool operator==( PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
66084     {
66085 #  if defined( VULKAN_HPP_USE_REFLECT )
66086       return this->reflect() == rhs.reflect();
66087 #  else
66088       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentDensityMapOffset == rhs.fragmentDensityMapOffset );
66089 #  endif
66090     }
66091 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM66092     bool operator!=( PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
66093     {
66094       return !operator==( rhs );
66095     }
66096 #endif
66097 
66098   public:
66099     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
66100     void *                              pNext                    = {};
66101     VULKAN_HPP_NAMESPACE::Bool32        fragmentDensityMapOffset = {};
66102   };
66103 
66104   template <>
66105   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM>
66106   {
66107     using Type = PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
66108   };
66109 
66110   struct PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM
66111   {
66112     using NativeType = VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
66113 
66114     static const bool                                  allowDuplicate = false;
66115     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
66116 
66117 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM66118     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM( VULKAN_HPP_NAMESPACE::Extent2D fragmentDensityOffsetGranularity_ = {},
66119                                                                                void *                         pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
66120       : pNext{ pNext_ }
66121       , fragmentDensityOffsetGranularity{ fragmentDensityOffsetGranularity_ }
66122     {
66123     }
66124 
66125     VULKAN_HPP_CONSTEXPR
66126       PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM( PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66127 
PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM66128     PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM( VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
66129       : PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM( *reinterpret_cast<PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const *>( &rhs ) )
66130     {
66131     }
66132 
66133     PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM &
66134       operator=( PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66135 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66136 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM66137     PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM & operator=( VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
66138     {
66139       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const *>( &rhs );
66140       return *this;
66141     }
66142 
operator VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM66143     operator VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const &() const VULKAN_HPP_NOEXCEPT
66144     {
66145       return *reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM *>( this );
66146     }
66147 
operator VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM66148     operator VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM &() VULKAN_HPP_NOEXCEPT
66149     {
66150       return *reinterpret_cast<VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM *>( this );
66151     }
66152 
66153 #if defined( VULKAN_HPP_USE_REFLECT )
66154 #  if 14 <= VULKAN_HPP_CPP_VERSION
66155     auto
66156 #  else
66157     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Extent2D const &>
66158 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM66159       reflect() const VULKAN_HPP_NOEXCEPT
66160     {
66161       return std::tie( sType, pNext, fragmentDensityOffsetGranularity );
66162     }
66163 #endif
66164 
66165 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66166     auto operator<=>( PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & ) const = default;
66167 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM66168     bool operator==( PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
66169     {
66170 #  if defined( VULKAN_HPP_USE_REFLECT )
66171       return this->reflect() == rhs.reflect();
66172 #  else
66173       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentDensityOffsetGranularity == rhs.fragmentDensityOffsetGranularity );
66174 #  endif
66175     }
66176 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM66177     bool operator!=( PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
66178     {
66179       return !operator==( rhs );
66180     }
66181 #endif
66182 
66183   public:
66184     VULKAN_HPP_NAMESPACE::StructureType sType                            = StructureType::ePhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
66185     void *                              pNext                            = {};
66186     VULKAN_HPP_NAMESPACE::Extent2D      fragmentDensityOffsetGranularity = {};
66187   };
66188 
66189   template <>
66190   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM>
66191   {
66192     using Type = PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
66193   };
66194 
66195   struct PhysicalDeviceFragmentDensityMapPropertiesEXT
66196   {
66197     using NativeType = VkPhysicalDeviceFragmentDensityMapPropertiesEXT;
66198 
66199     static const bool                                  allowDuplicate = false;
66200     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentDensityMapPropertiesEXT;
66201 
66202 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentDensityMapPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT66203     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapPropertiesEXT( VULKAN_HPP_NAMESPACE::Extent2D minFragmentDensityTexelSize_ = {},
66204                                                                         VULKAN_HPP_NAMESPACE::Extent2D maxFragmentDensityTexelSize_ = {},
66205                                                                         VULKAN_HPP_NAMESPACE::Bool32   fragmentDensityInvocations_  = {},
66206                                                                         void *                         pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
66207       : pNext{ pNext_ }
66208       , minFragmentDensityTexelSize{ minFragmentDensityTexelSize_ }
66209       , maxFragmentDensityTexelSize{ maxFragmentDensityTexelSize_ }
66210       , fragmentDensityInvocations{ fragmentDensityInvocations_ }
66211     {
66212     }
66213 
66214     VULKAN_HPP_CONSTEXPR
66215       PhysicalDeviceFragmentDensityMapPropertiesEXT( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66216 
PhysicalDeviceFragmentDensityMapPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT66217     PhysicalDeviceFragmentDensityMapPropertiesEXT( VkPhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
66218       : PhysicalDeviceFragmentDensityMapPropertiesEXT( *reinterpret_cast<PhysicalDeviceFragmentDensityMapPropertiesEXT const *>( &rhs ) )
66219     {
66220     }
66221 
66222     PhysicalDeviceFragmentDensityMapPropertiesEXT & operator=( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66223 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66224 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT66225     PhysicalDeviceFragmentDensityMapPropertiesEXT & operator=( VkPhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
66226     {
66227       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT const *>( &rhs );
66228       return *this;
66229     }
66230 
operator VkPhysicalDeviceFragmentDensityMapPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT66231     operator VkPhysicalDeviceFragmentDensityMapPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
66232     {
66233       return *reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapPropertiesEXT *>( this );
66234     }
66235 
operator VkPhysicalDeviceFragmentDensityMapPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT66236     operator VkPhysicalDeviceFragmentDensityMapPropertiesEXT &() VULKAN_HPP_NOEXCEPT
66237     {
66238       return *reinterpret_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT *>( this );
66239     }
66240 
66241 #if defined( VULKAN_HPP_USE_REFLECT )
66242 #  if 14 <= VULKAN_HPP_CPP_VERSION
66243     auto
66244 #  else
66245     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
66246                void * const &,
66247                VULKAN_HPP_NAMESPACE::Extent2D const &,
66248                VULKAN_HPP_NAMESPACE::Extent2D const &,
66249                VULKAN_HPP_NAMESPACE::Bool32 const &>
66250 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT66251       reflect() const VULKAN_HPP_NOEXCEPT
66252     {
66253       return std::tie( sType, pNext, minFragmentDensityTexelSize, maxFragmentDensityTexelSize, fragmentDensityInvocations );
66254     }
66255 #endif
66256 
66257 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66258     auto operator<=>( PhysicalDeviceFragmentDensityMapPropertiesEXT const & ) const = default;
66259 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT66260     bool operator==( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
66261     {
66262 #  if defined( VULKAN_HPP_USE_REFLECT )
66263       return this->reflect() == rhs.reflect();
66264 #  else
66265       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minFragmentDensityTexelSize == rhs.minFragmentDensityTexelSize ) &&
66266              ( maxFragmentDensityTexelSize == rhs.maxFragmentDensityTexelSize ) && ( fragmentDensityInvocations == rhs.fragmentDensityInvocations );
66267 #  endif
66268     }
66269 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT66270     bool operator!=( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
66271     {
66272       return !operator==( rhs );
66273     }
66274 #endif
66275 
66276   public:
66277     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceFragmentDensityMapPropertiesEXT;
66278     void *                              pNext                       = {};
66279     VULKAN_HPP_NAMESPACE::Extent2D      minFragmentDensityTexelSize = {};
66280     VULKAN_HPP_NAMESPACE::Extent2D      maxFragmentDensityTexelSize = {};
66281     VULKAN_HPP_NAMESPACE::Bool32        fragmentDensityInvocations  = {};
66282   };
66283 
66284   template <>
66285   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentDensityMapPropertiesEXT>
66286   {
66287     using Type = PhysicalDeviceFragmentDensityMapPropertiesEXT;
66288   };
66289 
66290   struct PhysicalDeviceFragmentShaderBarycentricFeaturesKHR
66291   {
66292     using NativeType = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
66293 
66294     static const bool                                  allowDuplicate = false;
66295     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
66296 
66297 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShaderBarycentricFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR66298     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderBarycentricFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderBarycentric_ = {},
66299                                                                              void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
66300       : pNext{ pNext_ }
66301       , fragmentShaderBarycentric{ fragmentShaderBarycentric_ }
66302     {
66303     }
66304 
66305     VULKAN_HPP_CONSTEXPR
66306       PhysicalDeviceFragmentShaderBarycentricFeaturesKHR( PhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66307 
PhysicalDeviceFragmentShaderBarycentricFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR66308     PhysicalDeviceFragmentShaderBarycentricFeaturesKHR( VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
66309       : PhysicalDeviceFragmentShaderBarycentricFeaturesKHR( *reinterpret_cast<PhysicalDeviceFragmentShaderBarycentricFeaturesKHR const *>( &rhs ) )
66310     {
66311     }
66312 
66313     PhysicalDeviceFragmentShaderBarycentricFeaturesKHR &
66314       operator=( PhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66315 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66316 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR66317     PhysicalDeviceFragmentShaderBarycentricFeaturesKHR & operator=( VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
66318     {
66319       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR const *>( &rhs );
66320       return *this;
66321     }
66322 
66323 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR66324     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderBarycentricFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
66325     {
66326       pNext = pNext_;
66327       return *this;
66328     }
66329 
66330     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderBarycentricFeaturesKHR &
setFragmentShaderBarycentricVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR66331       setFragmentShaderBarycentric( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderBarycentric_ ) VULKAN_HPP_NOEXCEPT
66332     {
66333       fragmentShaderBarycentric = fragmentShaderBarycentric_;
66334       return *this;
66335     }
66336 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
66337 
operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR66338     operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
66339     {
66340       return *reinterpret_cast<const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR *>( this );
66341     }
66342 
operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR66343     operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR &() VULKAN_HPP_NOEXCEPT
66344     {
66345       return *reinterpret_cast<VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR *>( this );
66346     }
66347 
66348 #if defined( VULKAN_HPP_USE_REFLECT )
66349 #  if 14 <= VULKAN_HPP_CPP_VERSION
66350     auto
66351 #  else
66352     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
66353 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR66354       reflect() const VULKAN_HPP_NOEXCEPT
66355     {
66356       return std::tie( sType, pNext, fragmentShaderBarycentric );
66357     }
66358 #endif
66359 
66360 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66361     auto operator<=>( PhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & ) const = default;
66362 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR66363     bool operator==( PhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
66364     {
66365 #  if defined( VULKAN_HPP_USE_REFLECT )
66366       return this->reflect() == rhs.reflect();
66367 #  else
66368       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentShaderBarycentric == rhs.fragmentShaderBarycentric );
66369 #  endif
66370     }
66371 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR66372     bool operator!=( PhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
66373     {
66374       return !operator==( rhs );
66375     }
66376 #endif
66377 
66378   public:
66379     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
66380     void *                              pNext                     = {};
66381     VULKAN_HPP_NAMESPACE::Bool32        fragmentShaderBarycentric = {};
66382   };
66383 
66384   template <>
66385   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesKHR>
66386   {
66387     using Type = PhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
66388   };
66389 
66390   using PhysicalDeviceFragmentShaderBarycentricFeaturesNV = PhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
66391 
66392   struct PhysicalDeviceFragmentShaderBarycentricPropertiesKHR
66393   {
66394     using NativeType = VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR;
66395 
66396     static const bool                                  allowDuplicate = false;
66397     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentShaderBarycentricPropertiesKHR;
66398 
66399 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
66400     VULKAN_HPP_CONSTEXPR
PhysicalDeviceFragmentShaderBarycentricPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR66401       PhysicalDeviceFragmentShaderBarycentricPropertiesKHR( VULKAN_HPP_NAMESPACE::Bool32 triStripVertexOrderIndependentOfProvokingVertex_ = {},
66402                                                             void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
66403       : pNext{ pNext_ }
66404       , triStripVertexOrderIndependentOfProvokingVertex{ triStripVertexOrderIndependentOfProvokingVertex_ }
66405     {
66406     }
66407 
66408     VULKAN_HPP_CONSTEXPR
66409       PhysicalDeviceFragmentShaderBarycentricPropertiesKHR( PhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66410 
PhysicalDeviceFragmentShaderBarycentricPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR66411     PhysicalDeviceFragmentShaderBarycentricPropertiesKHR( VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
66412       : PhysicalDeviceFragmentShaderBarycentricPropertiesKHR( *reinterpret_cast<PhysicalDeviceFragmentShaderBarycentricPropertiesKHR const *>( &rhs ) )
66413     {
66414     }
66415 
66416     PhysicalDeviceFragmentShaderBarycentricPropertiesKHR &
66417       operator=( PhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66418 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66419 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR66420     PhysicalDeviceFragmentShaderBarycentricPropertiesKHR & operator=( VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
66421     {
66422       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR const *>( &rhs );
66423       return *this;
66424     }
66425 
operator VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR66426     operator VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
66427     {
66428       return *reinterpret_cast<const VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR *>( this );
66429     }
66430 
operator VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR66431     operator VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR &() VULKAN_HPP_NOEXCEPT
66432     {
66433       return *reinterpret_cast<VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR *>( this );
66434     }
66435 
66436 #if defined( VULKAN_HPP_USE_REFLECT )
66437 #  if 14 <= VULKAN_HPP_CPP_VERSION
66438     auto
66439 #  else
66440     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
66441 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR66442       reflect() const VULKAN_HPP_NOEXCEPT
66443     {
66444       return std::tie( sType, pNext, triStripVertexOrderIndependentOfProvokingVertex );
66445     }
66446 #endif
66447 
66448 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66449     auto operator<=>( PhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & ) const = default;
66450 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR66451     bool operator==( PhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
66452     {
66453 #  if defined( VULKAN_HPP_USE_REFLECT )
66454       return this->reflect() == rhs.reflect();
66455 #  else
66456       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) &&
66457              ( triStripVertexOrderIndependentOfProvokingVertex == rhs.triStripVertexOrderIndependentOfProvokingVertex );
66458 #  endif
66459     }
66460 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR66461     bool operator!=( PhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
66462     {
66463       return !operator==( rhs );
66464     }
66465 #endif
66466 
66467   public:
66468     VULKAN_HPP_NAMESPACE::StructureType sType                                           = StructureType::ePhysicalDeviceFragmentShaderBarycentricPropertiesKHR;
66469     void *                              pNext                                           = {};
66470     VULKAN_HPP_NAMESPACE::Bool32        triStripVertexOrderIndependentOfProvokingVertex = {};
66471   };
66472 
66473   template <>
66474   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShaderBarycentricPropertiesKHR>
66475   {
66476     using Type = PhysicalDeviceFragmentShaderBarycentricPropertiesKHR;
66477   };
66478 
66479   struct PhysicalDeviceFragmentShaderInterlockFeaturesEXT
66480   {
66481     using NativeType = VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT;
66482 
66483     static const bool                                  allowDuplicate = false;
66484     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT;
66485 
66486 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShaderInterlockFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT66487     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderInterlockFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderSampleInterlock_      = {},
66488                                                                            VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderPixelInterlock_       = {},
66489                                                                            VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderShadingRateInterlock_ = {},
66490                                                                            void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
66491       : pNext{ pNext_ }
66492       , fragmentShaderSampleInterlock{ fragmentShaderSampleInterlock_ }
66493       , fragmentShaderPixelInterlock{ fragmentShaderPixelInterlock_ }
66494       , fragmentShaderShadingRateInterlock{ fragmentShaderShadingRateInterlock_ }
66495     {
66496     }
66497 
66498     VULKAN_HPP_CONSTEXPR
66499       PhysicalDeviceFragmentShaderInterlockFeaturesEXT( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66500 
PhysicalDeviceFragmentShaderInterlockFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT66501     PhysicalDeviceFragmentShaderInterlockFeaturesEXT( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
66502       : PhysicalDeviceFragmentShaderInterlockFeaturesEXT( *reinterpret_cast<PhysicalDeviceFragmentShaderInterlockFeaturesEXT const *>( &rhs ) )
66503     {
66504     }
66505 
66506     PhysicalDeviceFragmentShaderInterlockFeaturesEXT & operator=( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66507 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66508 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT66509     PhysicalDeviceFragmentShaderInterlockFeaturesEXT & operator=( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
66510     {
66511       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT const *>( &rhs );
66512       return *this;
66513     }
66514 
66515 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT66516     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
66517     {
66518       pNext = pNext_;
66519       return *this;
66520     }
66521 
66522     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT &
setFragmentShaderSampleInterlockVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT66523       setFragmentShaderSampleInterlock( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderSampleInterlock_ ) VULKAN_HPP_NOEXCEPT
66524     {
66525       fragmentShaderSampleInterlock = fragmentShaderSampleInterlock_;
66526       return *this;
66527     }
66528 
66529     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT &
setFragmentShaderPixelInterlockVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT66530       setFragmentShaderPixelInterlock( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderPixelInterlock_ ) VULKAN_HPP_NOEXCEPT
66531     {
66532       fragmentShaderPixelInterlock = fragmentShaderPixelInterlock_;
66533       return *this;
66534     }
66535 
66536     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT &
setFragmentShaderShadingRateInterlockVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT66537       setFragmentShaderShadingRateInterlock( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderShadingRateInterlock_ ) VULKAN_HPP_NOEXCEPT
66538     {
66539       fragmentShaderShadingRateInterlock = fragmentShaderShadingRateInterlock_;
66540       return *this;
66541     }
66542 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
66543 
operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT66544     operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
66545     {
66546       return *reinterpret_cast<const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *>( this );
66547     }
66548 
operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT66549     operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT &() VULKAN_HPP_NOEXCEPT
66550     {
66551       return *reinterpret_cast<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *>( this );
66552     }
66553 
66554 #if defined( VULKAN_HPP_USE_REFLECT )
66555 #  if 14 <= VULKAN_HPP_CPP_VERSION
66556     auto
66557 #  else
66558     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
66559                void * const &,
66560                VULKAN_HPP_NAMESPACE::Bool32 const &,
66561                VULKAN_HPP_NAMESPACE::Bool32 const &,
66562                VULKAN_HPP_NAMESPACE::Bool32 const &>
66563 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT66564       reflect() const VULKAN_HPP_NOEXCEPT
66565     {
66566       return std::tie( sType, pNext, fragmentShaderSampleInterlock, fragmentShaderPixelInterlock, fragmentShaderShadingRateInterlock );
66567     }
66568 #endif
66569 
66570 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66571     auto operator<=>( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & ) const = default;
66572 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT66573     bool operator==( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
66574     {
66575 #  if defined( VULKAN_HPP_USE_REFLECT )
66576       return this->reflect() == rhs.reflect();
66577 #  else
66578       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentShaderSampleInterlock == rhs.fragmentShaderSampleInterlock ) &&
66579              ( fragmentShaderPixelInterlock == rhs.fragmentShaderPixelInterlock ) &&
66580              ( fragmentShaderShadingRateInterlock == rhs.fragmentShaderShadingRateInterlock );
66581 #  endif
66582     }
66583 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT66584     bool operator!=( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
66585     {
66586       return !operator==( rhs );
66587     }
66588 #endif
66589 
66590   public:
66591     VULKAN_HPP_NAMESPACE::StructureType sType                              = StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT;
66592     void *                              pNext                              = {};
66593     VULKAN_HPP_NAMESPACE::Bool32        fragmentShaderSampleInterlock      = {};
66594     VULKAN_HPP_NAMESPACE::Bool32        fragmentShaderPixelInterlock       = {};
66595     VULKAN_HPP_NAMESPACE::Bool32        fragmentShaderShadingRateInterlock = {};
66596   };
66597 
66598   template <>
66599   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT>
66600   {
66601     using Type = PhysicalDeviceFragmentShaderInterlockFeaturesEXT;
66602   };
66603 
66604   struct PhysicalDeviceFragmentShadingRateEnumsFeaturesNV
66605   {
66606     using NativeType = VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
66607 
66608     static const bool                                  allowDuplicate = false;
66609     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
66610 
66611 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShadingRateEnumsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV66612     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateEnumsFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateEnums_         = {},
66613                                                                            VULKAN_HPP_NAMESPACE::Bool32 supersampleFragmentShadingRates_  = {},
66614                                                                            VULKAN_HPP_NAMESPACE::Bool32 noInvocationFragmentShadingRates_ = {},
66615                                                                            void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
66616       : pNext{ pNext_ }
66617       , fragmentShadingRateEnums{ fragmentShadingRateEnums_ }
66618       , supersampleFragmentShadingRates{ supersampleFragmentShadingRates_ }
66619       , noInvocationFragmentShadingRates{ noInvocationFragmentShadingRates_ }
66620     {
66621     }
66622 
66623     VULKAN_HPP_CONSTEXPR
66624       PhysicalDeviceFragmentShadingRateEnumsFeaturesNV( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66625 
PhysicalDeviceFragmentShadingRateEnumsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV66626     PhysicalDeviceFragmentShadingRateEnumsFeaturesNV( VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
66627       : PhysicalDeviceFragmentShadingRateEnumsFeaturesNV( *reinterpret_cast<PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const *>( &rhs ) )
66628     {
66629     }
66630 
66631     PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & operator=( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66632 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66633 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV66634     PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & operator=( VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
66635     {
66636       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const *>( &rhs );
66637       return *this;
66638     }
66639 
66640 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV66641     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
66642     {
66643       pNext = pNext_;
66644       return *this;
66645     }
66646 
66647     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV &
setFragmentShadingRateEnumsVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV66648       setFragmentShadingRateEnums( VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateEnums_ ) VULKAN_HPP_NOEXCEPT
66649     {
66650       fragmentShadingRateEnums = fragmentShadingRateEnums_;
66651       return *this;
66652     }
66653 
66654     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV &
setSupersampleFragmentShadingRatesVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV66655       setSupersampleFragmentShadingRates( VULKAN_HPP_NAMESPACE::Bool32 supersampleFragmentShadingRates_ ) VULKAN_HPP_NOEXCEPT
66656     {
66657       supersampleFragmentShadingRates = supersampleFragmentShadingRates_;
66658       return *this;
66659     }
66660 
66661     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV &
setNoInvocationFragmentShadingRatesVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV66662       setNoInvocationFragmentShadingRates( VULKAN_HPP_NAMESPACE::Bool32 noInvocationFragmentShadingRates_ ) VULKAN_HPP_NOEXCEPT
66663     {
66664       noInvocationFragmentShadingRates = noInvocationFragmentShadingRates_;
66665       return *this;
66666     }
66667 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
66668 
operator VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV66669     operator VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
66670     {
66671       return *reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV *>( this );
66672     }
66673 
operator VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV66674     operator VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV &() VULKAN_HPP_NOEXCEPT
66675     {
66676       return *reinterpret_cast<VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV *>( this );
66677     }
66678 
66679 #if defined( VULKAN_HPP_USE_REFLECT )
66680 #  if 14 <= VULKAN_HPP_CPP_VERSION
66681     auto
66682 #  else
66683     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
66684                void * const &,
66685                VULKAN_HPP_NAMESPACE::Bool32 const &,
66686                VULKAN_HPP_NAMESPACE::Bool32 const &,
66687                VULKAN_HPP_NAMESPACE::Bool32 const &>
66688 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV66689       reflect() const VULKAN_HPP_NOEXCEPT
66690     {
66691       return std::tie( sType, pNext, fragmentShadingRateEnums, supersampleFragmentShadingRates, noInvocationFragmentShadingRates );
66692     }
66693 #endif
66694 
66695 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66696     auto operator<=>( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & ) const = default;
66697 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV66698     bool operator==( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
66699     {
66700 #  if defined( VULKAN_HPP_USE_REFLECT )
66701       return this->reflect() == rhs.reflect();
66702 #  else
66703       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentShadingRateEnums == rhs.fragmentShadingRateEnums ) &&
66704              ( supersampleFragmentShadingRates == rhs.supersampleFragmentShadingRates ) &&
66705              ( noInvocationFragmentShadingRates == rhs.noInvocationFragmentShadingRates );
66706 #  endif
66707     }
66708 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV66709     bool operator!=( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
66710     {
66711       return !operator==( rhs );
66712     }
66713 #endif
66714 
66715   public:
66716     VULKAN_HPP_NAMESPACE::StructureType sType                            = StructureType::ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
66717     void *                              pNext                            = {};
66718     VULKAN_HPP_NAMESPACE::Bool32        fragmentShadingRateEnums         = {};
66719     VULKAN_HPP_NAMESPACE::Bool32        supersampleFragmentShadingRates  = {};
66720     VULKAN_HPP_NAMESPACE::Bool32        noInvocationFragmentShadingRates = {};
66721   };
66722 
66723   template <>
66724   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV>
66725   {
66726     using Type = PhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
66727   };
66728 
66729   struct PhysicalDeviceFragmentShadingRateEnumsPropertiesNV
66730   {
66731     using NativeType = VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
66732 
66733     static const bool                                  allowDuplicate = false;
66734     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
66735 
66736 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShadingRateEnumsPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV66737     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateEnumsPropertiesNV(
66738       VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateInvocationCount_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
66739       void *                                    pNext_                                 = nullptr ) VULKAN_HPP_NOEXCEPT
66740       : pNext{ pNext_ }
66741       , maxFragmentShadingRateInvocationCount{ maxFragmentShadingRateInvocationCount_ }
66742     {
66743     }
66744 
66745     VULKAN_HPP_CONSTEXPR
66746       PhysicalDeviceFragmentShadingRateEnumsPropertiesNV( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66747 
PhysicalDeviceFragmentShadingRateEnumsPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV66748     PhysicalDeviceFragmentShadingRateEnumsPropertiesNV( VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
66749       : PhysicalDeviceFragmentShadingRateEnumsPropertiesNV( *reinterpret_cast<PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const *>( &rhs ) )
66750     {
66751     }
66752 
66753     PhysicalDeviceFragmentShadingRateEnumsPropertiesNV &
66754       operator=( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66755 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66756 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV66757     PhysicalDeviceFragmentShadingRateEnumsPropertiesNV & operator=( VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
66758     {
66759       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const *>( &rhs );
66760       return *this;
66761     }
66762 
66763 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV66764     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsPropertiesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
66765     {
66766       pNext = pNext_;
66767       return *this;
66768     }
66769 
66770     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsPropertiesNV &
setMaxFragmentShadingRateInvocationCountVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV66771       setMaxFragmentShadingRateInvocationCount( VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateInvocationCount_ ) VULKAN_HPP_NOEXCEPT
66772     {
66773       maxFragmentShadingRateInvocationCount = maxFragmentShadingRateInvocationCount_;
66774       return *this;
66775     }
66776 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
66777 
operator VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV66778     operator VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
66779     {
66780       return *reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV *>( this );
66781     }
66782 
operator VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV66783     operator VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV &() VULKAN_HPP_NOEXCEPT
66784     {
66785       return *reinterpret_cast<VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV *>( this );
66786     }
66787 
66788 #if defined( VULKAN_HPP_USE_REFLECT )
66789 #  if 14 <= VULKAN_HPP_CPP_VERSION
66790     auto
66791 #  else
66792     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &>
66793 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV66794       reflect() const VULKAN_HPP_NOEXCEPT
66795     {
66796       return std::tie( sType, pNext, maxFragmentShadingRateInvocationCount );
66797     }
66798 #endif
66799 
66800 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66801     auto operator<=>( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & ) const = default;
66802 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV66803     bool operator==( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
66804     {
66805 #  if defined( VULKAN_HPP_USE_REFLECT )
66806       return this->reflect() == rhs.reflect();
66807 #  else
66808       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxFragmentShadingRateInvocationCount == rhs.maxFragmentShadingRateInvocationCount );
66809 #  endif
66810     }
66811 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV66812     bool operator!=( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
66813     {
66814       return !operator==( rhs );
66815     }
66816 #endif
66817 
66818   public:
66819     VULKAN_HPP_NAMESPACE::StructureType       sType                                 = StructureType::ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
66820     void *                                    pNext                                 = {};
66821     VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateInvocationCount = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
66822   };
66823 
66824   template <>
66825   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV>
66826   {
66827     using Type = PhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
66828   };
66829 
66830   struct PhysicalDeviceFragmentShadingRateFeaturesKHR
66831   {
66832     using NativeType = VkPhysicalDeviceFragmentShadingRateFeaturesKHR;
66833 
66834     static const bool                                  allowDuplicate = false;
66835     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR;
66836 
66837 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShadingRateFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR66838     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 pipelineFragmentShadingRate_   = {},
66839                                                                        VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRate_  = {},
66840                                                                        VULKAN_HPP_NAMESPACE::Bool32 attachmentFragmentShadingRate_ = {},
66841                                                                        void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
66842       : pNext{ pNext_ }
66843       , pipelineFragmentShadingRate{ pipelineFragmentShadingRate_ }
66844       , primitiveFragmentShadingRate{ primitiveFragmentShadingRate_ }
66845       , attachmentFragmentShadingRate{ attachmentFragmentShadingRate_ }
66846     {
66847     }
66848 
66849     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateFeaturesKHR( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66850 
PhysicalDeviceFragmentShadingRateFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR66851     PhysicalDeviceFragmentShadingRateFeaturesKHR( VkPhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
66852       : PhysicalDeviceFragmentShadingRateFeaturesKHR( *reinterpret_cast<PhysicalDeviceFragmentShadingRateFeaturesKHR const *>( &rhs ) )
66853     {
66854     }
66855 
66856     PhysicalDeviceFragmentShadingRateFeaturesKHR & operator=( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66857 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66858 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR66859     PhysicalDeviceFragmentShadingRateFeaturesKHR & operator=( VkPhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
66860     {
66861       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR const *>( &rhs );
66862       return *this;
66863     }
66864 
66865 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR66866     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
66867     {
66868       pNext = pNext_;
66869       return *this;
66870     }
66871 
66872     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR &
setPipelineFragmentShadingRateVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR66873       setPipelineFragmentShadingRate( VULKAN_HPP_NAMESPACE::Bool32 pipelineFragmentShadingRate_ ) VULKAN_HPP_NOEXCEPT
66874     {
66875       pipelineFragmentShadingRate = pipelineFragmentShadingRate_;
66876       return *this;
66877     }
66878 
66879     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR &
setPrimitiveFragmentShadingRateVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR66880       setPrimitiveFragmentShadingRate( VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRate_ ) VULKAN_HPP_NOEXCEPT
66881     {
66882       primitiveFragmentShadingRate = primitiveFragmentShadingRate_;
66883       return *this;
66884     }
66885 
66886     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR &
setAttachmentFragmentShadingRateVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR66887       setAttachmentFragmentShadingRate( VULKAN_HPP_NAMESPACE::Bool32 attachmentFragmentShadingRate_ ) VULKAN_HPP_NOEXCEPT
66888     {
66889       attachmentFragmentShadingRate = attachmentFragmentShadingRate_;
66890       return *this;
66891     }
66892 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
66893 
operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR66894     operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
66895     {
66896       return *reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateFeaturesKHR *>( this );
66897     }
66898 
operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR66899     operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR &() VULKAN_HPP_NOEXCEPT
66900     {
66901       return *reinterpret_cast<VkPhysicalDeviceFragmentShadingRateFeaturesKHR *>( this );
66902     }
66903 
66904 #if defined( VULKAN_HPP_USE_REFLECT )
66905 #  if 14 <= VULKAN_HPP_CPP_VERSION
66906     auto
66907 #  else
66908     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
66909                void * const &,
66910                VULKAN_HPP_NAMESPACE::Bool32 const &,
66911                VULKAN_HPP_NAMESPACE::Bool32 const &,
66912                VULKAN_HPP_NAMESPACE::Bool32 const &>
66913 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR66914       reflect() const VULKAN_HPP_NOEXCEPT
66915     {
66916       return std::tie( sType, pNext, pipelineFragmentShadingRate, primitiveFragmentShadingRate, attachmentFragmentShadingRate );
66917     }
66918 #endif
66919 
66920 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
66921     auto operator<=>( PhysicalDeviceFragmentShadingRateFeaturesKHR const & ) const = default;
66922 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR66923     bool operator==( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
66924     {
66925 #  if defined( VULKAN_HPP_USE_REFLECT )
66926       return this->reflect() == rhs.reflect();
66927 #  else
66928       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineFragmentShadingRate == rhs.pipelineFragmentShadingRate ) &&
66929              ( primitiveFragmentShadingRate == rhs.primitiveFragmentShadingRate ) && ( attachmentFragmentShadingRate == rhs.attachmentFragmentShadingRate );
66930 #  endif
66931     }
66932 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR66933     bool operator!=( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
66934     {
66935       return !operator==( rhs );
66936     }
66937 #endif
66938 
66939   public:
66940     VULKAN_HPP_NAMESPACE::StructureType sType                         = StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR;
66941     void *                              pNext                         = {};
66942     VULKAN_HPP_NAMESPACE::Bool32        pipelineFragmentShadingRate   = {};
66943     VULKAN_HPP_NAMESPACE::Bool32        primitiveFragmentShadingRate  = {};
66944     VULKAN_HPP_NAMESPACE::Bool32        attachmentFragmentShadingRate = {};
66945   };
66946 
66947   template <>
66948   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR>
66949   {
66950     using Type = PhysicalDeviceFragmentShadingRateFeaturesKHR;
66951   };
66952 
66953   struct PhysicalDeviceFragmentShadingRateKHR
66954   {
66955     using NativeType = VkPhysicalDeviceFragmentShadingRateKHR;
66956 
66957     static const bool                                  allowDuplicate = false;
66958     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentShadingRateKHR;
66959 
66960 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShadingRateKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR66961     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateKHR( VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts_ = {},
66962                                                                VULKAN_HPP_NAMESPACE::Extent2D         fragmentSize_ = {},
66963                                                                void *                                 pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
66964       : pNext{ pNext_ }
66965       , sampleCounts{ sampleCounts_ }
66966       , fragmentSize{ fragmentSize_ }
66967     {
66968     }
66969 
66970     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateKHR( PhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66971 
PhysicalDeviceFragmentShadingRateKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR66972     PhysicalDeviceFragmentShadingRateKHR( VkPhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT
66973       : PhysicalDeviceFragmentShadingRateKHR( *reinterpret_cast<PhysicalDeviceFragmentShadingRateKHR const *>( &rhs ) )
66974     {
66975     }
66976 
66977     PhysicalDeviceFragmentShadingRateKHR & operator=( PhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
66978 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
66979 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR66980     PhysicalDeviceFragmentShadingRateKHR & operator=( VkPhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT
66981     {
66982       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR const *>( &rhs );
66983       return *this;
66984     }
66985 
operator VkPhysicalDeviceFragmentShadingRateKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR66986     operator VkPhysicalDeviceFragmentShadingRateKHR const &() const VULKAN_HPP_NOEXCEPT
66987     {
66988       return *reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateKHR *>( this );
66989     }
66990 
operator VkPhysicalDeviceFragmentShadingRateKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR66991     operator VkPhysicalDeviceFragmentShadingRateKHR &() VULKAN_HPP_NOEXCEPT
66992     {
66993       return *reinterpret_cast<VkPhysicalDeviceFragmentShadingRateKHR *>( this );
66994     }
66995 
66996 #if defined( VULKAN_HPP_USE_REFLECT )
66997 #  if 14 <= VULKAN_HPP_CPP_VERSION
66998     auto
66999 #  else
67000     std::
67001       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::SampleCountFlags const &, VULKAN_HPP_NAMESPACE::Extent2D const &>
67002 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR67003       reflect() const VULKAN_HPP_NOEXCEPT
67004     {
67005       return std::tie( sType, pNext, sampleCounts, fragmentSize );
67006     }
67007 #endif
67008 
67009 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67010     auto operator<=>( PhysicalDeviceFragmentShadingRateKHR const & ) const = default;
67011 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR67012     bool operator==( PhysicalDeviceFragmentShadingRateKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
67013     {
67014 #  if defined( VULKAN_HPP_USE_REFLECT )
67015       return this->reflect() == rhs.reflect();
67016 #  else
67017       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sampleCounts == rhs.sampleCounts ) && ( fragmentSize == rhs.fragmentSize );
67018 #  endif
67019     }
67020 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR67021     bool operator!=( PhysicalDeviceFragmentShadingRateKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
67022     {
67023       return !operator==( rhs );
67024     }
67025 #endif
67026 
67027   public:
67028     VULKAN_HPP_NAMESPACE::StructureType    sType        = StructureType::ePhysicalDeviceFragmentShadingRateKHR;
67029     void *                                 pNext        = {};
67030     VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts = {};
67031     VULKAN_HPP_NAMESPACE::Extent2D         fragmentSize = {};
67032   };
67033 
67034   template <>
67035   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShadingRateKHR>
67036   {
67037     using Type = PhysicalDeviceFragmentShadingRateKHR;
67038   };
67039 
67040   struct PhysicalDeviceFragmentShadingRatePropertiesKHR
67041   {
67042     using NativeType = VkPhysicalDeviceFragmentShadingRatePropertiesKHR;
67043 
67044     static const bool                                  allowDuplicate = false;
67045     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR;
67046 
67047 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShadingRatePropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR67048     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRatePropertiesKHR(
67049       VULKAN_HPP_NAMESPACE::Extent2D            minFragmentShadingRateAttachmentTexelSize_            = {},
67050       VULKAN_HPP_NAMESPACE::Extent2D            maxFragmentShadingRateAttachmentTexelSize_            = {},
67051       uint32_t                                  maxFragmentShadingRateAttachmentTexelSizeAspectRatio_ = {},
67052       VULKAN_HPP_NAMESPACE::Bool32              primitiveFragmentShadingRateWithMultipleViewports_    = {},
67053       VULKAN_HPP_NAMESPACE::Bool32              layeredShadingRateAttachments_                        = {},
67054       VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateNonTrivialCombinerOps_             = {},
67055       VULKAN_HPP_NAMESPACE::Extent2D            maxFragmentSize_                                      = {},
67056       uint32_t                                  maxFragmentSizeAspectRatio_                           = {},
67057       uint32_t                                  maxFragmentShadingRateCoverageSamples_                = {},
67058       VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateRasterizationSamples_           = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
67059       VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithShaderDepthStencilWrites_      = {},
67060       VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithSampleMask_                    = {},
67061       VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithShaderSampleMask_              = {},
67062       VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithConservativeRasterization_     = {},
67063       VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithFragmentShaderInterlock_       = {},
67064       VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithCustomSampleLocations_         = {},
67065       VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateStrictMultiplyCombiner_            = {},
67066       void *                                    pNext_                                                = nullptr ) VULKAN_HPP_NOEXCEPT
67067       : pNext{ pNext_ }
67068       , minFragmentShadingRateAttachmentTexelSize{ minFragmentShadingRateAttachmentTexelSize_ }
67069       , maxFragmentShadingRateAttachmentTexelSize{ maxFragmentShadingRateAttachmentTexelSize_ }
67070       , maxFragmentShadingRateAttachmentTexelSizeAspectRatio{ maxFragmentShadingRateAttachmentTexelSizeAspectRatio_ }
67071       , primitiveFragmentShadingRateWithMultipleViewports{ primitiveFragmentShadingRateWithMultipleViewports_ }
67072       , layeredShadingRateAttachments{ layeredShadingRateAttachments_ }
67073       , fragmentShadingRateNonTrivialCombinerOps{ fragmentShadingRateNonTrivialCombinerOps_ }
67074       , maxFragmentSize{ maxFragmentSize_ }
67075       , maxFragmentSizeAspectRatio{ maxFragmentSizeAspectRatio_ }
67076       , maxFragmentShadingRateCoverageSamples{ maxFragmentShadingRateCoverageSamples_ }
67077       , maxFragmentShadingRateRasterizationSamples{ maxFragmentShadingRateRasterizationSamples_ }
67078       , fragmentShadingRateWithShaderDepthStencilWrites{ fragmentShadingRateWithShaderDepthStencilWrites_ }
67079       , fragmentShadingRateWithSampleMask{ fragmentShadingRateWithSampleMask_ }
67080       , fragmentShadingRateWithShaderSampleMask{ fragmentShadingRateWithShaderSampleMask_ }
67081       , fragmentShadingRateWithConservativeRasterization{ fragmentShadingRateWithConservativeRasterization_ }
67082       , fragmentShadingRateWithFragmentShaderInterlock{ fragmentShadingRateWithFragmentShaderInterlock_ }
67083       , fragmentShadingRateWithCustomSampleLocations{ fragmentShadingRateWithCustomSampleLocations_ }
67084       , fragmentShadingRateStrictMultiplyCombiner{ fragmentShadingRateStrictMultiplyCombiner_ }
67085     {
67086     }
67087 
67088     VULKAN_HPP_CONSTEXPR
67089       PhysicalDeviceFragmentShadingRatePropertiesKHR( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67090 
PhysicalDeviceFragmentShadingRatePropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR67091     PhysicalDeviceFragmentShadingRatePropertiesKHR( VkPhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
67092       : PhysicalDeviceFragmentShadingRatePropertiesKHR( *reinterpret_cast<PhysicalDeviceFragmentShadingRatePropertiesKHR const *>( &rhs ) )
67093     {
67094     }
67095 
67096     PhysicalDeviceFragmentShadingRatePropertiesKHR & operator=( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67097 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67098 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR67099     PhysicalDeviceFragmentShadingRatePropertiesKHR & operator=( VkPhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
67100     {
67101       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR const *>( &rhs );
67102       return *this;
67103     }
67104 
operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR67105     operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
67106     {
67107       return *reinterpret_cast<const VkPhysicalDeviceFragmentShadingRatePropertiesKHR *>( this );
67108     }
67109 
operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR67110     operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR &() VULKAN_HPP_NOEXCEPT
67111     {
67112       return *reinterpret_cast<VkPhysicalDeviceFragmentShadingRatePropertiesKHR *>( this );
67113     }
67114 
67115 #if defined( VULKAN_HPP_USE_REFLECT )
67116 #  if 14 <= VULKAN_HPP_CPP_VERSION
67117     auto
67118 #  else
67119     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
67120                void * const &,
67121                VULKAN_HPP_NAMESPACE::Extent2D const &,
67122                VULKAN_HPP_NAMESPACE::Extent2D const &,
67123                uint32_t const &,
67124                VULKAN_HPP_NAMESPACE::Bool32 const &,
67125                VULKAN_HPP_NAMESPACE::Bool32 const &,
67126                VULKAN_HPP_NAMESPACE::Bool32 const &,
67127                VULKAN_HPP_NAMESPACE::Extent2D const &,
67128                uint32_t const &,
67129                uint32_t const &,
67130                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
67131                VULKAN_HPP_NAMESPACE::Bool32 const &,
67132                VULKAN_HPP_NAMESPACE::Bool32 const &,
67133                VULKAN_HPP_NAMESPACE::Bool32 const &,
67134                VULKAN_HPP_NAMESPACE::Bool32 const &,
67135                VULKAN_HPP_NAMESPACE::Bool32 const &,
67136                VULKAN_HPP_NAMESPACE::Bool32 const &,
67137                VULKAN_HPP_NAMESPACE::Bool32 const &>
67138 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR67139       reflect() const VULKAN_HPP_NOEXCEPT
67140     {
67141       return std::tie( sType,
67142                        pNext,
67143                        minFragmentShadingRateAttachmentTexelSize,
67144                        maxFragmentShadingRateAttachmentTexelSize,
67145                        maxFragmentShadingRateAttachmentTexelSizeAspectRatio,
67146                        primitiveFragmentShadingRateWithMultipleViewports,
67147                        layeredShadingRateAttachments,
67148                        fragmentShadingRateNonTrivialCombinerOps,
67149                        maxFragmentSize,
67150                        maxFragmentSizeAspectRatio,
67151                        maxFragmentShadingRateCoverageSamples,
67152                        maxFragmentShadingRateRasterizationSamples,
67153                        fragmentShadingRateWithShaderDepthStencilWrites,
67154                        fragmentShadingRateWithSampleMask,
67155                        fragmentShadingRateWithShaderSampleMask,
67156                        fragmentShadingRateWithConservativeRasterization,
67157                        fragmentShadingRateWithFragmentShaderInterlock,
67158                        fragmentShadingRateWithCustomSampleLocations,
67159                        fragmentShadingRateStrictMultiplyCombiner );
67160     }
67161 #endif
67162 
67163 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67164     auto operator<=>( PhysicalDeviceFragmentShadingRatePropertiesKHR const & ) const = default;
67165 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR67166     bool operator==( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
67167     {
67168 #  if defined( VULKAN_HPP_USE_REFLECT )
67169       return this->reflect() == rhs.reflect();
67170 #  else
67171       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) &&
67172              ( minFragmentShadingRateAttachmentTexelSize == rhs.minFragmentShadingRateAttachmentTexelSize ) &&
67173              ( maxFragmentShadingRateAttachmentTexelSize == rhs.maxFragmentShadingRateAttachmentTexelSize ) &&
67174              ( maxFragmentShadingRateAttachmentTexelSizeAspectRatio == rhs.maxFragmentShadingRateAttachmentTexelSizeAspectRatio ) &&
67175              ( primitiveFragmentShadingRateWithMultipleViewports == rhs.primitiveFragmentShadingRateWithMultipleViewports ) &&
67176              ( layeredShadingRateAttachments == rhs.layeredShadingRateAttachments ) &&
67177              ( fragmentShadingRateNonTrivialCombinerOps == rhs.fragmentShadingRateNonTrivialCombinerOps ) && ( maxFragmentSize == rhs.maxFragmentSize ) &&
67178              ( maxFragmentSizeAspectRatio == rhs.maxFragmentSizeAspectRatio ) &&
67179              ( maxFragmentShadingRateCoverageSamples == rhs.maxFragmentShadingRateCoverageSamples ) &&
67180              ( maxFragmentShadingRateRasterizationSamples == rhs.maxFragmentShadingRateRasterizationSamples ) &&
67181              ( fragmentShadingRateWithShaderDepthStencilWrites == rhs.fragmentShadingRateWithShaderDepthStencilWrites ) &&
67182              ( fragmentShadingRateWithSampleMask == rhs.fragmentShadingRateWithSampleMask ) &&
67183              ( fragmentShadingRateWithShaderSampleMask == rhs.fragmentShadingRateWithShaderSampleMask ) &&
67184              ( fragmentShadingRateWithConservativeRasterization == rhs.fragmentShadingRateWithConservativeRasterization ) &&
67185              ( fragmentShadingRateWithFragmentShaderInterlock == rhs.fragmentShadingRateWithFragmentShaderInterlock ) &&
67186              ( fragmentShadingRateWithCustomSampleLocations == rhs.fragmentShadingRateWithCustomSampleLocations ) &&
67187              ( fragmentShadingRateStrictMultiplyCombiner == rhs.fragmentShadingRateStrictMultiplyCombiner );
67188 #  endif
67189     }
67190 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR67191     bool operator!=( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
67192     {
67193       return !operator==( rhs );
67194     }
67195 #endif
67196 
67197   public:
67198     VULKAN_HPP_NAMESPACE::StructureType       sType                                     = StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR;
67199     void *                                    pNext                                     = {};
67200     VULKAN_HPP_NAMESPACE::Extent2D            minFragmentShadingRateAttachmentTexelSize = {};
67201     VULKAN_HPP_NAMESPACE::Extent2D            maxFragmentShadingRateAttachmentTexelSize = {};
67202     uint32_t                                  maxFragmentShadingRateAttachmentTexelSizeAspectRatio = {};
67203     VULKAN_HPP_NAMESPACE::Bool32              primitiveFragmentShadingRateWithMultipleViewports    = {};
67204     VULKAN_HPP_NAMESPACE::Bool32              layeredShadingRateAttachments                        = {};
67205     VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateNonTrivialCombinerOps             = {};
67206     VULKAN_HPP_NAMESPACE::Extent2D            maxFragmentSize                                      = {};
67207     uint32_t                                  maxFragmentSizeAspectRatio                           = {};
67208     uint32_t                                  maxFragmentShadingRateCoverageSamples                = {};
67209     VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateRasterizationSamples           = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
67210     VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithShaderDepthStencilWrites      = {};
67211     VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithSampleMask                    = {};
67212     VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithShaderSampleMask              = {};
67213     VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithConservativeRasterization     = {};
67214     VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithFragmentShaderInterlock       = {};
67215     VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateWithCustomSampleLocations         = {};
67216     VULKAN_HPP_NAMESPACE::Bool32              fragmentShadingRateStrictMultiplyCombiner            = {};
67217   };
67218 
67219   template <>
67220   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR>
67221   {
67222     using Type = PhysicalDeviceFragmentShadingRatePropertiesKHR;
67223   };
67224 
67225   struct PhysicalDeviceFrameBoundaryFeaturesEXT
67226   {
67227     using NativeType = VkPhysicalDeviceFrameBoundaryFeaturesEXT;
67228 
67229     static const bool                                  allowDuplicate = false;
67230     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceFrameBoundaryFeaturesEXT;
67231 
67232 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFrameBoundaryFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT67233     VULKAN_HPP_CONSTEXPR PhysicalDeviceFrameBoundaryFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 frameBoundary_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
67234       : pNext{ pNext_ }
67235       , frameBoundary{ frameBoundary_ }
67236     {
67237     }
67238 
67239     VULKAN_HPP_CONSTEXPR PhysicalDeviceFrameBoundaryFeaturesEXT( PhysicalDeviceFrameBoundaryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67240 
PhysicalDeviceFrameBoundaryFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT67241     PhysicalDeviceFrameBoundaryFeaturesEXT( VkPhysicalDeviceFrameBoundaryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
67242       : PhysicalDeviceFrameBoundaryFeaturesEXT( *reinterpret_cast<PhysicalDeviceFrameBoundaryFeaturesEXT const *>( &rhs ) )
67243     {
67244     }
67245 
67246     PhysicalDeviceFrameBoundaryFeaturesEXT & operator=( PhysicalDeviceFrameBoundaryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67247 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67248 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT67249     PhysicalDeviceFrameBoundaryFeaturesEXT & operator=( VkPhysicalDeviceFrameBoundaryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
67250     {
67251       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT const *>( &rhs );
67252       return *this;
67253     }
67254 
67255 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT67256     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFrameBoundaryFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
67257     {
67258       pNext = pNext_;
67259       return *this;
67260     }
67261 
setFrameBoundaryVULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT67262     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFrameBoundaryFeaturesEXT & setFrameBoundary( VULKAN_HPP_NAMESPACE::Bool32 frameBoundary_ ) VULKAN_HPP_NOEXCEPT
67263     {
67264       frameBoundary = frameBoundary_;
67265       return *this;
67266     }
67267 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
67268 
operator VkPhysicalDeviceFrameBoundaryFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT67269     operator VkPhysicalDeviceFrameBoundaryFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
67270     {
67271       return *reinterpret_cast<const VkPhysicalDeviceFrameBoundaryFeaturesEXT *>( this );
67272     }
67273 
operator VkPhysicalDeviceFrameBoundaryFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT67274     operator VkPhysicalDeviceFrameBoundaryFeaturesEXT &() VULKAN_HPP_NOEXCEPT
67275     {
67276       return *reinterpret_cast<VkPhysicalDeviceFrameBoundaryFeaturesEXT *>( this );
67277     }
67278 
67279 #if defined( VULKAN_HPP_USE_REFLECT )
67280 #  if 14 <= VULKAN_HPP_CPP_VERSION
67281     auto
67282 #  else
67283     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
67284 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT67285       reflect() const VULKAN_HPP_NOEXCEPT
67286     {
67287       return std::tie( sType, pNext, frameBoundary );
67288     }
67289 #endif
67290 
67291 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67292     auto operator<=>( PhysicalDeviceFrameBoundaryFeaturesEXT const & ) const = default;
67293 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT67294     bool operator==( PhysicalDeviceFrameBoundaryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
67295     {
67296 #  if defined( VULKAN_HPP_USE_REFLECT )
67297       return this->reflect() == rhs.reflect();
67298 #  else
67299       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( frameBoundary == rhs.frameBoundary );
67300 #  endif
67301     }
67302 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT67303     bool operator!=( PhysicalDeviceFrameBoundaryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
67304     {
67305       return !operator==( rhs );
67306     }
67307 #endif
67308 
67309   public:
67310     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::ePhysicalDeviceFrameBoundaryFeaturesEXT;
67311     void *                              pNext         = {};
67312     VULKAN_HPP_NAMESPACE::Bool32        frameBoundary = {};
67313   };
67314 
67315   template <>
67316   struct CppType<StructureType, StructureType::ePhysicalDeviceFrameBoundaryFeaturesEXT>
67317   {
67318     using Type = PhysicalDeviceFrameBoundaryFeaturesEXT;
67319   };
67320 
67321   struct PhysicalDeviceGlobalPriorityQueryFeaturesKHR
67322   {
67323     using NativeType = VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR;
67324 
67325     static const bool                                  allowDuplicate = false;
67326     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceGlobalPriorityQueryFeaturesKHR;
67327 
67328 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceGlobalPriorityQueryFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesKHR67329     VULKAN_HPP_CONSTEXPR PhysicalDeviceGlobalPriorityQueryFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 globalPriorityQuery_ = {},
67330                                                                        void *                       pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
67331       : pNext{ pNext_ }
67332       , globalPriorityQuery{ globalPriorityQuery_ }
67333     {
67334     }
67335 
67336     VULKAN_HPP_CONSTEXPR PhysicalDeviceGlobalPriorityQueryFeaturesKHR( PhysicalDeviceGlobalPriorityQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67337 
PhysicalDeviceGlobalPriorityQueryFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesKHR67338     PhysicalDeviceGlobalPriorityQueryFeaturesKHR( VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
67339       : PhysicalDeviceGlobalPriorityQueryFeaturesKHR( *reinterpret_cast<PhysicalDeviceGlobalPriorityQueryFeaturesKHR const *>( &rhs ) )
67340     {
67341     }
67342 
67343     PhysicalDeviceGlobalPriorityQueryFeaturesKHR & operator=( PhysicalDeviceGlobalPriorityQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67344 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67345 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesKHR67346     PhysicalDeviceGlobalPriorityQueryFeaturesKHR & operator=( VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
67347     {
67348       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesKHR const *>( &rhs );
67349       return *this;
67350     }
67351 
67352 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesKHR67353     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGlobalPriorityQueryFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
67354     {
67355       pNext = pNext_;
67356       return *this;
67357     }
67358 
67359     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGlobalPriorityQueryFeaturesKHR &
setGlobalPriorityQueryVULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesKHR67360       setGlobalPriorityQuery( VULKAN_HPP_NAMESPACE::Bool32 globalPriorityQuery_ ) VULKAN_HPP_NOEXCEPT
67361     {
67362       globalPriorityQuery = globalPriorityQuery_;
67363       return *this;
67364     }
67365 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
67366 
operator VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesKHR67367     operator VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
67368     {
67369       return *reinterpret_cast<const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR *>( this );
67370     }
67371 
operator VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesKHR67372     operator VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR &() VULKAN_HPP_NOEXCEPT
67373     {
67374       return *reinterpret_cast<VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR *>( this );
67375     }
67376 
67377 #if defined( VULKAN_HPP_USE_REFLECT )
67378 #  if 14 <= VULKAN_HPP_CPP_VERSION
67379     auto
67380 #  else
67381     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
67382 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesKHR67383       reflect() const VULKAN_HPP_NOEXCEPT
67384     {
67385       return std::tie( sType, pNext, globalPriorityQuery );
67386     }
67387 #endif
67388 
67389 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67390     auto operator<=>( PhysicalDeviceGlobalPriorityQueryFeaturesKHR const & ) const = default;
67391 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesKHR67392     bool operator==( PhysicalDeviceGlobalPriorityQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
67393     {
67394 #  if defined( VULKAN_HPP_USE_REFLECT )
67395       return this->reflect() == rhs.reflect();
67396 #  else
67397       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( globalPriorityQuery == rhs.globalPriorityQuery );
67398 #  endif
67399     }
67400 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesKHR67401     bool operator!=( PhysicalDeviceGlobalPriorityQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
67402     {
67403       return !operator==( rhs );
67404     }
67405 #endif
67406 
67407   public:
67408     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::ePhysicalDeviceGlobalPriorityQueryFeaturesKHR;
67409     void *                              pNext               = {};
67410     VULKAN_HPP_NAMESPACE::Bool32        globalPriorityQuery = {};
67411   };
67412 
67413   template <>
67414   struct CppType<StructureType, StructureType::ePhysicalDeviceGlobalPriorityQueryFeaturesKHR>
67415   {
67416     using Type = PhysicalDeviceGlobalPriorityQueryFeaturesKHR;
67417   };
67418 
67419   using PhysicalDeviceGlobalPriorityQueryFeaturesEXT = PhysicalDeviceGlobalPriorityQueryFeaturesKHR;
67420 
67421   struct PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT
67422   {
67423     using NativeType = VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT;
67424 
67425     static const bool                                  allowDuplicate = false;
67426     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceGraphicsPipelineLibraryFeaturesEXT;
67427 
67428 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceGraphicsPipelineLibraryFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT67429     VULKAN_HPP_CONSTEXPR PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 graphicsPipelineLibrary_ = {},
67430                                                                            void *                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
67431       : pNext{ pNext_ }
67432       , graphicsPipelineLibrary{ graphicsPipelineLibrary_ }
67433     {
67434     }
67435 
67436     VULKAN_HPP_CONSTEXPR
67437       PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT( PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67438 
PhysicalDeviceGraphicsPipelineLibraryFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT67439     PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT( VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
67440       : PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT( *reinterpret_cast<PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const *>( &rhs ) )
67441     {
67442     }
67443 
67444     PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT & operator=( PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67445 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67446 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT67447     PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT & operator=( VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
67448     {
67449       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const *>( &rhs );
67450       return *this;
67451     }
67452 
67453 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT67454     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
67455     {
67456       pNext = pNext_;
67457       return *this;
67458     }
67459 
67460     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT &
setGraphicsPipelineLibraryVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT67461       setGraphicsPipelineLibrary( VULKAN_HPP_NAMESPACE::Bool32 graphicsPipelineLibrary_ ) VULKAN_HPP_NOEXCEPT
67462     {
67463       graphicsPipelineLibrary = graphicsPipelineLibrary_;
67464       return *this;
67465     }
67466 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
67467 
operator VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT67468     operator VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
67469     {
67470       return *reinterpret_cast<const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT *>( this );
67471     }
67472 
operator VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT67473     operator VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT &() VULKAN_HPP_NOEXCEPT
67474     {
67475       return *reinterpret_cast<VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT *>( this );
67476     }
67477 
67478 #if defined( VULKAN_HPP_USE_REFLECT )
67479 #  if 14 <= VULKAN_HPP_CPP_VERSION
67480     auto
67481 #  else
67482     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
67483 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT67484       reflect() const VULKAN_HPP_NOEXCEPT
67485     {
67486       return std::tie( sType, pNext, graphicsPipelineLibrary );
67487     }
67488 #endif
67489 
67490 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67491     auto operator<=>( PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & ) const = default;
67492 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT67493     bool operator==( PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
67494     {
67495 #  if defined( VULKAN_HPP_USE_REFLECT )
67496       return this->reflect() == rhs.reflect();
67497 #  else
67498       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( graphicsPipelineLibrary == rhs.graphicsPipelineLibrary );
67499 #  endif
67500     }
67501 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT67502     bool operator!=( PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
67503     {
67504       return !operator==( rhs );
67505     }
67506 #endif
67507 
67508   public:
67509     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDeviceGraphicsPipelineLibraryFeaturesEXT;
67510     void *                              pNext                   = {};
67511     VULKAN_HPP_NAMESPACE::Bool32        graphicsPipelineLibrary = {};
67512   };
67513 
67514   template <>
67515   struct CppType<StructureType, StructureType::ePhysicalDeviceGraphicsPipelineLibraryFeaturesEXT>
67516   {
67517     using Type = PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT;
67518   };
67519 
67520   struct PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT
67521   {
67522     using NativeType = VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT;
67523 
67524     static const bool                                  allowDuplicate = false;
67525     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceGraphicsPipelineLibraryPropertiesEXT;
67526 
67527 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
67528     VULKAN_HPP_CONSTEXPR
PhysicalDeviceGraphicsPipelineLibraryPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT67529       PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT( VULKAN_HPP_NAMESPACE::Bool32 graphicsPipelineLibraryFastLinking_                        = {},
67530                                                           VULKAN_HPP_NAMESPACE::Bool32 graphicsPipelineLibraryIndependentInterpolationDecoration_ = {},
67531                                                           void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
67532       : pNext{ pNext_ }
67533       , graphicsPipelineLibraryFastLinking{ graphicsPipelineLibraryFastLinking_ }
67534       , graphicsPipelineLibraryIndependentInterpolationDecoration{ graphicsPipelineLibraryIndependentInterpolationDecoration_ }
67535     {
67536     }
67537 
67538     VULKAN_HPP_CONSTEXPR
67539       PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT( PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67540 
PhysicalDeviceGraphicsPipelineLibraryPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT67541     PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT( VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
67542       : PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT( *reinterpret_cast<PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const *>( &rhs ) )
67543     {
67544     }
67545 
67546     PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT &
67547       operator=( PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67548 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67549 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT67550     PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT & operator=( VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
67551     {
67552       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const *>( &rhs );
67553       return *this;
67554     }
67555 
67556 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT67557     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
67558     {
67559       pNext = pNext_;
67560       return *this;
67561     }
67562 
67563     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT &
setGraphicsPipelineLibraryFastLinkingVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT67564       setGraphicsPipelineLibraryFastLinking( VULKAN_HPP_NAMESPACE::Bool32 graphicsPipelineLibraryFastLinking_ ) VULKAN_HPP_NOEXCEPT
67565     {
67566       graphicsPipelineLibraryFastLinking = graphicsPipelineLibraryFastLinking_;
67567       return *this;
67568     }
67569 
setGraphicsPipelineLibraryIndependentInterpolationDecorationVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT67570     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT & setGraphicsPipelineLibraryIndependentInterpolationDecoration(
67571       VULKAN_HPP_NAMESPACE::Bool32 graphicsPipelineLibraryIndependentInterpolationDecoration_ ) VULKAN_HPP_NOEXCEPT
67572     {
67573       graphicsPipelineLibraryIndependentInterpolationDecoration = graphicsPipelineLibraryIndependentInterpolationDecoration_;
67574       return *this;
67575     }
67576 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
67577 
operator VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT67578     operator VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
67579     {
67580       return *reinterpret_cast<const VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT *>( this );
67581     }
67582 
operator VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT67583     operator VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT &() VULKAN_HPP_NOEXCEPT
67584     {
67585       return *reinterpret_cast<VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT *>( this );
67586     }
67587 
67588 #if defined( VULKAN_HPP_USE_REFLECT )
67589 #  if 14 <= VULKAN_HPP_CPP_VERSION
67590     auto
67591 #  else
67592     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
67593 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT67594       reflect() const VULKAN_HPP_NOEXCEPT
67595     {
67596       return std::tie( sType, pNext, graphicsPipelineLibraryFastLinking, graphicsPipelineLibraryIndependentInterpolationDecoration );
67597     }
67598 #endif
67599 
67600 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67601     auto operator<=>( PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & ) const = default;
67602 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT67603     bool operator==( PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
67604     {
67605 #  if defined( VULKAN_HPP_USE_REFLECT )
67606       return this->reflect() == rhs.reflect();
67607 #  else
67608       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( graphicsPipelineLibraryFastLinking == rhs.graphicsPipelineLibraryFastLinking ) &&
67609              ( graphicsPipelineLibraryIndependentInterpolationDecoration == rhs.graphicsPipelineLibraryIndependentInterpolationDecoration );
67610 #  endif
67611     }
67612 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT67613     bool operator!=( PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
67614     {
67615       return !operator==( rhs );
67616     }
67617 #endif
67618 
67619   public:
67620     VULKAN_HPP_NAMESPACE::StructureType sType                              = StructureType::ePhysicalDeviceGraphicsPipelineLibraryPropertiesEXT;
67621     void *                              pNext                              = {};
67622     VULKAN_HPP_NAMESPACE::Bool32        graphicsPipelineLibraryFastLinking = {};
67623     VULKAN_HPP_NAMESPACE::Bool32        graphicsPipelineLibraryIndependentInterpolationDecoration = {};
67624   };
67625 
67626   template <>
67627   struct CppType<StructureType, StructureType::ePhysicalDeviceGraphicsPipelineLibraryPropertiesEXT>
67628   {
67629     using Type = PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT;
67630   };
67631 
67632   struct PhysicalDeviceGroupProperties
67633   {
67634     using NativeType = VkPhysicalDeviceGroupProperties;
67635 
67636     static const bool                                  allowDuplicate = false;
67637     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceGroupProperties;
67638 
67639 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
67640     VULKAN_HPP_CONSTEXPR_14
PhysicalDeviceGroupPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties67641       PhysicalDeviceGroupProperties( uint32_t                                                                           physicalDeviceCount_ = {},
67642                                      std::array<VULKAN_HPP_NAMESPACE::PhysicalDevice, VK_MAX_DEVICE_GROUP_SIZE> const & physicalDevices_     = {},
67643                                      VULKAN_HPP_NAMESPACE::Bool32                                                       subsetAllocation_    = {},
67644                                      void *                                                                             pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
67645       : pNext{ pNext_ }
67646       , physicalDeviceCount{ physicalDeviceCount_ }
67647       , physicalDevices{ physicalDevices_ }
67648       , subsetAllocation{ subsetAllocation_ }
67649     {
67650     }
67651 
67652     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGroupProperties( PhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67653 
PhysicalDeviceGroupPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties67654     PhysicalDeviceGroupProperties( VkPhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
67655       : PhysicalDeviceGroupProperties( *reinterpret_cast<PhysicalDeviceGroupProperties const *>( &rhs ) )
67656     {
67657     }
67658 
67659 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PhysicalDeviceGroupPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties67660     PhysicalDeviceGroupProperties( VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::PhysicalDevice> const & physicalDevices_,
67661                                    VULKAN_HPP_NAMESPACE::Bool32                                                   subsetAllocation_ = {},
67662                                    void *                                                                         pNext_            = nullptr )
67663       : pNext( pNext_ )
67664       , physicalDeviceCount( std::min( static_cast<uint32_t>( physicalDevices_.size() ), VK_MAX_DEVICE_GROUP_SIZE ) )
67665       , subsetAllocation( subsetAllocation_ )
67666     {
67667       VULKAN_HPP_ASSERT( physicalDevices_.size() < VK_MAX_DEVICE_GROUP_SIZE );
67668       memcpy( physicalDevices, physicalDevices_.data(), physicalDeviceCount * sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevice ) );
67669     }
67670 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
67671 
67672     PhysicalDeviceGroupProperties & operator=( PhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67673 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67674 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties67675     PhysicalDeviceGroupProperties & operator=( VkPhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
67676     {
67677       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties const *>( &rhs );
67678       return *this;
67679     }
67680 
operator VkPhysicalDeviceGroupProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties67681     operator VkPhysicalDeviceGroupProperties const &() const VULKAN_HPP_NOEXCEPT
67682     {
67683       return *reinterpret_cast<const VkPhysicalDeviceGroupProperties *>( this );
67684     }
67685 
operator VkPhysicalDeviceGroupProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties67686     operator VkPhysicalDeviceGroupProperties &() VULKAN_HPP_NOEXCEPT
67687     {
67688       return *reinterpret_cast<VkPhysicalDeviceGroupProperties *>( this );
67689     }
67690 
67691 #if defined( VULKAN_HPP_USE_REFLECT )
67692 #  if 14 <= VULKAN_HPP_CPP_VERSION
67693     auto
67694 #  else
67695     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
67696                void * const &,
67697                uint32_t const &,
67698                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::PhysicalDevice, VK_MAX_DEVICE_GROUP_SIZE> const &,
67699                VULKAN_HPP_NAMESPACE::Bool32 const &>
67700 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties67701       reflect() const VULKAN_HPP_NOEXCEPT
67702     {
67703       return std::tie( sType, pNext, physicalDeviceCount, physicalDevices, subsetAllocation );
67704     }
67705 #endif
67706 
67707 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties67708     std::strong_ordering operator<=>( PhysicalDeviceGroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
67709     {
67710       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
67711         return cmp;
67712       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
67713         return cmp;
67714       if ( auto cmp = physicalDeviceCount <=> rhs.physicalDeviceCount; cmp != 0 )
67715         return cmp;
67716       for ( size_t i = 0; i < physicalDeviceCount; ++i )
67717       {
67718         if ( auto cmp = physicalDevices[i] <=> rhs.physicalDevices[i]; cmp != 0 )
67719           return cmp;
67720       }
67721       if ( auto cmp = subsetAllocation <=> rhs.subsetAllocation; cmp != 0 )
67722         return cmp;
67723 
67724       return std::strong_ordering::equivalent;
67725     }
67726 #endif
67727 
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties67728     bool operator==( PhysicalDeviceGroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
67729     {
67730       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( physicalDeviceCount == rhs.physicalDeviceCount ) &&
67731              ( memcmp( physicalDevices, rhs.physicalDevices, physicalDeviceCount * sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevice ) ) == 0 ) &&
67732              ( subsetAllocation == rhs.subsetAllocation );
67733     }
67734 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties67735     bool operator!=( PhysicalDeviceGroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
67736     {
67737       return !operator==( rhs );
67738     }
67739 
67740   public:
67741     VULKAN_HPP_NAMESPACE::StructureType                                                                  sType = StructureType::ePhysicalDeviceGroupProperties;
67742     void *                                                                                               pNext = {};
67743     uint32_t                                                                                             physicalDeviceCount = {};
67744     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::PhysicalDevice, VK_MAX_DEVICE_GROUP_SIZE> physicalDevices     = {};
67745     VULKAN_HPP_NAMESPACE::Bool32                                                                         subsetAllocation    = {};
67746   };
67747 
67748   template <>
67749   struct CppType<StructureType, StructureType::ePhysicalDeviceGroupProperties>
67750   {
67751     using Type = PhysicalDeviceGroupProperties;
67752   };
67753 
67754   using PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties;
67755 
67756   struct PhysicalDeviceHostImageCopyFeaturesEXT
67757   {
67758     using NativeType = VkPhysicalDeviceHostImageCopyFeaturesEXT;
67759 
67760     static const bool                                  allowDuplicate = false;
67761     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceHostImageCopyFeaturesEXT;
67762 
67763 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceHostImageCopyFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeaturesEXT67764     VULKAN_HPP_CONSTEXPR PhysicalDeviceHostImageCopyFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 hostImageCopy_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
67765       : pNext{ pNext_ }
67766       , hostImageCopy{ hostImageCopy_ }
67767     {
67768     }
67769 
67770     VULKAN_HPP_CONSTEXPR PhysicalDeviceHostImageCopyFeaturesEXT( PhysicalDeviceHostImageCopyFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67771 
PhysicalDeviceHostImageCopyFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeaturesEXT67772     PhysicalDeviceHostImageCopyFeaturesEXT( VkPhysicalDeviceHostImageCopyFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
67773       : PhysicalDeviceHostImageCopyFeaturesEXT( *reinterpret_cast<PhysicalDeviceHostImageCopyFeaturesEXT const *>( &rhs ) )
67774     {
67775     }
67776 
67777     PhysicalDeviceHostImageCopyFeaturesEXT & operator=( PhysicalDeviceHostImageCopyFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67778 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67779 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeaturesEXT67780     PhysicalDeviceHostImageCopyFeaturesEXT & operator=( VkPhysicalDeviceHostImageCopyFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
67781     {
67782       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeaturesEXT const *>( &rhs );
67783       return *this;
67784     }
67785 
67786 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeaturesEXT67787     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
67788     {
67789       pNext = pNext_;
67790       return *this;
67791     }
67792 
setHostImageCopyVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeaturesEXT67793     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyFeaturesEXT & setHostImageCopy( VULKAN_HPP_NAMESPACE::Bool32 hostImageCopy_ ) VULKAN_HPP_NOEXCEPT
67794     {
67795       hostImageCopy = hostImageCopy_;
67796       return *this;
67797     }
67798 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
67799 
operator VkPhysicalDeviceHostImageCopyFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeaturesEXT67800     operator VkPhysicalDeviceHostImageCopyFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
67801     {
67802       return *reinterpret_cast<const VkPhysicalDeviceHostImageCopyFeaturesEXT *>( this );
67803     }
67804 
operator VkPhysicalDeviceHostImageCopyFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeaturesEXT67805     operator VkPhysicalDeviceHostImageCopyFeaturesEXT &() VULKAN_HPP_NOEXCEPT
67806     {
67807       return *reinterpret_cast<VkPhysicalDeviceHostImageCopyFeaturesEXT *>( this );
67808     }
67809 
67810 #if defined( VULKAN_HPP_USE_REFLECT )
67811 #  if 14 <= VULKAN_HPP_CPP_VERSION
67812     auto
67813 #  else
67814     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
67815 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeaturesEXT67816       reflect() const VULKAN_HPP_NOEXCEPT
67817     {
67818       return std::tie( sType, pNext, hostImageCopy );
67819     }
67820 #endif
67821 
67822 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
67823     auto operator<=>( PhysicalDeviceHostImageCopyFeaturesEXT const & ) const = default;
67824 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeaturesEXT67825     bool operator==( PhysicalDeviceHostImageCopyFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
67826     {
67827 #  if defined( VULKAN_HPP_USE_REFLECT )
67828       return this->reflect() == rhs.reflect();
67829 #  else
67830       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hostImageCopy == rhs.hostImageCopy );
67831 #  endif
67832     }
67833 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeaturesEXT67834     bool operator!=( PhysicalDeviceHostImageCopyFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
67835     {
67836       return !operator==( rhs );
67837     }
67838 #endif
67839 
67840   public:
67841     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::ePhysicalDeviceHostImageCopyFeaturesEXT;
67842     void *                              pNext         = {};
67843     VULKAN_HPP_NAMESPACE::Bool32        hostImageCopy = {};
67844   };
67845 
67846   template <>
67847   struct CppType<StructureType, StructureType::ePhysicalDeviceHostImageCopyFeaturesEXT>
67848   {
67849     using Type = PhysicalDeviceHostImageCopyFeaturesEXT;
67850   };
67851 
67852   struct PhysicalDeviceHostImageCopyPropertiesEXT
67853   {
67854     using NativeType = VkPhysicalDeviceHostImageCopyPropertiesEXT;
67855 
67856     static const bool                                  allowDuplicate = false;
67857     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceHostImageCopyPropertiesEXT;
67858 
67859 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceHostImageCopyPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyPropertiesEXT67860     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyPropertiesEXT( uint32_t                                  copySrcLayoutCount_              = {},
67861                                                                       VULKAN_HPP_NAMESPACE::ImageLayout *       pCopySrcLayouts_                 = {},
67862                                                                       uint32_t                                  copyDstLayoutCount_              = {},
67863                                                                       VULKAN_HPP_NAMESPACE::ImageLayout *       pCopyDstLayouts_                 = {},
67864                                                                       std::array<uint8_t, VK_UUID_SIZE> const & optimalTilingLayoutUUID_         = {},
67865                                                                       VULKAN_HPP_NAMESPACE::Bool32              identicalMemoryTypeRequirements_ = {},
67866                                                                       void *                                    pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
67867       : pNext{ pNext_ }
67868       , copySrcLayoutCount{ copySrcLayoutCount_ }
67869       , pCopySrcLayouts{ pCopySrcLayouts_ }
67870       , copyDstLayoutCount{ copyDstLayoutCount_ }
67871       , pCopyDstLayouts{ pCopyDstLayouts_ }
67872       , optimalTilingLayoutUUID{ optimalTilingLayoutUUID_ }
67873       , identicalMemoryTypeRequirements{ identicalMemoryTypeRequirements_ }
67874     {
67875     }
67876 
67877     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyPropertiesEXT( PhysicalDeviceHostImageCopyPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67878 
PhysicalDeviceHostImageCopyPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyPropertiesEXT67879     PhysicalDeviceHostImageCopyPropertiesEXT( VkPhysicalDeviceHostImageCopyPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
67880       : PhysicalDeviceHostImageCopyPropertiesEXT( *reinterpret_cast<PhysicalDeviceHostImageCopyPropertiesEXT const *>( &rhs ) )
67881     {
67882     }
67883 
67884 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PhysicalDeviceHostImageCopyPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyPropertiesEXT67885     PhysicalDeviceHostImageCopyPropertiesEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::ImageLayout> const & copySrcLayouts_,
67886                                               VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::ImageLayout> const & copyDstLayouts_ = {},
67887                                               std::array<uint8_t, VK_UUID_SIZE> const & optimalTilingLayoutUUID_                                       = {},
67888                                               VULKAN_HPP_NAMESPACE::Bool32              identicalMemoryTypeRequirements_                               = {},
67889                                               void *                                    pNext_ = nullptr )
67890       : pNext( pNext_ )
67891       , copySrcLayoutCount( static_cast<uint32_t>( copySrcLayouts_.size() ) )
67892       , pCopySrcLayouts( copySrcLayouts_.data() )
67893       , copyDstLayoutCount( static_cast<uint32_t>( copyDstLayouts_.size() ) )
67894       , pCopyDstLayouts( copyDstLayouts_.data() )
67895       , optimalTilingLayoutUUID( optimalTilingLayoutUUID_ )
67896       , identicalMemoryTypeRequirements( identicalMemoryTypeRequirements_ )
67897     {
67898     }
67899 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
67900 
67901     PhysicalDeviceHostImageCopyPropertiesEXT & operator=( PhysicalDeviceHostImageCopyPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
67902 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
67903 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyPropertiesEXT67904     PhysicalDeviceHostImageCopyPropertiesEXT & operator=( VkPhysicalDeviceHostImageCopyPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
67905     {
67906       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyPropertiesEXT const *>( &rhs );
67907       return *this;
67908     }
67909 
67910 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyPropertiesEXT67911     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyPropertiesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
67912     {
67913       pNext = pNext_;
67914       return *this;
67915     }
67916 
setCopySrcLayoutCountVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyPropertiesEXT67917     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyPropertiesEXT & setCopySrcLayoutCount( uint32_t copySrcLayoutCount_ ) VULKAN_HPP_NOEXCEPT
67918     {
67919       copySrcLayoutCount = copySrcLayoutCount_;
67920       return *this;
67921     }
67922 
67923     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyPropertiesEXT &
setPCopySrcLayoutsVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyPropertiesEXT67924       setPCopySrcLayouts( VULKAN_HPP_NAMESPACE::ImageLayout * pCopySrcLayouts_ ) VULKAN_HPP_NOEXCEPT
67925     {
67926       pCopySrcLayouts = pCopySrcLayouts_;
67927       return *this;
67928     }
67929 
67930 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
67931     PhysicalDeviceHostImageCopyPropertiesEXT &
setCopySrcLayoutsVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyPropertiesEXT67932       setCopySrcLayouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::ImageLayout> const & copySrcLayouts_ ) VULKAN_HPP_NOEXCEPT
67933     {
67934       copySrcLayoutCount = static_cast<uint32_t>( copySrcLayouts_.size() );
67935       pCopySrcLayouts    = copySrcLayouts_.data();
67936       return *this;
67937     }
67938 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
67939 
setCopyDstLayoutCountVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyPropertiesEXT67940     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyPropertiesEXT & setCopyDstLayoutCount( uint32_t copyDstLayoutCount_ ) VULKAN_HPP_NOEXCEPT
67941     {
67942       copyDstLayoutCount = copyDstLayoutCount_;
67943       return *this;
67944     }
67945 
67946     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyPropertiesEXT &
setPCopyDstLayoutsVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyPropertiesEXT67947       setPCopyDstLayouts( VULKAN_HPP_NAMESPACE::ImageLayout * pCopyDstLayouts_ ) VULKAN_HPP_NOEXCEPT
67948     {
67949       pCopyDstLayouts = pCopyDstLayouts_;
67950       return *this;
67951     }
67952 
67953 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
67954     PhysicalDeviceHostImageCopyPropertiesEXT &
setCopyDstLayoutsVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyPropertiesEXT67955       setCopyDstLayouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::ImageLayout> const & copyDstLayouts_ ) VULKAN_HPP_NOEXCEPT
67956     {
67957       copyDstLayoutCount = static_cast<uint32_t>( copyDstLayouts_.size() );
67958       pCopyDstLayouts    = copyDstLayouts_.data();
67959       return *this;
67960     }
67961 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
67962 
67963     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyPropertiesEXT &
setOptimalTilingLayoutUUIDVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyPropertiesEXT67964       setOptimalTilingLayoutUUID( std::array<uint8_t, VK_UUID_SIZE> optimalTilingLayoutUUID_ ) VULKAN_HPP_NOEXCEPT
67965     {
67966       optimalTilingLayoutUUID = optimalTilingLayoutUUID_;
67967       return *this;
67968     }
67969 
67970     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyPropertiesEXT &
setIdenticalMemoryTypeRequirementsVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyPropertiesEXT67971       setIdenticalMemoryTypeRequirements( VULKAN_HPP_NAMESPACE::Bool32 identicalMemoryTypeRequirements_ ) VULKAN_HPP_NOEXCEPT
67972     {
67973       identicalMemoryTypeRequirements = identicalMemoryTypeRequirements_;
67974       return *this;
67975     }
67976 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
67977 
operator VkPhysicalDeviceHostImageCopyPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyPropertiesEXT67978     operator VkPhysicalDeviceHostImageCopyPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
67979     {
67980       return *reinterpret_cast<const VkPhysicalDeviceHostImageCopyPropertiesEXT *>( this );
67981     }
67982 
operator VkPhysicalDeviceHostImageCopyPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyPropertiesEXT67983     operator VkPhysicalDeviceHostImageCopyPropertiesEXT &() VULKAN_HPP_NOEXCEPT
67984     {
67985       return *reinterpret_cast<VkPhysicalDeviceHostImageCopyPropertiesEXT *>( this );
67986     }
67987 
67988 #if defined( VULKAN_HPP_USE_REFLECT )
67989 #  if 14 <= VULKAN_HPP_CPP_VERSION
67990     auto
67991 #  else
67992     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
67993                void * const &,
67994                uint32_t const &,
67995                VULKAN_HPP_NAMESPACE::ImageLayout * const &,
67996                uint32_t const &,
67997                VULKAN_HPP_NAMESPACE::ImageLayout * const &,
67998                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &,
67999                VULKAN_HPP_NAMESPACE::Bool32 const &>
68000 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyPropertiesEXT68001       reflect() const VULKAN_HPP_NOEXCEPT
68002     {
68003       return std::tie(
68004         sType, pNext, copySrcLayoutCount, pCopySrcLayouts, copyDstLayoutCount, pCopyDstLayouts, optimalTilingLayoutUUID, identicalMemoryTypeRequirements );
68005     }
68006 #endif
68007 
68008 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68009     auto operator<=>( PhysicalDeviceHostImageCopyPropertiesEXT const & ) const = default;
68010 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyPropertiesEXT68011     bool operator==( PhysicalDeviceHostImageCopyPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
68012     {
68013 #  if defined( VULKAN_HPP_USE_REFLECT )
68014       return this->reflect() == rhs.reflect();
68015 #  else
68016       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( copySrcLayoutCount == rhs.copySrcLayoutCount ) &&
68017              ( pCopySrcLayouts == rhs.pCopySrcLayouts ) && ( copyDstLayoutCount == rhs.copyDstLayoutCount ) && ( pCopyDstLayouts == rhs.pCopyDstLayouts ) &&
68018              ( optimalTilingLayoutUUID == rhs.optimalTilingLayoutUUID ) && ( identicalMemoryTypeRequirements == rhs.identicalMemoryTypeRequirements );
68019 #  endif
68020     }
68021 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyPropertiesEXT68022     bool operator!=( PhysicalDeviceHostImageCopyPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
68023     {
68024       return !operator==( rhs );
68025     }
68026 #endif
68027 
68028   public:
68029     VULKAN_HPP_NAMESPACE::StructureType                         sType                           = StructureType::ePhysicalDeviceHostImageCopyPropertiesEXT;
68030     void *                                                      pNext                           = {};
68031     uint32_t                                                    copySrcLayoutCount              = {};
68032     VULKAN_HPP_NAMESPACE::ImageLayout *                         pCopySrcLayouts                 = {};
68033     uint32_t                                                    copyDstLayoutCount              = {};
68034     VULKAN_HPP_NAMESPACE::ImageLayout *                         pCopyDstLayouts                 = {};
68035     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> optimalTilingLayoutUUID         = {};
68036     VULKAN_HPP_NAMESPACE::Bool32                                identicalMemoryTypeRequirements = {};
68037   };
68038 
68039   template <>
68040   struct CppType<StructureType, StructureType::ePhysicalDeviceHostImageCopyPropertiesEXT>
68041   {
68042     using Type = PhysicalDeviceHostImageCopyPropertiesEXT;
68043   };
68044 
68045   struct PhysicalDeviceHostQueryResetFeatures
68046   {
68047     using NativeType = VkPhysicalDeviceHostQueryResetFeatures;
68048 
68049     static const bool                                  allowDuplicate = false;
68050     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceHostQueryResetFeatures;
68051 
68052 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceHostQueryResetFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures68053     VULKAN_HPP_CONSTEXPR PhysicalDeviceHostQueryResetFeatures( VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
68054       : pNext{ pNext_ }
68055       , hostQueryReset{ hostQueryReset_ }
68056     {
68057     }
68058 
68059     VULKAN_HPP_CONSTEXPR PhysicalDeviceHostQueryResetFeatures( PhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68060 
PhysicalDeviceHostQueryResetFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures68061     PhysicalDeviceHostQueryResetFeatures( VkPhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
68062       : PhysicalDeviceHostQueryResetFeatures( *reinterpret_cast<PhysicalDeviceHostQueryResetFeatures const *>( &rhs ) )
68063     {
68064     }
68065 
68066     PhysicalDeviceHostQueryResetFeatures & operator=( PhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68067 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68068 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures68069     PhysicalDeviceHostQueryResetFeatures & operator=( VkPhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
68070     {
68071       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures const *>( &rhs );
68072       return *this;
68073     }
68074 
68075 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures68076     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostQueryResetFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
68077     {
68078       pNext = pNext_;
68079       return *this;
68080     }
68081 
setHostQueryResetVULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures68082     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostQueryResetFeatures & setHostQueryReset( VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_ ) VULKAN_HPP_NOEXCEPT
68083     {
68084       hostQueryReset = hostQueryReset_;
68085       return *this;
68086     }
68087 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
68088 
operator VkPhysicalDeviceHostQueryResetFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures68089     operator VkPhysicalDeviceHostQueryResetFeatures const &() const VULKAN_HPP_NOEXCEPT
68090     {
68091       return *reinterpret_cast<const VkPhysicalDeviceHostQueryResetFeatures *>( this );
68092     }
68093 
operator VkPhysicalDeviceHostQueryResetFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures68094     operator VkPhysicalDeviceHostQueryResetFeatures &() VULKAN_HPP_NOEXCEPT
68095     {
68096       return *reinterpret_cast<VkPhysicalDeviceHostQueryResetFeatures *>( this );
68097     }
68098 
68099 #if defined( VULKAN_HPP_USE_REFLECT )
68100 #  if 14 <= VULKAN_HPP_CPP_VERSION
68101     auto
68102 #  else
68103     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
68104 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures68105       reflect() const VULKAN_HPP_NOEXCEPT
68106     {
68107       return std::tie( sType, pNext, hostQueryReset );
68108     }
68109 #endif
68110 
68111 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68112     auto operator<=>( PhysicalDeviceHostQueryResetFeatures const & ) const = default;
68113 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures68114     bool operator==( PhysicalDeviceHostQueryResetFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
68115     {
68116 #  if defined( VULKAN_HPP_USE_REFLECT )
68117       return this->reflect() == rhs.reflect();
68118 #  else
68119       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hostQueryReset == rhs.hostQueryReset );
68120 #  endif
68121     }
68122 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures68123     bool operator!=( PhysicalDeviceHostQueryResetFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
68124     {
68125       return !operator==( rhs );
68126     }
68127 #endif
68128 
68129   public:
68130     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceHostQueryResetFeatures;
68131     void *                              pNext          = {};
68132     VULKAN_HPP_NAMESPACE::Bool32        hostQueryReset = {};
68133   };
68134 
68135   template <>
68136   struct CppType<StructureType, StructureType::ePhysicalDeviceHostQueryResetFeatures>
68137   {
68138     using Type = PhysicalDeviceHostQueryResetFeatures;
68139   };
68140 
68141   using PhysicalDeviceHostQueryResetFeaturesEXT = PhysicalDeviceHostQueryResetFeatures;
68142 
68143   struct PhysicalDeviceIDProperties
68144   {
68145     using NativeType = VkPhysicalDeviceIDProperties;
68146 
68147     static const bool                                  allowDuplicate = false;
68148     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceIdProperties;
68149 
68150 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceIDPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties68151     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIDProperties( std::array<uint8_t, VK_UUID_SIZE> const & deviceUUID_      = {},
68152                                                         std::array<uint8_t, VK_UUID_SIZE> const & driverUUID_      = {},
68153                                                         std::array<uint8_t, VK_LUID_SIZE> const & deviceLUID_      = {},
68154                                                         uint32_t                                  deviceNodeMask_  = {},
68155                                                         VULKAN_HPP_NAMESPACE::Bool32              deviceLUIDValid_ = {},
68156                                                         void *                                    pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
68157       : pNext{ pNext_ }
68158       , deviceUUID{ deviceUUID_ }
68159       , driverUUID{ driverUUID_ }
68160       , deviceLUID{ deviceLUID_ }
68161       , deviceNodeMask{ deviceNodeMask_ }
68162       , deviceLUIDValid{ deviceLUIDValid_ }
68163     {
68164     }
68165 
68166     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIDProperties( PhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68167 
PhysicalDeviceIDPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties68168     PhysicalDeviceIDProperties( VkPhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT
68169       : PhysicalDeviceIDProperties( *reinterpret_cast<PhysicalDeviceIDProperties const *>( &rhs ) )
68170     {
68171     }
68172 
68173     PhysicalDeviceIDProperties & operator=( PhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68174 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68175 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties68176     PhysicalDeviceIDProperties & operator=( VkPhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT
68177     {
68178       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties const *>( &rhs );
68179       return *this;
68180     }
68181 
operator VkPhysicalDeviceIDProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties68182     operator VkPhysicalDeviceIDProperties const &() const VULKAN_HPP_NOEXCEPT
68183     {
68184       return *reinterpret_cast<const VkPhysicalDeviceIDProperties *>( this );
68185     }
68186 
operator VkPhysicalDeviceIDProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties68187     operator VkPhysicalDeviceIDProperties &() VULKAN_HPP_NOEXCEPT
68188     {
68189       return *reinterpret_cast<VkPhysicalDeviceIDProperties *>( this );
68190     }
68191 
68192 #if defined( VULKAN_HPP_USE_REFLECT )
68193 #  if 14 <= VULKAN_HPP_CPP_VERSION
68194     auto
68195 #  else
68196     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
68197                void * const &,
68198                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &,
68199                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &,
68200                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_LUID_SIZE> const &,
68201                uint32_t const &,
68202                VULKAN_HPP_NAMESPACE::Bool32 const &>
68203 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties68204       reflect() const VULKAN_HPP_NOEXCEPT
68205     {
68206       return std::tie( sType, pNext, deviceUUID, driverUUID, deviceLUID, deviceNodeMask, deviceLUIDValid );
68207     }
68208 #endif
68209 
68210 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68211     auto operator<=>( PhysicalDeviceIDProperties const & ) const = default;
68212 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties68213     bool operator==( PhysicalDeviceIDProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
68214     {
68215 #  if defined( VULKAN_HPP_USE_REFLECT )
68216       return this->reflect() == rhs.reflect();
68217 #  else
68218       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceUUID == rhs.deviceUUID ) && ( driverUUID == rhs.driverUUID ) &&
68219              ( deviceLUID == rhs.deviceLUID ) && ( deviceNodeMask == rhs.deviceNodeMask ) && ( deviceLUIDValid == rhs.deviceLUIDValid );
68220 #  endif
68221     }
68222 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties68223     bool operator!=( PhysicalDeviceIDProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
68224     {
68225       return !operator==( rhs );
68226     }
68227 #endif
68228 
68229   public:
68230     VULKAN_HPP_NAMESPACE::StructureType                         sType           = StructureType::ePhysicalDeviceIdProperties;
68231     void *                                                      pNext           = {};
68232     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> deviceUUID      = {};
68233     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> driverUUID      = {};
68234     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_LUID_SIZE> deviceLUID      = {};
68235     uint32_t                                                    deviceNodeMask  = {};
68236     VULKAN_HPP_NAMESPACE::Bool32                                deviceLUIDValid = {};
68237   };
68238 
68239   template <>
68240   struct CppType<StructureType, StructureType::ePhysicalDeviceIdProperties>
68241   {
68242     using Type = PhysicalDeviceIDProperties;
68243   };
68244 
68245   using PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties;
68246 
68247   struct PhysicalDeviceImage2DViewOf3DFeaturesEXT
68248   {
68249     using NativeType = VkPhysicalDeviceImage2DViewOf3DFeaturesEXT;
68250 
68251     static const bool                                  allowDuplicate = false;
68252     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImage2DViewOf3DFeaturesEXT;
68253 
68254 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImage2DViewOf3DFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68255     VULKAN_HPP_CONSTEXPR PhysicalDeviceImage2DViewOf3DFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 image2DViewOf3D_   = {},
68256                                                                    VULKAN_HPP_NAMESPACE::Bool32 sampler2DViewOf3D_ = {},
68257                                                                    void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
68258       : pNext{ pNext_ }
68259       , image2DViewOf3D{ image2DViewOf3D_ }
68260       , sampler2DViewOf3D{ sampler2DViewOf3D_ }
68261     {
68262     }
68263 
68264     VULKAN_HPP_CONSTEXPR PhysicalDeviceImage2DViewOf3DFeaturesEXT( PhysicalDeviceImage2DViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68265 
PhysicalDeviceImage2DViewOf3DFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68266     PhysicalDeviceImage2DViewOf3DFeaturesEXT( VkPhysicalDeviceImage2DViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
68267       : PhysicalDeviceImage2DViewOf3DFeaturesEXT( *reinterpret_cast<PhysicalDeviceImage2DViewOf3DFeaturesEXT const *>( &rhs ) )
68268     {
68269     }
68270 
68271     PhysicalDeviceImage2DViewOf3DFeaturesEXT & operator=( PhysicalDeviceImage2DViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68272 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68273 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68274     PhysicalDeviceImage2DViewOf3DFeaturesEXT & operator=( VkPhysicalDeviceImage2DViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
68275     {
68276       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT const *>( &rhs );
68277       return *this;
68278     }
68279 
68280 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68281     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImage2DViewOf3DFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
68282     {
68283       pNext = pNext_;
68284       return *this;
68285     }
68286 
setImage2DViewOf3DVULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68287     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImage2DViewOf3DFeaturesEXT & setImage2DViewOf3D( VULKAN_HPP_NAMESPACE::Bool32 image2DViewOf3D_ ) VULKAN_HPP_NOEXCEPT
68288     {
68289       image2DViewOf3D = image2DViewOf3D_;
68290       return *this;
68291     }
68292 
68293     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImage2DViewOf3DFeaturesEXT &
setSampler2DViewOf3DVULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68294       setSampler2DViewOf3D( VULKAN_HPP_NAMESPACE::Bool32 sampler2DViewOf3D_ ) VULKAN_HPP_NOEXCEPT
68295     {
68296       sampler2DViewOf3D = sampler2DViewOf3D_;
68297       return *this;
68298     }
68299 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
68300 
operator VkPhysicalDeviceImage2DViewOf3DFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68301     operator VkPhysicalDeviceImage2DViewOf3DFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
68302     {
68303       return *reinterpret_cast<const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT *>( this );
68304     }
68305 
operator VkPhysicalDeviceImage2DViewOf3DFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68306     operator VkPhysicalDeviceImage2DViewOf3DFeaturesEXT &() VULKAN_HPP_NOEXCEPT
68307     {
68308       return *reinterpret_cast<VkPhysicalDeviceImage2DViewOf3DFeaturesEXT *>( this );
68309     }
68310 
68311 #if defined( VULKAN_HPP_USE_REFLECT )
68312 #  if 14 <= VULKAN_HPP_CPP_VERSION
68313     auto
68314 #  else
68315     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
68316 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68317       reflect() const VULKAN_HPP_NOEXCEPT
68318     {
68319       return std::tie( sType, pNext, image2DViewOf3D, sampler2DViewOf3D );
68320     }
68321 #endif
68322 
68323 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68324     auto operator<=>( PhysicalDeviceImage2DViewOf3DFeaturesEXT const & ) const = default;
68325 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68326     bool operator==( PhysicalDeviceImage2DViewOf3DFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
68327     {
68328 #  if defined( VULKAN_HPP_USE_REFLECT )
68329       return this->reflect() == rhs.reflect();
68330 #  else
68331       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image2DViewOf3D == rhs.image2DViewOf3D ) && ( sampler2DViewOf3D == rhs.sampler2DViewOf3D );
68332 #  endif
68333     }
68334 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT68335     bool operator!=( PhysicalDeviceImage2DViewOf3DFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
68336     {
68337       return !operator==( rhs );
68338     }
68339 #endif
68340 
68341   public:
68342     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceImage2DViewOf3DFeaturesEXT;
68343     void *                              pNext             = {};
68344     VULKAN_HPP_NAMESPACE::Bool32        image2DViewOf3D   = {};
68345     VULKAN_HPP_NAMESPACE::Bool32        sampler2DViewOf3D = {};
68346   };
68347 
68348   template <>
68349   struct CppType<StructureType, StructureType::ePhysicalDeviceImage2DViewOf3DFeaturesEXT>
68350   {
68351     using Type = PhysicalDeviceImage2DViewOf3DFeaturesEXT;
68352   };
68353 
68354   struct PhysicalDeviceImageAlignmentControlFeaturesMESA
68355   {
68356     using NativeType = VkPhysicalDeviceImageAlignmentControlFeaturesMESA;
68357 
68358     static const bool                                  allowDuplicate = false;
68359     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageAlignmentControlFeaturesMESA;
68360 
68361 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageAlignmentControlFeaturesMESAVULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA68362     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageAlignmentControlFeaturesMESA( VULKAN_HPP_NAMESPACE::Bool32 imageAlignmentControl_ = {},
68363                                                                           void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
68364       : pNext{ pNext_ }
68365       , imageAlignmentControl{ imageAlignmentControl_ }
68366     {
68367     }
68368 
68369     VULKAN_HPP_CONSTEXPR
68370       PhysicalDeviceImageAlignmentControlFeaturesMESA( PhysicalDeviceImageAlignmentControlFeaturesMESA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68371 
PhysicalDeviceImageAlignmentControlFeaturesMESAVULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA68372     PhysicalDeviceImageAlignmentControlFeaturesMESA( VkPhysicalDeviceImageAlignmentControlFeaturesMESA const & rhs ) VULKAN_HPP_NOEXCEPT
68373       : PhysicalDeviceImageAlignmentControlFeaturesMESA( *reinterpret_cast<PhysicalDeviceImageAlignmentControlFeaturesMESA const *>( &rhs ) )
68374     {
68375     }
68376 
68377     PhysicalDeviceImageAlignmentControlFeaturesMESA & operator=( PhysicalDeviceImageAlignmentControlFeaturesMESA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68378 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68379 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA68380     PhysicalDeviceImageAlignmentControlFeaturesMESA & operator=( VkPhysicalDeviceImageAlignmentControlFeaturesMESA const & rhs ) VULKAN_HPP_NOEXCEPT
68381     {
68382       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA const *>( &rhs );
68383       return *this;
68384     }
68385 
68386 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA68387     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageAlignmentControlFeaturesMESA & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
68388     {
68389       pNext = pNext_;
68390       return *this;
68391     }
68392 
68393     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageAlignmentControlFeaturesMESA &
setImageAlignmentControlVULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA68394       setImageAlignmentControl( VULKAN_HPP_NAMESPACE::Bool32 imageAlignmentControl_ ) VULKAN_HPP_NOEXCEPT
68395     {
68396       imageAlignmentControl = imageAlignmentControl_;
68397       return *this;
68398     }
68399 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
68400 
operator VkPhysicalDeviceImageAlignmentControlFeaturesMESA const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA68401     operator VkPhysicalDeviceImageAlignmentControlFeaturesMESA const &() const VULKAN_HPP_NOEXCEPT
68402     {
68403       return *reinterpret_cast<const VkPhysicalDeviceImageAlignmentControlFeaturesMESA *>( this );
68404     }
68405 
operator VkPhysicalDeviceImageAlignmentControlFeaturesMESA&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA68406     operator VkPhysicalDeviceImageAlignmentControlFeaturesMESA &() VULKAN_HPP_NOEXCEPT
68407     {
68408       return *reinterpret_cast<VkPhysicalDeviceImageAlignmentControlFeaturesMESA *>( this );
68409     }
68410 
68411 #if defined( VULKAN_HPP_USE_REFLECT )
68412 #  if 14 <= VULKAN_HPP_CPP_VERSION
68413     auto
68414 #  else
68415     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
68416 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA68417       reflect() const VULKAN_HPP_NOEXCEPT
68418     {
68419       return std::tie( sType, pNext, imageAlignmentControl );
68420     }
68421 #endif
68422 
68423 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68424     auto operator<=>( PhysicalDeviceImageAlignmentControlFeaturesMESA const & ) const = default;
68425 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA68426     bool operator==( PhysicalDeviceImageAlignmentControlFeaturesMESA const & rhs ) const VULKAN_HPP_NOEXCEPT
68427     {
68428 #  if defined( VULKAN_HPP_USE_REFLECT )
68429       return this->reflect() == rhs.reflect();
68430 #  else
68431       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageAlignmentControl == rhs.imageAlignmentControl );
68432 #  endif
68433     }
68434 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA68435     bool operator!=( PhysicalDeviceImageAlignmentControlFeaturesMESA const & rhs ) const VULKAN_HPP_NOEXCEPT
68436     {
68437       return !operator==( rhs );
68438     }
68439 #endif
68440 
68441   public:
68442     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceImageAlignmentControlFeaturesMESA;
68443     void *                              pNext                 = {};
68444     VULKAN_HPP_NAMESPACE::Bool32        imageAlignmentControl = {};
68445   };
68446 
68447   template <>
68448   struct CppType<StructureType, StructureType::ePhysicalDeviceImageAlignmentControlFeaturesMESA>
68449   {
68450     using Type = PhysicalDeviceImageAlignmentControlFeaturesMESA;
68451   };
68452 
68453   struct PhysicalDeviceImageAlignmentControlPropertiesMESA
68454   {
68455     using NativeType = VkPhysicalDeviceImageAlignmentControlPropertiesMESA;
68456 
68457     static const bool                                  allowDuplicate = false;
68458     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageAlignmentControlPropertiesMESA;
68459 
68460 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageAlignmentControlPropertiesMESAVULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA68461     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageAlignmentControlPropertiesMESA( uint32_t supportedImageAlignmentMask_ = {},
68462                                                                             void *   pNext_                       = nullptr ) VULKAN_HPP_NOEXCEPT
68463       : pNext{ pNext_ }
68464       , supportedImageAlignmentMask{ supportedImageAlignmentMask_ }
68465     {
68466     }
68467 
68468     VULKAN_HPP_CONSTEXPR
68469       PhysicalDeviceImageAlignmentControlPropertiesMESA( PhysicalDeviceImageAlignmentControlPropertiesMESA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68470 
PhysicalDeviceImageAlignmentControlPropertiesMESAVULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA68471     PhysicalDeviceImageAlignmentControlPropertiesMESA( VkPhysicalDeviceImageAlignmentControlPropertiesMESA const & rhs ) VULKAN_HPP_NOEXCEPT
68472       : PhysicalDeviceImageAlignmentControlPropertiesMESA( *reinterpret_cast<PhysicalDeviceImageAlignmentControlPropertiesMESA const *>( &rhs ) )
68473     {
68474     }
68475 
68476     PhysicalDeviceImageAlignmentControlPropertiesMESA &
68477       operator=( PhysicalDeviceImageAlignmentControlPropertiesMESA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68478 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68479 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA68480     PhysicalDeviceImageAlignmentControlPropertiesMESA & operator=( VkPhysicalDeviceImageAlignmentControlPropertiesMESA const & rhs ) VULKAN_HPP_NOEXCEPT
68481     {
68482       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA const *>( &rhs );
68483       return *this;
68484     }
68485 
68486 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA68487     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageAlignmentControlPropertiesMESA & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
68488     {
68489       pNext = pNext_;
68490       return *this;
68491     }
68492 
68493     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageAlignmentControlPropertiesMESA &
setSupportedImageAlignmentMaskVULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA68494       setSupportedImageAlignmentMask( uint32_t supportedImageAlignmentMask_ ) VULKAN_HPP_NOEXCEPT
68495     {
68496       supportedImageAlignmentMask = supportedImageAlignmentMask_;
68497       return *this;
68498     }
68499 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
68500 
operator VkPhysicalDeviceImageAlignmentControlPropertiesMESA const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA68501     operator VkPhysicalDeviceImageAlignmentControlPropertiesMESA const &() const VULKAN_HPP_NOEXCEPT
68502     {
68503       return *reinterpret_cast<const VkPhysicalDeviceImageAlignmentControlPropertiesMESA *>( this );
68504     }
68505 
operator VkPhysicalDeviceImageAlignmentControlPropertiesMESA&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA68506     operator VkPhysicalDeviceImageAlignmentControlPropertiesMESA &() VULKAN_HPP_NOEXCEPT
68507     {
68508       return *reinterpret_cast<VkPhysicalDeviceImageAlignmentControlPropertiesMESA *>( this );
68509     }
68510 
68511 #if defined( VULKAN_HPP_USE_REFLECT )
68512 #  if 14 <= VULKAN_HPP_CPP_VERSION
68513     auto
68514 #  else
68515     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
68516 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA68517       reflect() const VULKAN_HPP_NOEXCEPT
68518     {
68519       return std::tie( sType, pNext, supportedImageAlignmentMask );
68520     }
68521 #endif
68522 
68523 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68524     auto operator<=>( PhysicalDeviceImageAlignmentControlPropertiesMESA const & ) const = default;
68525 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA68526     bool operator==( PhysicalDeviceImageAlignmentControlPropertiesMESA const & rhs ) const VULKAN_HPP_NOEXCEPT
68527     {
68528 #  if defined( VULKAN_HPP_USE_REFLECT )
68529       return this->reflect() == rhs.reflect();
68530 #  else
68531       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportedImageAlignmentMask == rhs.supportedImageAlignmentMask );
68532 #  endif
68533     }
68534 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA68535     bool operator!=( PhysicalDeviceImageAlignmentControlPropertiesMESA const & rhs ) const VULKAN_HPP_NOEXCEPT
68536     {
68537       return !operator==( rhs );
68538     }
68539 #endif
68540 
68541   public:
68542     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceImageAlignmentControlPropertiesMESA;
68543     void *                              pNext                       = {};
68544     uint32_t                            supportedImageAlignmentMask = {};
68545   };
68546 
68547   template <>
68548   struct CppType<StructureType, StructureType::ePhysicalDeviceImageAlignmentControlPropertiesMESA>
68549   {
68550     using Type = PhysicalDeviceImageAlignmentControlPropertiesMESA;
68551   };
68552 
68553   struct PhysicalDeviceImageCompressionControlFeaturesEXT
68554   {
68555     using NativeType = VkPhysicalDeviceImageCompressionControlFeaturesEXT;
68556 
68557     static const bool                                  allowDuplicate = false;
68558     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageCompressionControlFeaturesEXT;
68559 
68560 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageCompressionControlFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT68561     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageCompressionControlFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 imageCompressionControl_ = {},
68562                                                                            void *                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
68563       : pNext{ pNext_ }
68564       , imageCompressionControl{ imageCompressionControl_ }
68565     {
68566     }
68567 
68568     VULKAN_HPP_CONSTEXPR
68569       PhysicalDeviceImageCompressionControlFeaturesEXT( PhysicalDeviceImageCompressionControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68570 
PhysicalDeviceImageCompressionControlFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT68571     PhysicalDeviceImageCompressionControlFeaturesEXT( VkPhysicalDeviceImageCompressionControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
68572       : PhysicalDeviceImageCompressionControlFeaturesEXT( *reinterpret_cast<PhysicalDeviceImageCompressionControlFeaturesEXT const *>( &rhs ) )
68573     {
68574     }
68575 
68576     PhysicalDeviceImageCompressionControlFeaturesEXT & operator=( PhysicalDeviceImageCompressionControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68577 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68578 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT68579     PhysicalDeviceImageCompressionControlFeaturesEXT & operator=( VkPhysicalDeviceImageCompressionControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
68580     {
68581       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT const *>( &rhs );
68582       return *this;
68583     }
68584 
68585 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT68586     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageCompressionControlFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
68587     {
68588       pNext = pNext_;
68589       return *this;
68590     }
68591 
68592     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageCompressionControlFeaturesEXT &
setImageCompressionControlVULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT68593       setImageCompressionControl( VULKAN_HPP_NAMESPACE::Bool32 imageCompressionControl_ ) VULKAN_HPP_NOEXCEPT
68594     {
68595       imageCompressionControl = imageCompressionControl_;
68596       return *this;
68597     }
68598 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
68599 
operator VkPhysicalDeviceImageCompressionControlFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT68600     operator VkPhysicalDeviceImageCompressionControlFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
68601     {
68602       return *reinterpret_cast<const VkPhysicalDeviceImageCompressionControlFeaturesEXT *>( this );
68603     }
68604 
operator VkPhysicalDeviceImageCompressionControlFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT68605     operator VkPhysicalDeviceImageCompressionControlFeaturesEXT &() VULKAN_HPP_NOEXCEPT
68606     {
68607       return *reinterpret_cast<VkPhysicalDeviceImageCompressionControlFeaturesEXT *>( this );
68608     }
68609 
68610 #if defined( VULKAN_HPP_USE_REFLECT )
68611 #  if 14 <= VULKAN_HPP_CPP_VERSION
68612     auto
68613 #  else
68614     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
68615 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT68616       reflect() const VULKAN_HPP_NOEXCEPT
68617     {
68618       return std::tie( sType, pNext, imageCompressionControl );
68619     }
68620 #endif
68621 
68622 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68623     auto operator<=>( PhysicalDeviceImageCompressionControlFeaturesEXT const & ) const = default;
68624 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT68625     bool operator==( PhysicalDeviceImageCompressionControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
68626     {
68627 #  if defined( VULKAN_HPP_USE_REFLECT )
68628       return this->reflect() == rhs.reflect();
68629 #  else
68630       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageCompressionControl == rhs.imageCompressionControl );
68631 #  endif
68632     }
68633 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT68634     bool operator!=( PhysicalDeviceImageCompressionControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
68635     {
68636       return !operator==( rhs );
68637     }
68638 #endif
68639 
68640   public:
68641     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDeviceImageCompressionControlFeaturesEXT;
68642     void *                              pNext                   = {};
68643     VULKAN_HPP_NAMESPACE::Bool32        imageCompressionControl = {};
68644   };
68645 
68646   template <>
68647   struct CppType<StructureType, StructureType::ePhysicalDeviceImageCompressionControlFeaturesEXT>
68648   {
68649     using Type = PhysicalDeviceImageCompressionControlFeaturesEXT;
68650   };
68651 
68652   struct PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
68653   {
68654     using NativeType = VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT;
68655 
68656     static const bool                                  allowDuplicate = false;
68657     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageCompressionControlSwapchainFeaturesEXT;
68658 
68659 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageCompressionControlSwapchainFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT68660     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 imageCompressionControlSwapchain_ = {},
68661                                                                                     void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
68662       : pNext{ pNext_ }
68663       , imageCompressionControlSwapchain{ imageCompressionControlSwapchain_ }
68664     {
68665     }
68666 
68667     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT( PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & rhs )
68668       VULKAN_HPP_NOEXCEPT = default;
68669 
PhysicalDeviceImageCompressionControlSwapchainFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT68670     PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT( VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
68671       : PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT(
68672           *reinterpret_cast<PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const *>( &rhs ) )
68673     {
68674     }
68675 
68676     PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT &
68677       operator=( PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68678 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68679 
68680     PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT68681       operator=( VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
68682     {
68683       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const *>( &rhs );
68684       return *this;
68685     }
68686 
68687 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT68688     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
68689     {
68690       pNext = pNext_;
68691       return *this;
68692     }
68693 
68694     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT &
setImageCompressionControlSwapchainVULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT68695       setImageCompressionControlSwapchain( VULKAN_HPP_NAMESPACE::Bool32 imageCompressionControlSwapchain_ ) VULKAN_HPP_NOEXCEPT
68696     {
68697       imageCompressionControlSwapchain = imageCompressionControlSwapchain_;
68698       return *this;
68699     }
68700 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
68701 
operator VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT68702     operator VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
68703     {
68704       return *reinterpret_cast<const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT *>( this );
68705     }
68706 
operator VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT68707     operator VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT &() VULKAN_HPP_NOEXCEPT
68708     {
68709       return *reinterpret_cast<VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT *>( this );
68710     }
68711 
68712 #if defined( VULKAN_HPP_USE_REFLECT )
68713 #  if 14 <= VULKAN_HPP_CPP_VERSION
68714     auto
68715 #  else
68716     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
68717 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT68718       reflect() const VULKAN_HPP_NOEXCEPT
68719     {
68720       return std::tie( sType, pNext, imageCompressionControlSwapchain );
68721     }
68722 #endif
68723 
68724 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68725     auto operator<=>( PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & ) const = default;
68726 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT68727     bool operator==( PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
68728     {
68729 #  if defined( VULKAN_HPP_USE_REFLECT )
68730       return this->reflect() == rhs.reflect();
68731 #  else
68732       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageCompressionControlSwapchain == rhs.imageCompressionControlSwapchain );
68733 #  endif
68734     }
68735 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT68736     bool operator!=( PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
68737     {
68738       return !operator==( rhs );
68739     }
68740 #endif
68741 
68742   public:
68743     VULKAN_HPP_NAMESPACE::StructureType sType                            = StructureType::ePhysicalDeviceImageCompressionControlSwapchainFeaturesEXT;
68744     void *                              pNext                            = {};
68745     VULKAN_HPP_NAMESPACE::Bool32        imageCompressionControlSwapchain = {};
68746   };
68747 
68748   template <>
68749   struct CppType<StructureType, StructureType::ePhysicalDeviceImageCompressionControlSwapchainFeaturesEXT>
68750   {
68751     using Type = PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT;
68752   };
68753 
68754   struct PhysicalDeviceImageDrmFormatModifierInfoEXT
68755   {
68756     using NativeType = VkPhysicalDeviceImageDrmFormatModifierInfoEXT;
68757 
68758     static const bool                                  allowDuplicate = false;
68759     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT;
68760 
68761 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
68762     VULKAN_HPP_CONSTEXPR
PhysicalDeviceImageDrmFormatModifierInfoEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT68763       PhysicalDeviceImageDrmFormatModifierInfoEXT( uint64_t                          drmFormatModifier_     = {},
68764                                                    VULKAN_HPP_NAMESPACE::SharingMode sharingMode_           = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive,
68765                                                    uint32_t                          queueFamilyIndexCount_ = {},
68766                                                    const uint32_t *                  pQueueFamilyIndices_   = {},
68767                                                    const void *                      pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
68768       : pNext{ pNext_ }
68769       , drmFormatModifier{ drmFormatModifier_ }
68770       , sharingMode{ sharingMode_ }
68771       , queueFamilyIndexCount{ queueFamilyIndexCount_ }
68772       , pQueueFamilyIndices{ pQueueFamilyIndices_ }
68773     {
68774     }
68775 
68776     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageDrmFormatModifierInfoEXT( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68777 
PhysicalDeviceImageDrmFormatModifierInfoEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT68778     PhysicalDeviceImageDrmFormatModifierInfoEXT( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
68779       : PhysicalDeviceImageDrmFormatModifierInfoEXT( *reinterpret_cast<PhysicalDeviceImageDrmFormatModifierInfoEXT const *>( &rhs ) )
68780     {
68781     }
68782 
68783 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PhysicalDeviceImageDrmFormatModifierInfoEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT68784     PhysicalDeviceImageDrmFormatModifierInfoEXT( uint64_t                                                              drmFormatModifier_,
68785                                                  VULKAN_HPP_NAMESPACE::SharingMode                                     sharingMode_,
68786                                                  VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_,
68787                                                  const void *                                                          pNext_ = nullptr )
68788       : pNext( pNext_ )
68789       , drmFormatModifier( drmFormatModifier_ )
68790       , sharingMode( sharingMode_ )
68791       , queueFamilyIndexCount( static_cast<uint32_t>( queueFamilyIndices_.size() ) )
68792       , pQueueFamilyIndices( queueFamilyIndices_.data() )
68793     {
68794     }
68795 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
68796 
68797     PhysicalDeviceImageDrmFormatModifierInfoEXT & operator=( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68798 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68799 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT68800     PhysicalDeviceImageDrmFormatModifierInfoEXT & operator=( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
68801     {
68802       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT const *>( &rhs );
68803       return *this;
68804     }
68805 
68806 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT68807     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
68808     {
68809       pNext = pNext_;
68810       return *this;
68811     }
68812 
setDrmFormatModifierVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT68813     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & setDrmFormatModifier( uint64_t drmFormatModifier_ ) VULKAN_HPP_NOEXCEPT
68814     {
68815       drmFormatModifier = drmFormatModifier_;
68816       return *this;
68817     }
68818 
setSharingModeVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT68819     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & setSharingMode( VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ ) VULKAN_HPP_NOEXCEPT
68820     {
68821       sharingMode = sharingMode_;
68822       return *this;
68823     }
68824 
setQueueFamilyIndexCountVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT68825     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT
68826     {
68827       queueFamilyIndexCount = queueFamilyIndexCount_;
68828       return *this;
68829     }
68830 
setPQueueFamilyIndicesVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT68831     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & setPQueueFamilyIndices( const uint32_t * pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
68832     {
68833       pQueueFamilyIndices = pQueueFamilyIndices_;
68834       return *this;
68835     }
68836 
68837 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
68838     PhysicalDeviceImageDrmFormatModifierInfoEXT &
setQueueFamilyIndicesVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT68839       setQueueFamilyIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
68840     {
68841       queueFamilyIndexCount = static_cast<uint32_t>( queueFamilyIndices_.size() );
68842       pQueueFamilyIndices   = queueFamilyIndices_.data();
68843       return *this;
68844     }
68845 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
68846 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
68847 
operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT68848     operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT const &() const VULKAN_HPP_NOEXCEPT
68849     {
68850       return *reinterpret_cast<const VkPhysicalDeviceImageDrmFormatModifierInfoEXT *>( this );
68851     }
68852 
operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT68853     operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT &() VULKAN_HPP_NOEXCEPT
68854     {
68855       return *reinterpret_cast<VkPhysicalDeviceImageDrmFormatModifierInfoEXT *>( this );
68856     }
68857 
68858 #if defined( VULKAN_HPP_USE_REFLECT )
68859 #  if 14 <= VULKAN_HPP_CPP_VERSION
68860     auto
68861 #  else
68862     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
68863                const void * const &,
68864                uint64_t const &,
68865                VULKAN_HPP_NAMESPACE::SharingMode const &,
68866                uint32_t const &,
68867                const uint32_t * const &>
68868 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT68869       reflect() const VULKAN_HPP_NOEXCEPT
68870     {
68871       return std::tie( sType, pNext, drmFormatModifier, sharingMode, queueFamilyIndexCount, pQueueFamilyIndices );
68872     }
68873 #endif
68874 
68875 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
68876     auto operator<=>( PhysicalDeviceImageDrmFormatModifierInfoEXT const & ) const = default;
68877 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT68878     bool operator==( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
68879     {
68880 #  if defined( VULKAN_HPP_USE_REFLECT )
68881       return this->reflect() == rhs.reflect();
68882 #  else
68883       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( drmFormatModifier == rhs.drmFormatModifier ) && ( sharingMode == rhs.sharingMode ) &&
68884              ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
68885 #  endif
68886     }
68887 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT68888     bool operator!=( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
68889     {
68890       return !operator==( rhs );
68891     }
68892 #endif
68893 
68894   public:
68895     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT;
68896     const void *                        pNext                 = {};
68897     uint64_t                            drmFormatModifier     = {};
68898     VULKAN_HPP_NAMESPACE::SharingMode   sharingMode           = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive;
68899     uint32_t                            queueFamilyIndexCount = {};
68900     const uint32_t *                    pQueueFamilyIndices   = {};
68901   };
68902 
68903   template <>
68904   struct CppType<StructureType, StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT>
68905   {
68906     using Type = PhysicalDeviceImageDrmFormatModifierInfoEXT;
68907   };
68908 
68909   struct PhysicalDeviceImageFormatInfo2
68910   {
68911     using NativeType = VkPhysicalDeviceImageFormatInfo2;
68912 
68913     static const bool                                  allowDuplicate = false;
68914     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageFormatInfo2;
68915 
68916 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageFormatInfo2VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo268917     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageFormatInfo2( VULKAN_HPP_NAMESPACE::Format           format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
68918                                                          VULKAN_HPP_NAMESPACE::ImageType        type_   = VULKAN_HPP_NAMESPACE::ImageType::e1D,
68919                                                          VULKAN_HPP_NAMESPACE::ImageTiling      tiling_ = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal,
68920                                                          VULKAN_HPP_NAMESPACE::ImageUsageFlags  usage_  = {},
68921                                                          VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_  = {},
68922                                                          const void *                           pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
68923       : pNext{ pNext_ }
68924       , format{ format_ }
68925       , type{ type_ }
68926       , tiling{ tiling_ }
68927       , usage{ usage_ }
68928       , flags{ flags_ }
68929     {
68930     }
68931 
68932     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageFormatInfo2( PhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68933 
PhysicalDeviceImageFormatInfo2VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo268934     PhysicalDeviceImageFormatInfo2( VkPhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
68935       : PhysicalDeviceImageFormatInfo2( *reinterpret_cast<PhysicalDeviceImageFormatInfo2 const *>( &rhs ) )
68936     {
68937     }
68938 
68939     PhysicalDeviceImageFormatInfo2 & operator=( PhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
68940 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
68941 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo268942     PhysicalDeviceImageFormatInfo2 & operator=( VkPhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
68943     {
68944       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 const *>( &rhs );
68945       return *this;
68946     }
68947 
68948 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo268949     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
68950     {
68951       pNext = pNext_;
68952       return *this;
68953     }
68954 
setFormatVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo268955     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
68956     {
68957       format = format_;
68958       return *this;
68959     }
68960 
setTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo268961     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setType( VULKAN_HPP_NAMESPACE::ImageType type_ ) VULKAN_HPP_NOEXCEPT
68962     {
68963       type = type_;
68964       return *this;
68965     }
68966 
setTilingVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo268967     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setTiling( VULKAN_HPP_NAMESPACE::ImageTiling tiling_ ) VULKAN_HPP_NOEXCEPT
68968     {
68969       tiling = tiling_;
68970       return *this;
68971     }
68972 
setUsageVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo268973     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
68974     {
68975       usage = usage_;
68976       return *this;
68977     }
68978 
setFlagsVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo268979     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setFlags( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
68980     {
68981       flags = flags_;
68982       return *this;
68983     }
68984 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
68985 
operator VkPhysicalDeviceImageFormatInfo2 const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo268986     operator VkPhysicalDeviceImageFormatInfo2 const &() const VULKAN_HPP_NOEXCEPT
68987     {
68988       return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2 *>( this );
68989     }
68990 
operator VkPhysicalDeviceImageFormatInfo2&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo268991     operator VkPhysicalDeviceImageFormatInfo2 &() VULKAN_HPP_NOEXCEPT
68992     {
68993       return *reinterpret_cast<VkPhysicalDeviceImageFormatInfo2 *>( this );
68994     }
68995 
68996 #if defined( VULKAN_HPP_USE_REFLECT )
68997 #  if 14 <= VULKAN_HPP_CPP_VERSION
68998     auto
68999 #  else
69000     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
69001                const void * const &,
69002                VULKAN_HPP_NAMESPACE::Format const &,
69003                VULKAN_HPP_NAMESPACE::ImageType const &,
69004                VULKAN_HPP_NAMESPACE::ImageTiling const &,
69005                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &,
69006                VULKAN_HPP_NAMESPACE::ImageCreateFlags const &>
69007 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo269008       reflect() const VULKAN_HPP_NOEXCEPT
69009     {
69010       return std::tie( sType, pNext, format, type, tiling, usage, flags );
69011     }
69012 #endif
69013 
69014 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69015     auto operator<=>( PhysicalDeviceImageFormatInfo2 const & ) const = default;
69016 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo269017     bool operator==( PhysicalDeviceImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
69018     {
69019 #  if defined( VULKAN_HPP_USE_REFLECT )
69020       return this->reflect() == rhs.reflect();
69021 #  else
69022       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( type == rhs.type ) && ( tiling == rhs.tiling ) &&
69023              ( usage == rhs.usage ) && ( flags == rhs.flags );
69024 #  endif
69025     }
69026 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo269027     bool operator!=( PhysicalDeviceImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
69028     {
69029       return !operator==( rhs );
69030     }
69031 #endif
69032 
69033   public:
69034     VULKAN_HPP_NAMESPACE::StructureType    sType  = StructureType::ePhysicalDeviceImageFormatInfo2;
69035     const void *                           pNext  = {};
69036     VULKAN_HPP_NAMESPACE::Format           format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
69037     VULKAN_HPP_NAMESPACE::ImageType        type   = VULKAN_HPP_NAMESPACE::ImageType::e1D;
69038     VULKAN_HPP_NAMESPACE::ImageTiling      tiling = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal;
69039     VULKAN_HPP_NAMESPACE::ImageUsageFlags  usage  = {};
69040     VULKAN_HPP_NAMESPACE::ImageCreateFlags flags  = {};
69041   };
69042 
69043   template <>
69044   struct CppType<StructureType, StructureType::ePhysicalDeviceImageFormatInfo2>
69045   {
69046     using Type = PhysicalDeviceImageFormatInfo2;
69047   };
69048 
69049   using PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2;
69050 
69051   struct PhysicalDeviceImageProcessing2FeaturesQCOM
69052   {
69053     using NativeType = VkPhysicalDeviceImageProcessing2FeaturesQCOM;
69054 
69055     static const bool                                  allowDuplicate = false;
69056     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageProcessing2FeaturesQCOM;
69057 
69058 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageProcessing2FeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM69059     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessing2FeaturesQCOM( VULKAN_HPP_NAMESPACE::Bool32 textureBlockMatch2_ = {},
69060                                                                      void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
69061       : pNext{ pNext_ }
69062       , textureBlockMatch2{ textureBlockMatch2_ }
69063     {
69064     }
69065 
69066     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessing2FeaturesQCOM( PhysicalDeviceImageProcessing2FeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69067 
PhysicalDeviceImageProcessing2FeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM69068     PhysicalDeviceImageProcessing2FeaturesQCOM( VkPhysicalDeviceImageProcessing2FeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
69069       : PhysicalDeviceImageProcessing2FeaturesQCOM( *reinterpret_cast<PhysicalDeviceImageProcessing2FeaturesQCOM const *>( &rhs ) )
69070     {
69071     }
69072 
69073     PhysicalDeviceImageProcessing2FeaturesQCOM & operator=( PhysicalDeviceImageProcessing2FeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69074 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69075 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM69076     PhysicalDeviceImageProcessing2FeaturesQCOM & operator=( VkPhysicalDeviceImageProcessing2FeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
69077     {
69078       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM const *>( &rhs );
69079       return *this;
69080     }
69081 
69082 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM69083     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessing2FeaturesQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
69084     {
69085       pNext = pNext_;
69086       return *this;
69087     }
69088 
69089     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessing2FeaturesQCOM &
setTextureBlockMatch2VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM69090       setTextureBlockMatch2( VULKAN_HPP_NAMESPACE::Bool32 textureBlockMatch2_ ) VULKAN_HPP_NOEXCEPT
69091     {
69092       textureBlockMatch2 = textureBlockMatch2_;
69093       return *this;
69094     }
69095 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69096 
operator VkPhysicalDeviceImageProcessing2FeaturesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM69097     operator VkPhysicalDeviceImageProcessing2FeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT
69098     {
69099       return *reinterpret_cast<const VkPhysicalDeviceImageProcessing2FeaturesQCOM *>( this );
69100     }
69101 
operator VkPhysicalDeviceImageProcessing2FeaturesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM69102     operator VkPhysicalDeviceImageProcessing2FeaturesQCOM &() VULKAN_HPP_NOEXCEPT
69103     {
69104       return *reinterpret_cast<VkPhysicalDeviceImageProcessing2FeaturesQCOM *>( this );
69105     }
69106 
69107 #if defined( VULKAN_HPP_USE_REFLECT )
69108 #  if 14 <= VULKAN_HPP_CPP_VERSION
69109     auto
69110 #  else
69111     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
69112 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM69113       reflect() const VULKAN_HPP_NOEXCEPT
69114     {
69115       return std::tie( sType, pNext, textureBlockMatch2 );
69116     }
69117 #endif
69118 
69119 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69120     auto operator<=>( PhysicalDeviceImageProcessing2FeaturesQCOM const & ) const = default;
69121 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM69122     bool operator==( PhysicalDeviceImageProcessing2FeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
69123     {
69124 #  if defined( VULKAN_HPP_USE_REFLECT )
69125       return this->reflect() == rhs.reflect();
69126 #  else
69127       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( textureBlockMatch2 == rhs.textureBlockMatch2 );
69128 #  endif
69129     }
69130 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM69131     bool operator!=( PhysicalDeviceImageProcessing2FeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
69132     {
69133       return !operator==( rhs );
69134     }
69135 #endif
69136 
69137   public:
69138     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceImageProcessing2FeaturesQCOM;
69139     void *                              pNext              = {};
69140     VULKAN_HPP_NAMESPACE::Bool32        textureBlockMatch2 = {};
69141   };
69142 
69143   template <>
69144   struct CppType<StructureType, StructureType::ePhysicalDeviceImageProcessing2FeaturesQCOM>
69145   {
69146     using Type = PhysicalDeviceImageProcessing2FeaturesQCOM;
69147   };
69148 
69149   struct PhysicalDeviceImageProcessing2PropertiesQCOM
69150   {
69151     using NativeType = VkPhysicalDeviceImageProcessing2PropertiesQCOM;
69152 
69153     static const bool                                  allowDuplicate = false;
69154     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageProcessing2PropertiesQCOM;
69155 
69156 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageProcessing2PropertiesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2PropertiesQCOM69157     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessing2PropertiesQCOM( VULKAN_HPP_NAMESPACE::Extent2D maxBlockMatchWindow_ = {},
69158                                                                        void *                         pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
69159       : pNext{ pNext_ }
69160       , maxBlockMatchWindow{ maxBlockMatchWindow_ }
69161     {
69162     }
69163 
69164     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessing2PropertiesQCOM( PhysicalDeviceImageProcessing2PropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69165 
PhysicalDeviceImageProcessing2PropertiesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2PropertiesQCOM69166     PhysicalDeviceImageProcessing2PropertiesQCOM( VkPhysicalDeviceImageProcessing2PropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
69167       : PhysicalDeviceImageProcessing2PropertiesQCOM( *reinterpret_cast<PhysicalDeviceImageProcessing2PropertiesQCOM const *>( &rhs ) )
69168     {
69169     }
69170 
69171     PhysicalDeviceImageProcessing2PropertiesQCOM & operator=( PhysicalDeviceImageProcessing2PropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69172 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69173 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2PropertiesQCOM69174     PhysicalDeviceImageProcessing2PropertiesQCOM & operator=( VkPhysicalDeviceImageProcessing2PropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
69175     {
69176       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2PropertiesQCOM const *>( &rhs );
69177       return *this;
69178     }
69179 
operator VkPhysicalDeviceImageProcessing2PropertiesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2PropertiesQCOM69180     operator VkPhysicalDeviceImageProcessing2PropertiesQCOM const &() const VULKAN_HPP_NOEXCEPT
69181     {
69182       return *reinterpret_cast<const VkPhysicalDeviceImageProcessing2PropertiesQCOM *>( this );
69183     }
69184 
operator VkPhysicalDeviceImageProcessing2PropertiesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2PropertiesQCOM69185     operator VkPhysicalDeviceImageProcessing2PropertiesQCOM &() VULKAN_HPP_NOEXCEPT
69186     {
69187       return *reinterpret_cast<VkPhysicalDeviceImageProcessing2PropertiesQCOM *>( this );
69188     }
69189 
69190 #if defined( VULKAN_HPP_USE_REFLECT )
69191 #  if 14 <= VULKAN_HPP_CPP_VERSION
69192     auto
69193 #  else
69194     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Extent2D const &>
69195 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2PropertiesQCOM69196       reflect() const VULKAN_HPP_NOEXCEPT
69197     {
69198       return std::tie( sType, pNext, maxBlockMatchWindow );
69199     }
69200 #endif
69201 
69202 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69203     auto operator<=>( PhysicalDeviceImageProcessing2PropertiesQCOM const & ) const = default;
69204 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2PropertiesQCOM69205     bool operator==( PhysicalDeviceImageProcessing2PropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
69206     {
69207 #  if defined( VULKAN_HPP_USE_REFLECT )
69208       return this->reflect() == rhs.reflect();
69209 #  else
69210       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxBlockMatchWindow == rhs.maxBlockMatchWindow );
69211 #  endif
69212     }
69213 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2PropertiesQCOM69214     bool operator!=( PhysicalDeviceImageProcessing2PropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
69215     {
69216       return !operator==( rhs );
69217     }
69218 #endif
69219 
69220   public:
69221     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::ePhysicalDeviceImageProcessing2PropertiesQCOM;
69222     void *                              pNext               = {};
69223     VULKAN_HPP_NAMESPACE::Extent2D      maxBlockMatchWindow = {};
69224   };
69225 
69226   template <>
69227   struct CppType<StructureType, StructureType::ePhysicalDeviceImageProcessing2PropertiesQCOM>
69228   {
69229     using Type = PhysicalDeviceImageProcessing2PropertiesQCOM;
69230   };
69231 
69232   struct PhysicalDeviceImageProcessingFeaturesQCOM
69233   {
69234     using NativeType = VkPhysicalDeviceImageProcessingFeaturesQCOM;
69235 
69236     static const bool                                  allowDuplicate = false;
69237     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageProcessingFeaturesQCOM;
69238 
69239 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageProcessingFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69240     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessingFeaturesQCOM( VULKAN_HPP_NAMESPACE::Bool32 textureSampleWeighted_ = {},
69241                                                                     VULKAN_HPP_NAMESPACE::Bool32 textureBoxFilter_      = {},
69242                                                                     VULKAN_HPP_NAMESPACE::Bool32 textureBlockMatch_     = {},
69243                                                                     void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
69244       : pNext{ pNext_ }
69245       , textureSampleWeighted{ textureSampleWeighted_ }
69246       , textureBoxFilter{ textureBoxFilter_ }
69247       , textureBlockMatch{ textureBlockMatch_ }
69248     {
69249     }
69250 
69251     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessingFeaturesQCOM( PhysicalDeviceImageProcessingFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69252 
PhysicalDeviceImageProcessingFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69253     PhysicalDeviceImageProcessingFeaturesQCOM( VkPhysicalDeviceImageProcessingFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
69254       : PhysicalDeviceImageProcessingFeaturesQCOM( *reinterpret_cast<PhysicalDeviceImageProcessingFeaturesQCOM const *>( &rhs ) )
69255     {
69256     }
69257 
69258     PhysicalDeviceImageProcessingFeaturesQCOM & operator=( PhysicalDeviceImageProcessingFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69259 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69260 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69261     PhysicalDeviceImageProcessingFeaturesQCOM & operator=( VkPhysicalDeviceImageProcessingFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
69262     {
69263       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM const *>( &rhs );
69264       return *this;
69265     }
69266 
69267 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69268     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessingFeaturesQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
69269     {
69270       pNext = pNext_;
69271       return *this;
69272     }
69273 
69274     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessingFeaturesQCOM &
setTextureSampleWeightedVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69275       setTextureSampleWeighted( VULKAN_HPP_NAMESPACE::Bool32 textureSampleWeighted_ ) VULKAN_HPP_NOEXCEPT
69276     {
69277       textureSampleWeighted = textureSampleWeighted_;
69278       return *this;
69279     }
69280 
69281     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessingFeaturesQCOM &
setTextureBoxFilterVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69282       setTextureBoxFilter( VULKAN_HPP_NAMESPACE::Bool32 textureBoxFilter_ ) VULKAN_HPP_NOEXCEPT
69283     {
69284       textureBoxFilter = textureBoxFilter_;
69285       return *this;
69286     }
69287 
69288     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessingFeaturesQCOM &
setTextureBlockMatchVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69289       setTextureBlockMatch( VULKAN_HPP_NAMESPACE::Bool32 textureBlockMatch_ ) VULKAN_HPP_NOEXCEPT
69290     {
69291       textureBlockMatch = textureBlockMatch_;
69292       return *this;
69293     }
69294 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69295 
operator VkPhysicalDeviceImageProcessingFeaturesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69296     operator VkPhysicalDeviceImageProcessingFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT
69297     {
69298       return *reinterpret_cast<const VkPhysicalDeviceImageProcessingFeaturesQCOM *>( this );
69299     }
69300 
operator VkPhysicalDeviceImageProcessingFeaturesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69301     operator VkPhysicalDeviceImageProcessingFeaturesQCOM &() VULKAN_HPP_NOEXCEPT
69302     {
69303       return *reinterpret_cast<VkPhysicalDeviceImageProcessingFeaturesQCOM *>( this );
69304     }
69305 
69306 #if defined( VULKAN_HPP_USE_REFLECT )
69307 #  if 14 <= VULKAN_HPP_CPP_VERSION
69308     auto
69309 #  else
69310     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
69311                void * const &,
69312                VULKAN_HPP_NAMESPACE::Bool32 const &,
69313                VULKAN_HPP_NAMESPACE::Bool32 const &,
69314                VULKAN_HPP_NAMESPACE::Bool32 const &>
69315 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69316       reflect() const VULKAN_HPP_NOEXCEPT
69317     {
69318       return std::tie( sType, pNext, textureSampleWeighted, textureBoxFilter, textureBlockMatch );
69319     }
69320 #endif
69321 
69322 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69323     auto operator<=>( PhysicalDeviceImageProcessingFeaturesQCOM const & ) const = default;
69324 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69325     bool operator==( PhysicalDeviceImageProcessingFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
69326     {
69327 #  if defined( VULKAN_HPP_USE_REFLECT )
69328       return this->reflect() == rhs.reflect();
69329 #  else
69330       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( textureSampleWeighted == rhs.textureSampleWeighted ) &&
69331              ( textureBoxFilter == rhs.textureBoxFilter ) && ( textureBlockMatch == rhs.textureBlockMatch );
69332 #  endif
69333     }
69334 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM69335     bool operator!=( PhysicalDeviceImageProcessingFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
69336     {
69337       return !operator==( rhs );
69338     }
69339 #endif
69340 
69341   public:
69342     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceImageProcessingFeaturesQCOM;
69343     void *                              pNext                 = {};
69344     VULKAN_HPP_NAMESPACE::Bool32        textureSampleWeighted = {};
69345     VULKAN_HPP_NAMESPACE::Bool32        textureBoxFilter      = {};
69346     VULKAN_HPP_NAMESPACE::Bool32        textureBlockMatch     = {};
69347   };
69348 
69349   template <>
69350   struct CppType<StructureType, StructureType::ePhysicalDeviceImageProcessingFeaturesQCOM>
69351   {
69352     using Type = PhysicalDeviceImageProcessingFeaturesQCOM;
69353   };
69354 
69355   struct PhysicalDeviceImageProcessingPropertiesQCOM
69356   {
69357     using NativeType = VkPhysicalDeviceImageProcessingPropertiesQCOM;
69358 
69359     static const bool                                  allowDuplicate = false;
69360     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageProcessingPropertiesQCOM;
69361 
69362 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageProcessingPropertiesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM69363     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessingPropertiesQCOM( uint32_t                       maxWeightFilterPhases_    = {},
69364                                                                       VULKAN_HPP_NAMESPACE::Extent2D maxWeightFilterDimension_ = {},
69365                                                                       VULKAN_HPP_NAMESPACE::Extent2D maxBlockMatchRegion_      = {},
69366                                                                       VULKAN_HPP_NAMESPACE::Extent2D maxBoxFilterBlockSize_    = {},
69367                                                                       void *                         pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
69368       : pNext{ pNext_ }
69369       , maxWeightFilterPhases{ maxWeightFilterPhases_ }
69370       , maxWeightFilterDimension{ maxWeightFilterDimension_ }
69371       , maxBlockMatchRegion{ maxBlockMatchRegion_ }
69372       , maxBoxFilterBlockSize{ maxBoxFilterBlockSize_ }
69373     {
69374     }
69375 
69376     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessingPropertiesQCOM( PhysicalDeviceImageProcessingPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69377 
PhysicalDeviceImageProcessingPropertiesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM69378     PhysicalDeviceImageProcessingPropertiesQCOM( VkPhysicalDeviceImageProcessingPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
69379       : PhysicalDeviceImageProcessingPropertiesQCOM( *reinterpret_cast<PhysicalDeviceImageProcessingPropertiesQCOM const *>( &rhs ) )
69380     {
69381     }
69382 
69383     PhysicalDeviceImageProcessingPropertiesQCOM & operator=( PhysicalDeviceImageProcessingPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69384 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69385 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM69386     PhysicalDeviceImageProcessingPropertiesQCOM & operator=( VkPhysicalDeviceImageProcessingPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
69387     {
69388       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM const *>( &rhs );
69389       return *this;
69390     }
69391 
operator VkPhysicalDeviceImageProcessingPropertiesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM69392     operator VkPhysicalDeviceImageProcessingPropertiesQCOM const &() const VULKAN_HPP_NOEXCEPT
69393     {
69394       return *reinterpret_cast<const VkPhysicalDeviceImageProcessingPropertiesQCOM *>( this );
69395     }
69396 
operator VkPhysicalDeviceImageProcessingPropertiesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM69397     operator VkPhysicalDeviceImageProcessingPropertiesQCOM &() VULKAN_HPP_NOEXCEPT
69398     {
69399       return *reinterpret_cast<VkPhysicalDeviceImageProcessingPropertiesQCOM *>( this );
69400     }
69401 
69402 #if defined( VULKAN_HPP_USE_REFLECT )
69403 #  if 14 <= VULKAN_HPP_CPP_VERSION
69404     auto
69405 #  else
69406     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
69407                void * const &,
69408                uint32_t const &,
69409                VULKAN_HPP_NAMESPACE::Extent2D const &,
69410                VULKAN_HPP_NAMESPACE::Extent2D const &,
69411                VULKAN_HPP_NAMESPACE::Extent2D const &>
69412 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM69413       reflect() const VULKAN_HPP_NOEXCEPT
69414     {
69415       return std::tie( sType, pNext, maxWeightFilterPhases, maxWeightFilterDimension, maxBlockMatchRegion, maxBoxFilterBlockSize );
69416     }
69417 #endif
69418 
69419 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69420     auto operator<=>( PhysicalDeviceImageProcessingPropertiesQCOM const & ) const = default;
69421 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM69422     bool operator==( PhysicalDeviceImageProcessingPropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
69423     {
69424 #  if defined( VULKAN_HPP_USE_REFLECT )
69425       return this->reflect() == rhs.reflect();
69426 #  else
69427       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxWeightFilterPhases == rhs.maxWeightFilterPhases ) &&
69428              ( maxWeightFilterDimension == rhs.maxWeightFilterDimension ) && ( maxBlockMatchRegion == rhs.maxBlockMatchRegion ) &&
69429              ( maxBoxFilterBlockSize == rhs.maxBoxFilterBlockSize );
69430 #  endif
69431     }
69432 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM69433     bool operator!=( PhysicalDeviceImageProcessingPropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
69434     {
69435       return !operator==( rhs );
69436     }
69437 #endif
69438 
69439   public:
69440     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDeviceImageProcessingPropertiesQCOM;
69441     void *                              pNext                    = {};
69442     uint32_t                            maxWeightFilterPhases    = {};
69443     VULKAN_HPP_NAMESPACE::Extent2D      maxWeightFilterDimension = {};
69444     VULKAN_HPP_NAMESPACE::Extent2D      maxBlockMatchRegion      = {};
69445     VULKAN_HPP_NAMESPACE::Extent2D      maxBoxFilterBlockSize    = {};
69446   };
69447 
69448   template <>
69449   struct CppType<StructureType, StructureType::ePhysicalDeviceImageProcessingPropertiesQCOM>
69450   {
69451     using Type = PhysicalDeviceImageProcessingPropertiesQCOM;
69452   };
69453 
69454   struct PhysicalDeviceImageRobustnessFeatures
69455   {
69456     using NativeType = VkPhysicalDeviceImageRobustnessFeatures;
69457 
69458     static const bool                                  allowDuplicate = false;
69459     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageRobustnessFeatures;
69460 
69461 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageRobustnessFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures69462     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageRobustnessFeatures( VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess_ = {},
69463                                                                 void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
69464       : pNext{ pNext_ }
69465       , robustImageAccess{ robustImageAccess_ }
69466     {
69467     }
69468 
69469     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageRobustnessFeatures( PhysicalDeviceImageRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69470 
PhysicalDeviceImageRobustnessFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures69471     PhysicalDeviceImageRobustnessFeatures( VkPhysicalDeviceImageRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
69472       : PhysicalDeviceImageRobustnessFeatures( *reinterpret_cast<PhysicalDeviceImageRobustnessFeatures const *>( &rhs ) )
69473     {
69474     }
69475 
69476     PhysicalDeviceImageRobustnessFeatures & operator=( PhysicalDeviceImageRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69477 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69478 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures69479     PhysicalDeviceImageRobustnessFeatures & operator=( VkPhysicalDeviceImageRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
69480     {
69481       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures const *>( &rhs );
69482       return *this;
69483     }
69484 
69485 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures69486     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageRobustnessFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
69487     {
69488       pNext = pNext_;
69489       return *this;
69490     }
69491 
setRobustImageAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures69492     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageRobustnessFeatures & setRobustImageAccess( VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess_ ) VULKAN_HPP_NOEXCEPT
69493     {
69494       robustImageAccess = robustImageAccess_;
69495       return *this;
69496     }
69497 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69498 
operator VkPhysicalDeviceImageRobustnessFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures69499     operator VkPhysicalDeviceImageRobustnessFeatures const &() const VULKAN_HPP_NOEXCEPT
69500     {
69501       return *reinterpret_cast<const VkPhysicalDeviceImageRobustnessFeatures *>( this );
69502     }
69503 
operator VkPhysicalDeviceImageRobustnessFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures69504     operator VkPhysicalDeviceImageRobustnessFeatures &() VULKAN_HPP_NOEXCEPT
69505     {
69506       return *reinterpret_cast<VkPhysicalDeviceImageRobustnessFeatures *>( this );
69507     }
69508 
69509 #if defined( VULKAN_HPP_USE_REFLECT )
69510 #  if 14 <= VULKAN_HPP_CPP_VERSION
69511     auto
69512 #  else
69513     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
69514 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures69515       reflect() const VULKAN_HPP_NOEXCEPT
69516     {
69517       return std::tie( sType, pNext, robustImageAccess );
69518     }
69519 #endif
69520 
69521 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69522     auto operator<=>( PhysicalDeviceImageRobustnessFeatures const & ) const = default;
69523 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures69524     bool operator==( PhysicalDeviceImageRobustnessFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
69525     {
69526 #  if defined( VULKAN_HPP_USE_REFLECT )
69527       return this->reflect() == rhs.reflect();
69528 #  else
69529       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( robustImageAccess == rhs.robustImageAccess );
69530 #  endif
69531     }
69532 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures69533     bool operator!=( PhysicalDeviceImageRobustnessFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
69534     {
69535       return !operator==( rhs );
69536     }
69537 #endif
69538 
69539   public:
69540     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceImageRobustnessFeatures;
69541     void *                              pNext             = {};
69542     VULKAN_HPP_NAMESPACE::Bool32        robustImageAccess = {};
69543   };
69544 
69545   template <>
69546   struct CppType<StructureType, StructureType::ePhysicalDeviceImageRobustnessFeatures>
69547   {
69548     using Type = PhysicalDeviceImageRobustnessFeatures;
69549   };
69550 
69551   using PhysicalDeviceImageRobustnessFeaturesEXT = PhysicalDeviceImageRobustnessFeatures;
69552 
69553   struct PhysicalDeviceImageSlicedViewOf3DFeaturesEXT
69554   {
69555     using NativeType = VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT;
69556 
69557     static const bool                                  allowDuplicate = false;
69558     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageSlicedViewOf3DFeaturesEXT;
69559 
69560 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageSlicedViewOf3DFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT69561     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageSlicedViewOf3DFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 imageSlicedViewOf3D_ = {},
69562                                                                        void *                       pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
69563       : pNext{ pNext_ }
69564       , imageSlicedViewOf3D{ imageSlicedViewOf3D_ }
69565     {
69566     }
69567 
69568     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageSlicedViewOf3DFeaturesEXT( PhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69569 
PhysicalDeviceImageSlicedViewOf3DFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT69570     PhysicalDeviceImageSlicedViewOf3DFeaturesEXT( VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
69571       : PhysicalDeviceImageSlicedViewOf3DFeaturesEXT( *reinterpret_cast<PhysicalDeviceImageSlicedViewOf3DFeaturesEXT const *>( &rhs ) )
69572     {
69573     }
69574 
69575     PhysicalDeviceImageSlicedViewOf3DFeaturesEXT & operator=( PhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69576 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69577 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT69578     PhysicalDeviceImageSlicedViewOf3DFeaturesEXT & operator=( VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
69579     {
69580       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT const *>( &rhs );
69581       return *this;
69582     }
69583 
69584 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT69585     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageSlicedViewOf3DFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
69586     {
69587       pNext = pNext_;
69588       return *this;
69589     }
69590 
69591     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageSlicedViewOf3DFeaturesEXT &
setImageSlicedViewOf3DVULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT69592       setImageSlicedViewOf3D( VULKAN_HPP_NAMESPACE::Bool32 imageSlicedViewOf3D_ ) VULKAN_HPP_NOEXCEPT
69593     {
69594       imageSlicedViewOf3D = imageSlicedViewOf3D_;
69595       return *this;
69596     }
69597 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69598 
operator VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT69599     operator VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
69600     {
69601       return *reinterpret_cast<const VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT *>( this );
69602     }
69603 
operator VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT69604     operator VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT &() VULKAN_HPP_NOEXCEPT
69605     {
69606       return *reinterpret_cast<VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT *>( this );
69607     }
69608 
69609 #if defined( VULKAN_HPP_USE_REFLECT )
69610 #  if 14 <= VULKAN_HPP_CPP_VERSION
69611     auto
69612 #  else
69613     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
69614 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT69615       reflect() const VULKAN_HPP_NOEXCEPT
69616     {
69617       return std::tie( sType, pNext, imageSlicedViewOf3D );
69618     }
69619 #endif
69620 
69621 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69622     auto operator<=>( PhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & ) const = default;
69623 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT69624     bool operator==( PhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69625     {
69626 #  if defined( VULKAN_HPP_USE_REFLECT )
69627       return this->reflect() == rhs.reflect();
69628 #  else
69629       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageSlicedViewOf3D == rhs.imageSlicedViewOf3D );
69630 #  endif
69631     }
69632 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT69633     bool operator!=( PhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69634     {
69635       return !operator==( rhs );
69636     }
69637 #endif
69638 
69639   public:
69640     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::ePhysicalDeviceImageSlicedViewOf3DFeaturesEXT;
69641     void *                              pNext               = {};
69642     VULKAN_HPP_NAMESPACE::Bool32        imageSlicedViewOf3D = {};
69643   };
69644 
69645   template <>
69646   struct CppType<StructureType, StructureType::ePhysicalDeviceImageSlicedViewOf3DFeaturesEXT>
69647   {
69648     using Type = PhysicalDeviceImageSlicedViewOf3DFeaturesEXT;
69649   };
69650 
69651   struct PhysicalDeviceImageViewImageFormatInfoEXT
69652   {
69653     using NativeType = VkPhysicalDeviceImageViewImageFormatInfoEXT;
69654 
69655     static const bool                                  allowDuplicate = false;
69656     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT;
69657 
69658 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
69659     VULKAN_HPP_CONSTEXPR
PhysicalDeviceImageViewImageFormatInfoEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT69660       PhysicalDeviceImageViewImageFormatInfoEXT( VULKAN_HPP_NAMESPACE::ImageViewType imageViewType_ = VULKAN_HPP_NAMESPACE::ImageViewType::e1D,
69661                                                  void *                              pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
69662       : pNext{ pNext_ }
69663       , imageViewType{ imageViewType_ }
69664     {
69665     }
69666 
69667     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageViewImageFormatInfoEXT( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69668 
PhysicalDeviceImageViewImageFormatInfoEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT69669     PhysicalDeviceImageViewImageFormatInfoEXT( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
69670       : PhysicalDeviceImageViewImageFormatInfoEXT( *reinterpret_cast<PhysicalDeviceImageViewImageFormatInfoEXT const *>( &rhs ) )
69671     {
69672     }
69673 
69674     PhysicalDeviceImageViewImageFormatInfoEXT & operator=( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69675 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69676 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT69677     PhysicalDeviceImageViewImageFormatInfoEXT & operator=( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
69678     {
69679       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT const *>( &rhs );
69680       return *this;
69681     }
69682 
69683 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT69684     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewImageFormatInfoEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
69685     {
69686       pNext = pNext_;
69687       return *this;
69688     }
69689 
69690     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewImageFormatInfoEXT &
setImageViewTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT69691       setImageViewType( VULKAN_HPP_NAMESPACE::ImageViewType imageViewType_ ) VULKAN_HPP_NOEXCEPT
69692     {
69693       imageViewType = imageViewType_;
69694       return *this;
69695     }
69696 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69697 
operator VkPhysicalDeviceImageViewImageFormatInfoEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT69698     operator VkPhysicalDeviceImageViewImageFormatInfoEXT const &() const VULKAN_HPP_NOEXCEPT
69699     {
69700       return *reinterpret_cast<const VkPhysicalDeviceImageViewImageFormatInfoEXT *>( this );
69701     }
69702 
operator VkPhysicalDeviceImageViewImageFormatInfoEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT69703     operator VkPhysicalDeviceImageViewImageFormatInfoEXT &() VULKAN_HPP_NOEXCEPT
69704     {
69705       return *reinterpret_cast<VkPhysicalDeviceImageViewImageFormatInfoEXT *>( this );
69706     }
69707 
69708 #if defined( VULKAN_HPP_USE_REFLECT )
69709 #  if 14 <= VULKAN_HPP_CPP_VERSION
69710     auto
69711 #  else
69712     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ImageViewType const &>
69713 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT69714       reflect() const VULKAN_HPP_NOEXCEPT
69715     {
69716       return std::tie( sType, pNext, imageViewType );
69717     }
69718 #endif
69719 
69720 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69721     auto operator<=>( PhysicalDeviceImageViewImageFormatInfoEXT const & ) const = default;
69722 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT69723     bool operator==( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69724     {
69725 #  if defined( VULKAN_HPP_USE_REFLECT )
69726       return this->reflect() == rhs.reflect();
69727 #  else
69728       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageViewType == rhs.imageViewType );
69729 #  endif
69730     }
69731 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT69732     bool operator!=( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69733     {
69734       return !operator==( rhs );
69735     }
69736 #endif
69737 
69738   public:
69739     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT;
69740     void *                              pNext         = {};
69741     VULKAN_HPP_NAMESPACE::ImageViewType imageViewType = VULKAN_HPP_NAMESPACE::ImageViewType::e1D;
69742   };
69743 
69744   template <>
69745   struct CppType<StructureType, StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT>
69746   {
69747     using Type = PhysicalDeviceImageViewImageFormatInfoEXT;
69748   };
69749 
69750   struct PhysicalDeviceImageViewMinLodFeaturesEXT
69751   {
69752     using NativeType = VkPhysicalDeviceImageViewMinLodFeaturesEXT;
69753 
69754     static const bool                                  allowDuplicate = false;
69755     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImageViewMinLodFeaturesEXT;
69756 
69757 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageViewMinLodFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT69758     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageViewMinLodFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 minLod_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
69759       : pNext{ pNext_ }
69760       , minLod{ minLod_ }
69761     {
69762     }
69763 
69764     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageViewMinLodFeaturesEXT( PhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69765 
PhysicalDeviceImageViewMinLodFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT69766     PhysicalDeviceImageViewMinLodFeaturesEXT( VkPhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
69767       : PhysicalDeviceImageViewMinLodFeaturesEXT( *reinterpret_cast<PhysicalDeviceImageViewMinLodFeaturesEXT const *>( &rhs ) )
69768     {
69769     }
69770 
69771     PhysicalDeviceImageViewMinLodFeaturesEXT & operator=( PhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69772 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69773 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT69774     PhysicalDeviceImageViewMinLodFeaturesEXT & operator=( VkPhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
69775     {
69776       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT const *>( &rhs );
69777       return *this;
69778     }
69779 
69780 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT69781     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewMinLodFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
69782     {
69783       pNext = pNext_;
69784       return *this;
69785     }
69786 
setMinLodVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT69787     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewMinLodFeaturesEXT & setMinLod( VULKAN_HPP_NAMESPACE::Bool32 minLod_ ) VULKAN_HPP_NOEXCEPT
69788     {
69789       minLod = minLod_;
69790       return *this;
69791     }
69792 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69793 
operator VkPhysicalDeviceImageViewMinLodFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT69794     operator VkPhysicalDeviceImageViewMinLodFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
69795     {
69796       return *reinterpret_cast<const VkPhysicalDeviceImageViewMinLodFeaturesEXT *>( this );
69797     }
69798 
operator VkPhysicalDeviceImageViewMinLodFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT69799     operator VkPhysicalDeviceImageViewMinLodFeaturesEXT &() VULKAN_HPP_NOEXCEPT
69800     {
69801       return *reinterpret_cast<VkPhysicalDeviceImageViewMinLodFeaturesEXT *>( this );
69802     }
69803 
69804 #if defined( VULKAN_HPP_USE_REFLECT )
69805 #  if 14 <= VULKAN_HPP_CPP_VERSION
69806     auto
69807 #  else
69808     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
69809 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT69810       reflect() const VULKAN_HPP_NOEXCEPT
69811     {
69812       return std::tie( sType, pNext, minLod );
69813     }
69814 #endif
69815 
69816 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69817     auto operator<=>( PhysicalDeviceImageViewMinLodFeaturesEXT const & ) const = default;
69818 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT69819     bool operator==( PhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69820     {
69821 #  if defined( VULKAN_HPP_USE_REFLECT )
69822       return this->reflect() == rhs.reflect();
69823 #  else
69824       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minLod == rhs.minLod );
69825 #  endif
69826     }
69827 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT69828     bool operator!=( PhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
69829     {
69830       return !operator==( rhs );
69831     }
69832 #endif
69833 
69834   public:
69835     VULKAN_HPP_NAMESPACE::StructureType sType  = StructureType::ePhysicalDeviceImageViewMinLodFeaturesEXT;
69836     void *                              pNext  = {};
69837     VULKAN_HPP_NAMESPACE::Bool32        minLod = {};
69838   };
69839 
69840   template <>
69841   struct CppType<StructureType, StructureType::ePhysicalDeviceImageViewMinLodFeaturesEXT>
69842   {
69843     using Type = PhysicalDeviceImageViewMinLodFeaturesEXT;
69844   };
69845 
69846   struct PhysicalDeviceImagelessFramebufferFeatures
69847   {
69848     using NativeType = VkPhysicalDeviceImagelessFramebufferFeatures;
69849 
69850     static const bool                                  allowDuplicate = false;
69851     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceImagelessFramebufferFeatures;
69852 
69853 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImagelessFramebufferFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures69854     VULKAN_HPP_CONSTEXPR PhysicalDeviceImagelessFramebufferFeatures( VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_ = {},
69855                                                                      void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
69856       : pNext{ pNext_ }
69857       , imagelessFramebuffer{ imagelessFramebuffer_ }
69858     {
69859     }
69860 
69861     VULKAN_HPP_CONSTEXPR PhysicalDeviceImagelessFramebufferFeatures( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69862 
PhysicalDeviceImagelessFramebufferFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures69863     PhysicalDeviceImagelessFramebufferFeatures( VkPhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
69864       : PhysicalDeviceImagelessFramebufferFeatures( *reinterpret_cast<PhysicalDeviceImagelessFramebufferFeatures const *>( &rhs ) )
69865     {
69866     }
69867 
69868     PhysicalDeviceImagelessFramebufferFeatures & operator=( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69869 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69870 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures69871     PhysicalDeviceImagelessFramebufferFeatures & operator=( VkPhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
69872     {
69873       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures const *>( &rhs );
69874       return *this;
69875     }
69876 
69877 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures69878     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImagelessFramebufferFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
69879     {
69880       pNext = pNext_;
69881       return *this;
69882     }
69883 
69884     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImagelessFramebufferFeatures &
setImagelessFramebufferVULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures69885       setImagelessFramebuffer( VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_ ) VULKAN_HPP_NOEXCEPT
69886     {
69887       imagelessFramebuffer = imagelessFramebuffer_;
69888       return *this;
69889     }
69890 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69891 
operator VkPhysicalDeviceImagelessFramebufferFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures69892     operator VkPhysicalDeviceImagelessFramebufferFeatures const &() const VULKAN_HPP_NOEXCEPT
69893     {
69894       return *reinterpret_cast<const VkPhysicalDeviceImagelessFramebufferFeatures *>( this );
69895     }
69896 
operator VkPhysicalDeviceImagelessFramebufferFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures69897     operator VkPhysicalDeviceImagelessFramebufferFeatures &() VULKAN_HPP_NOEXCEPT
69898     {
69899       return *reinterpret_cast<VkPhysicalDeviceImagelessFramebufferFeatures *>( this );
69900     }
69901 
69902 #if defined( VULKAN_HPP_USE_REFLECT )
69903 #  if 14 <= VULKAN_HPP_CPP_VERSION
69904     auto
69905 #  else
69906     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
69907 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures69908       reflect() const VULKAN_HPP_NOEXCEPT
69909     {
69910       return std::tie( sType, pNext, imagelessFramebuffer );
69911     }
69912 #endif
69913 
69914 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
69915     auto operator<=>( PhysicalDeviceImagelessFramebufferFeatures const & ) const = default;
69916 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures69917     bool operator==( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
69918     {
69919 #  if defined( VULKAN_HPP_USE_REFLECT )
69920       return this->reflect() == rhs.reflect();
69921 #  else
69922       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imagelessFramebuffer == rhs.imagelessFramebuffer );
69923 #  endif
69924     }
69925 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures69926     bool operator!=( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
69927     {
69928       return !operator==( rhs );
69929     }
69930 #endif
69931 
69932   public:
69933     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceImagelessFramebufferFeatures;
69934     void *                              pNext                = {};
69935     VULKAN_HPP_NAMESPACE::Bool32        imagelessFramebuffer = {};
69936   };
69937 
69938   template <>
69939   struct CppType<StructureType, StructureType::ePhysicalDeviceImagelessFramebufferFeatures>
69940   {
69941     using Type = PhysicalDeviceImagelessFramebufferFeatures;
69942   };
69943 
69944   using PhysicalDeviceImagelessFramebufferFeaturesKHR = PhysicalDeviceImagelessFramebufferFeatures;
69945 
69946   struct PhysicalDeviceIndexTypeUint8FeaturesKHR
69947   {
69948     using NativeType = VkPhysicalDeviceIndexTypeUint8FeaturesKHR;
69949 
69950     static const bool                                  allowDuplicate = false;
69951     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceIndexTypeUint8FeaturesKHR;
69952 
69953 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceIndexTypeUint8FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesKHR69954     VULKAN_HPP_CONSTEXPR PhysicalDeviceIndexTypeUint8FeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 indexTypeUint8_ = {},
69955                                                                   void *                       pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
69956       : pNext{ pNext_ }
69957       , indexTypeUint8{ indexTypeUint8_ }
69958     {
69959     }
69960 
69961     VULKAN_HPP_CONSTEXPR PhysicalDeviceIndexTypeUint8FeaturesKHR( PhysicalDeviceIndexTypeUint8FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69962 
PhysicalDeviceIndexTypeUint8FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesKHR69963     PhysicalDeviceIndexTypeUint8FeaturesKHR( VkPhysicalDeviceIndexTypeUint8FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
69964       : PhysicalDeviceIndexTypeUint8FeaturesKHR( *reinterpret_cast<PhysicalDeviceIndexTypeUint8FeaturesKHR const *>( &rhs ) )
69965     {
69966     }
69967 
69968     PhysicalDeviceIndexTypeUint8FeaturesKHR & operator=( PhysicalDeviceIndexTypeUint8FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
69969 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
69970 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesKHR69971     PhysicalDeviceIndexTypeUint8FeaturesKHR & operator=( VkPhysicalDeviceIndexTypeUint8FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
69972     {
69973       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesKHR const *>( &rhs );
69974       return *this;
69975     }
69976 
69977 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesKHR69978     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIndexTypeUint8FeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
69979     {
69980       pNext = pNext_;
69981       return *this;
69982     }
69983 
setIndexTypeUint8VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesKHR69984     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIndexTypeUint8FeaturesKHR & setIndexTypeUint8( VULKAN_HPP_NAMESPACE::Bool32 indexTypeUint8_ ) VULKAN_HPP_NOEXCEPT
69985     {
69986       indexTypeUint8 = indexTypeUint8_;
69987       return *this;
69988     }
69989 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
69990 
operator VkPhysicalDeviceIndexTypeUint8FeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesKHR69991     operator VkPhysicalDeviceIndexTypeUint8FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
69992     {
69993       return *reinterpret_cast<const VkPhysicalDeviceIndexTypeUint8FeaturesKHR *>( this );
69994     }
69995 
operator VkPhysicalDeviceIndexTypeUint8FeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesKHR69996     operator VkPhysicalDeviceIndexTypeUint8FeaturesKHR &() VULKAN_HPP_NOEXCEPT
69997     {
69998       return *reinterpret_cast<VkPhysicalDeviceIndexTypeUint8FeaturesKHR *>( this );
69999     }
70000 
70001 #if defined( VULKAN_HPP_USE_REFLECT )
70002 #  if 14 <= VULKAN_HPP_CPP_VERSION
70003     auto
70004 #  else
70005     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
70006 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesKHR70007       reflect() const VULKAN_HPP_NOEXCEPT
70008     {
70009       return std::tie( sType, pNext, indexTypeUint8 );
70010     }
70011 #endif
70012 
70013 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70014     auto operator<=>( PhysicalDeviceIndexTypeUint8FeaturesKHR const & ) const = default;
70015 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesKHR70016     bool operator==( PhysicalDeviceIndexTypeUint8FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
70017     {
70018 #  if defined( VULKAN_HPP_USE_REFLECT )
70019       return this->reflect() == rhs.reflect();
70020 #  else
70021       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( indexTypeUint8 == rhs.indexTypeUint8 );
70022 #  endif
70023     }
70024 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesKHR70025     bool operator!=( PhysicalDeviceIndexTypeUint8FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
70026     {
70027       return !operator==( rhs );
70028     }
70029 #endif
70030 
70031   public:
70032     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceIndexTypeUint8FeaturesKHR;
70033     void *                              pNext          = {};
70034     VULKAN_HPP_NAMESPACE::Bool32        indexTypeUint8 = {};
70035   };
70036 
70037   template <>
70038   struct CppType<StructureType, StructureType::ePhysicalDeviceIndexTypeUint8FeaturesKHR>
70039   {
70040     using Type = PhysicalDeviceIndexTypeUint8FeaturesKHR;
70041   };
70042 
70043   using PhysicalDeviceIndexTypeUint8FeaturesEXT = PhysicalDeviceIndexTypeUint8FeaturesKHR;
70044 
70045   struct PhysicalDeviceInheritedViewportScissorFeaturesNV
70046   {
70047     using NativeType = VkPhysicalDeviceInheritedViewportScissorFeaturesNV;
70048 
70049     static const bool                                  allowDuplicate = false;
70050     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceInheritedViewportScissorFeaturesNV;
70051 
70052 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceInheritedViewportScissorFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV70053     VULKAN_HPP_CONSTEXPR PhysicalDeviceInheritedViewportScissorFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 inheritedViewportScissor2D_ = {},
70054                                                                            void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
70055       : pNext{ pNext_ }
70056       , inheritedViewportScissor2D{ inheritedViewportScissor2D_ }
70057     {
70058     }
70059 
70060     VULKAN_HPP_CONSTEXPR
70061       PhysicalDeviceInheritedViewportScissorFeaturesNV( PhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70062 
PhysicalDeviceInheritedViewportScissorFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV70063     PhysicalDeviceInheritedViewportScissorFeaturesNV( VkPhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
70064       : PhysicalDeviceInheritedViewportScissorFeaturesNV( *reinterpret_cast<PhysicalDeviceInheritedViewportScissorFeaturesNV const *>( &rhs ) )
70065     {
70066     }
70067 
70068     PhysicalDeviceInheritedViewportScissorFeaturesNV & operator=( PhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70069 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70070 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV70071     PhysicalDeviceInheritedViewportScissorFeaturesNV & operator=( VkPhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
70072     {
70073       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV const *>( &rhs );
70074       return *this;
70075     }
70076 
70077 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV70078     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInheritedViewportScissorFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
70079     {
70080       pNext = pNext_;
70081       return *this;
70082     }
70083 
70084     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInheritedViewportScissorFeaturesNV &
setInheritedViewportScissor2DVULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV70085       setInheritedViewportScissor2D( VULKAN_HPP_NAMESPACE::Bool32 inheritedViewportScissor2D_ ) VULKAN_HPP_NOEXCEPT
70086     {
70087       inheritedViewportScissor2D = inheritedViewportScissor2D_;
70088       return *this;
70089     }
70090 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70091 
operator VkPhysicalDeviceInheritedViewportScissorFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV70092     operator VkPhysicalDeviceInheritedViewportScissorFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
70093     {
70094       return *reinterpret_cast<const VkPhysicalDeviceInheritedViewportScissorFeaturesNV *>( this );
70095     }
70096 
operator VkPhysicalDeviceInheritedViewportScissorFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV70097     operator VkPhysicalDeviceInheritedViewportScissorFeaturesNV &() VULKAN_HPP_NOEXCEPT
70098     {
70099       return *reinterpret_cast<VkPhysicalDeviceInheritedViewportScissorFeaturesNV *>( this );
70100     }
70101 
70102 #if defined( VULKAN_HPP_USE_REFLECT )
70103 #  if 14 <= VULKAN_HPP_CPP_VERSION
70104     auto
70105 #  else
70106     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
70107 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV70108       reflect() const VULKAN_HPP_NOEXCEPT
70109     {
70110       return std::tie( sType, pNext, inheritedViewportScissor2D );
70111     }
70112 #endif
70113 
70114 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70115     auto operator<=>( PhysicalDeviceInheritedViewportScissorFeaturesNV const & ) const = default;
70116 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV70117     bool operator==( PhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
70118     {
70119 #  if defined( VULKAN_HPP_USE_REFLECT )
70120       return this->reflect() == rhs.reflect();
70121 #  else
70122       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( inheritedViewportScissor2D == rhs.inheritedViewportScissor2D );
70123 #  endif
70124     }
70125 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV70126     bool operator!=( PhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
70127     {
70128       return !operator==( rhs );
70129     }
70130 #endif
70131 
70132   public:
70133     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::ePhysicalDeviceInheritedViewportScissorFeaturesNV;
70134     void *                              pNext                      = {};
70135     VULKAN_HPP_NAMESPACE::Bool32        inheritedViewportScissor2D = {};
70136   };
70137 
70138   template <>
70139   struct CppType<StructureType, StructureType::ePhysicalDeviceInheritedViewportScissorFeaturesNV>
70140   {
70141     using Type = PhysicalDeviceInheritedViewportScissorFeaturesNV;
70142   };
70143 
70144   struct PhysicalDeviceInlineUniformBlockFeatures
70145   {
70146     using NativeType = VkPhysicalDeviceInlineUniformBlockFeatures;
70147 
70148     static const bool                                  allowDuplicate = false;
70149     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceInlineUniformBlockFeatures;
70150 
70151 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceInlineUniformBlockFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70152     VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockFeatures( VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock_                                 = {},
70153                                                                    VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ = {},
70154                                                                    void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
70155       : pNext{ pNext_ }
70156       , inlineUniformBlock{ inlineUniformBlock_ }
70157       , descriptorBindingInlineUniformBlockUpdateAfterBind{ descriptorBindingInlineUniformBlockUpdateAfterBind_ }
70158     {
70159     }
70160 
70161     VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockFeatures( PhysicalDeviceInlineUniformBlockFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70162 
PhysicalDeviceInlineUniformBlockFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70163     PhysicalDeviceInlineUniformBlockFeatures( VkPhysicalDeviceInlineUniformBlockFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
70164       : PhysicalDeviceInlineUniformBlockFeatures( *reinterpret_cast<PhysicalDeviceInlineUniformBlockFeatures const *>( &rhs ) )
70165     {
70166     }
70167 
70168     PhysicalDeviceInlineUniformBlockFeatures & operator=( PhysicalDeviceInlineUniformBlockFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70169 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70170 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70171     PhysicalDeviceInlineUniformBlockFeatures & operator=( VkPhysicalDeviceInlineUniformBlockFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
70172     {
70173       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures const *>( &rhs );
70174       return *this;
70175     }
70176 
70177 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70178     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
70179     {
70180       pNext = pNext_;
70181       return *this;
70182     }
70183 
70184     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeatures &
setInlineUniformBlockVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70185       setInlineUniformBlock( VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock_ ) VULKAN_HPP_NOEXCEPT
70186     {
70187       inlineUniformBlock = inlineUniformBlock_;
70188       return *this;
70189     }
70190 
setDescriptorBindingInlineUniformBlockUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70191     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeatures & setDescriptorBindingInlineUniformBlockUpdateAfterBind(
70192       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
70193     {
70194       descriptorBindingInlineUniformBlockUpdateAfterBind = descriptorBindingInlineUniformBlockUpdateAfterBind_;
70195       return *this;
70196     }
70197 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70198 
operator VkPhysicalDeviceInlineUniformBlockFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70199     operator VkPhysicalDeviceInlineUniformBlockFeatures const &() const VULKAN_HPP_NOEXCEPT
70200     {
70201       return *reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockFeatures *>( this );
70202     }
70203 
operator VkPhysicalDeviceInlineUniformBlockFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70204     operator VkPhysicalDeviceInlineUniformBlockFeatures &() VULKAN_HPP_NOEXCEPT
70205     {
70206       return *reinterpret_cast<VkPhysicalDeviceInlineUniformBlockFeatures *>( this );
70207     }
70208 
70209 #if defined( VULKAN_HPP_USE_REFLECT )
70210 #  if 14 <= VULKAN_HPP_CPP_VERSION
70211     auto
70212 #  else
70213     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
70214 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70215       reflect() const VULKAN_HPP_NOEXCEPT
70216     {
70217       return std::tie( sType, pNext, inlineUniformBlock, descriptorBindingInlineUniformBlockUpdateAfterBind );
70218     }
70219 #endif
70220 
70221 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70222     auto operator<=>( PhysicalDeviceInlineUniformBlockFeatures const & ) const = default;
70223 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70224     bool operator==( PhysicalDeviceInlineUniformBlockFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
70225     {
70226 #  if defined( VULKAN_HPP_USE_REFLECT )
70227       return this->reflect() == rhs.reflect();
70228 #  else
70229       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( inlineUniformBlock == rhs.inlineUniformBlock ) &&
70230              ( descriptorBindingInlineUniformBlockUpdateAfterBind == rhs.descriptorBindingInlineUniformBlockUpdateAfterBind );
70231 #  endif
70232     }
70233 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures70234     bool operator!=( PhysicalDeviceInlineUniformBlockFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
70235     {
70236       return !operator==( rhs );
70237     }
70238 #endif
70239 
70240   public:
70241     VULKAN_HPP_NAMESPACE::StructureType sType                                              = StructureType::ePhysicalDeviceInlineUniformBlockFeatures;
70242     void *                              pNext                                              = {};
70243     VULKAN_HPP_NAMESPACE::Bool32        inlineUniformBlock                                 = {};
70244     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingInlineUniformBlockUpdateAfterBind = {};
70245   };
70246 
70247   template <>
70248   struct CppType<StructureType, StructureType::ePhysicalDeviceInlineUniformBlockFeatures>
70249   {
70250     using Type = PhysicalDeviceInlineUniformBlockFeatures;
70251   };
70252 
70253   using PhysicalDeviceInlineUniformBlockFeaturesEXT = PhysicalDeviceInlineUniformBlockFeatures;
70254 
70255   struct PhysicalDeviceInlineUniformBlockProperties
70256   {
70257     using NativeType = VkPhysicalDeviceInlineUniformBlockProperties;
70258 
70259     static const bool                                  allowDuplicate = false;
70260     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceInlineUniformBlockProperties;
70261 
70262 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceInlineUniformBlockPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties70263     VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockProperties( uint32_t maxInlineUniformBlockSize_                               = {},
70264                                                                      uint32_t maxPerStageDescriptorInlineUniformBlocks_                = {},
70265                                                                      uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ = {},
70266                                                                      uint32_t maxDescriptorSetInlineUniformBlocks_                     = {},
70267                                                                      uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks_      = {},
70268                                                                      void *   pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
70269       : pNext{ pNext_ }
70270       , maxInlineUniformBlockSize{ maxInlineUniformBlockSize_ }
70271       , maxPerStageDescriptorInlineUniformBlocks{ maxPerStageDescriptorInlineUniformBlocks_ }
70272       , maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks{ maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ }
70273       , maxDescriptorSetInlineUniformBlocks{ maxDescriptorSetInlineUniformBlocks_ }
70274       , maxDescriptorSetUpdateAfterBindInlineUniformBlocks{ maxDescriptorSetUpdateAfterBindInlineUniformBlocks_ }
70275     {
70276     }
70277 
70278     VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockProperties( PhysicalDeviceInlineUniformBlockProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70279 
PhysicalDeviceInlineUniformBlockPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties70280     PhysicalDeviceInlineUniformBlockProperties( VkPhysicalDeviceInlineUniformBlockProperties const & rhs ) VULKAN_HPP_NOEXCEPT
70281       : PhysicalDeviceInlineUniformBlockProperties( *reinterpret_cast<PhysicalDeviceInlineUniformBlockProperties const *>( &rhs ) )
70282     {
70283     }
70284 
70285     PhysicalDeviceInlineUniformBlockProperties & operator=( PhysicalDeviceInlineUniformBlockProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70286 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70287 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties70288     PhysicalDeviceInlineUniformBlockProperties & operator=( VkPhysicalDeviceInlineUniformBlockProperties const & rhs ) VULKAN_HPP_NOEXCEPT
70289     {
70290       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties const *>( &rhs );
70291       return *this;
70292     }
70293 
operator VkPhysicalDeviceInlineUniformBlockProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties70294     operator VkPhysicalDeviceInlineUniformBlockProperties const &() const VULKAN_HPP_NOEXCEPT
70295     {
70296       return *reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockProperties *>( this );
70297     }
70298 
operator VkPhysicalDeviceInlineUniformBlockProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties70299     operator VkPhysicalDeviceInlineUniformBlockProperties &() VULKAN_HPP_NOEXCEPT
70300     {
70301       return *reinterpret_cast<VkPhysicalDeviceInlineUniformBlockProperties *>( this );
70302     }
70303 
70304 #if defined( VULKAN_HPP_USE_REFLECT )
70305 #  if 14 <= VULKAN_HPP_CPP_VERSION
70306     auto
70307 #  else
70308     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
70309                void * const &,
70310                uint32_t const &,
70311                uint32_t const &,
70312                uint32_t const &,
70313                uint32_t const &,
70314                uint32_t const &>
70315 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties70316       reflect() const VULKAN_HPP_NOEXCEPT
70317     {
70318       return std::tie( sType,
70319                        pNext,
70320                        maxInlineUniformBlockSize,
70321                        maxPerStageDescriptorInlineUniformBlocks,
70322                        maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks,
70323                        maxDescriptorSetInlineUniformBlocks,
70324                        maxDescriptorSetUpdateAfterBindInlineUniformBlocks );
70325     }
70326 #endif
70327 
70328 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70329     auto operator<=>( PhysicalDeviceInlineUniformBlockProperties const & ) const = default;
70330 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties70331     bool operator==( PhysicalDeviceInlineUniformBlockProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
70332     {
70333 #  if defined( VULKAN_HPP_USE_REFLECT )
70334       return this->reflect() == rhs.reflect();
70335 #  else
70336       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxInlineUniformBlockSize == rhs.maxInlineUniformBlockSize ) &&
70337              ( maxPerStageDescriptorInlineUniformBlocks == rhs.maxPerStageDescriptorInlineUniformBlocks ) &&
70338              ( maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks == rhs.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks ) &&
70339              ( maxDescriptorSetInlineUniformBlocks == rhs.maxDescriptorSetInlineUniformBlocks ) &&
70340              ( maxDescriptorSetUpdateAfterBindInlineUniformBlocks == rhs.maxDescriptorSetUpdateAfterBindInlineUniformBlocks );
70341 #  endif
70342     }
70343 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties70344     bool operator!=( PhysicalDeviceInlineUniformBlockProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
70345     {
70346       return !operator==( rhs );
70347     }
70348 #endif
70349 
70350   public:
70351     VULKAN_HPP_NAMESPACE::StructureType sType                                                   = StructureType::ePhysicalDeviceInlineUniformBlockProperties;
70352     void *                              pNext                                                   = {};
70353     uint32_t                            maxInlineUniformBlockSize                               = {};
70354     uint32_t                            maxPerStageDescriptorInlineUniformBlocks                = {};
70355     uint32_t                            maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = {};
70356     uint32_t                            maxDescriptorSetInlineUniformBlocks                     = {};
70357     uint32_t                            maxDescriptorSetUpdateAfterBindInlineUniformBlocks      = {};
70358   };
70359 
70360   template <>
70361   struct CppType<StructureType, StructureType::ePhysicalDeviceInlineUniformBlockProperties>
70362   {
70363     using Type = PhysicalDeviceInlineUniformBlockProperties;
70364   };
70365 
70366   using PhysicalDeviceInlineUniformBlockPropertiesEXT = PhysicalDeviceInlineUniformBlockProperties;
70367 
70368   struct PhysicalDeviceInvocationMaskFeaturesHUAWEI
70369   {
70370     using NativeType = VkPhysicalDeviceInvocationMaskFeaturesHUAWEI;
70371 
70372     static const bool                                  allowDuplicate = false;
70373     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceInvocationMaskFeaturesHUAWEI;
70374 
70375 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceInvocationMaskFeaturesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI70376     VULKAN_HPP_CONSTEXPR PhysicalDeviceInvocationMaskFeaturesHUAWEI( VULKAN_HPP_NAMESPACE::Bool32 invocationMask_ = {},
70377                                                                      void *                       pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
70378       : pNext{ pNext_ }
70379       , invocationMask{ invocationMask_ }
70380     {
70381     }
70382 
70383     VULKAN_HPP_CONSTEXPR PhysicalDeviceInvocationMaskFeaturesHUAWEI( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70384 
PhysicalDeviceInvocationMaskFeaturesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI70385     PhysicalDeviceInvocationMaskFeaturesHUAWEI( VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
70386       : PhysicalDeviceInvocationMaskFeaturesHUAWEI( *reinterpret_cast<PhysicalDeviceInvocationMaskFeaturesHUAWEI const *>( &rhs ) )
70387     {
70388     }
70389 
70390     PhysicalDeviceInvocationMaskFeaturesHUAWEI & operator=( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70391 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70392 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI70393     PhysicalDeviceInvocationMaskFeaturesHUAWEI & operator=( VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
70394     {
70395       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI const *>( &rhs );
70396       return *this;
70397     }
70398 
70399 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI70400     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInvocationMaskFeaturesHUAWEI & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
70401     {
70402       pNext = pNext_;
70403       return *this;
70404     }
70405 
setInvocationMaskVULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI70406     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInvocationMaskFeaturesHUAWEI & setInvocationMask( VULKAN_HPP_NAMESPACE::Bool32 invocationMask_ ) VULKAN_HPP_NOEXCEPT
70407     {
70408       invocationMask = invocationMask_;
70409       return *this;
70410     }
70411 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70412 
operator VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const&VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI70413     operator VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const &() const VULKAN_HPP_NOEXCEPT
70414     {
70415       return *reinterpret_cast<const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI *>( this );
70416     }
70417 
operator VkPhysicalDeviceInvocationMaskFeaturesHUAWEI&VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI70418     operator VkPhysicalDeviceInvocationMaskFeaturesHUAWEI &() VULKAN_HPP_NOEXCEPT
70419     {
70420       return *reinterpret_cast<VkPhysicalDeviceInvocationMaskFeaturesHUAWEI *>( this );
70421     }
70422 
70423 #if defined( VULKAN_HPP_USE_REFLECT )
70424 #  if 14 <= VULKAN_HPP_CPP_VERSION
70425     auto
70426 #  else
70427     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
70428 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI70429       reflect() const VULKAN_HPP_NOEXCEPT
70430     {
70431       return std::tie( sType, pNext, invocationMask );
70432     }
70433 #endif
70434 
70435 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70436     auto operator<=>( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & ) const = default;
70437 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI70438     bool operator==( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
70439     {
70440 #  if defined( VULKAN_HPP_USE_REFLECT )
70441       return this->reflect() == rhs.reflect();
70442 #  else
70443       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( invocationMask == rhs.invocationMask );
70444 #  endif
70445     }
70446 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI70447     bool operator!=( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
70448     {
70449       return !operator==( rhs );
70450     }
70451 #endif
70452 
70453   public:
70454     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceInvocationMaskFeaturesHUAWEI;
70455     void *                              pNext          = {};
70456     VULKAN_HPP_NAMESPACE::Bool32        invocationMask = {};
70457   };
70458 
70459   template <>
70460   struct CppType<StructureType, StructureType::ePhysicalDeviceInvocationMaskFeaturesHUAWEI>
70461   {
70462     using Type = PhysicalDeviceInvocationMaskFeaturesHUAWEI;
70463   };
70464 
70465   struct PhysicalDeviceLayeredDriverPropertiesMSFT
70466   {
70467     using NativeType = VkPhysicalDeviceLayeredDriverPropertiesMSFT;
70468 
70469     static const bool                                  allowDuplicate = false;
70470     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceLayeredDriverPropertiesMSFT;
70471 
70472 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLayeredDriverPropertiesMSFTVULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredDriverPropertiesMSFT70473     VULKAN_HPP_CONSTEXPR PhysicalDeviceLayeredDriverPropertiesMSFT(
70474       VULKAN_HPP_NAMESPACE::LayeredDriverUnderlyingApiMSFT underlyingAPI_ = VULKAN_HPP_NAMESPACE::LayeredDriverUnderlyingApiMSFT::eNone,
70475       void *                                               pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
70476       : pNext{ pNext_ }
70477       , underlyingAPI{ underlyingAPI_ }
70478     {
70479     }
70480 
70481     VULKAN_HPP_CONSTEXPR PhysicalDeviceLayeredDriverPropertiesMSFT( PhysicalDeviceLayeredDriverPropertiesMSFT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70482 
PhysicalDeviceLayeredDriverPropertiesMSFTVULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredDriverPropertiesMSFT70483     PhysicalDeviceLayeredDriverPropertiesMSFT( VkPhysicalDeviceLayeredDriverPropertiesMSFT const & rhs ) VULKAN_HPP_NOEXCEPT
70484       : PhysicalDeviceLayeredDriverPropertiesMSFT( *reinterpret_cast<PhysicalDeviceLayeredDriverPropertiesMSFT const *>( &rhs ) )
70485     {
70486     }
70487 
70488     PhysicalDeviceLayeredDriverPropertiesMSFT & operator=( PhysicalDeviceLayeredDriverPropertiesMSFT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70489 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70490 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredDriverPropertiesMSFT70491     PhysicalDeviceLayeredDriverPropertiesMSFT & operator=( VkPhysicalDeviceLayeredDriverPropertiesMSFT const & rhs ) VULKAN_HPP_NOEXCEPT
70492     {
70493       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredDriverPropertiesMSFT const *>( &rhs );
70494       return *this;
70495     }
70496 
operator VkPhysicalDeviceLayeredDriverPropertiesMSFT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredDriverPropertiesMSFT70497     operator VkPhysicalDeviceLayeredDriverPropertiesMSFT const &() const VULKAN_HPP_NOEXCEPT
70498     {
70499       return *reinterpret_cast<const VkPhysicalDeviceLayeredDriverPropertiesMSFT *>( this );
70500     }
70501 
operator VkPhysicalDeviceLayeredDriverPropertiesMSFT&VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredDriverPropertiesMSFT70502     operator VkPhysicalDeviceLayeredDriverPropertiesMSFT &() VULKAN_HPP_NOEXCEPT
70503     {
70504       return *reinterpret_cast<VkPhysicalDeviceLayeredDriverPropertiesMSFT *>( this );
70505     }
70506 
70507 #if defined( VULKAN_HPP_USE_REFLECT )
70508 #  if 14 <= VULKAN_HPP_CPP_VERSION
70509     auto
70510 #  else
70511     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::LayeredDriverUnderlyingApiMSFT const &>
70512 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredDriverPropertiesMSFT70513       reflect() const VULKAN_HPP_NOEXCEPT
70514     {
70515       return std::tie( sType, pNext, underlyingAPI );
70516     }
70517 #endif
70518 
70519 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70520     auto operator<=>( PhysicalDeviceLayeredDriverPropertiesMSFT const & ) const = default;
70521 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredDriverPropertiesMSFT70522     bool operator==( PhysicalDeviceLayeredDriverPropertiesMSFT const & rhs ) const VULKAN_HPP_NOEXCEPT
70523     {
70524 #  if defined( VULKAN_HPP_USE_REFLECT )
70525       return this->reflect() == rhs.reflect();
70526 #  else
70527       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( underlyingAPI == rhs.underlyingAPI );
70528 #  endif
70529     }
70530 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredDriverPropertiesMSFT70531     bool operator!=( PhysicalDeviceLayeredDriverPropertiesMSFT const & rhs ) const VULKAN_HPP_NOEXCEPT
70532     {
70533       return !operator==( rhs );
70534     }
70535 #endif
70536 
70537   public:
70538     VULKAN_HPP_NAMESPACE::StructureType                  sType         = StructureType::ePhysicalDeviceLayeredDriverPropertiesMSFT;
70539     void *                                               pNext         = {};
70540     VULKAN_HPP_NAMESPACE::LayeredDriverUnderlyingApiMSFT underlyingAPI = VULKAN_HPP_NAMESPACE::LayeredDriverUnderlyingApiMSFT::eNone;
70541   };
70542 
70543   template <>
70544   struct CppType<StructureType, StructureType::ePhysicalDeviceLayeredDriverPropertiesMSFT>
70545   {
70546     using Type = PhysicalDeviceLayeredDriverPropertiesMSFT;
70547   };
70548 
70549   struct PhysicalDeviceLegacyDitheringFeaturesEXT
70550   {
70551     using NativeType = VkPhysicalDeviceLegacyDitheringFeaturesEXT;
70552 
70553     static const bool                                  allowDuplicate = false;
70554     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceLegacyDitheringFeaturesEXT;
70555 
70556 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLegacyDitheringFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT70557     VULKAN_HPP_CONSTEXPR PhysicalDeviceLegacyDitheringFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 legacyDithering_ = {},
70558                                                                    void *                       pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
70559       : pNext{ pNext_ }
70560       , legacyDithering{ legacyDithering_ }
70561     {
70562     }
70563 
70564     VULKAN_HPP_CONSTEXPR PhysicalDeviceLegacyDitheringFeaturesEXT( PhysicalDeviceLegacyDitheringFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70565 
PhysicalDeviceLegacyDitheringFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT70566     PhysicalDeviceLegacyDitheringFeaturesEXT( VkPhysicalDeviceLegacyDitheringFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
70567       : PhysicalDeviceLegacyDitheringFeaturesEXT( *reinterpret_cast<PhysicalDeviceLegacyDitheringFeaturesEXT const *>( &rhs ) )
70568     {
70569     }
70570 
70571     PhysicalDeviceLegacyDitheringFeaturesEXT & operator=( PhysicalDeviceLegacyDitheringFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70572 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70573 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT70574     PhysicalDeviceLegacyDitheringFeaturesEXT & operator=( VkPhysicalDeviceLegacyDitheringFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
70575     {
70576       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT const *>( &rhs );
70577       return *this;
70578     }
70579 
70580 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT70581     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLegacyDitheringFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
70582     {
70583       pNext = pNext_;
70584       return *this;
70585     }
70586 
setLegacyDitheringVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT70587     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLegacyDitheringFeaturesEXT & setLegacyDithering( VULKAN_HPP_NAMESPACE::Bool32 legacyDithering_ ) VULKAN_HPP_NOEXCEPT
70588     {
70589       legacyDithering = legacyDithering_;
70590       return *this;
70591     }
70592 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70593 
operator VkPhysicalDeviceLegacyDitheringFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT70594     operator VkPhysicalDeviceLegacyDitheringFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
70595     {
70596       return *reinterpret_cast<const VkPhysicalDeviceLegacyDitheringFeaturesEXT *>( this );
70597     }
70598 
operator VkPhysicalDeviceLegacyDitheringFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT70599     operator VkPhysicalDeviceLegacyDitheringFeaturesEXT &() VULKAN_HPP_NOEXCEPT
70600     {
70601       return *reinterpret_cast<VkPhysicalDeviceLegacyDitheringFeaturesEXT *>( this );
70602     }
70603 
70604 #if defined( VULKAN_HPP_USE_REFLECT )
70605 #  if 14 <= VULKAN_HPP_CPP_VERSION
70606     auto
70607 #  else
70608     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
70609 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT70610       reflect() const VULKAN_HPP_NOEXCEPT
70611     {
70612       return std::tie( sType, pNext, legacyDithering );
70613     }
70614 #endif
70615 
70616 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70617     auto operator<=>( PhysicalDeviceLegacyDitheringFeaturesEXT const & ) const = default;
70618 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT70619     bool operator==( PhysicalDeviceLegacyDitheringFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
70620     {
70621 #  if defined( VULKAN_HPP_USE_REFLECT )
70622       return this->reflect() == rhs.reflect();
70623 #  else
70624       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( legacyDithering == rhs.legacyDithering );
70625 #  endif
70626     }
70627 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT70628     bool operator!=( PhysicalDeviceLegacyDitheringFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
70629     {
70630       return !operator==( rhs );
70631     }
70632 #endif
70633 
70634   public:
70635     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::ePhysicalDeviceLegacyDitheringFeaturesEXT;
70636     void *                              pNext           = {};
70637     VULKAN_HPP_NAMESPACE::Bool32        legacyDithering = {};
70638   };
70639 
70640   template <>
70641   struct CppType<StructureType, StructureType::ePhysicalDeviceLegacyDitheringFeaturesEXT>
70642   {
70643     using Type = PhysicalDeviceLegacyDitheringFeaturesEXT;
70644   };
70645 
70646   struct PhysicalDeviceLegacyVertexAttributesFeaturesEXT
70647   {
70648     using NativeType = VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT;
70649 
70650     static const bool                                  allowDuplicate = false;
70651     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceLegacyVertexAttributesFeaturesEXT;
70652 
70653 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLegacyVertexAttributesFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT70654     VULKAN_HPP_CONSTEXPR PhysicalDeviceLegacyVertexAttributesFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 legacyVertexAttributes_ = {},
70655                                                                           void *                       pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
70656       : pNext{ pNext_ }
70657       , legacyVertexAttributes{ legacyVertexAttributes_ }
70658     {
70659     }
70660 
70661     VULKAN_HPP_CONSTEXPR
70662       PhysicalDeviceLegacyVertexAttributesFeaturesEXT( PhysicalDeviceLegacyVertexAttributesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70663 
PhysicalDeviceLegacyVertexAttributesFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT70664     PhysicalDeviceLegacyVertexAttributesFeaturesEXT( VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
70665       : PhysicalDeviceLegacyVertexAttributesFeaturesEXT( *reinterpret_cast<PhysicalDeviceLegacyVertexAttributesFeaturesEXT const *>( &rhs ) )
70666     {
70667     }
70668 
70669     PhysicalDeviceLegacyVertexAttributesFeaturesEXT & operator=( PhysicalDeviceLegacyVertexAttributesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70670 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70671 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT70672     PhysicalDeviceLegacyVertexAttributesFeaturesEXT & operator=( VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
70673     {
70674       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT const *>( &rhs );
70675       return *this;
70676     }
70677 
70678 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT70679     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLegacyVertexAttributesFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
70680     {
70681       pNext = pNext_;
70682       return *this;
70683     }
70684 
70685     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLegacyVertexAttributesFeaturesEXT &
setLegacyVertexAttributesVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT70686       setLegacyVertexAttributes( VULKAN_HPP_NAMESPACE::Bool32 legacyVertexAttributes_ ) VULKAN_HPP_NOEXCEPT
70687     {
70688       legacyVertexAttributes = legacyVertexAttributes_;
70689       return *this;
70690     }
70691 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70692 
operator VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT70693     operator VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
70694     {
70695       return *reinterpret_cast<const VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT *>( this );
70696     }
70697 
operator VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT70698     operator VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT &() VULKAN_HPP_NOEXCEPT
70699     {
70700       return *reinterpret_cast<VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT *>( this );
70701     }
70702 
70703 #if defined( VULKAN_HPP_USE_REFLECT )
70704 #  if 14 <= VULKAN_HPP_CPP_VERSION
70705     auto
70706 #  else
70707     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
70708 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT70709       reflect() const VULKAN_HPP_NOEXCEPT
70710     {
70711       return std::tie( sType, pNext, legacyVertexAttributes );
70712     }
70713 #endif
70714 
70715 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70716     auto operator<=>( PhysicalDeviceLegacyVertexAttributesFeaturesEXT const & ) const = default;
70717 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT70718     bool operator==( PhysicalDeviceLegacyVertexAttributesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
70719     {
70720 #  if defined( VULKAN_HPP_USE_REFLECT )
70721       return this->reflect() == rhs.reflect();
70722 #  else
70723       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( legacyVertexAttributes == rhs.legacyVertexAttributes );
70724 #  endif
70725     }
70726 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT70727     bool operator!=( PhysicalDeviceLegacyVertexAttributesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
70728     {
70729       return !operator==( rhs );
70730     }
70731 #endif
70732 
70733   public:
70734     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::ePhysicalDeviceLegacyVertexAttributesFeaturesEXT;
70735     void *                              pNext                  = {};
70736     VULKAN_HPP_NAMESPACE::Bool32        legacyVertexAttributes = {};
70737   };
70738 
70739   template <>
70740   struct CppType<StructureType, StructureType::ePhysicalDeviceLegacyVertexAttributesFeaturesEXT>
70741   {
70742     using Type = PhysicalDeviceLegacyVertexAttributesFeaturesEXT;
70743   };
70744 
70745   struct PhysicalDeviceLegacyVertexAttributesPropertiesEXT
70746   {
70747     using NativeType = VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT;
70748 
70749     static const bool                                  allowDuplicate = false;
70750     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceLegacyVertexAttributesPropertiesEXT;
70751 
70752 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLegacyVertexAttributesPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT70753     VULKAN_HPP_CONSTEXPR PhysicalDeviceLegacyVertexAttributesPropertiesEXT( VULKAN_HPP_NAMESPACE::Bool32 nativeUnalignedPerformance_ = {},
70754                                                                             void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
70755       : pNext{ pNext_ }
70756       , nativeUnalignedPerformance{ nativeUnalignedPerformance_ }
70757     {
70758     }
70759 
70760     VULKAN_HPP_CONSTEXPR
70761       PhysicalDeviceLegacyVertexAttributesPropertiesEXT( PhysicalDeviceLegacyVertexAttributesPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70762 
PhysicalDeviceLegacyVertexAttributesPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT70763     PhysicalDeviceLegacyVertexAttributesPropertiesEXT( VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
70764       : PhysicalDeviceLegacyVertexAttributesPropertiesEXT( *reinterpret_cast<PhysicalDeviceLegacyVertexAttributesPropertiesEXT const *>( &rhs ) )
70765     {
70766     }
70767 
70768     PhysicalDeviceLegacyVertexAttributesPropertiesEXT &
70769       operator=( PhysicalDeviceLegacyVertexAttributesPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
70770 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
70771 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT70772     PhysicalDeviceLegacyVertexAttributesPropertiesEXT & operator=( VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
70773     {
70774       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT const *>( &rhs );
70775       return *this;
70776     }
70777 
70778 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT70779     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLegacyVertexAttributesPropertiesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
70780     {
70781       pNext = pNext_;
70782       return *this;
70783     }
70784 
70785     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLegacyVertexAttributesPropertiesEXT &
setNativeUnalignedPerformanceVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT70786       setNativeUnalignedPerformance( VULKAN_HPP_NAMESPACE::Bool32 nativeUnalignedPerformance_ ) VULKAN_HPP_NOEXCEPT
70787     {
70788       nativeUnalignedPerformance = nativeUnalignedPerformance_;
70789       return *this;
70790     }
70791 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
70792 
operator VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT70793     operator VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
70794     {
70795       return *reinterpret_cast<const VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT *>( this );
70796     }
70797 
operator VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT70798     operator VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT &() VULKAN_HPP_NOEXCEPT
70799     {
70800       return *reinterpret_cast<VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT *>( this );
70801     }
70802 
70803 #if defined( VULKAN_HPP_USE_REFLECT )
70804 #  if 14 <= VULKAN_HPP_CPP_VERSION
70805     auto
70806 #  else
70807     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
70808 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT70809       reflect() const VULKAN_HPP_NOEXCEPT
70810     {
70811       return std::tie( sType, pNext, nativeUnalignedPerformance );
70812     }
70813 #endif
70814 
70815 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
70816     auto operator<=>( PhysicalDeviceLegacyVertexAttributesPropertiesEXT const & ) const = default;
70817 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT70818     bool operator==( PhysicalDeviceLegacyVertexAttributesPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
70819     {
70820 #  if defined( VULKAN_HPP_USE_REFLECT )
70821       return this->reflect() == rhs.reflect();
70822 #  else
70823       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( nativeUnalignedPerformance == rhs.nativeUnalignedPerformance );
70824 #  endif
70825     }
70826 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT70827     bool operator!=( PhysicalDeviceLegacyVertexAttributesPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
70828     {
70829       return !operator==( rhs );
70830     }
70831 #endif
70832 
70833   public:
70834     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::ePhysicalDeviceLegacyVertexAttributesPropertiesEXT;
70835     void *                              pNext                      = {};
70836     VULKAN_HPP_NAMESPACE::Bool32        nativeUnalignedPerformance = {};
70837   };
70838 
70839   template <>
70840   struct CppType<StructureType, StructureType::ePhysicalDeviceLegacyVertexAttributesPropertiesEXT>
70841   {
70842     using Type = PhysicalDeviceLegacyVertexAttributesPropertiesEXT;
70843   };
70844 
70845   struct PhysicalDeviceLimits
70846   {
70847     using NativeType = VkPhysicalDeviceLimits;
70848 
70849 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLimitsVULKAN_HPP_NAMESPACE::PhysicalDeviceLimits70850     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLimits( uint32_t                               maxImageDimension1D_                             = {},
70851                                                   uint32_t                               maxImageDimension2D_                             = {},
70852                                                   uint32_t                               maxImageDimension3D_                             = {},
70853                                                   uint32_t                               maxImageDimensionCube_                           = {},
70854                                                   uint32_t                               maxImageArrayLayers_                             = {},
70855                                                   uint32_t                               maxTexelBufferElements_                          = {},
70856                                                   uint32_t                               maxUniformBufferRange_                           = {},
70857                                                   uint32_t                               maxStorageBufferRange_                           = {},
70858                                                   uint32_t                               maxPushConstantsSize_                            = {},
70859                                                   uint32_t                               maxMemoryAllocationCount_                        = {},
70860                                                   uint32_t                               maxSamplerAllocationCount_                       = {},
70861                                                   VULKAN_HPP_NAMESPACE::DeviceSize       bufferImageGranularity_                          = {},
70862                                                   VULKAN_HPP_NAMESPACE::DeviceSize       sparseAddressSpaceSize_                          = {},
70863                                                   uint32_t                               maxBoundDescriptorSets_                          = {},
70864                                                   uint32_t                               maxPerStageDescriptorSamplers_                   = {},
70865                                                   uint32_t                               maxPerStageDescriptorUniformBuffers_             = {},
70866                                                   uint32_t                               maxPerStageDescriptorStorageBuffers_             = {},
70867                                                   uint32_t                               maxPerStageDescriptorSampledImages_              = {},
70868                                                   uint32_t                               maxPerStageDescriptorStorageImages_              = {},
70869                                                   uint32_t                               maxPerStageDescriptorInputAttachments_           = {},
70870                                                   uint32_t                               maxPerStageResources_                            = {},
70871                                                   uint32_t                               maxDescriptorSetSamplers_                        = {},
70872                                                   uint32_t                               maxDescriptorSetUniformBuffers_                  = {},
70873                                                   uint32_t                               maxDescriptorSetUniformBuffersDynamic_           = {},
70874                                                   uint32_t                               maxDescriptorSetStorageBuffers_                  = {},
70875                                                   uint32_t                               maxDescriptorSetStorageBuffersDynamic_           = {},
70876                                                   uint32_t                               maxDescriptorSetSampledImages_                   = {},
70877                                                   uint32_t                               maxDescriptorSetStorageImages_                   = {},
70878                                                   uint32_t                               maxDescriptorSetInputAttachments_                = {},
70879                                                   uint32_t                               maxVertexInputAttributes_                        = {},
70880                                                   uint32_t                               maxVertexInputBindings_                          = {},
70881                                                   uint32_t                               maxVertexInputAttributeOffset_                   = {},
70882                                                   uint32_t                               maxVertexInputBindingStride_                     = {},
70883                                                   uint32_t                               maxVertexOutputComponents_                       = {},
70884                                                   uint32_t                               maxTessellationGenerationLevel_                  = {},
70885                                                   uint32_t                               maxTessellationPatchSize_                        = {},
70886                                                   uint32_t                               maxTessellationControlPerVertexInputComponents_  = {},
70887                                                   uint32_t                               maxTessellationControlPerVertexOutputComponents_ = {},
70888                                                   uint32_t                               maxTessellationControlPerPatchOutputComponents_  = {},
70889                                                   uint32_t                               maxTessellationControlTotalOutputComponents_     = {},
70890                                                   uint32_t                               maxTessellationEvaluationInputComponents_        = {},
70891                                                   uint32_t                               maxTessellationEvaluationOutputComponents_       = {},
70892                                                   uint32_t                               maxGeometryShaderInvocations_                    = {},
70893                                                   uint32_t                               maxGeometryInputComponents_                      = {},
70894                                                   uint32_t                               maxGeometryOutputComponents_                     = {},
70895                                                   uint32_t                               maxGeometryOutputVertices_                       = {},
70896                                                   uint32_t                               maxGeometryTotalOutputComponents_                = {},
70897                                                   uint32_t                               maxFragmentInputComponents_                      = {},
70898                                                   uint32_t                               maxFragmentOutputAttachments_                    = {},
70899                                                   uint32_t                               maxFragmentDualSrcAttachments_                   = {},
70900                                                   uint32_t                               maxFragmentCombinedOutputResources_              = {},
70901                                                   uint32_t                               maxComputeSharedMemorySize_                      = {},
70902                                                   std::array<uint32_t, 3> const &        maxComputeWorkGroupCount_                        = {},
70903                                                   uint32_t                               maxComputeWorkGroupInvocations_                  = {},
70904                                                   std::array<uint32_t, 3> const &        maxComputeWorkGroupSize_                         = {},
70905                                                   uint32_t                               subPixelPrecisionBits_                           = {},
70906                                                   uint32_t                               subTexelPrecisionBits_                           = {},
70907                                                   uint32_t                               mipmapPrecisionBits_                             = {},
70908                                                   uint32_t                               maxDrawIndexedIndexValue_                        = {},
70909                                                   uint32_t                               maxDrawIndirectCount_                            = {},
70910                                                   float                                  maxSamplerLodBias_                               = {},
70911                                                   float                                  maxSamplerAnisotropy_                            = {},
70912                                                   uint32_t                               maxViewports_                                    = {},
70913                                                   std::array<uint32_t, 2> const &        maxViewportDimensions_                           = {},
70914                                                   std::array<float, 2> const &           viewportBoundsRange_                             = {},
70915                                                   uint32_t                               viewportSubPixelBits_                            = {},
70916                                                   size_t                                 minMemoryMapAlignment_                           = {},
70917                                                   VULKAN_HPP_NAMESPACE::DeviceSize       minTexelBufferOffsetAlignment_                   = {},
70918                                                   VULKAN_HPP_NAMESPACE::DeviceSize       minUniformBufferOffsetAlignment_                 = {},
70919                                                   VULKAN_HPP_NAMESPACE::DeviceSize       minStorageBufferOffsetAlignment_                 = {},
70920                                                   int32_t                                minTexelOffset_                                  = {},
70921                                                   uint32_t                               maxTexelOffset_                                  = {},
70922                                                   int32_t                                minTexelGatherOffset_                            = {},
70923                                                   uint32_t                               maxTexelGatherOffset_                            = {},
70924                                                   float                                  minInterpolationOffset_                          = {},
70925                                                   float                                  maxInterpolationOffset_                          = {},
70926                                                   uint32_t                               subPixelInterpolationOffsetBits_                 = {},
70927                                                   uint32_t                               maxFramebufferWidth_                             = {},
70928                                                   uint32_t                               maxFramebufferHeight_                            = {},
70929                                                   uint32_t                               maxFramebufferLayers_                            = {},
70930                                                   VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferColorSampleCounts_                    = {},
70931                                                   VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferDepthSampleCounts_                    = {},
70932                                                   VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferStencilSampleCounts_                  = {},
70933                                                   VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferNoAttachmentsSampleCounts_            = {},
70934                                                   uint32_t                               maxColorAttachments_                             = {},
70935                                                   VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageColorSampleCounts_                   = {},
70936                                                   VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageIntegerSampleCounts_                 = {},
70937                                                   VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageDepthSampleCounts_                   = {},
70938                                                   VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageStencilSampleCounts_                 = {},
70939                                                   VULKAN_HPP_NAMESPACE::SampleCountFlags storageImageSampleCounts_                        = {},
70940                                                   uint32_t                               maxSampleMaskWords_                              = {},
70941                                                   VULKAN_HPP_NAMESPACE::Bool32           timestampComputeAndGraphics_                     = {},
70942                                                   float                                  timestampPeriod_                                 = {},
70943                                                   uint32_t                               maxClipDistances_                                = {},
70944                                                   uint32_t                               maxCullDistances_                                = {},
70945                                                   uint32_t                               maxCombinedClipAndCullDistances_                 = {},
70946                                                   uint32_t                               discreteQueuePriorities_                         = {},
70947                                                   std::array<float, 2> const &           pointSizeRange_                                  = {},
70948                                                   std::array<float, 2> const &           lineWidthRange_                                  = {},
70949                                                   float                                  pointSizeGranularity_                            = {},
70950                                                   float                                  lineWidthGranularity_                            = {},
70951                                                   VULKAN_HPP_NAMESPACE::Bool32           strictLines_                                     = {},
70952                                                   VULKAN_HPP_NAMESPACE::Bool32           standardSampleLocations_                         = {},
70953                                                   VULKAN_HPP_NAMESPACE::DeviceSize       optimalBufferCopyOffsetAlignment_                = {},
70954                                                   VULKAN_HPP_NAMESPACE::DeviceSize       optimalBufferCopyRowPitchAlignment_              = {},
70955                                                   VULKAN_HPP_NAMESPACE::DeviceSize       nonCoherentAtomSize_ = {} ) VULKAN_HPP_NOEXCEPT
70956       : maxImageDimension1D{ maxImageDimension1D_ }
70957       , maxImageDimension2D{ maxImageDimension2D_ }
70958       , maxImageDimension3D{ maxImageDimension3D_ }
70959       , maxImageDimensionCube{ maxImageDimensionCube_ }
70960       , maxImageArrayLayers{ maxImageArrayLayers_ }
70961       , maxTexelBufferElements{ maxTexelBufferElements_ }
70962       , maxUniformBufferRange{ maxUniformBufferRange_ }
70963       , maxStorageBufferRange{ maxStorageBufferRange_ }
70964       , maxPushConstantsSize{ maxPushConstantsSize_ }
70965       , maxMemoryAllocationCount{ maxMemoryAllocationCount_ }
70966       , maxSamplerAllocationCount{ maxSamplerAllocationCount_ }
70967       , bufferImageGranularity{ bufferImageGranularity_ }
70968       , sparseAddressSpaceSize{ sparseAddressSpaceSize_ }
70969       , maxBoundDescriptorSets{ maxBoundDescriptorSets_ }
70970       , maxPerStageDescriptorSamplers{ maxPerStageDescriptorSamplers_ }
70971       , maxPerStageDescriptorUniformBuffers{ maxPerStageDescriptorUniformBuffers_ }
70972       , maxPerStageDescriptorStorageBuffers{ maxPerStageDescriptorStorageBuffers_ }
70973       , maxPerStageDescriptorSampledImages{ maxPerStageDescriptorSampledImages_ }
70974       , maxPerStageDescriptorStorageImages{ maxPerStageDescriptorStorageImages_ }
70975       , maxPerStageDescriptorInputAttachments{ maxPerStageDescriptorInputAttachments_ }
70976       , maxPerStageResources{ maxPerStageResources_ }
70977       , maxDescriptorSetSamplers{ maxDescriptorSetSamplers_ }
70978       , maxDescriptorSetUniformBuffers{ maxDescriptorSetUniformBuffers_ }
70979       , maxDescriptorSetUniformBuffersDynamic{ maxDescriptorSetUniformBuffersDynamic_ }
70980       , maxDescriptorSetStorageBuffers{ maxDescriptorSetStorageBuffers_ }
70981       , maxDescriptorSetStorageBuffersDynamic{ maxDescriptorSetStorageBuffersDynamic_ }
70982       , maxDescriptorSetSampledImages{ maxDescriptorSetSampledImages_ }
70983       , maxDescriptorSetStorageImages{ maxDescriptorSetStorageImages_ }
70984       , maxDescriptorSetInputAttachments{ maxDescriptorSetInputAttachments_ }
70985       , maxVertexInputAttributes{ maxVertexInputAttributes_ }
70986       , maxVertexInputBindings{ maxVertexInputBindings_ }
70987       , maxVertexInputAttributeOffset{ maxVertexInputAttributeOffset_ }
70988       , maxVertexInputBindingStride{ maxVertexInputBindingStride_ }
70989       , maxVertexOutputComponents{ maxVertexOutputComponents_ }
70990       , maxTessellationGenerationLevel{ maxTessellationGenerationLevel_ }
70991       , maxTessellationPatchSize{ maxTessellationPatchSize_ }
70992       , maxTessellationControlPerVertexInputComponents{ maxTessellationControlPerVertexInputComponents_ }
70993       , maxTessellationControlPerVertexOutputComponents{ maxTessellationControlPerVertexOutputComponents_ }
70994       , maxTessellationControlPerPatchOutputComponents{ maxTessellationControlPerPatchOutputComponents_ }
70995       , maxTessellationControlTotalOutputComponents{ maxTessellationControlTotalOutputComponents_ }
70996       , maxTessellationEvaluationInputComponents{ maxTessellationEvaluationInputComponents_ }
70997       , maxTessellationEvaluationOutputComponents{ maxTessellationEvaluationOutputComponents_ }
70998       , maxGeometryShaderInvocations{ maxGeometryShaderInvocations_ }
70999       , maxGeometryInputComponents{ maxGeometryInputComponents_ }
71000       , maxGeometryOutputComponents{ maxGeometryOutputComponents_ }
71001       , maxGeometryOutputVertices{ maxGeometryOutputVertices_ }
71002       , maxGeometryTotalOutputComponents{ maxGeometryTotalOutputComponents_ }
71003       , maxFragmentInputComponents{ maxFragmentInputComponents_ }
71004       , maxFragmentOutputAttachments{ maxFragmentOutputAttachments_ }
71005       , maxFragmentDualSrcAttachments{ maxFragmentDualSrcAttachments_ }
71006       , maxFragmentCombinedOutputResources{ maxFragmentCombinedOutputResources_ }
71007       , maxComputeSharedMemorySize{ maxComputeSharedMemorySize_ }
71008       , maxComputeWorkGroupCount{ maxComputeWorkGroupCount_ }
71009       , maxComputeWorkGroupInvocations{ maxComputeWorkGroupInvocations_ }
71010       , maxComputeWorkGroupSize{ maxComputeWorkGroupSize_ }
71011       , subPixelPrecisionBits{ subPixelPrecisionBits_ }
71012       , subTexelPrecisionBits{ subTexelPrecisionBits_ }
71013       , mipmapPrecisionBits{ mipmapPrecisionBits_ }
71014       , maxDrawIndexedIndexValue{ maxDrawIndexedIndexValue_ }
71015       , maxDrawIndirectCount{ maxDrawIndirectCount_ }
71016       , maxSamplerLodBias{ maxSamplerLodBias_ }
71017       , maxSamplerAnisotropy{ maxSamplerAnisotropy_ }
71018       , maxViewports{ maxViewports_ }
71019       , maxViewportDimensions{ maxViewportDimensions_ }
71020       , viewportBoundsRange{ viewportBoundsRange_ }
71021       , viewportSubPixelBits{ viewportSubPixelBits_ }
71022       , minMemoryMapAlignment{ minMemoryMapAlignment_ }
71023       , minTexelBufferOffsetAlignment{ minTexelBufferOffsetAlignment_ }
71024       , minUniformBufferOffsetAlignment{ minUniformBufferOffsetAlignment_ }
71025       , minStorageBufferOffsetAlignment{ minStorageBufferOffsetAlignment_ }
71026       , minTexelOffset{ minTexelOffset_ }
71027       , maxTexelOffset{ maxTexelOffset_ }
71028       , minTexelGatherOffset{ minTexelGatherOffset_ }
71029       , maxTexelGatherOffset{ maxTexelGatherOffset_ }
71030       , minInterpolationOffset{ minInterpolationOffset_ }
71031       , maxInterpolationOffset{ maxInterpolationOffset_ }
71032       , subPixelInterpolationOffsetBits{ subPixelInterpolationOffsetBits_ }
71033       , maxFramebufferWidth{ maxFramebufferWidth_ }
71034       , maxFramebufferHeight{ maxFramebufferHeight_ }
71035       , maxFramebufferLayers{ maxFramebufferLayers_ }
71036       , framebufferColorSampleCounts{ framebufferColorSampleCounts_ }
71037       , framebufferDepthSampleCounts{ framebufferDepthSampleCounts_ }
71038       , framebufferStencilSampleCounts{ framebufferStencilSampleCounts_ }
71039       , framebufferNoAttachmentsSampleCounts{ framebufferNoAttachmentsSampleCounts_ }
71040       , maxColorAttachments{ maxColorAttachments_ }
71041       , sampledImageColorSampleCounts{ sampledImageColorSampleCounts_ }
71042       , sampledImageIntegerSampleCounts{ sampledImageIntegerSampleCounts_ }
71043       , sampledImageDepthSampleCounts{ sampledImageDepthSampleCounts_ }
71044       , sampledImageStencilSampleCounts{ sampledImageStencilSampleCounts_ }
71045       , storageImageSampleCounts{ storageImageSampleCounts_ }
71046       , maxSampleMaskWords{ maxSampleMaskWords_ }
71047       , timestampComputeAndGraphics{ timestampComputeAndGraphics_ }
71048       , timestampPeriod{ timestampPeriod_ }
71049       , maxClipDistances{ maxClipDistances_ }
71050       , maxCullDistances{ maxCullDistances_ }
71051       , maxCombinedClipAndCullDistances{ maxCombinedClipAndCullDistances_ }
71052       , discreteQueuePriorities{ discreteQueuePriorities_ }
71053       , pointSizeRange{ pointSizeRange_ }
71054       , lineWidthRange{ lineWidthRange_ }
71055       , pointSizeGranularity{ pointSizeGranularity_ }
71056       , lineWidthGranularity{ lineWidthGranularity_ }
71057       , strictLines{ strictLines_ }
71058       , standardSampleLocations{ standardSampleLocations_ }
71059       , optimalBufferCopyOffsetAlignment{ optimalBufferCopyOffsetAlignment_ }
71060       , optimalBufferCopyRowPitchAlignment{ optimalBufferCopyRowPitchAlignment_ }
71061       , nonCoherentAtomSize{ nonCoherentAtomSize_ }
71062     {
71063     }
71064 
71065     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLimits( PhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71066 
PhysicalDeviceLimitsVULKAN_HPP_NAMESPACE::PhysicalDeviceLimits71067     PhysicalDeviceLimits( VkPhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT
71068       : PhysicalDeviceLimits( *reinterpret_cast<PhysicalDeviceLimits const *>( &rhs ) )
71069     {
71070     }
71071 
71072     PhysicalDeviceLimits & operator=( PhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71073 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
71074 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits71075     PhysicalDeviceLimits & operator=( VkPhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT
71076     {
71077       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits const *>( &rhs );
71078       return *this;
71079     }
71080 
operator VkPhysicalDeviceLimits const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits71081     operator VkPhysicalDeviceLimits const &() const VULKAN_HPP_NOEXCEPT
71082     {
71083       return *reinterpret_cast<const VkPhysicalDeviceLimits *>( this );
71084     }
71085 
operator VkPhysicalDeviceLimits&VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits71086     operator VkPhysicalDeviceLimits &() VULKAN_HPP_NOEXCEPT
71087     {
71088       return *reinterpret_cast<VkPhysicalDeviceLimits *>( this );
71089     }
71090 
71091 #if defined( VULKAN_HPP_USE_REFLECT )
71092 #  if 14 <= VULKAN_HPP_CPP_VERSION
71093     auto
71094 #  else
71095     std::tuple<uint32_t const &,
71096                uint32_t const &,
71097                uint32_t const &,
71098                uint32_t const &,
71099                uint32_t const &,
71100                uint32_t const &,
71101                uint32_t const &,
71102                uint32_t const &,
71103                uint32_t const &,
71104                uint32_t const &,
71105                uint32_t const &,
71106                VULKAN_HPP_NAMESPACE::DeviceSize const &,
71107                VULKAN_HPP_NAMESPACE::DeviceSize const &,
71108                uint32_t const &,
71109                uint32_t const &,
71110                uint32_t const &,
71111                uint32_t const &,
71112                uint32_t const &,
71113                uint32_t const &,
71114                uint32_t const &,
71115                uint32_t const &,
71116                uint32_t const &,
71117                uint32_t const &,
71118                uint32_t const &,
71119                uint32_t const &,
71120                uint32_t const &,
71121                uint32_t const &,
71122                uint32_t const &,
71123                uint32_t const &,
71124                uint32_t const &,
71125                uint32_t const &,
71126                uint32_t const &,
71127                uint32_t const &,
71128                uint32_t const &,
71129                uint32_t const &,
71130                uint32_t const &,
71131                uint32_t const &,
71132                uint32_t const &,
71133                uint32_t const &,
71134                uint32_t const &,
71135                uint32_t const &,
71136                uint32_t const &,
71137                uint32_t const &,
71138                uint32_t const &,
71139                uint32_t const &,
71140                uint32_t const &,
71141                uint32_t const &,
71142                uint32_t const &,
71143                uint32_t const &,
71144                uint32_t const &,
71145                uint32_t const &,
71146                uint32_t const &,
71147                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
71148                uint32_t const &,
71149                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
71150                uint32_t const &,
71151                uint32_t const &,
71152                uint32_t const &,
71153                uint32_t const &,
71154                uint32_t const &,
71155                float const &,
71156                float const &,
71157                uint32_t const &,
71158                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 2> const &,
71159                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> const &,
71160                uint32_t const &,
71161                size_t const &,
71162                VULKAN_HPP_NAMESPACE::DeviceSize const &,
71163                VULKAN_HPP_NAMESPACE::DeviceSize const &,
71164                VULKAN_HPP_NAMESPACE::DeviceSize const &,
71165                int32_t const &,
71166                uint32_t const &,
71167                int32_t const &,
71168                uint32_t const &,
71169                float const &,
71170                float const &,
71171                uint32_t const &,
71172                uint32_t const &,
71173                uint32_t const &,
71174                uint32_t const &,
71175                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
71176                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
71177                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
71178                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
71179                uint32_t const &,
71180                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
71181                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
71182                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
71183                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
71184                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
71185                uint32_t const &,
71186                VULKAN_HPP_NAMESPACE::Bool32 const &,
71187                float const &,
71188                uint32_t const &,
71189                uint32_t const &,
71190                uint32_t const &,
71191                uint32_t const &,
71192                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> const &,
71193                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> const &,
71194                float const &,
71195                float const &,
71196                VULKAN_HPP_NAMESPACE::Bool32 const &,
71197                VULKAN_HPP_NAMESPACE::Bool32 const &,
71198                VULKAN_HPP_NAMESPACE::DeviceSize const &,
71199                VULKAN_HPP_NAMESPACE::DeviceSize const &,
71200                VULKAN_HPP_NAMESPACE::DeviceSize const &>
71201 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLimits71202       reflect() const VULKAN_HPP_NOEXCEPT
71203     {
71204       return std::tie( maxImageDimension1D,
71205                        maxImageDimension2D,
71206                        maxImageDimension3D,
71207                        maxImageDimensionCube,
71208                        maxImageArrayLayers,
71209                        maxTexelBufferElements,
71210                        maxUniformBufferRange,
71211                        maxStorageBufferRange,
71212                        maxPushConstantsSize,
71213                        maxMemoryAllocationCount,
71214                        maxSamplerAllocationCount,
71215                        bufferImageGranularity,
71216                        sparseAddressSpaceSize,
71217                        maxBoundDescriptorSets,
71218                        maxPerStageDescriptorSamplers,
71219                        maxPerStageDescriptorUniformBuffers,
71220                        maxPerStageDescriptorStorageBuffers,
71221                        maxPerStageDescriptorSampledImages,
71222                        maxPerStageDescriptorStorageImages,
71223                        maxPerStageDescriptorInputAttachments,
71224                        maxPerStageResources,
71225                        maxDescriptorSetSamplers,
71226                        maxDescriptorSetUniformBuffers,
71227                        maxDescriptorSetUniformBuffersDynamic,
71228                        maxDescriptorSetStorageBuffers,
71229                        maxDescriptorSetStorageBuffersDynamic,
71230                        maxDescriptorSetSampledImages,
71231                        maxDescriptorSetStorageImages,
71232                        maxDescriptorSetInputAttachments,
71233                        maxVertexInputAttributes,
71234                        maxVertexInputBindings,
71235                        maxVertexInputAttributeOffset,
71236                        maxVertexInputBindingStride,
71237                        maxVertexOutputComponents,
71238                        maxTessellationGenerationLevel,
71239                        maxTessellationPatchSize,
71240                        maxTessellationControlPerVertexInputComponents,
71241                        maxTessellationControlPerVertexOutputComponents,
71242                        maxTessellationControlPerPatchOutputComponents,
71243                        maxTessellationControlTotalOutputComponents,
71244                        maxTessellationEvaluationInputComponents,
71245                        maxTessellationEvaluationOutputComponents,
71246                        maxGeometryShaderInvocations,
71247                        maxGeometryInputComponents,
71248                        maxGeometryOutputComponents,
71249                        maxGeometryOutputVertices,
71250                        maxGeometryTotalOutputComponents,
71251                        maxFragmentInputComponents,
71252                        maxFragmentOutputAttachments,
71253                        maxFragmentDualSrcAttachments,
71254                        maxFragmentCombinedOutputResources,
71255                        maxComputeSharedMemorySize,
71256                        maxComputeWorkGroupCount,
71257                        maxComputeWorkGroupInvocations,
71258                        maxComputeWorkGroupSize,
71259                        subPixelPrecisionBits,
71260                        subTexelPrecisionBits,
71261                        mipmapPrecisionBits,
71262                        maxDrawIndexedIndexValue,
71263                        maxDrawIndirectCount,
71264                        maxSamplerLodBias,
71265                        maxSamplerAnisotropy,
71266                        maxViewports,
71267                        maxViewportDimensions,
71268                        viewportBoundsRange,
71269                        viewportSubPixelBits,
71270                        minMemoryMapAlignment,
71271                        minTexelBufferOffsetAlignment,
71272                        minUniformBufferOffsetAlignment,
71273                        minStorageBufferOffsetAlignment,
71274                        minTexelOffset,
71275                        maxTexelOffset,
71276                        minTexelGatherOffset,
71277                        maxTexelGatherOffset,
71278                        minInterpolationOffset,
71279                        maxInterpolationOffset,
71280                        subPixelInterpolationOffsetBits,
71281                        maxFramebufferWidth,
71282                        maxFramebufferHeight,
71283                        maxFramebufferLayers,
71284                        framebufferColorSampleCounts,
71285                        framebufferDepthSampleCounts,
71286                        framebufferStencilSampleCounts,
71287                        framebufferNoAttachmentsSampleCounts,
71288                        maxColorAttachments,
71289                        sampledImageColorSampleCounts,
71290                        sampledImageIntegerSampleCounts,
71291                        sampledImageDepthSampleCounts,
71292                        sampledImageStencilSampleCounts,
71293                        storageImageSampleCounts,
71294                        maxSampleMaskWords,
71295                        timestampComputeAndGraphics,
71296                        timestampPeriod,
71297                        maxClipDistances,
71298                        maxCullDistances,
71299                        maxCombinedClipAndCullDistances,
71300                        discreteQueuePriorities,
71301                        pointSizeRange,
71302                        lineWidthRange,
71303                        pointSizeGranularity,
71304                        lineWidthGranularity,
71305                        strictLines,
71306                        standardSampleLocations,
71307                        optimalBufferCopyOffsetAlignment,
71308                        optimalBufferCopyRowPitchAlignment,
71309                        nonCoherentAtomSize );
71310     }
71311 #endif
71312 
71313 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
71314     auto operator<=>( PhysicalDeviceLimits const & ) const = default;
71315 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits71316     bool operator==( PhysicalDeviceLimits const & rhs ) const VULKAN_HPP_NOEXCEPT
71317     {
71318 #  if defined( VULKAN_HPP_USE_REFLECT )
71319       return this->reflect() == rhs.reflect();
71320 #  else
71321       return ( maxImageDimension1D == rhs.maxImageDimension1D ) && ( maxImageDimension2D == rhs.maxImageDimension2D ) &&
71322              ( maxImageDimension3D == rhs.maxImageDimension3D ) && ( maxImageDimensionCube == rhs.maxImageDimensionCube ) &&
71323              ( maxImageArrayLayers == rhs.maxImageArrayLayers ) && ( maxTexelBufferElements == rhs.maxTexelBufferElements ) &&
71324              ( maxUniformBufferRange == rhs.maxUniformBufferRange ) && ( maxStorageBufferRange == rhs.maxStorageBufferRange ) &&
71325              ( maxPushConstantsSize == rhs.maxPushConstantsSize ) && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount ) &&
71326              ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount ) && ( bufferImageGranularity == rhs.bufferImageGranularity ) &&
71327              ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize ) && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets ) &&
71328              ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers ) &&
71329              ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers ) &&
71330              ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers ) &&
71331              ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages ) &&
71332              ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages ) &&
71333              ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments ) && ( maxPerStageResources == rhs.maxPerStageResources ) &&
71334              ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers ) && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers ) &&
71335              ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic ) &&
71336              ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers ) &&
71337              ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic ) &&
71338              ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages ) && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages ) &&
71339              ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments ) && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes ) &&
71340              ( maxVertexInputBindings == rhs.maxVertexInputBindings ) && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset ) &&
71341              ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride ) && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents ) &&
71342              ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel ) && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize ) &&
71343              ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents ) &&
71344              ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents ) &&
71345              ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents ) &&
71346              ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents ) &&
71347              ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents ) &&
71348              ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents ) &&
71349              ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations ) && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents ) &&
71350              ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents ) && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices ) &&
71351              ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents ) && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents ) &&
71352              ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments ) && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments ) &&
71353              ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources ) &&
71354              ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize ) && ( maxComputeWorkGroupCount == rhs.maxComputeWorkGroupCount ) &&
71355              ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations ) && ( maxComputeWorkGroupSize == rhs.maxComputeWorkGroupSize ) &&
71356              ( subPixelPrecisionBits == rhs.subPixelPrecisionBits ) && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits ) &&
71357              ( mipmapPrecisionBits == rhs.mipmapPrecisionBits ) && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue ) &&
71358              ( maxDrawIndirectCount == rhs.maxDrawIndirectCount ) && ( maxSamplerLodBias == rhs.maxSamplerLodBias ) &&
71359              ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy ) && ( maxViewports == rhs.maxViewports ) &&
71360              ( maxViewportDimensions == rhs.maxViewportDimensions ) && ( viewportBoundsRange == rhs.viewportBoundsRange ) &&
71361              ( viewportSubPixelBits == rhs.viewportSubPixelBits ) && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment ) &&
71362              ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment ) &&
71363              ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment ) &&
71364              ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment ) && ( minTexelOffset == rhs.minTexelOffset ) &&
71365              ( maxTexelOffset == rhs.maxTexelOffset ) && ( minTexelGatherOffset == rhs.minTexelGatherOffset ) &&
71366              ( maxTexelGatherOffset == rhs.maxTexelGatherOffset ) && ( minInterpolationOffset == rhs.minInterpolationOffset ) &&
71367              ( maxInterpolationOffset == rhs.maxInterpolationOffset ) && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits ) &&
71368              ( maxFramebufferWidth == rhs.maxFramebufferWidth ) && ( maxFramebufferHeight == rhs.maxFramebufferHeight ) &&
71369              ( maxFramebufferLayers == rhs.maxFramebufferLayers ) && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts ) &&
71370              ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts ) && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts ) &&
71371              ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts ) && ( maxColorAttachments == rhs.maxColorAttachments ) &&
71372              ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts ) &&
71373              ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts ) &&
71374              ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts ) &&
71375              ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts ) && ( storageImageSampleCounts == rhs.storageImageSampleCounts ) &&
71376              ( maxSampleMaskWords == rhs.maxSampleMaskWords ) && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics ) &&
71377              ( timestampPeriod == rhs.timestampPeriod ) && ( maxClipDistances == rhs.maxClipDistances ) && ( maxCullDistances == rhs.maxCullDistances ) &&
71378              ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances ) && ( discreteQueuePriorities == rhs.discreteQueuePriorities ) &&
71379              ( pointSizeRange == rhs.pointSizeRange ) && ( lineWidthRange == rhs.lineWidthRange ) && ( pointSizeGranularity == rhs.pointSizeGranularity ) &&
71380              ( lineWidthGranularity == rhs.lineWidthGranularity ) && ( strictLines == rhs.strictLines ) &&
71381              ( standardSampleLocations == rhs.standardSampleLocations ) && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment ) &&
71382              ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment ) && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize );
71383 #  endif
71384     }
71385 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits71386     bool operator!=( PhysicalDeviceLimits const & rhs ) const VULKAN_HPP_NOEXCEPT
71387     {
71388       return !operator==( rhs );
71389     }
71390 #endif
71391 
71392   public:
71393     uint32_t                                          maxImageDimension1D                             = {};
71394     uint32_t                                          maxImageDimension2D                             = {};
71395     uint32_t                                          maxImageDimension3D                             = {};
71396     uint32_t                                          maxImageDimensionCube                           = {};
71397     uint32_t                                          maxImageArrayLayers                             = {};
71398     uint32_t                                          maxTexelBufferElements                          = {};
71399     uint32_t                                          maxUniformBufferRange                           = {};
71400     uint32_t                                          maxStorageBufferRange                           = {};
71401     uint32_t                                          maxPushConstantsSize                            = {};
71402     uint32_t                                          maxMemoryAllocationCount                        = {};
71403     uint32_t                                          maxSamplerAllocationCount                       = {};
71404     VULKAN_HPP_NAMESPACE::DeviceSize                  bufferImageGranularity                          = {};
71405     VULKAN_HPP_NAMESPACE::DeviceSize                  sparseAddressSpaceSize                          = {};
71406     uint32_t                                          maxBoundDescriptorSets                          = {};
71407     uint32_t                                          maxPerStageDescriptorSamplers                   = {};
71408     uint32_t                                          maxPerStageDescriptorUniformBuffers             = {};
71409     uint32_t                                          maxPerStageDescriptorStorageBuffers             = {};
71410     uint32_t                                          maxPerStageDescriptorSampledImages              = {};
71411     uint32_t                                          maxPerStageDescriptorStorageImages              = {};
71412     uint32_t                                          maxPerStageDescriptorInputAttachments           = {};
71413     uint32_t                                          maxPerStageResources                            = {};
71414     uint32_t                                          maxDescriptorSetSamplers                        = {};
71415     uint32_t                                          maxDescriptorSetUniformBuffers                  = {};
71416     uint32_t                                          maxDescriptorSetUniformBuffersDynamic           = {};
71417     uint32_t                                          maxDescriptorSetStorageBuffers                  = {};
71418     uint32_t                                          maxDescriptorSetStorageBuffersDynamic           = {};
71419     uint32_t                                          maxDescriptorSetSampledImages                   = {};
71420     uint32_t                                          maxDescriptorSetStorageImages                   = {};
71421     uint32_t                                          maxDescriptorSetInputAttachments                = {};
71422     uint32_t                                          maxVertexInputAttributes                        = {};
71423     uint32_t                                          maxVertexInputBindings                          = {};
71424     uint32_t                                          maxVertexInputAttributeOffset                   = {};
71425     uint32_t                                          maxVertexInputBindingStride                     = {};
71426     uint32_t                                          maxVertexOutputComponents                       = {};
71427     uint32_t                                          maxTessellationGenerationLevel                  = {};
71428     uint32_t                                          maxTessellationPatchSize                        = {};
71429     uint32_t                                          maxTessellationControlPerVertexInputComponents  = {};
71430     uint32_t                                          maxTessellationControlPerVertexOutputComponents = {};
71431     uint32_t                                          maxTessellationControlPerPatchOutputComponents  = {};
71432     uint32_t                                          maxTessellationControlTotalOutputComponents     = {};
71433     uint32_t                                          maxTessellationEvaluationInputComponents        = {};
71434     uint32_t                                          maxTessellationEvaluationOutputComponents       = {};
71435     uint32_t                                          maxGeometryShaderInvocations                    = {};
71436     uint32_t                                          maxGeometryInputComponents                      = {};
71437     uint32_t                                          maxGeometryOutputComponents                     = {};
71438     uint32_t                                          maxGeometryOutputVertices                       = {};
71439     uint32_t                                          maxGeometryTotalOutputComponents                = {};
71440     uint32_t                                          maxFragmentInputComponents                      = {};
71441     uint32_t                                          maxFragmentOutputAttachments                    = {};
71442     uint32_t                                          maxFragmentDualSrcAttachments                   = {};
71443     uint32_t                                          maxFragmentCombinedOutputResources              = {};
71444     uint32_t                                          maxComputeSharedMemorySize                      = {};
71445     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxComputeWorkGroupCount                        = {};
71446     uint32_t                                          maxComputeWorkGroupInvocations                  = {};
71447     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxComputeWorkGroupSize                         = {};
71448     uint32_t                                          subPixelPrecisionBits                           = {};
71449     uint32_t                                          subTexelPrecisionBits                           = {};
71450     uint32_t                                          mipmapPrecisionBits                             = {};
71451     uint32_t                                          maxDrawIndexedIndexValue                        = {};
71452     uint32_t                                          maxDrawIndirectCount                            = {};
71453     float                                             maxSamplerLodBias                               = {};
71454     float                                             maxSamplerAnisotropy                            = {};
71455     uint32_t                                          maxViewports                                    = {};
71456     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 2> maxViewportDimensions                           = {};
71457     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2>    viewportBoundsRange                             = {};
71458     uint32_t                                          viewportSubPixelBits                            = {};
71459     size_t                                            minMemoryMapAlignment                           = {};
71460     VULKAN_HPP_NAMESPACE::DeviceSize                  minTexelBufferOffsetAlignment                   = {};
71461     VULKAN_HPP_NAMESPACE::DeviceSize                  minUniformBufferOffsetAlignment                 = {};
71462     VULKAN_HPP_NAMESPACE::DeviceSize                  minStorageBufferOffsetAlignment                 = {};
71463     int32_t                                           minTexelOffset                                  = {};
71464     uint32_t                                          maxTexelOffset                                  = {};
71465     int32_t                                           minTexelGatherOffset                            = {};
71466     uint32_t                                          maxTexelGatherOffset                            = {};
71467     float                                             minInterpolationOffset                          = {};
71468     float                                             maxInterpolationOffset                          = {};
71469     uint32_t                                          subPixelInterpolationOffsetBits                 = {};
71470     uint32_t                                          maxFramebufferWidth                             = {};
71471     uint32_t                                          maxFramebufferHeight                            = {};
71472     uint32_t                                          maxFramebufferLayers                            = {};
71473     VULKAN_HPP_NAMESPACE::SampleCountFlags            framebufferColorSampleCounts                    = {};
71474     VULKAN_HPP_NAMESPACE::SampleCountFlags            framebufferDepthSampleCounts                    = {};
71475     VULKAN_HPP_NAMESPACE::SampleCountFlags            framebufferStencilSampleCounts                  = {};
71476     VULKAN_HPP_NAMESPACE::SampleCountFlags            framebufferNoAttachmentsSampleCounts            = {};
71477     uint32_t                                          maxColorAttachments                             = {};
71478     VULKAN_HPP_NAMESPACE::SampleCountFlags            sampledImageColorSampleCounts                   = {};
71479     VULKAN_HPP_NAMESPACE::SampleCountFlags            sampledImageIntegerSampleCounts                 = {};
71480     VULKAN_HPP_NAMESPACE::SampleCountFlags            sampledImageDepthSampleCounts                   = {};
71481     VULKAN_HPP_NAMESPACE::SampleCountFlags            sampledImageStencilSampleCounts                 = {};
71482     VULKAN_HPP_NAMESPACE::SampleCountFlags            storageImageSampleCounts                        = {};
71483     uint32_t                                          maxSampleMaskWords                              = {};
71484     VULKAN_HPP_NAMESPACE::Bool32                      timestampComputeAndGraphics                     = {};
71485     float                                             timestampPeriod                                 = {};
71486     uint32_t                                          maxClipDistances                                = {};
71487     uint32_t                                          maxCullDistances                                = {};
71488     uint32_t                                          maxCombinedClipAndCullDistances                 = {};
71489     uint32_t                                          discreteQueuePriorities                         = {};
71490     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2>    pointSizeRange                                  = {};
71491     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2>    lineWidthRange                                  = {};
71492     float                                             pointSizeGranularity                            = {};
71493     float                                             lineWidthGranularity                            = {};
71494     VULKAN_HPP_NAMESPACE::Bool32                      strictLines                                     = {};
71495     VULKAN_HPP_NAMESPACE::Bool32                      standardSampleLocations                         = {};
71496     VULKAN_HPP_NAMESPACE::DeviceSize                  optimalBufferCopyOffsetAlignment                = {};
71497     VULKAN_HPP_NAMESPACE::DeviceSize                  optimalBufferCopyRowPitchAlignment              = {};
71498     VULKAN_HPP_NAMESPACE::DeviceSize                  nonCoherentAtomSize                             = {};
71499   };
71500 
71501   struct PhysicalDeviceLineRasterizationFeaturesKHR
71502   {
71503     using NativeType = VkPhysicalDeviceLineRasterizationFeaturesKHR;
71504 
71505     static const bool                                  allowDuplicate = false;
71506     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceLineRasterizationFeaturesKHR;
71507 
71508 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLineRasterizationFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesKHR71509     VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 rectangularLines_         = {},
71510                                                                      VULKAN_HPP_NAMESPACE::Bool32 bresenhamLines_           = {},
71511                                                                      VULKAN_HPP_NAMESPACE::Bool32 smoothLines_              = {},
71512                                                                      VULKAN_HPP_NAMESPACE::Bool32 stippledRectangularLines_ = {},
71513                                                                      VULKAN_HPP_NAMESPACE::Bool32 stippledBresenhamLines_   = {},
71514                                                                      VULKAN_HPP_NAMESPACE::Bool32 stippledSmoothLines_      = {},
71515                                                                      void *                       pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
71516       : pNext{ pNext_ }
71517       , rectangularLines{ rectangularLines_ }
71518       , bresenhamLines{ bresenhamLines_ }
71519       , smoothLines{ smoothLines_ }
71520       , stippledRectangularLines{ stippledRectangularLines_ }
71521       , stippledBresenhamLines{ stippledBresenhamLines_ }
71522       , stippledSmoothLines{ stippledSmoothLines_ }
71523     {
71524     }
71525 
71526     VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationFeaturesKHR( PhysicalDeviceLineRasterizationFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71527 
PhysicalDeviceLineRasterizationFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesKHR71528     PhysicalDeviceLineRasterizationFeaturesKHR( VkPhysicalDeviceLineRasterizationFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
71529       : PhysicalDeviceLineRasterizationFeaturesKHR( *reinterpret_cast<PhysicalDeviceLineRasterizationFeaturesKHR const *>( &rhs ) )
71530     {
71531     }
71532 
71533     PhysicalDeviceLineRasterizationFeaturesKHR & operator=( PhysicalDeviceLineRasterizationFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71534 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
71535 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesKHR71536     PhysicalDeviceLineRasterizationFeaturesKHR & operator=( VkPhysicalDeviceLineRasterizationFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
71537     {
71538       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesKHR const *>( &rhs );
71539       return *this;
71540     }
71541 
71542 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesKHR71543     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
71544     {
71545       pNext = pNext_;
71546       return *this;
71547     }
71548 
71549     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesKHR &
setRectangularLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesKHR71550       setRectangularLines( VULKAN_HPP_NAMESPACE::Bool32 rectangularLines_ ) VULKAN_HPP_NOEXCEPT
71551     {
71552       rectangularLines = rectangularLines_;
71553       return *this;
71554     }
71555 
setBresenhamLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesKHR71556     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesKHR & setBresenhamLines( VULKAN_HPP_NAMESPACE::Bool32 bresenhamLines_ ) VULKAN_HPP_NOEXCEPT
71557     {
71558       bresenhamLines = bresenhamLines_;
71559       return *this;
71560     }
71561 
setSmoothLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesKHR71562     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesKHR & setSmoothLines( VULKAN_HPP_NAMESPACE::Bool32 smoothLines_ ) VULKAN_HPP_NOEXCEPT
71563     {
71564       smoothLines = smoothLines_;
71565       return *this;
71566     }
71567 
71568     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesKHR &
setStippledRectangularLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesKHR71569       setStippledRectangularLines( VULKAN_HPP_NAMESPACE::Bool32 stippledRectangularLines_ ) VULKAN_HPP_NOEXCEPT
71570     {
71571       stippledRectangularLines = stippledRectangularLines_;
71572       return *this;
71573     }
71574 
71575     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesKHR &
setStippledBresenhamLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesKHR71576       setStippledBresenhamLines( VULKAN_HPP_NAMESPACE::Bool32 stippledBresenhamLines_ ) VULKAN_HPP_NOEXCEPT
71577     {
71578       stippledBresenhamLines = stippledBresenhamLines_;
71579       return *this;
71580     }
71581 
71582     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesKHR &
setStippledSmoothLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesKHR71583       setStippledSmoothLines( VULKAN_HPP_NAMESPACE::Bool32 stippledSmoothLines_ ) VULKAN_HPP_NOEXCEPT
71584     {
71585       stippledSmoothLines = stippledSmoothLines_;
71586       return *this;
71587     }
71588 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
71589 
operator VkPhysicalDeviceLineRasterizationFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesKHR71590     operator VkPhysicalDeviceLineRasterizationFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
71591     {
71592       return *reinterpret_cast<const VkPhysicalDeviceLineRasterizationFeaturesKHR *>( this );
71593     }
71594 
operator VkPhysicalDeviceLineRasterizationFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesKHR71595     operator VkPhysicalDeviceLineRasterizationFeaturesKHR &() VULKAN_HPP_NOEXCEPT
71596     {
71597       return *reinterpret_cast<VkPhysicalDeviceLineRasterizationFeaturesKHR *>( this );
71598     }
71599 
71600 #if defined( VULKAN_HPP_USE_REFLECT )
71601 #  if 14 <= VULKAN_HPP_CPP_VERSION
71602     auto
71603 #  else
71604     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
71605                void * const &,
71606                VULKAN_HPP_NAMESPACE::Bool32 const &,
71607                VULKAN_HPP_NAMESPACE::Bool32 const &,
71608                VULKAN_HPP_NAMESPACE::Bool32 const &,
71609                VULKAN_HPP_NAMESPACE::Bool32 const &,
71610                VULKAN_HPP_NAMESPACE::Bool32 const &,
71611                VULKAN_HPP_NAMESPACE::Bool32 const &>
71612 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesKHR71613       reflect() const VULKAN_HPP_NOEXCEPT
71614     {
71615       return std::tie( sType, pNext, rectangularLines, bresenhamLines, smoothLines, stippledRectangularLines, stippledBresenhamLines, stippledSmoothLines );
71616     }
71617 #endif
71618 
71619 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
71620     auto operator<=>( PhysicalDeviceLineRasterizationFeaturesKHR const & ) const = default;
71621 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesKHR71622     bool operator==( PhysicalDeviceLineRasterizationFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
71623     {
71624 #  if defined( VULKAN_HPP_USE_REFLECT )
71625       return this->reflect() == rhs.reflect();
71626 #  else
71627       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rectangularLines == rhs.rectangularLines ) && ( bresenhamLines == rhs.bresenhamLines ) &&
71628              ( smoothLines == rhs.smoothLines ) && ( stippledRectangularLines == rhs.stippledRectangularLines ) &&
71629              ( stippledBresenhamLines == rhs.stippledBresenhamLines ) && ( stippledSmoothLines == rhs.stippledSmoothLines );
71630 #  endif
71631     }
71632 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesKHR71633     bool operator!=( PhysicalDeviceLineRasterizationFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
71634     {
71635       return !operator==( rhs );
71636     }
71637 #endif
71638 
71639   public:
71640     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDeviceLineRasterizationFeaturesKHR;
71641     void *                              pNext                    = {};
71642     VULKAN_HPP_NAMESPACE::Bool32        rectangularLines         = {};
71643     VULKAN_HPP_NAMESPACE::Bool32        bresenhamLines           = {};
71644     VULKAN_HPP_NAMESPACE::Bool32        smoothLines              = {};
71645     VULKAN_HPP_NAMESPACE::Bool32        stippledRectangularLines = {};
71646     VULKAN_HPP_NAMESPACE::Bool32        stippledBresenhamLines   = {};
71647     VULKAN_HPP_NAMESPACE::Bool32        stippledSmoothLines      = {};
71648   };
71649 
71650   template <>
71651   struct CppType<StructureType, StructureType::ePhysicalDeviceLineRasterizationFeaturesKHR>
71652   {
71653     using Type = PhysicalDeviceLineRasterizationFeaturesKHR;
71654   };
71655 
71656   using PhysicalDeviceLineRasterizationFeaturesEXT = PhysicalDeviceLineRasterizationFeaturesKHR;
71657 
71658   struct PhysicalDeviceLineRasterizationPropertiesKHR
71659   {
71660     using NativeType = VkPhysicalDeviceLineRasterizationPropertiesKHR;
71661 
71662     static const bool                                  allowDuplicate = false;
71663     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceLineRasterizationPropertiesKHR;
71664 
71665 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLineRasterizationPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesKHR71666     VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationPropertiesKHR( uint32_t lineSubPixelPrecisionBits_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
71667       : pNext{ pNext_ }
71668       , lineSubPixelPrecisionBits{ lineSubPixelPrecisionBits_ }
71669     {
71670     }
71671 
71672     VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationPropertiesKHR( PhysicalDeviceLineRasterizationPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71673 
PhysicalDeviceLineRasterizationPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesKHR71674     PhysicalDeviceLineRasterizationPropertiesKHR( VkPhysicalDeviceLineRasterizationPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
71675       : PhysicalDeviceLineRasterizationPropertiesKHR( *reinterpret_cast<PhysicalDeviceLineRasterizationPropertiesKHR const *>( &rhs ) )
71676     {
71677     }
71678 
71679     PhysicalDeviceLineRasterizationPropertiesKHR & operator=( PhysicalDeviceLineRasterizationPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71680 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
71681 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesKHR71682     PhysicalDeviceLineRasterizationPropertiesKHR & operator=( VkPhysicalDeviceLineRasterizationPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
71683     {
71684       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesKHR const *>( &rhs );
71685       return *this;
71686     }
71687 
operator VkPhysicalDeviceLineRasterizationPropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesKHR71688     operator VkPhysicalDeviceLineRasterizationPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
71689     {
71690       return *reinterpret_cast<const VkPhysicalDeviceLineRasterizationPropertiesKHR *>( this );
71691     }
71692 
operator VkPhysicalDeviceLineRasterizationPropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesKHR71693     operator VkPhysicalDeviceLineRasterizationPropertiesKHR &() VULKAN_HPP_NOEXCEPT
71694     {
71695       return *reinterpret_cast<VkPhysicalDeviceLineRasterizationPropertiesKHR *>( this );
71696     }
71697 
71698 #if defined( VULKAN_HPP_USE_REFLECT )
71699 #  if 14 <= VULKAN_HPP_CPP_VERSION
71700     auto
71701 #  else
71702     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
71703 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesKHR71704       reflect() const VULKAN_HPP_NOEXCEPT
71705     {
71706       return std::tie( sType, pNext, lineSubPixelPrecisionBits );
71707     }
71708 #endif
71709 
71710 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
71711     auto operator<=>( PhysicalDeviceLineRasterizationPropertiesKHR const & ) const = default;
71712 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesKHR71713     bool operator==( PhysicalDeviceLineRasterizationPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
71714     {
71715 #  if defined( VULKAN_HPP_USE_REFLECT )
71716       return this->reflect() == rhs.reflect();
71717 #  else
71718       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( lineSubPixelPrecisionBits == rhs.lineSubPixelPrecisionBits );
71719 #  endif
71720     }
71721 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesKHR71722     bool operator!=( PhysicalDeviceLineRasterizationPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
71723     {
71724       return !operator==( rhs );
71725     }
71726 #endif
71727 
71728   public:
71729     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::ePhysicalDeviceLineRasterizationPropertiesKHR;
71730     void *                              pNext                     = {};
71731     uint32_t                            lineSubPixelPrecisionBits = {};
71732   };
71733 
71734   template <>
71735   struct CppType<StructureType, StructureType::ePhysicalDeviceLineRasterizationPropertiesKHR>
71736   {
71737     using Type = PhysicalDeviceLineRasterizationPropertiesKHR;
71738   };
71739 
71740   using PhysicalDeviceLineRasterizationPropertiesEXT = PhysicalDeviceLineRasterizationPropertiesKHR;
71741 
71742   struct PhysicalDeviceLinearColorAttachmentFeaturesNV
71743   {
71744     using NativeType = VkPhysicalDeviceLinearColorAttachmentFeaturesNV;
71745 
71746     static const bool                                  allowDuplicate = false;
71747     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceLinearColorAttachmentFeaturesNV;
71748 
71749 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLinearColorAttachmentFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV71750     VULKAN_HPP_CONSTEXPR PhysicalDeviceLinearColorAttachmentFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 linearColorAttachment_ = {},
71751                                                                         void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
71752       : pNext{ pNext_ }
71753       , linearColorAttachment{ linearColorAttachment_ }
71754     {
71755     }
71756 
71757     VULKAN_HPP_CONSTEXPR
71758       PhysicalDeviceLinearColorAttachmentFeaturesNV( PhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71759 
PhysicalDeviceLinearColorAttachmentFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV71760     PhysicalDeviceLinearColorAttachmentFeaturesNV( VkPhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
71761       : PhysicalDeviceLinearColorAttachmentFeaturesNV( *reinterpret_cast<PhysicalDeviceLinearColorAttachmentFeaturesNV const *>( &rhs ) )
71762     {
71763     }
71764 
71765     PhysicalDeviceLinearColorAttachmentFeaturesNV & operator=( PhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71766 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
71767 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV71768     PhysicalDeviceLinearColorAttachmentFeaturesNV & operator=( VkPhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
71769     {
71770       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV const *>( &rhs );
71771       return *this;
71772     }
71773 
71774 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV71775     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLinearColorAttachmentFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
71776     {
71777       pNext = pNext_;
71778       return *this;
71779     }
71780 
71781     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLinearColorAttachmentFeaturesNV &
setLinearColorAttachmentVULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV71782       setLinearColorAttachment( VULKAN_HPP_NAMESPACE::Bool32 linearColorAttachment_ ) VULKAN_HPP_NOEXCEPT
71783     {
71784       linearColorAttachment = linearColorAttachment_;
71785       return *this;
71786     }
71787 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
71788 
operator VkPhysicalDeviceLinearColorAttachmentFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV71789     operator VkPhysicalDeviceLinearColorAttachmentFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
71790     {
71791       return *reinterpret_cast<const VkPhysicalDeviceLinearColorAttachmentFeaturesNV *>( this );
71792     }
71793 
operator VkPhysicalDeviceLinearColorAttachmentFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV71794     operator VkPhysicalDeviceLinearColorAttachmentFeaturesNV &() VULKAN_HPP_NOEXCEPT
71795     {
71796       return *reinterpret_cast<VkPhysicalDeviceLinearColorAttachmentFeaturesNV *>( this );
71797     }
71798 
71799 #if defined( VULKAN_HPP_USE_REFLECT )
71800 #  if 14 <= VULKAN_HPP_CPP_VERSION
71801     auto
71802 #  else
71803     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
71804 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV71805       reflect() const VULKAN_HPP_NOEXCEPT
71806     {
71807       return std::tie( sType, pNext, linearColorAttachment );
71808     }
71809 #endif
71810 
71811 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
71812     auto operator<=>( PhysicalDeviceLinearColorAttachmentFeaturesNV const & ) const = default;
71813 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV71814     bool operator==( PhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
71815     {
71816 #  if defined( VULKAN_HPP_USE_REFLECT )
71817       return this->reflect() == rhs.reflect();
71818 #  else
71819       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( linearColorAttachment == rhs.linearColorAttachment );
71820 #  endif
71821     }
71822 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV71823     bool operator!=( PhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
71824     {
71825       return !operator==( rhs );
71826     }
71827 #endif
71828 
71829   public:
71830     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceLinearColorAttachmentFeaturesNV;
71831     void *                              pNext                 = {};
71832     VULKAN_HPP_NAMESPACE::Bool32        linearColorAttachment = {};
71833   };
71834 
71835   template <>
71836   struct CppType<StructureType, StructureType::ePhysicalDeviceLinearColorAttachmentFeaturesNV>
71837   {
71838     using Type = PhysicalDeviceLinearColorAttachmentFeaturesNV;
71839   };
71840 
71841   struct PhysicalDeviceMaintenance3Properties
71842   {
71843     using NativeType = VkPhysicalDeviceMaintenance3Properties;
71844 
71845     static const bool                                  allowDuplicate = false;
71846     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMaintenance3Properties;
71847 
71848 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMaintenance3PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties71849     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance3Properties( uint32_t                         maxPerSetDescriptors_    = {},
71850                                                                VULKAN_HPP_NAMESPACE::DeviceSize maxMemoryAllocationSize_ = {},
71851                                                                void *                           pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
71852       : pNext{ pNext_ }
71853       , maxPerSetDescriptors{ maxPerSetDescriptors_ }
71854       , maxMemoryAllocationSize{ maxMemoryAllocationSize_ }
71855     {
71856     }
71857 
71858     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance3Properties( PhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71859 
PhysicalDeviceMaintenance3PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties71860     PhysicalDeviceMaintenance3Properties( VkPhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT
71861       : PhysicalDeviceMaintenance3Properties( *reinterpret_cast<PhysicalDeviceMaintenance3Properties const *>( &rhs ) )
71862     {
71863     }
71864 
71865     PhysicalDeviceMaintenance3Properties & operator=( PhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71866 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
71867 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties71868     PhysicalDeviceMaintenance3Properties & operator=( VkPhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT
71869     {
71870       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties const *>( &rhs );
71871       return *this;
71872     }
71873 
operator VkPhysicalDeviceMaintenance3Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties71874     operator VkPhysicalDeviceMaintenance3Properties const &() const VULKAN_HPP_NOEXCEPT
71875     {
71876       return *reinterpret_cast<const VkPhysicalDeviceMaintenance3Properties *>( this );
71877     }
71878 
operator VkPhysicalDeviceMaintenance3Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties71879     operator VkPhysicalDeviceMaintenance3Properties &() VULKAN_HPP_NOEXCEPT
71880     {
71881       return *reinterpret_cast<VkPhysicalDeviceMaintenance3Properties *>( this );
71882     }
71883 
71884 #if defined( VULKAN_HPP_USE_REFLECT )
71885 #  if 14 <= VULKAN_HPP_CPP_VERSION
71886     auto
71887 #  else
71888     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
71889 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties71890       reflect() const VULKAN_HPP_NOEXCEPT
71891     {
71892       return std::tie( sType, pNext, maxPerSetDescriptors, maxMemoryAllocationSize );
71893     }
71894 #endif
71895 
71896 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
71897     auto operator<=>( PhysicalDeviceMaintenance3Properties const & ) const = default;
71898 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties71899     bool operator==( PhysicalDeviceMaintenance3Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
71900     {
71901 #  if defined( VULKAN_HPP_USE_REFLECT )
71902       return this->reflect() == rhs.reflect();
71903 #  else
71904       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxPerSetDescriptors == rhs.maxPerSetDescriptors ) &&
71905              ( maxMemoryAllocationSize == rhs.maxMemoryAllocationSize );
71906 #  endif
71907     }
71908 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties71909     bool operator!=( PhysicalDeviceMaintenance3Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
71910     {
71911       return !operator==( rhs );
71912     }
71913 #endif
71914 
71915   public:
71916     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDeviceMaintenance3Properties;
71917     void *                              pNext                   = {};
71918     uint32_t                            maxPerSetDescriptors    = {};
71919     VULKAN_HPP_NAMESPACE::DeviceSize    maxMemoryAllocationSize = {};
71920   };
71921 
71922   template <>
71923   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance3Properties>
71924   {
71925     using Type = PhysicalDeviceMaintenance3Properties;
71926   };
71927 
71928   using PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties;
71929 
71930   struct PhysicalDeviceMaintenance4Features
71931   {
71932     using NativeType = VkPhysicalDeviceMaintenance4Features;
71933 
71934     static const bool                                  allowDuplicate = false;
71935     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMaintenance4Features;
71936 
71937 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMaintenance4FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features71938     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance4Features( VULKAN_HPP_NAMESPACE::Bool32 maintenance4_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
71939       : pNext{ pNext_ }
71940       , maintenance4{ maintenance4_ }
71941     {
71942     }
71943 
71944     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance4Features( PhysicalDeviceMaintenance4Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71945 
PhysicalDeviceMaintenance4FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features71946     PhysicalDeviceMaintenance4Features( VkPhysicalDeviceMaintenance4Features const & rhs ) VULKAN_HPP_NOEXCEPT
71947       : PhysicalDeviceMaintenance4Features( *reinterpret_cast<PhysicalDeviceMaintenance4Features const *>( &rhs ) )
71948     {
71949     }
71950 
71951     PhysicalDeviceMaintenance4Features & operator=( PhysicalDeviceMaintenance4Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
71952 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
71953 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features71954     PhysicalDeviceMaintenance4Features & operator=( VkPhysicalDeviceMaintenance4Features const & rhs ) VULKAN_HPP_NOEXCEPT
71955     {
71956       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features const *>( &rhs );
71957       return *this;
71958     }
71959 
71960 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features71961     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance4Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
71962     {
71963       pNext = pNext_;
71964       return *this;
71965     }
71966 
setMaintenance4VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features71967     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance4Features & setMaintenance4( VULKAN_HPP_NAMESPACE::Bool32 maintenance4_ ) VULKAN_HPP_NOEXCEPT
71968     {
71969       maintenance4 = maintenance4_;
71970       return *this;
71971     }
71972 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
71973 
operator VkPhysicalDeviceMaintenance4Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features71974     operator VkPhysicalDeviceMaintenance4Features const &() const VULKAN_HPP_NOEXCEPT
71975     {
71976       return *reinterpret_cast<const VkPhysicalDeviceMaintenance4Features *>( this );
71977     }
71978 
operator VkPhysicalDeviceMaintenance4Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features71979     operator VkPhysicalDeviceMaintenance4Features &() VULKAN_HPP_NOEXCEPT
71980     {
71981       return *reinterpret_cast<VkPhysicalDeviceMaintenance4Features *>( this );
71982     }
71983 
71984 #if defined( VULKAN_HPP_USE_REFLECT )
71985 #  if 14 <= VULKAN_HPP_CPP_VERSION
71986     auto
71987 #  else
71988     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
71989 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features71990       reflect() const VULKAN_HPP_NOEXCEPT
71991     {
71992       return std::tie( sType, pNext, maintenance4 );
71993     }
71994 #endif
71995 
71996 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
71997     auto operator<=>( PhysicalDeviceMaintenance4Features const & ) const = default;
71998 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features71999     bool operator==( PhysicalDeviceMaintenance4Features const & rhs ) const VULKAN_HPP_NOEXCEPT
72000     {
72001 #  if defined( VULKAN_HPP_USE_REFLECT )
72002       return this->reflect() == rhs.reflect();
72003 #  else
72004       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maintenance4 == rhs.maintenance4 );
72005 #  endif
72006     }
72007 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features72008     bool operator!=( PhysicalDeviceMaintenance4Features const & rhs ) const VULKAN_HPP_NOEXCEPT
72009     {
72010       return !operator==( rhs );
72011     }
72012 #endif
72013 
72014   public:
72015     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::ePhysicalDeviceMaintenance4Features;
72016     void *                              pNext        = {};
72017     VULKAN_HPP_NAMESPACE::Bool32        maintenance4 = {};
72018   };
72019 
72020   template <>
72021   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance4Features>
72022   {
72023     using Type = PhysicalDeviceMaintenance4Features;
72024   };
72025 
72026   using PhysicalDeviceMaintenance4FeaturesKHR = PhysicalDeviceMaintenance4Features;
72027 
72028   struct PhysicalDeviceMaintenance4Properties
72029   {
72030     using NativeType = VkPhysicalDeviceMaintenance4Properties;
72031 
72032     static const bool                                  allowDuplicate = false;
72033     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMaintenance4Properties;
72034 
72035 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMaintenance4PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties72036     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance4Properties( VULKAN_HPP_NAMESPACE::DeviceSize maxBufferSize_ = {},
72037                                                                void *                           pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
72038       : pNext{ pNext_ }
72039       , maxBufferSize{ maxBufferSize_ }
72040     {
72041     }
72042 
72043     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance4Properties( PhysicalDeviceMaintenance4Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72044 
PhysicalDeviceMaintenance4PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties72045     PhysicalDeviceMaintenance4Properties( VkPhysicalDeviceMaintenance4Properties const & rhs ) VULKAN_HPP_NOEXCEPT
72046       : PhysicalDeviceMaintenance4Properties( *reinterpret_cast<PhysicalDeviceMaintenance4Properties const *>( &rhs ) )
72047     {
72048     }
72049 
72050     PhysicalDeviceMaintenance4Properties & operator=( PhysicalDeviceMaintenance4Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72051 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72052 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties72053     PhysicalDeviceMaintenance4Properties & operator=( VkPhysicalDeviceMaintenance4Properties const & rhs ) VULKAN_HPP_NOEXCEPT
72054     {
72055       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties const *>( &rhs );
72056       return *this;
72057     }
72058 
operator VkPhysicalDeviceMaintenance4Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties72059     operator VkPhysicalDeviceMaintenance4Properties const &() const VULKAN_HPP_NOEXCEPT
72060     {
72061       return *reinterpret_cast<const VkPhysicalDeviceMaintenance4Properties *>( this );
72062     }
72063 
operator VkPhysicalDeviceMaintenance4Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties72064     operator VkPhysicalDeviceMaintenance4Properties &() VULKAN_HPP_NOEXCEPT
72065     {
72066       return *reinterpret_cast<VkPhysicalDeviceMaintenance4Properties *>( this );
72067     }
72068 
72069 #if defined( VULKAN_HPP_USE_REFLECT )
72070 #  if 14 <= VULKAN_HPP_CPP_VERSION
72071     auto
72072 #  else
72073     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
72074 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties72075       reflect() const VULKAN_HPP_NOEXCEPT
72076     {
72077       return std::tie( sType, pNext, maxBufferSize );
72078     }
72079 #endif
72080 
72081 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72082     auto operator<=>( PhysicalDeviceMaintenance4Properties const & ) const = default;
72083 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties72084     bool operator==( PhysicalDeviceMaintenance4Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
72085     {
72086 #  if defined( VULKAN_HPP_USE_REFLECT )
72087       return this->reflect() == rhs.reflect();
72088 #  else
72089       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxBufferSize == rhs.maxBufferSize );
72090 #  endif
72091     }
72092 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties72093     bool operator!=( PhysicalDeviceMaintenance4Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
72094     {
72095       return !operator==( rhs );
72096     }
72097 #endif
72098 
72099   public:
72100     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::ePhysicalDeviceMaintenance4Properties;
72101     void *                              pNext         = {};
72102     VULKAN_HPP_NAMESPACE::DeviceSize    maxBufferSize = {};
72103   };
72104 
72105   template <>
72106   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance4Properties>
72107   {
72108     using Type = PhysicalDeviceMaintenance4Properties;
72109   };
72110 
72111   using PhysicalDeviceMaintenance4PropertiesKHR = PhysicalDeviceMaintenance4Properties;
72112 
72113   struct PhysicalDeviceMaintenance5FeaturesKHR
72114   {
72115     using NativeType = VkPhysicalDeviceMaintenance5FeaturesKHR;
72116 
72117     static const bool                                  allowDuplicate = false;
72118     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMaintenance5FeaturesKHR;
72119 
72120 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMaintenance5FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5FeaturesKHR72121     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance5FeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 maintenance5_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
72122       : pNext{ pNext_ }
72123       , maintenance5{ maintenance5_ }
72124     {
72125     }
72126 
72127     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance5FeaturesKHR( PhysicalDeviceMaintenance5FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72128 
PhysicalDeviceMaintenance5FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5FeaturesKHR72129     PhysicalDeviceMaintenance5FeaturesKHR( VkPhysicalDeviceMaintenance5FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
72130       : PhysicalDeviceMaintenance5FeaturesKHR( *reinterpret_cast<PhysicalDeviceMaintenance5FeaturesKHR const *>( &rhs ) )
72131     {
72132     }
72133 
72134     PhysicalDeviceMaintenance5FeaturesKHR & operator=( PhysicalDeviceMaintenance5FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72135 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72136 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5FeaturesKHR72137     PhysicalDeviceMaintenance5FeaturesKHR & operator=( VkPhysicalDeviceMaintenance5FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
72138     {
72139       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5FeaturesKHR const *>( &rhs );
72140       return *this;
72141     }
72142 
72143 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5FeaturesKHR72144     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance5FeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
72145     {
72146       pNext = pNext_;
72147       return *this;
72148     }
72149 
setMaintenance5VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5FeaturesKHR72150     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance5FeaturesKHR & setMaintenance5( VULKAN_HPP_NAMESPACE::Bool32 maintenance5_ ) VULKAN_HPP_NOEXCEPT
72151     {
72152       maintenance5 = maintenance5_;
72153       return *this;
72154     }
72155 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
72156 
operator VkPhysicalDeviceMaintenance5FeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5FeaturesKHR72157     operator VkPhysicalDeviceMaintenance5FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
72158     {
72159       return *reinterpret_cast<const VkPhysicalDeviceMaintenance5FeaturesKHR *>( this );
72160     }
72161 
operator VkPhysicalDeviceMaintenance5FeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5FeaturesKHR72162     operator VkPhysicalDeviceMaintenance5FeaturesKHR &() VULKAN_HPP_NOEXCEPT
72163     {
72164       return *reinterpret_cast<VkPhysicalDeviceMaintenance5FeaturesKHR *>( this );
72165     }
72166 
72167 #if defined( VULKAN_HPP_USE_REFLECT )
72168 #  if 14 <= VULKAN_HPP_CPP_VERSION
72169     auto
72170 #  else
72171     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
72172 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5FeaturesKHR72173       reflect() const VULKAN_HPP_NOEXCEPT
72174     {
72175       return std::tie( sType, pNext, maintenance5 );
72176     }
72177 #endif
72178 
72179 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72180     auto operator<=>( PhysicalDeviceMaintenance5FeaturesKHR const & ) const = default;
72181 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5FeaturesKHR72182     bool operator==( PhysicalDeviceMaintenance5FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
72183     {
72184 #  if defined( VULKAN_HPP_USE_REFLECT )
72185       return this->reflect() == rhs.reflect();
72186 #  else
72187       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maintenance5 == rhs.maintenance5 );
72188 #  endif
72189     }
72190 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5FeaturesKHR72191     bool operator!=( PhysicalDeviceMaintenance5FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
72192     {
72193       return !operator==( rhs );
72194     }
72195 #endif
72196 
72197   public:
72198     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::ePhysicalDeviceMaintenance5FeaturesKHR;
72199     void *                              pNext        = {};
72200     VULKAN_HPP_NAMESPACE::Bool32        maintenance5 = {};
72201   };
72202 
72203   template <>
72204   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance5FeaturesKHR>
72205   {
72206     using Type = PhysicalDeviceMaintenance5FeaturesKHR;
72207   };
72208 
72209   struct PhysicalDeviceMaintenance5PropertiesKHR
72210   {
72211     using NativeType = VkPhysicalDeviceMaintenance5PropertiesKHR;
72212 
72213     static const bool                                  allowDuplicate = false;
72214     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMaintenance5PropertiesKHR;
72215 
72216 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMaintenance5PropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5PropertiesKHR72217     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance5PropertiesKHR( VULKAN_HPP_NAMESPACE::Bool32 earlyFragmentMultisampleCoverageAfterSampleCounting_ = {},
72218                                                                   VULKAN_HPP_NAMESPACE::Bool32 earlyFragmentSampleMaskTestBeforeSampleCounting_     = {},
72219                                                                   VULKAN_HPP_NAMESPACE::Bool32 depthStencilSwizzleOneSupport_                       = {},
72220                                                                   VULKAN_HPP_NAMESPACE::Bool32 polygonModePointSize_                                = {},
72221                                                                   VULKAN_HPP_NAMESPACE::Bool32 nonStrictSinglePixelWideLinesUseParallelogram_       = {},
72222                                                                   VULKAN_HPP_NAMESPACE::Bool32 nonStrictWideLinesUseParallelogram_                  = {},
72223                                                                   void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
72224       : pNext{ pNext_ }
72225       , earlyFragmentMultisampleCoverageAfterSampleCounting{ earlyFragmentMultisampleCoverageAfterSampleCounting_ }
72226       , earlyFragmentSampleMaskTestBeforeSampleCounting{ earlyFragmentSampleMaskTestBeforeSampleCounting_ }
72227       , depthStencilSwizzleOneSupport{ depthStencilSwizzleOneSupport_ }
72228       , polygonModePointSize{ polygonModePointSize_ }
72229       , nonStrictSinglePixelWideLinesUseParallelogram{ nonStrictSinglePixelWideLinesUseParallelogram_ }
72230       , nonStrictWideLinesUseParallelogram{ nonStrictWideLinesUseParallelogram_ }
72231     {
72232     }
72233 
72234     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance5PropertiesKHR( PhysicalDeviceMaintenance5PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72235 
PhysicalDeviceMaintenance5PropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5PropertiesKHR72236     PhysicalDeviceMaintenance5PropertiesKHR( VkPhysicalDeviceMaintenance5PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
72237       : PhysicalDeviceMaintenance5PropertiesKHR( *reinterpret_cast<PhysicalDeviceMaintenance5PropertiesKHR const *>( &rhs ) )
72238     {
72239     }
72240 
72241     PhysicalDeviceMaintenance5PropertiesKHR & operator=( PhysicalDeviceMaintenance5PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72242 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72243 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5PropertiesKHR72244     PhysicalDeviceMaintenance5PropertiesKHR & operator=( VkPhysicalDeviceMaintenance5PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
72245     {
72246       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5PropertiesKHR const *>( &rhs );
72247       return *this;
72248     }
72249 
operator VkPhysicalDeviceMaintenance5PropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5PropertiesKHR72250     operator VkPhysicalDeviceMaintenance5PropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
72251     {
72252       return *reinterpret_cast<const VkPhysicalDeviceMaintenance5PropertiesKHR *>( this );
72253     }
72254 
operator VkPhysicalDeviceMaintenance5PropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5PropertiesKHR72255     operator VkPhysicalDeviceMaintenance5PropertiesKHR &() VULKAN_HPP_NOEXCEPT
72256     {
72257       return *reinterpret_cast<VkPhysicalDeviceMaintenance5PropertiesKHR *>( this );
72258     }
72259 
72260 #if defined( VULKAN_HPP_USE_REFLECT )
72261 #  if 14 <= VULKAN_HPP_CPP_VERSION
72262     auto
72263 #  else
72264     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
72265                void * const &,
72266                VULKAN_HPP_NAMESPACE::Bool32 const &,
72267                VULKAN_HPP_NAMESPACE::Bool32 const &,
72268                VULKAN_HPP_NAMESPACE::Bool32 const &,
72269                VULKAN_HPP_NAMESPACE::Bool32 const &,
72270                VULKAN_HPP_NAMESPACE::Bool32 const &,
72271                VULKAN_HPP_NAMESPACE::Bool32 const &>
72272 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5PropertiesKHR72273       reflect() const VULKAN_HPP_NOEXCEPT
72274     {
72275       return std::tie( sType,
72276                        pNext,
72277                        earlyFragmentMultisampleCoverageAfterSampleCounting,
72278                        earlyFragmentSampleMaskTestBeforeSampleCounting,
72279                        depthStencilSwizzleOneSupport,
72280                        polygonModePointSize,
72281                        nonStrictSinglePixelWideLinesUseParallelogram,
72282                        nonStrictWideLinesUseParallelogram );
72283     }
72284 #endif
72285 
72286 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72287     auto operator<=>( PhysicalDeviceMaintenance5PropertiesKHR const & ) const = default;
72288 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5PropertiesKHR72289     bool operator==( PhysicalDeviceMaintenance5PropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
72290     {
72291 #  if defined( VULKAN_HPP_USE_REFLECT )
72292       return this->reflect() == rhs.reflect();
72293 #  else
72294       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) &&
72295              ( earlyFragmentMultisampleCoverageAfterSampleCounting == rhs.earlyFragmentMultisampleCoverageAfterSampleCounting ) &&
72296              ( earlyFragmentSampleMaskTestBeforeSampleCounting == rhs.earlyFragmentSampleMaskTestBeforeSampleCounting ) &&
72297              ( depthStencilSwizzleOneSupport == rhs.depthStencilSwizzleOneSupport ) && ( polygonModePointSize == rhs.polygonModePointSize ) &&
72298              ( nonStrictSinglePixelWideLinesUseParallelogram == rhs.nonStrictSinglePixelWideLinesUseParallelogram ) &&
72299              ( nonStrictWideLinesUseParallelogram == rhs.nonStrictWideLinesUseParallelogram );
72300 #  endif
72301     }
72302 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5PropertiesKHR72303     bool operator!=( PhysicalDeviceMaintenance5PropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
72304     {
72305       return !operator==( rhs );
72306     }
72307 #endif
72308 
72309   public:
72310     VULKAN_HPP_NAMESPACE::StructureType sType                                               = StructureType::ePhysicalDeviceMaintenance5PropertiesKHR;
72311     void *                              pNext                                               = {};
72312     VULKAN_HPP_NAMESPACE::Bool32        earlyFragmentMultisampleCoverageAfterSampleCounting = {};
72313     VULKAN_HPP_NAMESPACE::Bool32        earlyFragmentSampleMaskTestBeforeSampleCounting     = {};
72314     VULKAN_HPP_NAMESPACE::Bool32        depthStencilSwizzleOneSupport                       = {};
72315     VULKAN_HPP_NAMESPACE::Bool32        polygonModePointSize                                = {};
72316     VULKAN_HPP_NAMESPACE::Bool32        nonStrictSinglePixelWideLinesUseParallelogram       = {};
72317     VULKAN_HPP_NAMESPACE::Bool32        nonStrictWideLinesUseParallelogram                  = {};
72318   };
72319 
72320   template <>
72321   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance5PropertiesKHR>
72322   {
72323     using Type = PhysicalDeviceMaintenance5PropertiesKHR;
72324   };
72325 
72326   struct PhysicalDeviceMaintenance6FeaturesKHR
72327   {
72328     using NativeType = VkPhysicalDeviceMaintenance6FeaturesKHR;
72329 
72330     static const bool                                  allowDuplicate = false;
72331     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMaintenance6FeaturesKHR;
72332 
72333 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMaintenance6FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6FeaturesKHR72334     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance6FeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 maintenance6_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
72335       : pNext{ pNext_ }
72336       , maintenance6{ maintenance6_ }
72337     {
72338     }
72339 
72340     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance6FeaturesKHR( PhysicalDeviceMaintenance6FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72341 
PhysicalDeviceMaintenance6FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6FeaturesKHR72342     PhysicalDeviceMaintenance6FeaturesKHR( VkPhysicalDeviceMaintenance6FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
72343       : PhysicalDeviceMaintenance6FeaturesKHR( *reinterpret_cast<PhysicalDeviceMaintenance6FeaturesKHR const *>( &rhs ) )
72344     {
72345     }
72346 
72347     PhysicalDeviceMaintenance6FeaturesKHR & operator=( PhysicalDeviceMaintenance6FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72348 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72349 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6FeaturesKHR72350     PhysicalDeviceMaintenance6FeaturesKHR & operator=( VkPhysicalDeviceMaintenance6FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
72351     {
72352       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6FeaturesKHR const *>( &rhs );
72353       return *this;
72354     }
72355 
72356 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6FeaturesKHR72357     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance6FeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
72358     {
72359       pNext = pNext_;
72360       return *this;
72361     }
72362 
setMaintenance6VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6FeaturesKHR72363     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance6FeaturesKHR & setMaintenance6( VULKAN_HPP_NAMESPACE::Bool32 maintenance6_ ) VULKAN_HPP_NOEXCEPT
72364     {
72365       maintenance6 = maintenance6_;
72366       return *this;
72367     }
72368 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
72369 
operator VkPhysicalDeviceMaintenance6FeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6FeaturesKHR72370     operator VkPhysicalDeviceMaintenance6FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
72371     {
72372       return *reinterpret_cast<const VkPhysicalDeviceMaintenance6FeaturesKHR *>( this );
72373     }
72374 
operator VkPhysicalDeviceMaintenance6FeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6FeaturesKHR72375     operator VkPhysicalDeviceMaintenance6FeaturesKHR &() VULKAN_HPP_NOEXCEPT
72376     {
72377       return *reinterpret_cast<VkPhysicalDeviceMaintenance6FeaturesKHR *>( this );
72378     }
72379 
72380 #if defined( VULKAN_HPP_USE_REFLECT )
72381 #  if 14 <= VULKAN_HPP_CPP_VERSION
72382     auto
72383 #  else
72384     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
72385 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6FeaturesKHR72386       reflect() const VULKAN_HPP_NOEXCEPT
72387     {
72388       return std::tie( sType, pNext, maintenance6 );
72389     }
72390 #endif
72391 
72392 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72393     auto operator<=>( PhysicalDeviceMaintenance6FeaturesKHR const & ) const = default;
72394 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6FeaturesKHR72395     bool operator==( PhysicalDeviceMaintenance6FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
72396     {
72397 #  if defined( VULKAN_HPP_USE_REFLECT )
72398       return this->reflect() == rhs.reflect();
72399 #  else
72400       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maintenance6 == rhs.maintenance6 );
72401 #  endif
72402     }
72403 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6FeaturesKHR72404     bool operator!=( PhysicalDeviceMaintenance6FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
72405     {
72406       return !operator==( rhs );
72407     }
72408 #endif
72409 
72410   public:
72411     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::ePhysicalDeviceMaintenance6FeaturesKHR;
72412     void *                              pNext        = {};
72413     VULKAN_HPP_NAMESPACE::Bool32        maintenance6 = {};
72414   };
72415 
72416   template <>
72417   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance6FeaturesKHR>
72418   {
72419     using Type = PhysicalDeviceMaintenance6FeaturesKHR;
72420   };
72421 
72422   struct PhysicalDeviceMaintenance6PropertiesKHR
72423   {
72424     using NativeType = VkPhysicalDeviceMaintenance6PropertiesKHR;
72425 
72426     static const bool                                  allowDuplicate = false;
72427     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMaintenance6PropertiesKHR;
72428 
72429 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMaintenance6PropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6PropertiesKHR72430     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance6PropertiesKHR( VULKAN_HPP_NAMESPACE::Bool32 blockTexelViewCompatibleMultipleLayers_ = {},
72431                                                                   uint32_t                     maxCombinedImageSamplerDescriptorCount_ = {},
72432                                                                   VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateClampCombinerInputs_ = {},
72433                                                                   void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
72434       : pNext{ pNext_ }
72435       , blockTexelViewCompatibleMultipleLayers{ blockTexelViewCompatibleMultipleLayers_ }
72436       , maxCombinedImageSamplerDescriptorCount{ maxCombinedImageSamplerDescriptorCount_ }
72437       , fragmentShadingRateClampCombinerInputs{ fragmentShadingRateClampCombinerInputs_ }
72438     {
72439     }
72440 
72441     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance6PropertiesKHR( PhysicalDeviceMaintenance6PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72442 
PhysicalDeviceMaintenance6PropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6PropertiesKHR72443     PhysicalDeviceMaintenance6PropertiesKHR( VkPhysicalDeviceMaintenance6PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
72444       : PhysicalDeviceMaintenance6PropertiesKHR( *reinterpret_cast<PhysicalDeviceMaintenance6PropertiesKHR const *>( &rhs ) )
72445     {
72446     }
72447 
72448     PhysicalDeviceMaintenance6PropertiesKHR & operator=( PhysicalDeviceMaintenance6PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72449 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72450 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6PropertiesKHR72451     PhysicalDeviceMaintenance6PropertiesKHR & operator=( VkPhysicalDeviceMaintenance6PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
72452     {
72453       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6PropertiesKHR const *>( &rhs );
72454       return *this;
72455     }
72456 
operator VkPhysicalDeviceMaintenance6PropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6PropertiesKHR72457     operator VkPhysicalDeviceMaintenance6PropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
72458     {
72459       return *reinterpret_cast<const VkPhysicalDeviceMaintenance6PropertiesKHR *>( this );
72460     }
72461 
operator VkPhysicalDeviceMaintenance6PropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6PropertiesKHR72462     operator VkPhysicalDeviceMaintenance6PropertiesKHR &() VULKAN_HPP_NOEXCEPT
72463     {
72464       return *reinterpret_cast<VkPhysicalDeviceMaintenance6PropertiesKHR *>( this );
72465     }
72466 
72467 #if defined( VULKAN_HPP_USE_REFLECT )
72468 #  if 14 <= VULKAN_HPP_CPP_VERSION
72469     auto
72470 #  else
72471     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
72472                void * const &,
72473                VULKAN_HPP_NAMESPACE::Bool32 const &,
72474                uint32_t const &,
72475                VULKAN_HPP_NAMESPACE::Bool32 const &>
72476 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6PropertiesKHR72477       reflect() const VULKAN_HPP_NOEXCEPT
72478     {
72479       return std::tie( sType, pNext, blockTexelViewCompatibleMultipleLayers, maxCombinedImageSamplerDescriptorCount, fragmentShadingRateClampCombinerInputs );
72480     }
72481 #endif
72482 
72483 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72484     auto operator<=>( PhysicalDeviceMaintenance6PropertiesKHR const & ) const = default;
72485 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6PropertiesKHR72486     bool operator==( PhysicalDeviceMaintenance6PropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
72487     {
72488 #  if defined( VULKAN_HPP_USE_REFLECT )
72489       return this->reflect() == rhs.reflect();
72490 #  else
72491       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( blockTexelViewCompatibleMultipleLayers == rhs.blockTexelViewCompatibleMultipleLayers ) &&
72492              ( maxCombinedImageSamplerDescriptorCount == rhs.maxCombinedImageSamplerDescriptorCount ) &&
72493              ( fragmentShadingRateClampCombinerInputs == rhs.fragmentShadingRateClampCombinerInputs );
72494 #  endif
72495     }
72496 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6PropertiesKHR72497     bool operator!=( PhysicalDeviceMaintenance6PropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
72498     {
72499       return !operator==( rhs );
72500     }
72501 #endif
72502 
72503   public:
72504     VULKAN_HPP_NAMESPACE::StructureType sType                                  = StructureType::ePhysicalDeviceMaintenance6PropertiesKHR;
72505     void *                              pNext                                  = {};
72506     VULKAN_HPP_NAMESPACE::Bool32        blockTexelViewCompatibleMultipleLayers = {};
72507     uint32_t                            maxCombinedImageSamplerDescriptorCount = {};
72508     VULKAN_HPP_NAMESPACE::Bool32        fragmentShadingRateClampCombinerInputs = {};
72509   };
72510 
72511   template <>
72512   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance6PropertiesKHR>
72513   {
72514     using Type = PhysicalDeviceMaintenance6PropertiesKHR;
72515   };
72516 
72517   struct PhysicalDeviceMapMemoryPlacedFeaturesEXT
72518   {
72519     using NativeType = VkPhysicalDeviceMapMemoryPlacedFeaturesEXT;
72520 
72521     static const bool                                  allowDuplicate = false;
72522     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMapMemoryPlacedFeaturesEXT;
72523 
72524 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMapMemoryPlacedFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT72525     VULKAN_HPP_CONSTEXPR PhysicalDeviceMapMemoryPlacedFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 memoryMapPlaced_      = {},
72526                                                                    VULKAN_HPP_NAMESPACE::Bool32 memoryMapRangePlaced_ = {},
72527                                                                    VULKAN_HPP_NAMESPACE::Bool32 memoryUnmapReserve_   = {},
72528                                                                    void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
72529       : pNext{ pNext_ }
72530       , memoryMapPlaced{ memoryMapPlaced_ }
72531       , memoryMapRangePlaced{ memoryMapRangePlaced_ }
72532       , memoryUnmapReserve{ memoryUnmapReserve_ }
72533     {
72534     }
72535 
72536     VULKAN_HPP_CONSTEXPR PhysicalDeviceMapMemoryPlacedFeaturesEXT( PhysicalDeviceMapMemoryPlacedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72537 
PhysicalDeviceMapMemoryPlacedFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT72538     PhysicalDeviceMapMemoryPlacedFeaturesEXT( VkPhysicalDeviceMapMemoryPlacedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
72539       : PhysicalDeviceMapMemoryPlacedFeaturesEXT( *reinterpret_cast<PhysicalDeviceMapMemoryPlacedFeaturesEXT const *>( &rhs ) )
72540     {
72541     }
72542 
72543     PhysicalDeviceMapMemoryPlacedFeaturesEXT & operator=( PhysicalDeviceMapMemoryPlacedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72544 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72545 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT72546     PhysicalDeviceMapMemoryPlacedFeaturesEXT & operator=( VkPhysicalDeviceMapMemoryPlacedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
72547     {
72548       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT const *>( &rhs );
72549       return *this;
72550     }
72551 
72552 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT72553     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMapMemoryPlacedFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
72554     {
72555       pNext = pNext_;
72556       return *this;
72557     }
72558 
setMemoryMapPlacedVULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT72559     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMapMemoryPlacedFeaturesEXT & setMemoryMapPlaced( VULKAN_HPP_NAMESPACE::Bool32 memoryMapPlaced_ ) VULKAN_HPP_NOEXCEPT
72560     {
72561       memoryMapPlaced = memoryMapPlaced_;
72562       return *this;
72563     }
72564 
72565     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMapMemoryPlacedFeaturesEXT &
setMemoryMapRangePlacedVULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT72566       setMemoryMapRangePlaced( VULKAN_HPP_NAMESPACE::Bool32 memoryMapRangePlaced_ ) VULKAN_HPP_NOEXCEPT
72567     {
72568       memoryMapRangePlaced = memoryMapRangePlaced_;
72569       return *this;
72570     }
72571 
72572     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMapMemoryPlacedFeaturesEXT &
setMemoryUnmapReserveVULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT72573       setMemoryUnmapReserve( VULKAN_HPP_NAMESPACE::Bool32 memoryUnmapReserve_ ) VULKAN_HPP_NOEXCEPT
72574     {
72575       memoryUnmapReserve = memoryUnmapReserve_;
72576       return *this;
72577     }
72578 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
72579 
operator VkPhysicalDeviceMapMemoryPlacedFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT72580     operator VkPhysicalDeviceMapMemoryPlacedFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
72581     {
72582       return *reinterpret_cast<const VkPhysicalDeviceMapMemoryPlacedFeaturesEXT *>( this );
72583     }
72584 
operator VkPhysicalDeviceMapMemoryPlacedFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT72585     operator VkPhysicalDeviceMapMemoryPlacedFeaturesEXT &() VULKAN_HPP_NOEXCEPT
72586     {
72587       return *reinterpret_cast<VkPhysicalDeviceMapMemoryPlacedFeaturesEXT *>( this );
72588     }
72589 
72590 #if defined( VULKAN_HPP_USE_REFLECT )
72591 #  if 14 <= VULKAN_HPP_CPP_VERSION
72592     auto
72593 #  else
72594     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
72595                void * const &,
72596                VULKAN_HPP_NAMESPACE::Bool32 const &,
72597                VULKAN_HPP_NAMESPACE::Bool32 const &,
72598                VULKAN_HPP_NAMESPACE::Bool32 const &>
72599 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT72600       reflect() const VULKAN_HPP_NOEXCEPT
72601     {
72602       return std::tie( sType, pNext, memoryMapPlaced, memoryMapRangePlaced, memoryUnmapReserve );
72603     }
72604 #endif
72605 
72606 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72607     auto operator<=>( PhysicalDeviceMapMemoryPlacedFeaturesEXT const & ) const = default;
72608 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT72609     bool operator==( PhysicalDeviceMapMemoryPlacedFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
72610     {
72611 #  if defined( VULKAN_HPP_USE_REFLECT )
72612       return this->reflect() == rhs.reflect();
72613 #  else
72614       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryMapPlaced == rhs.memoryMapPlaced ) &&
72615              ( memoryMapRangePlaced == rhs.memoryMapRangePlaced ) && ( memoryUnmapReserve == rhs.memoryUnmapReserve );
72616 #  endif
72617     }
72618 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT72619     bool operator!=( PhysicalDeviceMapMemoryPlacedFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
72620     {
72621       return !operator==( rhs );
72622     }
72623 #endif
72624 
72625   public:
72626     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceMapMemoryPlacedFeaturesEXT;
72627     void *                              pNext                = {};
72628     VULKAN_HPP_NAMESPACE::Bool32        memoryMapPlaced      = {};
72629     VULKAN_HPP_NAMESPACE::Bool32        memoryMapRangePlaced = {};
72630     VULKAN_HPP_NAMESPACE::Bool32        memoryUnmapReserve   = {};
72631   };
72632 
72633   template <>
72634   struct CppType<StructureType, StructureType::ePhysicalDeviceMapMemoryPlacedFeaturesEXT>
72635   {
72636     using Type = PhysicalDeviceMapMemoryPlacedFeaturesEXT;
72637   };
72638 
72639   struct PhysicalDeviceMapMemoryPlacedPropertiesEXT
72640   {
72641     using NativeType = VkPhysicalDeviceMapMemoryPlacedPropertiesEXT;
72642 
72643     static const bool                                  allowDuplicate = false;
72644     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMapMemoryPlacedPropertiesEXT;
72645 
72646 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMapMemoryPlacedPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedPropertiesEXT72647     VULKAN_HPP_CONSTEXPR PhysicalDeviceMapMemoryPlacedPropertiesEXT( VULKAN_HPP_NAMESPACE::DeviceSize minPlacedMemoryMapAlignment_ = {},
72648                                                                      void *                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
72649       : pNext{ pNext_ }
72650       , minPlacedMemoryMapAlignment{ minPlacedMemoryMapAlignment_ }
72651     {
72652     }
72653 
72654     VULKAN_HPP_CONSTEXPR PhysicalDeviceMapMemoryPlacedPropertiesEXT( PhysicalDeviceMapMemoryPlacedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72655 
PhysicalDeviceMapMemoryPlacedPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedPropertiesEXT72656     PhysicalDeviceMapMemoryPlacedPropertiesEXT( VkPhysicalDeviceMapMemoryPlacedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
72657       : PhysicalDeviceMapMemoryPlacedPropertiesEXT( *reinterpret_cast<PhysicalDeviceMapMemoryPlacedPropertiesEXT const *>( &rhs ) )
72658     {
72659     }
72660 
72661     PhysicalDeviceMapMemoryPlacedPropertiesEXT & operator=( PhysicalDeviceMapMemoryPlacedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72662 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72663 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedPropertiesEXT72664     PhysicalDeviceMapMemoryPlacedPropertiesEXT & operator=( VkPhysicalDeviceMapMemoryPlacedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
72665     {
72666       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedPropertiesEXT const *>( &rhs );
72667       return *this;
72668     }
72669 
operator VkPhysicalDeviceMapMemoryPlacedPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedPropertiesEXT72670     operator VkPhysicalDeviceMapMemoryPlacedPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
72671     {
72672       return *reinterpret_cast<const VkPhysicalDeviceMapMemoryPlacedPropertiesEXT *>( this );
72673     }
72674 
operator VkPhysicalDeviceMapMemoryPlacedPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedPropertiesEXT72675     operator VkPhysicalDeviceMapMemoryPlacedPropertiesEXT &() VULKAN_HPP_NOEXCEPT
72676     {
72677       return *reinterpret_cast<VkPhysicalDeviceMapMemoryPlacedPropertiesEXT *>( this );
72678     }
72679 
72680 #if defined( VULKAN_HPP_USE_REFLECT )
72681 #  if 14 <= VULKAN_HPP_CPP_VERSION
72682     auto
72683 #  else
72684     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
72685 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedPropertiesEXT72686       reflect() const VULKAN_HPP_NOEXCEPT
72687     {
72688       return std::tie( sType, pNext, minPlacedMemoryMapAlignment );
72689     }
72690 #endif
72691 
72692 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72693     auto operator<=>( PhysicalDeviceMapMemoryPlacedPropertiesEXT const & ) const = default;
72694 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedPropertiesEXT72695     bool operator==( PhysicalDeviceMapMemoryPlacedPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
72696     {
72697 #  if defined( VULKAN_HPP_USE_REFLECT )
72698       return this->reflect() == rhs.reflect();
72699 #  else
72700       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minPlacedMemoryMapAlignment == rhs.minPlacedMemoryMapAlignment );
72701 #  endif
72702     }
72703 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedPropertiesEXT72704     bool operator!=( PhysicalDeviceMapMemoryPlacedPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
72705     {
72706       return !operator==( rhs );
72707     }
72708 #endif
72709 
72710   public:
72711     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceMapMemoryPlacedPropertiesEXT;
72712     void *                              pNext                       = {};
72713     VULKAN_HPP_NAMESPACE::DeviceSize    minPlacedMemoryMapAlignment = {};
72714   };
72715 
72716   template <>
72717   struct CppType<StructureType, StructureType::ePhysicalDeviceMapMemoryPlacedPropertiesEXT>
72718   {
72719     using Type = PhysicalDeviceMapMemoryPlacedPropertiesEXT;
72720   };
72721 
72722   struct PhysicalDeviceMemoryBudgetPropertiesEXT
72723   {
72724     using NativeType = VkPhysicalDeviceMemoryBudgetPropertiesEXT;
72725 
72726     static const bool                                  allowDuplicate = false;
72727     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT;
72728 
72729 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMemoryBudgetPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT72730     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryBudgetPropertiesEXT( std::array<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> const & heapBudget_ = {},
72731                                                                      std::array<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> const & heapUsage_  = {},
72732                                                                      void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
72733       : pNext{ pNext_ }
72734       , heapBudget{ heapBudget_ }
72735       , heapUsage{ heapUsage_ }
72736     {
72737     }
72738 
72739     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryBudgetPropertiesEXT( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72740 
PhysicalDeviceMemoryBudgetPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT72741     PhysicalDeviceMemoryBudgetPropertiesEXT( VkPhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
72742       : PhysicalDeviceMemoryBudgetPropertiesEXT( *reinterpret_cast<PhysicalDeviceMemoryBudgetPropertiesEXT const *>( &rhs ) )
72743     {
72744     }
72745 
72746     PhysicalDeviceMemoryBudgetPropertiesEXT & operator=( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72747 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72748 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT72749     PhysicalDeviceMemoryBudgetPropertiesEXT & operator=( VkPhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
72750     {
72751       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT const *>( &rhs );
72752       return *this;
72753     }
72754 
operator VkPhysicalDeviceMemoryBudgetPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT72755     operator VkPhysicalDeviceMemoryBudgetPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
72756     {
72757       return *reinterpret_cast<const VkPhysicalDeviceMemoryBudgetPropertiesEXT *>( this );
72758     }
72759 
operator VkPhysicalDeviceMemoryBudgetPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT72760     operator VkPhysicalDeviceMemoryBudgetPropertiesEXT &() VULKAN_HPP_NOEXCEPT
72761     {
72762       return *reinterpret_cast<VkPhysicalDeviceMemoryBudgetPropertiesEXT *>( this );
72763     }
72764 
72765 #if defined( VULKAN_HPP_USE_REFLECT )
72766 #  if 14 <= VULKAN_HPP_CPP_VERSION
72767     auto
72768 #  else
72769     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
72770                void * const &,
72771                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> const &,
72772                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> const &>
72773 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT72774       reflect() const VULKAN_HPP_NOEXCEPT
72775     {
72776       return std::tie( sType, pNext, heapBudget, heapUsage );
72777     }
72778 #endif
72779 
72780 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72781     auto operator<=>( PhysicalDeviceMemoryBudgetPropertiesEXT const & ) const = default;
72782 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT72783     bool operator==( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
72784     {
72785 #  if defined( VULKAN_HPP_USE_REFLECT )
72786       return this->reflect() == rhs.reflect();
72787 #  else
72788       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( heapBudget == rhs.heapBudget ) && ( heapUsage == rhs.heapUsage );
72789 #  endif
72790     }
72791 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT72792     bool operator!=( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
72793     {
72794       return !operator==( rhs );
72795     }
72796 #endif
72797 
72798   public:
72799     VULKAN_HPP_NAMESPACE::StructureType                                                         sType = StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT;
72800     void *                                                                                      pNext = {};
72801     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> heapBudget = {};
72802     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> heapUsage  = {};
72803   };
72804 
72805   template <>
72806   struct CppType<StructureType, StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT>
72807   {
72808     using Type = PhysicalDeviceMemoryBudgetPropertiesEXT;
72809   };
72810 
72811   struct PhysicalDeviceMemoryDecompressionFeaturesNV
72812   {
72813     using NativeType = VkPhysicalDeviceMemoryDecompressionFeaturesNV;
72814 
72815     static const bool                                  allowDuplicate = false;
72816     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMemoryDecompressionFeaturesNV;
72817 
72818 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMemoryDecompressionFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV72819     VULKAN_HPP_CONSTEXPR PhysicalDeviceMemoryDecompressionFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 memoryDecompression_ = {},
72820                                                                       void *                       pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
72821       : pNext{ pNext_ }
72822       , memoryDecompression{ memoryDecompression_ }
72823     {
72824     }
72825 
72826     VULKAN_HPP_CONSTEXPR PhysicalDeviceMemoryDecompressionFeaturesNV( PhysicalDeviceMemoryDecompressionFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72827 
PhysicalDeviceMemoryDecompressionFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV72828     PhysicalDeviceMemoryDecompressionFeaturesNV( VkPhysicalDeviceMemoryDecompressionFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
72829       : PhysicalDeviceMemoryDecompressionFeaturesNV( *reinterpret_cast<PhysicalDeviceMemoryDecompressionFeaturesNV const *>( &rhs ) )
72830     {
72831     }
72832 
72833     PhysicalDeviceMemoryDecompressionFeaturesNV & operator=( PhysicalDeviceMemoryDecompressionFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72834 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72835 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV72836     PhysicalDeviceMemoryDecompressionFeaturesNV & operator=( VkPhysicalDeviceMemoryDecompressionFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
72837     {
72838       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV const *>( &rhs );
72839       return *this;
72840     }
72841 
72842 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV72843     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryDecompressionFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
72844     {
72845       pNext = pNext_;
72846       return *this;
72847     }
72848 
72849     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryDecompressionFeaturesNV &
setMemoryDecompressionVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV72850       setMemoryDecompression( VULKAN_HPP_NAMESPACE::Bool32 memoryDecompression_ ) VULKAN_HPP_NOEXCEPT
72851     {
72852       memoryDecompression = memoryDecompression_;
72853       return *this;
72854     }
72855 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
72856 
operator VkPhysicalDeviceMemoryDecompressionFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV72857     operator VkPhysicalDeviceMemoryDecompressionFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
72858     {
72859       return *reinterpret_cast<const VkPhysicalDeviceMemoryDecompressionFeaturesNV *>( this );
72860     }
72861 
operator VkPhysicalDeviceMemoryDecompressionFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV72862     operator VkPhysicalDeviceMemoryDecompressionFeaturesNV &() VULKAN_HPP_NOEXCEPT
72863     {
72864       return *reinterpret_cast<VkPhysicalDeviceMemoryDecompressionFeaturesNV *>( this );
72865     }
72866 
72867 #if defined( VULKAN_HPP_USE_REFLECT )
72868 #  if 14 <= VULKAN_HPP_CPP_VERSION
72869     auto
72870 #  else
72871     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
72872 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV72873       reflect() const VULKAN_HPP_NOEXCEPT
72874     {
72875       return std::tie( sType, pNext, memoryDecompression );
72876     }
72877 #endif
72878 
72879 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72880     auto operator<=>( PhysicalDeviceMemoryDecompressionFeaturesNV const & ) const = default;
72881 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV72882     bool operator==( PhysicalDeviceMemoryDecompressionFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
72883     {
72884 #  if defined( VULKAN_HPP_USE_REFLECT )
72885       return this->reflect() == rhs.reflect();
72886 #  else
72887       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryDecompression == rhs.memoryDecompression );
72888 #  endif
72889     }
72890 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV72891     bool operator!=( PhysicalDeviceMemoryDecompressionFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
72892     {
72893       return !operator==( rhs );
72894     }
72895 #endif
72896 
72897   public:
72898     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::ePhysicalDeviceMemoryDecompressionFeaturesNV;
72899     void *                              pNext               = {};
72900     VULKAN_HPP_NAMESPACE::Bool32        memoryDecompression = {};
72901   };
72902 
72903   template <>
72904   struct CppType<StructureType, StructureType::ePhysicalDeviceMemoryDecompressionFeaturesNV>
72905   {
72906     using Type = PhysicalDeviceMemoryDecompressionFeaturesNV;
72907   };
72908 
72909   struct PhysicalDeviceMemoryDecompressionPropertiesNV
72910   {
72911     using NativeType = VkPhysicalDeviceMemoryDecompressionPropertiesNV;
72912 
72913     static const bool                                  allowDuplicate = false;
72914     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMemoryDecompressionPropertiesNV;
72915 
72916 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMemoryDecompressionPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesNV72917     VULKAN_HPP_CONSTEXPR PhysicalDeviceMemoryDecompressionPropertiesNV( VULKAN_HPP_NAMESPACE::MemoryDecompressionMethodFlagsNV decompressionMethods_ = {},
72918                                                                         uint64_t maxDecompressionIndirectCount_                                      = {},
72919                                                                         void *   pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
72920       : pNext{ pNext_ }
72921       , decompressionMethods{ decompressionMethods_ }
72922       , maxDecompressionIndirectCount{ maxDecompressionIndirectCount_ }
72923     {
72924     }
72925 
72926     VULKAN_HPP_CONSTEXPR
72927       PhysicalDeviceMemoryDecompressionPropertiesNV( PhysicalDeviceMemoryDecompressionPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72928 
PhysicalDeviceMemoryDecompressionPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesNV72929     PhysicalDeviceMemoryDecompressionPropertiesNV( VkPhysicalDeviceMemoryDecompressionPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
72930       : PhysicalDeviceMemoryDecompressionPropertiesNV( *reinterpret_cast<PhysicalDeviceMemoryDecompressionPropertiesNV const *>( &rhs ) )
72931     {
72932     }
72933 
72934     PhysicalDeviceMemoryDecompressionPropertiesNV & operator=( PhysicalDeviceMemoryDecompressionPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
72935 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
72936 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesNV72937     PhysicalDeviceMemoryDecompressionPropertiesNV & operator=( VkPhysicalDeviceMemoryDecompressionPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
72938     {
72939       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesNV const *>( &rhs );
72940       return *this;
72941     }
72942 
operator VkPhysicalDeviceMemoryDecompressionPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesNV72943     operator VkPhysicalDeviceMemoryDecompressionPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
72944     {
72945       return *reinterpret_cast<const VkPhysicalDeviceMemoryDecompressionPropertiesNV *>( this );
72946     }
72947 
operator VkPhysicalDeviceMemoryDecompressionPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesNV72948     operator VkPhysicalDeviceMemoryDecompressionPropertiesNV &() VULKAN_HPP_NOEXCEPT
72949     {
72950       return *reinterpret_cast<VkPhysicalDeviceMemoryDecompressionPropertiesNV *>( this );
72951     }
72952 
72953 #if defined( VULKAN_HPP_USE_REFLECT )
72954 #  if 14 <= VULKAN_HPP_CPP_VERSION
72955     auto
72956 #  else
72957     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::MemoryDecompressionMethodFlagsNV const &, uint64_t const &>
72958 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesNV72959       reflect() const VULKAN_HPP_NOEXCEPT
72960     {
72961       return std::tie( sType, pNext, decompressionMethods, maxDecompressionIndirectCount );
72962     }
72963 #endif
72964 
72965 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
72966     auto operator<=>( PhysicalDeviceMemoryDecompressionPropertiesNV const & ) const = default;
72967 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesNV72968     bool operator==( PhysicalDeviceMemoryDecompressionPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
72969     {
72970 #  if defined( VULKAN_HPP_USE_REFLECT )
72971       return this->reflect() == rhs.reflect();
72972 #  else
72973       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( decompressionMethods == rhs.decompressionMethods ) &&
72974              ( maxDecompressionIndirectCount == rhs.maxDecompressionIndirectCount );
72975 #  endif
72976     }
72977 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesNV72978     bool operator!=( PhysicalDeviceMemoryDecompressionPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
72979     {
72980       return !operator==( rhs );
72981     }
72982 #endif
72983 
72984   public:
72985     VULKAN_HPP_NAMESPACE::StructureType                    sType                         = StructureType::ePhysicalDeviceMemoryDecompressionPropertiesNV;
72986     void *                                                 pNext                         = {};
72987     VULKAN_HPP_NAMESPACE::MemoryDecompressionMethodFlagsNV decompressionMethods          = {};
72988     uint64_t                                               maxDecompressionIndirectCount = {};
72989   };
72990 
72991   template <>
72992   struct CppType<StructureType, StructureType::ePhysicalDeviceMemoryDecompressionPropertiesNV>
72993   {
72994     using Type = PhysicalDeviceMemoryDecompressionPropertiesNV;
72995   };
72996 
72997   struct PhysicalDeviceMemoryPriorityFeaturesEXT
72998   {
72999     using NativeType = VkPhysicalDeviceMemoryPriorityFeaturesEXT;
73000 
73001     static const bool                                  allowDuplicate = false;
73002     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT;
73003 
73004 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMemoryPriorityFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT73005     VULKAN_HPP_CONSTEXPR PhysicalDeviceMemoryPriorityFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 memoryPriority_ = {},
73006                                                                   void *                       pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
73007       : pNext{ pNext_ }
73008       , memoryPriority{ memoryPriority_ }
73009     {
73010     }
73011 
73012     VULKAN_HPP_CONSTEXPR PhysicalDeviceMemoryPriorityFeaturesEXT( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73013 
PhysicalDeviceMemoryPriorityFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT73014     PhysicalDeviceMemoryPriorityFeaturesEXT( VkPhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
73015       : PhysicalDeviceMemoryPriorityFeaturesEXT( *reinterpret_cast<PhysicalDeviceMemoryPriorityFeaturesEXT const *>( &rhs ) )
73016     {
73017     }
73018 
73019     PhysicalDeviceMemoryPriorityFeaturesEXT & operator=( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73020 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73021 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT73022     PhysicalDeviceMemoryPriorityFeaturesEXT & operator=( VkPhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
73023     {
73024       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT const *>( &rhs );
73025       return *this;
73026     }
73027 
73028 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT73029     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryPriorityFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
73030     {
73031       pNext = pNext_;
73032       return *this;
73033     }
73034 
setMemoryPriorityVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT73035     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryPriorityFeaturesEXT & setMemoryPriority( VULKAN_HPP_NAMESPACE::Bool32 memoryPriority_ ) VULKAN_HPP_NOEXCEPT
73036     {
73037       memoryPriority = memoryPriority_;
73038       return *this;
73039     }
73040 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
73041 
operator VkPhysicalDeviceMemoryPriorityFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT73042     operator VkPhysicalDeviceMemoryPriorityFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
73043     {
73044       return *reinterpret_cast<const VkPhysicalDeviceMemoryPriorityFeaturesEXT *>( this );
73045     }
73046 
operator VkPhysicalDeviceMemoryPriorityFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT73047     operator VkPhysicalDeviceMemoryPriorityFeaturesEXT &() VULKAN_HPP_NOEXCEPT
73048     {
73049       return *reinterpret_cast<VkPhysicalDeviceMemoryPriorityFeaturesEXT *>( this );
73050     }
73051 
73052 #if defined( VULKAN_HPP_USE_REFLECT )
73053 #  if 14 <= VULKAN_HPP_CPP_VERSION
73054     auto
73055 #  else
73056     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
73057 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT73058       reflect() const VULKAN_HPP_NOEXCEPT
73059     {
73060       return std::tie( sType, pNext, memoryPriority );
73061     }
73062 #endif
73063 
73064 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73065     auto operator<=>( PhysicalDeviceMemoryPriorityFeaturesEXT const & ) const = default;
73066 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT73067     bool operator==( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
73068     {
73069 #  if defined( VULKAN_HPP_USE_REFLECT )
73070       return this->reflect() == rhs.reflect();
73071 #  else
73072       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryPriority == rhs.memoryPriority );
73073 #  endif
73074     }
73075 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT73076     bool operator!=( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
73077     {
73078       return !operator==( rhs );
73079     }
73080 #endif
73081 
73082   public:
73083     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT;
73084     void *                              pNext          = {};
73085     VULKAN_HPP_NAMESPACE::Bool32        memoryPriority = {};
73086   };
73087 
73088   template <>
73089   struct CppType<StructureType, StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT>
73090   {
73091     using Type = PhysicalDeviceMemoryPriorityFeaturesEXT;
73092   };
73093 
73094   struct PhysicalDeviceMemoryProperties
73095   {
73096     using NativeType = VkPhysicalDeviceMemoryProperties;
73097 
73098 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
73099     VULKAN_HPP_CONSTEXPR_14
PhysicalDeviceMemoryPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties73100       PhysicalDeviceMemoryProperties( uint32_t                                                                  memoryTypeCount_ = {},
73101                                       std::array<VULKAN_HPP_NAMESPACE::MemoryType, VK_MAX_MEMORY_TYPES> const & memoryTypes_     = {},
73102                                       uint32_t                                                                  memoryHeapCount_ = {},
73103                                       std::array<VULKAN_HPP_NAMESPACE::MemoryHeap, VK_MAX_MEMORY_HEAPS> const & memoryHeaps_     = {} ) VULKAN_HPP_NOEXCEPT
73104       : memoryTypeCount{ memoryTypeCount_ }
73105       , memoryTypes{ memoryTypes_ }
73106       , memoryHeapCount{ memoryHeapCount_ }
73107       , memoryHeaps{ memoryHeaps_ }
73108     {
73109     }
73110 
73111     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties( PhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73112 
PhysicalDeviceMemoryPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties73113     PhysicalDeviceMemoryProperties( VkPhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
73114       : PhysicalDeviceMemoryProperties( *reinterpret_cast<PhysicalDeviceMemoryProperties const *>( &rhs ) )
73115     {
73116     }
73117 
73118 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PhysicalDeviceMemoryPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties73119     PhysicalDeviceMemoryProperties( VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::MemoryType> const & memoryTypes_,
73120                                     VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::MemoryHeap> const & memoryHeaps_ = {} )
73121       : memoryTypeCount( std::min( static_cast<uint32_t>( memoryTypes_.size() ), VK_MAX_MEMORY_TYPES ) )
73122       , memoryHeapCount( std::min( static_cast<uint32_t>( memoryHeaps_.size() ), VK_MAX_MEMORY_HEAPS ) )
73123     {
73124       VULKAN_HPP_ASSERT( memoryTypes_.size() < VK_MAX_MEMORY_TYPES );
73125       memcpy( memoryTypes, memoryTypes_.data(), memoryTypeCount * sizeof( VULKAN_HPP_NAMESPACE::MemoryType ) );
73126       VULKAN_HPP_ASSERT( memoryHeaps_.size() < VK_MAX_MEMORY_HEAPS );
73127       memcpy( memoryHeaps, memoryHeaps_.data(), memoryHeapCount * sizeof( VULKAN_HPP_NAMESPACE::MemoryHeap ) );
73128     }
73129 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
73130 
73131     PhysicalDeviceMemoryProperties & operator=( PhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73132 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73133 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties73134     PhysicalDeviceMemoryProperties & operator=( VkPhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
73135     {
73136       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties const *>( &rhs );
73137       return *this;
73138     }
73139 
operator VkPhysicalDeviceMemoryProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties73140     operator VkPhysicalDeviceMemoryProperties const &() const VULKAN_HPP_NOEXCEPT
73141     {
73142       return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties *>( this );
73143     }
73144 
operator VkPhysicalDeviceMemoryProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties73145     operator VkPhysicalDeviceMemoryProperties &() VULKAN_HPP_NOEXCEPT
73146     {
73147       return *reinterpret_cast<VkPhysicalDeviceMemoryProperties *>( this );
73148     }
73149 
73150 #if defined( VULKAN_HPP_USE_REFLECT )
73151 #  if 14 <= VULKAN_HPP_CPP_VERSION
73152     auto
73153 #  else
73154     std::tuple<uint32_t const &,
73155                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::MemoryType, VK_MAX_MEMORY_TYPES> const &,
73156                uint32_t const &,
73157                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::MemoryHeap, VK_MAX_MEMORY_HEAPS> const &>
73158 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties73159       reflect() const VULKAN_HPP_NOEXCEPT
73160     {
73161       return std::tie( memoryTypeCount, memoryTypes, memoryHeapCount, memoryHeaps );
73162     }
73163 #endif
73164 
73165 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties73166     std::strong_ordering operator<=>( PhysicalDeviceMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
73167     {
73168       if ( auto cmp = memoryTypeCount <=> rhs.memoryTypeCount; cmp != 0 )
73169         return cmp;
73170       for ( size_t i = 0; i < memoryTypeCount; ++i )
73171       {
73172         if ( auto cmp = memoryTypes[i] <=> rhs.memoryTypes[i]; cmp != 0 )
73173           return cmp;
73174       }
73175       if ( auto cmp = memoryHeapCount <=> rhs.memoryHeapCount; cmp != 0 )
73176         return cmp;
73177       for ( size_t i = 0; i < memoryHeapCount; ++i )
73178       {
73179         if ( auto cmp = memoryHeaps[i] <=> rhs.memoryHeaps[i]; cmp != 0 )
73180           return cmp;
73181       }
73182 
73183       return std::strong_ordering::equivalent;
73184     }
73185 #endif
73186 
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties73187     bool operator==( PhysicalDeviceMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
73188     {
73189       return ( memoryTypeCount == rhs.memoryTypeCount ) &&
73190              ( memcmp( memoryTypes, rhs.memoryTypes, memoryTypeCount * sizeof( VULKAN_HPP_NAMESPACE::MemoryType ) ) == 0 ) &&
73191              ( memoryHeapCount == rhs.memoryHeapCount ) &&
73192              ( memcmp( memoryHeaps, rhs.memoryHeaps, memoryHeapCount * sizeof( VULKAN_HPP_NAMESPACE::MemoryHeap ) ) == 0 );
73193     }
73194 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties73195     bool operator!=( PhysicalDeviceMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
73196     {
73197       return !operator==( rhs );
73198     }
73199 
73200   public:
73201     uint32_t                                                                                    memoryTypeCount = {};
73202     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::MemoryType, VK_MAX_MEMORY_TYPES> memoryTypes     = {};
73203     uint32_t                                                                                    memoryHeapCount = {};
73204     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::MemoryHeap, VK_MAX_MEMORY_HEAPS> memoryHeaps     = {};
73205   };
73206 
73207   struct PhysicalDeviceMemoryProperties2
73208   {
73209     using NativeType = VkPhysicalDeviceMemoryProperties2;
73210 
73211     static const bool                                  allowDuplicate = false;
73212     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMemoryProperties2;
73213 
73214 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMemoryProperties2VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties273215     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties2( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties memoryProperties_ = {},
73216                                                              void *                                               pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
73217       : pNext{ pNext_ }
73218       , memoryProperties{ memoryProperties_ }
73219     {
73220     }
73221 
73222     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties2( PhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73223 
PhysicalDeviceMemoryProperties2VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties273224     PhysicalDeviceMemoryProperties2( VkPhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
73225       : PhysicalDeviceMemoryProperties2( *reinterpret_cast<PhysicalDeviceMemoryProperties2 const *>( &rhs ) )
73226     {
73227     }
73228 
73229     PhysicalDeviceMemoryProperties2 & operator=( PhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73230 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73231 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties273232     PhysicalDeviceMemoryProperties2 & operator=( VkPhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
73233     {
73234       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 const *>( &rhs );
73235       return *this;
73236     }
73237 
operator VkPhysicalDeviceMemoryProperties2 const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties273238     operator VkPhysicalDeviceMemoryProperties2 const &() const VULKAN_HPP_NOEXCEPT
73239     {
73240       return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2 *>( this );
73241     }
73242 
operator VkPhysicalDeviceMemoryProperties2&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties273243     operator VkPhysicalDeviceMemoryProperties2 &() VULKAN_HPP_NOEXCEPT
73244     {
73245       return *reinterpret_cast<VkPhysicalDeviceMemoryProperties2 *>( this );
73246     }
73247 
73248 #if defined( VULKAN_HPP_USE_REFLECT )
73249 #  if 14 <= VULKAN_HPP_CPP_VERSION
73250     auto
73251 #  else
73252     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties const &>
73253 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties273254       reflect() const VULKAN_HPP_NOEXCEPT
73255     {
73256       return std::tie( sType, pNext, memoryProperties );
73257     }
73258 #endif
73259 
73260 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73261     auto operator<=>( PhysicalDeviceMemoryProperties2 const & ) const = default;
73262 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties273263     bool operator==( PhysicalDeviceMemoryProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
73264     {
73265 #  if defined( VULKAN_HPP_USE_REFLECT )
73266       return this->reflect() == rhs.reflect();
73267 #  else
73268       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryProperties == rhs.memoryProperties );
73269 #  endif
73270     }
73271 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties273272     bool operator!=( PhysicalDeviceMemoryProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
73273     {
73274       return !operator==( rhs );
73275     }
73276 #endif
73277 
73278   public:
73279     VULKAN_HPP_NAMESPACE::StructureType                  sType            = StructureType::ePhysicalDeviceMemoryProperties2;
73280     void *                                               pNext            = {};
73281     VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties memoryProperties = {};
73282   };
73283 
73284   template <>
73285   struct CppType<StructureType, StructureType::ePhysicalDeviceMemoryProperties2>
73286   {
73287     using Type = PhysicalDeviceMemoryProperties2;
73288   };
73289 
73290   using PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2;
73291 
73292   struct PhysicalDeviceMeshShaderFeaturesEXT
73293   {
73294     using NativeType = VkPhysicalDeviceMeshShaderFeaturesEXT;
73295 
73296     static const bool                                  allowDuplicate = false;
73297     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMeshShaderFeaturesEXT;
73298 
73299 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMeshShaderFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT73300     VULKAN_HPP_CONSTEXPR PhysicalDeviceMeshShaderFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 taskShader_                             = {},
73301                                                               VULKAN_HPP_NAMESPACE::Bool32 meshShader_                             = {},
73302                                                               VULKAN_HPP_NAMESPACE::Bool32 multiviewMeshShader_                    = {},
73303                                                               VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRateMeshShader_ = {},
73304                                                               VULKAN_HPP_NAMESPACE::Bool32 meshShaderQueries_                      = {},
73305                                                               void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
73306       : pNext{ pNext_ }
73307       , taskShader{ taskShader_ }
73308       , meshShader{ meshShader_ }
73309       , multiviewMeshShader{ multiviewMeshShader_ }
73310       , primitiveFragmentShadingRateMeshShader{ primitiveFragmentShadingRateMeshShader_ }
73311       , meshShaderQueries{ meshShaderQueries_ }
73312     {
73313     }
73314 
73315     VULKAN_HPP_CONSTEXPR PhysicalDeviceMeshShaderFeaturesEXT( PhysicalDeviceMeshShaderFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73316 
PhysicalDeviceMeshShaderFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT73317     PhysicalDeviceMeshShaderFeaturesEXT( VkPhysicalDeviceMeshShaderFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
73318       : PhysicalDeviceMeshShaderFeaturesEXT( *reinterpret_cast<PhysicalDeviceMeshShaderFeaturesEXT const *>( &rhs ) )
73319     {
73320     }
73321 
73322     PhysicalDeviceMeshShaderFeaturesEXT & operator=( PhysicalDeviceMeshShaderFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73323 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73324 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT73325     PhysicalDeviceMeshShaderFeaturesEXT & operator=( VkPhysicalDeviceMeshShaderFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
73326     {
73327       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT const *>( &rhs );
73328       return *this;
73329     }
73330 
73331 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT73332     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
73333     {
73334       pNext = pNext_;
73335       return *this;
73336     }
73337 
setTaskShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT73338     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT & setTaskShader( VULKAN_HPP_NAMESPACE::Bool32 taskShader_ ) VULKAN_HPP_NOEXCEPT
73339     {
73340       taskShader = taskShader_;
73341       return *this;
73342     }
73343 
setMeshShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT73344     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT & setMeshShader( VULKAN_HPP_NAMESPACE::Bool32 meshShader_ ) VULKAN_HPP_NOEXCEPT
73345     {
73346       meshShader = meshShader_;
73347       return *this;
73348     }
73349 
73350     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT &
setMultiviewMeshShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT73351       setMultiviewMeshShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewMeshShader_ ) VULKAN_HPP_NOEXCEPT
73352     {
73353       multiviewMeshShader = multiviewMeshShader_;
73354       return *this;
73355     }
73356 
73357     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT &
setPrimitiveFragmentShadingRateMeshShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT73358       setPrimitiveFragmentShadingRateMeshShader( VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRateMeshShader_ ) VULKAN_HPP_NOEXCEPT
73359     {
73360       primitiveFragmentShadingRateMeshShader = primitiveFragmentShadingRateMeshShader_;
73361       return *this;
73362     }
73363 
setMeshShaderQueriesVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT73364     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT & setMeshShaderQueries( VULKAN_HPP_NAMESPACE::Bool32 meshShaderQueries_ ) VULKAN_HPP_NOEXCEPT
73365     {
73366       meshShaderQueries = meshShaderQueries_;
73367       return *this;
73368     }
73369 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
73370 
operator VkPhysicalDeviceMeshShaderFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT73371     operator VkPhysicalDeviceMeshShaderFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
73372     {
73373       return *reinterpret_cast<const VkPhysicalDeviceMeshShaderFeaturesEXT *>( this );
73374     }
73375 
operator VkPhysicalDeviceMeshShaderFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT73376     operator VkPhysicalDeviceMeshShaderFeaturesEXT &() VULKAN_HPP_NOEXCEPT
73377     {
73378       return *reinterpret_cast<VkPhysicalDeviceMeshShaderFeaturesEXT *>( this );
73379     }
73380 
73381 #if defined( VULKAN_HPP_USE_REFLECT )
73382 #  if 14 <= VULKAN_HPP_CPP_VERSION
73383     auto
73384 #  else
73385     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
73386                void * const &,
73387                VULKAN_HPP_NAMESPACE::Bool32 const &,
73388                VULKAN_HPP_NAMESPACE::Bool32 const &,
73389                VULKAN_HPP_NAMESPACE::Bool32 const &,
73390                VULKAN_HPP_NAMESPACE::Bool32 const &,
73391                VULKAN_HPP_NAMESPACE::Bool32 const &>
73392 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT73393       reflect() const VULKAN_HPP_NOEXCEPT
73394     {
73395       return std::tie( sType, pNext, taskShader, meshShader, multiviewMeshShader, primitiveFragmentShadingRateMeshShader, meshShaderQueries );
73396     }
73397 #endif
73398 
73399 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73400     auto operator<=>( PhysicalDeviceMeshShaderFeaturesEXT const & ) const = default;
73401 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT73402     bool operator==( PhysicalDeviceMeshShaderFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
73403     {
73404 #  if defined( VULKAN_HPP_USE_REFLECT )
73405       return this->reflect() == rhs.reflect();
73406 #  else
73407       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( taskShader == rhs.taskShader ) && ( meshShader == rhs.meshShader ) &&
73408              ( multiviewMeshShader == rhs.multiviewMeshShader ) && ( primitiveFragmentShadingRateMeshShader == rhs.primitiveFragmentShadingRateMeshShader ) &&
73409              ( meshShaderQueries == rhs.meshShaderQueries );
73410 #  endif
73411     }
73412 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT73413     bool operator!=( PhysicalDeviceMeshShaderFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
73414     {
73415       return !operator==( rhs );
73416     }
73417 #endif
73418 
73419   public:
73420     VULKAN_HPP_NAMESPACE::StructureType sType                                  = StructureType::ePhysicalDeviceMeshShaderFeaturesEXT;
73421     void *                              pNext                                  = {};
73422     VULKAN_HPP_NAMESPACE::Bool32        taskShader                             = {};
73423     VULKAN_HPP_NAMESPACE::Bool32        meshShader                             = {};
73424     VULKAN_HPP_NAMESPACE::Bool32        multiviewMeshShader                    = {};
73425     VULKAN_HPP_NAMESPACE::Bool32        primitiveFragmentShadingRateMeshShader = {};
73426     VULKAN_HPP_NAMESPACE::Bool32        meshShaderQueries                      = {};
73427   };
73428 
73429   template <>
73430   struct CppType<StructureType, StructureType::ePhysicalDeviceMeshShaderFeaturesEXT>
73431   {
73432     using Type = PhysicalDeviceMeshShaderFeaturesEXT;
73433   };
73434 
73435   struct PhysicalDeviceMeshShaderFeaturesNV
73436   {
73437     using NativeType = VkPhysicalDeviceMeshShaderFeaturesNV;
73438 
73439     static const bool                                  allowDuplicate = false;
73440     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMeshShaderFeaturesNV;
73441 
73442 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMeshShaderFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV73443     VULKAN_HPP_CONSTEXPR PhysicalDeviceMeshShaderFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 taskShader_ = {},
73444                                                              VULKAN_HPP_NAMESPACE::Bool32 meshShader_ = {},
73445                                                              void *                       pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
73446       : pNext{ pNext_ }
73447       , taskShader{ taskShader_ }
73448       , meshShader{ meshShader_ }
73449     {
73450     }
73451 
73452     VULKAN_HPP_CONSTEXPR PhysicalDeviceMeshShaderFeaturesNV( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73453 
PhysicalDeviceMeshShaderFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV73454     PhysicalDeviceMeshShaderFeaturesNV( VkPhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
73455       : PhysicalDeviceMeshShaderFeaturesNV( *reinterpret_cast<PhysicalDeviceMeshShaderFeaturesNV const *>( &rhs ) )
73456     {
73457     }
73458 
73459     PhysicalDeviceMeshShaderFeaturesNV & operator=( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73460 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73461 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV73462     PhysicalDeviceMeshShaderFeaturesNV & operator=( VkPhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
73463     {
73464       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV const *>( &rhs );
73465       return *this;
73466     }
73467 
73468 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV73469     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
73470     {
73471       pNext = pNext_;
73472       return *this;
73473     }
73474 
setTaskShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV73475     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesNV & setTaskShader( VULKAN_HPP_NAMESPACE::Bool32 taskShader_ ) VULKAN_HPP_NOEXCEPT
73476     {
73477       taskShader = taskShader_;
73478       return *this;
73479     }
73480 
setMeshShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV73481     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesNV & setMeshShader( VULKAN_HPP_NAMESPACE::Bool32 meshShader_ ) VULKAN_HPP_NOEXCEPT
73482     {
73483       meshShader = meshShader_;
73484       return *this;
73485     }
73486 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
73487 
operator VkPhysicalDeviceMeshShaderFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV73488     operator VkPhysicalDeviceMeshShaderFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
73489     {
73490       return *reinterpret_cast<const VkPhysicalDeviceMeshShaderFeaturesNV *>( this );
73491     }
73492 
operator VkPhysicalDeviceMeshShaderFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV73493     operator VkPhysicalDeviceMeshShaderFeaturesNV &() VULKAN_HPP_NOEXCEPT
73494     {
73495       return *reinterpret_cast<VkPhysicalDeviceMeshShaderFeaturesNV *>( this );
73496     }
73497 
73498 #if defined( VULKAN_HPP_USE_REFLECT )
73499 #  if 14 <= VULKAN_HPP_CPP_VERSION
73500     auto
73501 #  else
73502     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
73503 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV73504       reflect() const VULKAN_HPP_NOEXCEPT
73505     {
73506       return std::tie( sType, pNext, taskShader, meshShader );
73507     }
73508 #endif
73509 
73510 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73511     auto operator<=>( PhysicalDeviceMeshShaderFeaturesNV const & ) const = default;
73512 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV73513     bool operator==( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
73514     {
73515 #  if defined( VULKAN_HPP_USE_REFLECT )
73516       return this->reflect() == rhs.reflect();
73517 #  else
73518       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( taskShader == rhs.taskShader ) && ( meshShader == rhs.meshShader );
73519 #  endif
73520     }
73521 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV73522     bool operator!=( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
73523     {
73524       return !operator==( rhs );
73525     }
73526 #endif
73527 
73528   public:
73529     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::ePhysicalDeviceMeshShaderFeaturesNV;
73530     void *                              pNext      = {};
73531     VULKAN_HPP_NAMESPACE::Bool32        taskShader = {};
73532     VULKAN_HPP_NAMESPACE::Bool32        meshShader = {};
73533   };
73534 
73535   template <>
73536   struct CppType<StructureType, StructureType::ePhysicalDeviceMeshShaderFeaturesNV>
73537   {
73538     using Type = PhysicalDeviceMeshShaderFeaturesNV;
73539   };
73540 
73541   struct PhysicalDeviceMeshShaderPropertiesEXT
73542   {
73543     using NativeType = VkPhysicalDeviceMeshShaderPropertiesEXT;
73544 
73545     static const bool                                  allowDuplicate = false;
73546     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMeshShaderPropertiesEXT;
73547 
73548 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMeshShaderPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT73549     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderPropertiesEXT( uint32_t                        maxTaskWorkGroupTotalCount_            = {},
73550                                                                    std::array<uint32_t, 3> const & maxTaskWorkGroupCount_                 = {},
73551                                                                    uint32_t                        maxTaskWorkGroupInvocations_           = {},
73552                                                                    std::array<uint32_t, 3> const & maxTaskWorkGroupSize_                  = {},
73553                                                                    uint32_t                        maxTaskPayloadSize_                    = {},
73554                                                                    uint32_t                        maxTaskSharedMemorySize_               = {},
73555                                                                    uint32_t                        maxTaskPayloadAndSharedMemorySize_     = {},
73556                                                                    uint32_t                        maxMeshWorkGroupTotalCount_            = {},
73557                                                                    std::array<uint32_t, 3> const & maxMeshWorkGroupCount_                 = {},
73558                                                                    uint32_t                        maxMeshWorkGroupInvocations_           = {},
73559                                                                    std::array<uint32_t, 3> const & maxMeshWorkGroupSize_                  = {},
73560                                                                    uint32_t                        maxMeshSharedMemorySize_               = {},
73561                                                                    uint32_t                        maxMeshPayloadAndSharedMemorySize_     = {},
73562                                                                    uint32_t                        maxMeshOutputMemorySize_               = {},
73563                                                                    uint32_t                        maxMeshPayloadAndOutputMemorySize_     = {},
73564                                                                    uint32_t                        maxMeshOutputComponents_               = {},
73565                                                                    uint32_t                        maxMeshOutputVertices_                 = {},
73566                                                                    uint32_t                        maxMeshOutputPrimitives_               = {},
73567                                                                    uint32_t                        maxMeshOutputLayers_                   = {},
73568                                                                    uint32_t                        maxMeshMultiviewViewCount_             = {},
73569                                                                    uint32_t                        meshOutputPerVertexGranularity_        = {},
73570                                                                    uint32_t                        meshOutputPerPrimitiveGranularity_     = {},
73571                                                                    uint32_t                        maxPreferredTaskWorkGroupInvocations_  = {},
73572                                                                    uint32_t                        maxPreferredMeshWorkGroupInvocations_  = {},
73573                                                                    VULKAN_HPP_NAMESPACE::Bool32    prefersLocalInvocationVertexOutput_    = {},
73574                                                                    VULKAN_HPP_NAMESPACE::Bool32    prefersLocalInvocationPrimitiveOutput_ = {},
73575                                                                    VULKAN_HPP_NAMESPACE::Bool32    prefersCompactVertexOutput_            = {},
73576                                                                    VULKAN_HPP_NAMESPACE::Bool32    prefersCompactPrimitiveOutput_         = {},
73577                                                                    void *                          pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
73578       : pNext{ pNext_ }
73579       , maxTaskWorkGroupTotalCount{ maxTaskWorkGroupTotalCount_ }
73580       , maxTaskWorkGroupCount{ maxTaskWorkGroupCount_ }
73581       , maxTaskWorkGroupInvocations{ maxTaskWorkGroupInvocations_ }
73582       , maxTaskWorkGroupSize{ maxTaskWorkGroupSize_ }
73583       , maxTaskPayloadSize{ maxTaskPayloadSize_ }
73584       , maxTaskSharedMemorySize{ maxTaskSharedMemorySize_ }
73585       , maxTaskPayloadAndSharedMemorySize{ maxTaskPayloadAndSharedMemorySize_ }
73586       , maxMeshWorkGroupTotalCount{ maxMeshWorkGroupTotalCount_ }
73587       , maxMeshWorkGroupCount{ maxMeshWorkGroupCount_ }
73588       , maxMeshWorkGroupInvocations{ maxMeshWorkGroupInvocations_ }
73589       , maxMeshWorkGroupSize{ maxMeshWorkGroupSize_ }
73590       , maxMeshSharedMemorySize{ maxMeshSharedMemorySize_ }
73591       , maxMeshPayloadAndSharedMemorySize{ maxMeshPayloadAndSharedMemorySize_ }
73592       , maxMeshOutputMemorySize{ maxMeshOutputMemorySize_ }
73593       , maxMeshPayloadAndOutputMemorySize{ maxMeshPayloadAndOutputMemorySize_ }
73594       , maxMeshOutputComponents{ maxMeshOutputComponents_ }
73595       , maxMeshOutputVertices{ maxMeshOutputVertices_ }
73596       , maxMeshOutputPrimitives{ maxMeshOutputPrimitives_ }
73597       , maxMeshOutputLayers{ maxMeshOutputLayers_ }
73598       , maxMeshMultiviewViewCount{ maxMeshMultiviewViewCount_ }
73599       , meshOutputPerVertexGranularity{ meshOutputPerVertexGranularity_ }
73600       , meshOutputPerPrimitiveGranularity{ meshOutputPerPrimitiveGranularity_ }
73601       , maxPreferredTaskWorkGroupInvocations{ maxPreferredTaskWorkGroupInvocations_ }
73602       , maxPreferredMeshWorkGroupInvocations{ maxPreferredMeshWorkGroupInvocations_ }
73603       , prefersLocalInvocationVertexOutput{ prefersLocalInvocationVertexOutput_ }
73604       , prefersLocalInvocationPrimitiveOutput{ prefersLocalInvocationPrimitiveOutput_ }
73605       , prefersCompactVertexOutput{ prefersCompactVertexOutput_ }
73606       , prefersCompactPrimitiveOutput{ prefersCompactPrimitiveOutput_ }
73607     {
73608     }
73609 
73610     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderPropertiesEXT( PhysicalDeviceMeshShaderPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73611 
PhysicalDeviceMeshShaderPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT73612     PhysicalDeviceMeshShaderPropertiesEXT( VkPhysicalDeviceMeshShaderPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
73613       : PhysicalDeviceMeshShaderPropertiesEXT( *reinterpret_cast<PhysicalDeviceMeshShaderPropertiesEXT const *>( &rhs ) )
73614     {
73615     }
73616 
73617     PhysicalDeviceMeshShaderPropertiesEXT & operator=( PhysicalDeviceMeshShaderPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73618 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73619 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT73620     PhysicalDeviceMeshShaderPropertiesEXT & operator=( VkPhysicalDeviceMeshShaderPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
73621     {
73622       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT const *>( &rhs );
73623       return *this;
73624     }
73625 
operator VkPhysicalDeviceMeshShaderPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT73626     operator VkPhysicalDeviceMeshShaderPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
73627     {
73628       return *reinterpret_cast<const VkPhysicalDeviceMeshShaderPropertiesEXT *>( this );
73629     }
73630 
operator VkPhysicalDeviceMeshShaderPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT73631     operator VkPhysicalDeviceMeshShaderPropertiesEXT &() VULKAN_HPP_NOEXCEPT
73632     {
73633       return *reinterpret_cast<VkPhysicalDeviceMeshShaderPropertiesEXT *>( this );
73634     }
73635 
73636 #if defined( VULKAN_HPP_USE_REFLECT )
73637 #  if 14 <= VULKAN_HPP_CPP_VERSION
73638     auto
73639 #  else
73640     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
73641                void * const &,
73642                uint32_t const &,
73643                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
73644                uint32_t const &,
73645                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
73646                uint32_t const &,
73647                uint32_t const &,
73648                uint32_t const &,
73649                uint32_t const &,
73650                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
73651                uint32_t const &,
73652                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
73653                uint32_t const &,
73654                uint32_t const &,
73655                uint32_t const &,
73656                uint32_t const &,
73657                uint32_t const &,
73658                uint32_t const &,
73659                uint32_t const &,
73660                uint32_t const &,
73661                uint32_t const &,
73662                uint32_t const &,
73663                uint32_t const &,
73664                uint32_t const &,
73665                uint32_t const &,
73666                VULKAN_HPP_NAMESPACE::Bool32 const &,
73667                VULKAN_HPP_NAMESPACE::Bool32 const &,
73668                VULKAN_HPP_NAMESPACE::Bool32 const &,
73669                VULKAN_HPP_NAMESPACE::Bool32 const &>
73670 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT73671       reflect() const VULKAN_HPP_NOEXCEPT
73672     {
73673       return std::tie( sType,
73674                        pNext,
73675                        maxTaskWorkGroupTotalCount,
73676                        maxTaskWorkGroupCount,
73677                        maxTaskWorkGroupInvocations,
73678                        maxTaskWorkGroupSize,
73679                        maxTaskPayloadSize,
73680                        maxTaskSharedMemorySize,
73681                        maxTaskPayloadAndSharedMemorySize,
73682                        maxMeshWorkGroupTotalCount,
73683                        maxMeshWorkGroupCount,
73684                        maxMeshWorkGroupInvocations,
73685                        maxMeshWorkGroupSize,
73686                        maxMeshSharedMemorySize,
73687                        maxMeshPayloadAndSharedMemorySize,
73688                        maxMeshOutputMemorySize,
73689                        maxMeshPayloadAndOutputMemorySize,
73690                        maxMeshOutputComponents,
73691                        maxMeshOutputVertices,
73692                        maxMeshOutputPrimitives,
73693                        maxMeshOutputLayers,
73694                        maxMeshMultiviewViewCount,
73695                        meshOutputPerVertexGranularity,
73696                        meshOutputPerPrimitiveGranularity,
73697                        maxPreferredTaskWorkGroupInvocations,
73698                        maxPreferredMeshWorkGroupInvocations,
73699                        prefersLocalInvocationVertexOutput,
73700                        prefersLocalInvocationPrimitiveOutput,
73701                        prefersCompactVertexOutput,
73702                        prefersCompactPrimitiveOutput );
73703     }
73704 #endif
73705 
73706 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73707     auto operator<=>( PhysicalDeviceMeshShaderPropertiesEXT const & ) const = default;
73708 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT73709     bool operator==( PhysicalDeviceMeshShaderPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
73710     {
73711 #  if defined( VULKAN_HPP_USE_REFLECT )
73712       return this->reflect() == rhs.reflect();
73713 #  else
73714       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxTaskWorkGroupTotalCount == rhs.maxTaskWorkGroupTotalCount ) &&
73715              ( maxTaskWorkGroupCount == rhs.maxTaskWorkGroupCount ) && ( maxTaskWorkGroupInvocations == rhs.maxTaskWorkGroupInvocations ) &&
73716              ( maxTaskWorkGroupSize == rhs.maxTaskWorkGroupSize ) && ( maxTaskPayloadSize == rhs.maxTaskPayloadSize ) &&
73717              ( maxTaskSharedMemorySize == rhs.maxTaskSharedMemorySize ) && ( maxTaskPayloadAndSharedMemorySize == rhs.maxTaskPayloadAndSharedMemorySize ) &&
73718              ( maxMeshWorkGroupTotalCount == rhs.maxMeshWorkGroupTotalCount ) && ( maxMeshWorkGroupCount == rhs.maxMeshWorkGroupCount ) &&
73719              ( maxMeshWorkGroupInvocations == rhs.maxMeshWorkGroupInvocations ) && ( maxMeshWorkGroupSize == rhs.maxMeshWorkGroupSize ) &&
73720              ( maxMeshSharedMemorySize == rhs.maxMeshSharedMemorySize ) && ( maxMeshPayloadAndSharedMemorySize == rhs.maxMeshPayloadAndSharedMemorySize ) &&
73721              ( maxMeshOutputMemorySize == rhs.maxMeshOutputMemorySize ) && ( maxMeshPayloadAndOutputMemorySize == rhs.maxMeshPayloadAndOutputMemorySize ) &&
73722              ( maxMeshOutputComponents == rhs.maxMeshOutputComponents ) && ( maxMeshOutputVertices == rhs.maxMeshOutputVertices ) &&
73723              ( maxMeshOutputPrimitives == rhs.maxMeshOutputPrimitives ) && ( maxMeshOutputLayers == rhs.maxMeshOutputLayers ) &&
73724              ( maxMeshMultiviewViewCount == rhs.maxMeshMultiviewViewCount ) && ( meshOutputPerVertexGranularity == rhs.meshOutputPerVertexGranularity ) &&
73725              ( meshOutputPerPrimitiveGranularity == rhs.meshOutputPerPrimitiveGranularity ) &&
73726              ( maxPreferredTaskWorkGroupInvocations == rhs.maxPreferredTaskWorkGroupInvocations ) &&
73727              ( maxPreferredMeshWorkGroupInvocations == rhs.maxPreferredMeshWorkGroupInvocations ) &&
73728              ( prefersLocalInvocationVertexOutput == rhs.prefersLocalInvocationVertexOutput ) &&
73729              ( prefersLocalInvocationPrimitiveOutput == rhs.prefersLocalInvocationPrimitiveOutput ) &&
73730              ( prefersCompactVertexOutput == rhs.prefersCompactVertexOutput ) && ( prefersCompactPrimitiveOutput == rhs.prefersCompactPrimitiveOutput );
73731 #  endif
73732     }
73733 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT73734     bool operator!=( PhysicalDeviceMeshShaderPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
73735     {
73736       return !operator==( rhs );
73737     }
73738 #endif
73739 
73740   public:
73741     VULKAN_HPP_NAMESPACE::StructureType               sType                                 = StructureType::ePhysicalDeviceMeshShaderPropertiesEXT;
73742     void *                                            pNext                                 = {};
73743     uint32_t                                          maxTaskWorkGroupTotalCount            = {};
73744     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxTaskWorkGroupCount                 = {};
73745     uint32_t                                          maxTaskWorkGroupInvocations           = {};
73746     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxTaskWorkGroupSize                  = {};
73747     uint32_t                                          maxTaskPayloadSize                    = {};
73748     uint32_t                                          maxTaskSharedMemorySize               = {};
73749     uint32_t                                          maxTaskPayloadAndSharedMemorySize     = {};
73750     uint32_t                                          maxMeshWorkGroupTotalCount            = {};
73751     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxMeshWorkGroupCount                 = {};
73752     uint32_t                                          maxMeshWorkGroupInvocations           = {};
73753     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxMeshWorkGroupSize                  = {};
73754     uint32_t                                          maxMeshSharedMemorySize               = {};
73755     uint32_t                                          maxMeshPayloadAndSharedMemorySize     = {};
73756     uint32_t                                          maxMeshOutputMemorySize               = {};
73757     uint32_t                                          maxMeshPayloadAndOutputMemorySize     = {};
73758     uint32_t                                          maxMeshOutputComponents               = {};
73759     uint32_t                                          maxMeshOutputVertices                 = {};
73760     uint32_t                                          maxMeshOutputPrimitives               = {};
73761     uint32_t                                          maxMeshOutputLayers                   = {};
73762     uint32_t                                          maxMeshMultiviewViewCount             = {};
73763     uint32_t                                          meshOutputPerVertexGranularity        = {};
73764     uint32_t                                          meshOutputPerPrimitiveGranularity     = {};
73765     uint32_t                                          maxPreferredTaskWorkGroupInvocations  = {};
73766     uint32_t                                          maxPreferredMeshWorkGroupInvocations  = {};
73767     VULKAN_HPP_NAMESPACE::Bool32                      prefersLocalInvocationVertexOutput    = {};
73768     VULKAN_HPP_NAMESPACE::Bool32                      prefersLocalInvocationPrimitiveOutput = {};
73769     VULKAN_HPP_NAMESPACE::Bool32                      prefersCompactVertexOutput            = {};
73770     VULKAN_HPP_NAMESPACE::Bool32                      prefersCompactPrimitiveOutput         = {};
73771   };
73772 
73773   template <>
73774   struct CppType<StructureType, StructureType::ePhysicalDeviceMeshShaderPropertiesEXT>
73775   {
73776     using Type = PhysicalDeviceMeshShaderPropertiesEXT;
73777   };
73778 
73779   struct PhysicalDeviceMeshShaderPropertiesNV
73780   {
73781     using NativeType = VkPhysicalDeviceMeshShaderPropertiesNV;
73782 
73783     static const bool                                  allowDuplicate = false;
73784     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMeshShaderPropertiesNV;
73785 
73786 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMeshShaderPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV73787     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderPropertiesNV( uint32_t                        maxDrawMeshTasksCount_             = {},
73788                                                                   uint32_t                        maxTaskWorkGroupInvocations_       = {},
73789                                                                   std::array<uint32_t, 3> const & maxTaskWorkGroupSize_              = {},
73790                                                                   uint32_t                        maxTaskTotalMemorySize_            = {},
73791                                                                   uint32_t                        maxTaskOutputCount_                = {},
73792                                                                   uint32_t                        maxMeshWorkGroupInvocations_       = {},
73793                                                                   std::array<uint32_t, 3> const & maxMeshWorkGroupSize_              = {},
73794                                                                   uint32_t                        maxMeshTotalMemorySize_            = {},
73795                                                                   uint32_t                        maxMeshOutputVertices_             = {},
73796                                                                   uint32_t                        maxMeshOutputPrimitives_           = {},
73797                                                                   uint32_t                        maxMeshMultiviewViewCount_         = {},
73798                                                                   uint32_t                        meshOutputPerVertexGranularity_    = {},
73799                                                                   uint32_t                        meshOutputPerPrimitiveGranularity_ = {},
73800                                                                   void *                          pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
73801       : pNext{ pNext_ }
73802       , maxDrawMeshTasksCount{ maxDrawMeshTasksCount_ }
73803       , maxTaskWorkGroupInvocations{ maxTaskWorkGroupInvocations_ }
73804       , maxTaskWorkGroupSize{ maxTaskWorkGroupSize_ }
73805       , maxTaskTotalMemorySize{ maxTaskTotalMemorySize_ }
73806       , maxTaskOutputCount{ maxTaskOutputCount_ }
73807       , maxMeshWorkGroupInvocations{ maxMeshWorkGroupInvocations_ }
73808       , maxMeshWorkGroupSize{ maxMeshWorkGroupSize_ }
73809       , maxMeshTotalMemorySize{ maxMeshTotalMemorySize_ }
73810       , maxMeshOutputVertices{ maxMeshOutputVertices_ }
73811       , maxMeshOutputPrimitives{ maxMeshOutputPrimitives_ }
73812       , maxMeshMultiviewViewCount{ maxMeshMultiviewViewCount_ }
73813       , meshOutputPerVertexGranularity{ meshOutputPerVertexGranularity_ }
73814       , meshOutputPerPrimitiveGranularity{ meshOutputPerPrimitiveGranularity_ }
73815     {
73816     }
73817 
73818     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderPropertiesNV( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73819 
PhysicalDeviceMeshShaderPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV73820     PhysicalDeviceMeshShaderPropertiesNV( VkPhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
73821       : PhysicalDeviceMeshShaderPropertiesNV( *reinterpret_cast<PhysicalDeviceMeshShaderPropertiesNV const *>( &rhs ) )
73822     {
73823     }
73824 
73825     PhysicalDeviceMeshShaderPropertiesNV & operator=( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73826 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73827 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV73828     PhysicalDeviceMeshShaderPropertiesNV & operator=( VkPhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
73829     {
73830       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV const *>( &rhs );
73831       return *this;
73832     }
73833 
operator VkPhysicalDeviceMeshShaderPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV73834     operator VkPhysicalDeviceMeshShaderPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
73835     {
73836       return *reinterpret_cast<const VkPhysicalDeviceMeshShaderPropertiesNV *>( this );
73837     }
73838 
operator VkPhysicalDeviceMeshShaderPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV73839     operator VkPhysicalDeviceMeshShaderPropertiesNV &() VULKAN_HPP_NOEXCEPT
73840     {
73841       return *reinterpret_cast<VkPhysicalDeviceMeshShaderPropertiesNV *>( this );
73842     }
73843 
73844 #if defined( VULKAN_HPP_USE_REFLECT )
73845 #  if 14 <= VULKAN_HPP_CPP_VERSION
73846     auto
73847 #  else
73848     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
73849                void * const &,
73850                uint32_t const &,
73851                uint32_t const &,
73852                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
73853                uint32_t const &,
73854                uint32_t const &,
73855                uint32_t const &,
73856                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &,
73857                uint32_t const &,
73858                uint32_t const &,
73859                uint32_t const &,
73860                uint32_t const &,
73861                uint32_t const &,
73862                uint32_t const &>
73863 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV73864       reflect() const VULKAN_HPP_NOEXCEPT
73865     {
73866       return std::tie( sType,
73867                        pNext,
73868                        maxDrawMeshTasksCount,
73869                        maxTaskWorkGroupInvocations,
73870                        maxTaskWorkGroupSize,
73871                        maxTaskTotalMemorySize,
73872                        maxTaskOutputCount,
73873                        maxMeshWorkGroupInvocations,
73874                        maxMeshWorkGroupSize,
73875                        maxMeshTotalMemorySize,
73876                        maxMeshOutputVertices,
73877                        maxMeshOutputPrimitives,
73878                        maxMeshMultiviewViewCount,
73879                        meshOutputPerVertexGranularity,
73880                        meshOutputPerPrimitiveGranularity );
73881     }
73882 #endif
73883 
73884 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
73885     auto operator<=>( PhysicalDeviceMeshShaderPropertiesNV const & ) const = default;
73886 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV73887     bool operator==( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
73888     {
73889 #  if defined( VULKAN_HPP_USE_REFLECT )
73890       return this->reflect() == rhs.reflect();
73891 #  else
73892       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxDrawMeshTasksCount == rhs.maxDrawMeshTasksCount ) &&
73893              ( maxTaskWorkGroupInvocations == rhs.maxTaskWorkGroupInvocations ) && ( maxTaskWorkGroupSize == rhs.maxTaskWorkGroupSize ) &&
73894              ( maxTaskTotalMemorySize == rhs.maxTaskTotalMemorySize ) && ( maxTaskOutputCount == rhs.maxTaskOutputCount ) &&
73895              ( maxMeshWorkGroupInvocations == rhs.maxMeshWorkGroupInvocations ) && ( maxMeshWorkGroupSize == rhs.maxMeshWorkGroupSize ) &&
73896              ( maxMeshTotalMemorySize == rhs.maxMeshTotalMemorySize ) && ( maxMeshOutputVertices == rhs.maxMeshOutputVertices ) &&
73897              ( maxMeshOutputPrimitives == rhs.maxMeshOutputPrimitives ) && ( maxMeshMultiviewViewCount == rhs.maxMeshMultiviewViewCount ) &&
73898              ( meshOutputPerVertexGranularity == rhs.meshOutputPerVertexGranularity ) &&
73899              ( meshOutputPerPrimitiveGranularity == rhs.meshOutputPerPrimitiveGranularity );
73900 #  endif
73901     }
73902 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV73903     bool operator!=( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
73904     {
73905       return !operator==( rhs );
73906     }
73907 #endif
73908 
73909   public:
73910     VULKAN_HPP_NAMESPACE::StructureType               sType                             = StructureType::ePhysicalDeviceMeshShaderPropertiesNV;
73911     void *                                            pNext                             = {};
73912     uint32_t                                          maxDrawMeshTasksCount             = {};
73913     uint32_t                                          maxTaskWorkGroupInvocations       = {};
73914     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxTaskWorkGroupSize              = {};
73915     uint32_t                                          maxTaskTotalMemorySize            = {};
73916     uint32_t                                          maxTaskOutputCount                = {};
73917     uint32_t                                          maxMeshWorkGroupInvocations       = {};
73918     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxMeshWorkGroupSize              = {};
73919     uint32_t                                          maxMeshTotalMemorySize            = {};
73920     uint32_t                                          maxMeshOutputVertices             = {};
73921     uint32_t                                          maxMeshOutputPrimitives           = {};
73922     uint32_t                                          maxMeshMultiviewViewCount         = {};
73923     uint32_t                                          meshOutputPerVertexGranularity    = {};
73924     uint32_t                                          meshOutputPerPrimitiveGranularity = {};
73925   };
73926 
73927   template <>
73928   struct CppType<StructureType, StructureType::ePhysicalDeviceMeshShaderPropertiesNV>
73929   {
73930     using Type = PhysicalDeviceMeshShaderPropertiesNV;
73931   };
73932 
73933   struct PhysicalDeviceMultiDrawFeaturesEXT
73934   {
73935     using NativeType = VkPhysicalDeviceMultiDrawFeaturesEXT;
73936 
73937     static const bool                                  allowDuplicate = false;
73938     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMultiDrawFeaturesEXT;
73939 
73940 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMultiDrawFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT73941     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiDrawFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 multiDraw_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
73942       : pNext{ pNext_ }
73943       , multiDraw{ multiDraw_ }
73944     {
73945     }
73946 
73947     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiDrawFeaturesEXT( PhysicalDeviceMultiDrawFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73948 
PhysicalDeviceMultiDrawFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT73949     PhysicalDeviceMultiDrawFeaturesEXT( VkPhysicalDeviceMultiDrawFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
73950       : PhysicalDeviceMultiDrawFeaturesEXT( *reinterpret_cast<PhysicalDeviceMultiDrawFeaturesEXT const *>( &rhs ) )
73951     {
73952     }
73953 
73954     PhysicalDeviceMultiDrawFeaturesEXT & operator=( PhysicalDeviceMultiDrawFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
73955 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
73956 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT73957     PhysicalDeviceMultiDrawFeaturesEXT & operator=( VkPhysicalDeviceMultiDrawFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
73958     {
73959       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT const *>( &rhs );
73960       return *this;
73961     }
73962 
73963 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT73964     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiDrawFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
73965     {
73966       pNext = pNext_;
73967       return *this;
73968     }
73969 
setMultiDrawVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT73970     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiDrawFeaturesEXT & setMultiDraw( VULKAN_HPP_NAMESPACE::Bool32 multiDraw_ ) VULKAN_HPP_NOEXCEPT
73971     {
73972       multiDraw = multiDraw_;
73973       return *this;
73974     }
73975 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
73976 
operator VkPhysicalDeviceMultiDrawFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT73977     operator VkPhysicalDeviceMultiDrawFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
73978     {
73979       return *reinterpret_cast<const VkPhysicalDeviceMultiDrawFeaturesEXT *>( this );
73980     }
73981 
operator VkPhysicalDeviceMultiDrawFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT73982     operator VkPhysicalDeviceMultiDrawFeaturesEXT &() VULKAN_HPP_NOEXCEPT
73983     {
73984       return *reinterpret_cast<VkPhysicalDeviceMultiDrawFeaturesEXT *>( this );
73985     }
73986 
73987 #if defined( VULKAN_HPP_USE_REFLECT )
73988 #  if 14 <= VULKAN_HPP_CPP_VERSION
73989     auto
73990 #  else
73991     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
73992 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT73993       reflect() const VULKAN_HPP_NOEXCEPT
73994     {
73995       return std::tie( sType, pNext, multiDraw );
73996     }
73997 #endif
73998 
73999 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74000     auto operator<=>( PhysicalDeviceMultiDrawFeaturesEXT const & ) const = default;
74001 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT74002     bool operator==( PhysicalDeviceMultiDrawFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
74003     {
74004 #  if defined( VULKAN_HPP_USE_REFLECT )
74005       return this->reflect() == rhs.reflect();
74006 #  else
74007       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( multiDraw == rhs.multiDraw );
74008 #  endif
74009     }
74010 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT74011     bool operator!=( PhysicalDeviceMultiDrawFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
74012     {
74013       return !operator==( rhs );
74014     }
74015 #endif
74016 
74017   public:
74018     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::ePhysicalDeviceMultiDrawFeaturesEXT;
74019     void *                              pNext     = {};
74020     VULKAN_HPP_NAMESPACE::Bool32        multiDraw = {};
74021   };
74022 
74023   template <>
74024   struct CppType<StructureType, StructureType::ePhysicalDeviceMultiDrawFeaturesEXT>
74025   {
74026     using Type = PhysicalDeviceMultiDrawFeaturesEXT;
74027   };
74028 
74029   struct PhysicalDeviceMultiDrawPropertiesEXT
74030   {
74031     using NativeType = VkPhysicalDeviceMultiDrawPropertiesEXT;
74032 
74033     static const bool                                  allowDuplicate = false;
74034     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMultiDrawPropertiesEXT;
74035 
74036 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMultiDrawPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT74037     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiDrawPropertiesEXT( uint32_t maxMultiDrawCount_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
74038       : pNext{ pNext_ }
74039       , maxMultiDrawCount{ maxMultiDrawCount_ }
74040     {
74041     }
74042 
74043     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiDrawPropertiesEXT( PhysicalDeviceMultiDrawPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74044 
PhysicalDeviceMultiDrawPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT74045     PhysicalDeviceMultiDrawPropertiesEXT( VkPhysicalDeviceMultiDrawPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
74046       : PhysicalDeviceMultiDrawPropertiesEXT( *reinterpret_cast<PhysicalDeviceMultiDrawPropertiesEXT const *>( &rhs ) )
74047     {
74048     }
74049 
74050     PhysicalDeviceMultiDrawPropertiesEXT & operator=( PhysicalDeviceMultiDrawPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74051 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74052 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT74053     PhysicalDeviceMultiDrawPropertiesEXT & operator=( VkPhysicalDeviceMultiDrawPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
74054     {
74055       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT const *>( &rhs );
74056       return *this;
74057     }
74058 
operator VkPhysicalDeviceMultiDrawPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT74059     operator VkPhysicalDeviceMultiDrawPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
74060     {
74061       return *reinterpret_cast<const VkPhysicalDeviceMultiDrawPropertiesEXT *>( this );
74062     }
74063 
operator VkPhysicalDeviceMultiDrawPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT74064     operator VkPhysicalDeviceMultiDrawPropertiesEXT &() VULKAN_HPP_NOEXCEPT
74065     {
74066       return *reinterpret_cast<VkPhysicalDeviceMultiDrawPropertiesEXT *>( this );
74067     }
74068 
74069 #if defined( VULKAN_HPP_USE_REFLECT )
74070 #  if 14 <= VULKAN_HPP_CPP_VERSION
74071     auto
74072 #  else
74073     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
74074 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT74075       reflect() const VULKAN_HPP_NOEXCEPT
74076     {
74077       return std::tie( sType, pNext, maxMultiDrawCount );
74078     }
74079 #endif
74080 
74081 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74082     auto operator<=>( PhysicalDeviceMultiDrawPropertiesEXT const & ) const = default;
74083 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT74084     bool operator==( PhysicalDeviceMultiDrawPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
74085     {
74086 #  if defined( VULKAN_HPP_USE_REFLECT )
74087       return this->reflect() == rhs.reflect();
74088 #  else
74089       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxMultiDrawCount == rhs.maxMultiDrawCount );
74090 #  endif
74091     }
74092 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT74093     bool operator!=( PhysicalDeviceMultiDrawPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
74094     {
74095       return !operator==( rhs );
74096     }
74097 #endif
74098 
74099   public:
74100     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceMultiDrawPropertiesEXT;
74101     void *                              pNext             = {};
74102     uint32_t                            maxMultiDrawCount = {};
74103   };
74104 
74105   template <>
74106   struct CppType<StructureType, StructureType::ePhysicalDeviceMultiDrawPropertiesEXT>
74107   {
74108     using Type = PhysicalDeviceMultiDrawPropertiesEXT;
74109   };
74110 
74111   struct PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT
74112   {
74113     using NativeType = VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT;
74114 
74115     static const bool                                  allowDuplicate = false;
74116     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT;
74117 
74118 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT74119     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 multisampledRenderToSingleSampled_ = {},
74120                                                                                      void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
74121       : pNext{ pNext_ }
74122       , multisampledRenderToSingleSampled{ multisampledRenderToSingleSampled_ }
74123     {
74124     }
74125 
74126     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT( PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & rhs )
74127       VULKAN_HPP_NOEXCEPT = default;
74128 
PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT74129     PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT( VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
74130       : PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT(
74131           *reinterpret_cast<PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const *>( &rhs ) )
74132     {
74133     }
74134 
74135     PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT &
74136       operator=( PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74137 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74138 
74139     PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT74140       operator=( VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
74141     {
74142       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const *>( &rhs );
74143       return *this;
74144     }
74145 
74146 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT74147     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
74148     {
74149       pNext = pNext_;
74150       return *this;
74151     }
74152 
74153     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT &
setMultisampledRenderToSingleSampledVULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT74154       setMultisampledRenderToSingleSampled( VULKAN_HPP_NAMESPACE::Bool32 multisampledRenderToSingleSampled_ ) VULKAN_HPP_NOEXCEPT
74155     {
74156       multisampledRenderToSingleSampled = multisampledRenderToSingleSampled_;
74157       return *this;
74158     }
74159 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
74160 
operator VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT74161     operator VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
74162     {
74163       return *reinterpret_cast<const VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT *>( this );
74164     }
74165 
operator VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT74166     operator VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT &() VULKAN_HPP_NOEXCEPT
74167     {
74168       return *reinterpret_cast<VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT *>( this );
74169     }
74170 
74171 #if defined( VULKAN_HPP_USE_REFLECT )
74172 #  if 14 <= VULKAN_HPP_CPP_VERSION
74173     auto
74174 #  else
74175     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
74176 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT74177       reflect() const VULKAN_HPP_NOEXCEPT
74178     {
74179       return std::tie( sType, pNext, multisampledRenderToSingleSampled );
74180     }
74181 #endif
74182 
74183 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74184     auto operator<=>( PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & ) const = default;
74185 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT74186     bool operator==( PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
74187     {
74188 #  if defined( VULKAN_HPP_USE_REFLECT )
74189       return this->reflect() == rhs.reflect();
74190 #  else
74191       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( multisampledRenderToSingleSampled == rhs.multisampledRenderToSingleSampled );
74192 #  endif
74193     }
74194 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT74195     bool operator!=( PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
74196     {
74197       return !operator==( rhs );
74198     }
74199 #endif
74200 
74201   public:
74202     VULKAN_HPP_NAMESPACE::StructureType sType                             = StructureType::ePhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT;
74203     void *                              pNext                             = {};
74204     VULKAN_HPP_NAMESPACE::Bool32        multisampledRenderToSingleSampled = {};
74205   };
74206 
74207   template <>
74208   struct CppType<StructureType, StructureType::ePhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT>
74209   {
74210     using Type = PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT;
74211   };
74212 
74213   struct PhysicalDeviceMultiviewFeatures
74214   {
74215     using NativeType = VkPhysicalDeviceMultiviewFeatures;
74216 
74217     static const bool                                  allowDuplicate = false;
74218     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMultiviewFeatures;
74219 
74220 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMultiviewFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures74221     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewFeatures( VULKAN_HPP_NAMESPACE::Bool32 multiview_                   = {},
74222                                                           VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_     = {},
74223                                                           VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_ = {},
74224                                                           void *                       pNext_                       = nullptr ) VULKAN_HPP_NOEXCEPT
74225       : pNext{ pNext_ }
74226       , multiview{ multiview_ }
74227       , multiviewGeometryShader{ multiviewGeometryShader_ }
74228       , multiviewTessellationShader{ multiviewTessellationShader_ }
74229     {
74230     }
74231 
74232     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewFeatures( PhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74233 
PhysicalDeviceMultiviewFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures74234     PhysicalDeviceMultiviewFeatures( VkPhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
74235       : PhysicalDeviceMultiviewFeatures( *reinterpret_cast<PhysicalDeviceMultiviewFeatures const *>( &rhs ) )
74236     {
74237     }
74238 
74239     PhysicalDeviceMultiviewFeatures & operator=( PhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74240 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74241 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures74242     PhysicalDeviceMultiviewFeatures & operator=( VkPhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
74243     {
74244       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures const *>( &rhs );
74245       return *this;
74246     }
74247 
74248 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures74249     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
74250     {
74251       pNext = pNext_;
74252       return *this;
74253     }
74254 
setMultiviewVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures74255     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures & setMultiview( VULKAN_HPP_NAMESPACE::Bool32 multiview_ ) VULKAN_HPP_NOEXCEPT
74256     {
74257       multiview = multiview_;
74258       return *this;
74259     }
74260 
74261     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures &
setMultiviewGeometryShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures74262       setMultiviewGeometryShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_ ) VULKAN_HPP_NOEXCEPT
74263     {
74264       multiviewGeometryShader = multiviewGeometryShader_;
74265       return *this;
74266     }
74267 
74268     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures &
setMultiviewTessellationShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures74269       setMultiviewTessellationShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_ ) VULKAN_HPP_NOEXCEPT
74270     {
74271       multiviewTessellationShader = multiviewTessellationShader_;
74272       return *this;
74273     }
74274 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
74275 
operator VkPhysicalDeviceMultiviewFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures74276     operator VkPhysicalDeviceMultiviewFeatures const &() const VULKAN_HPP_NOEXCEPT
74277     {
74278       return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeatures *>( this );
74279     }
74280 
operator VkPhysicalDeviceMultiviewFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures74281     operator VkPhysicalDeviceMultiviewFeatures &() VULKAN_HPP_NOEXCEPT
74282     {
74283       return *reinterpret_cast<VkPhysicalDeviceMultiviewFeatures *>( this );
74284     }
74285 
74286 #if defined( VULKAN_HPP_USE_REFLECT )
74287 #  if 14 <= VULKAN_HPP_CPP_VERSION
74288     auto
74289 #  else
74290     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
74291                void * const &,
74292                VULKAN_HPP_NAMESPACE::Bool32 const &,
74293                VULKAN_HPP_NAMESPACE::Bool32 const &,
74294                VULKAN_HPP_NAMESPACE::Bool32 const &>
74295 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures74296       reflect() const VULKAN_HPP_NOEXCEPT
74297     {
74298       return std::tie( sType, pNext, multiview, multiviewGeometryShader, multiviewTessellationShader );
74299     }
74300 #endif
74301 
74302 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74303     auto operator<=>( PhysicalDeviceMultiviewFeatures const & ) const = default;
74304 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures74305     bool operator==( PhysicalDeviceMultiviewFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
74306     {
74307 #  if defined( VULKAN_HPP_USE_REFLECT )
74308       return this->reflect() == rhs.reflect();
74309 #  else
74310       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( multiview == rhs.multiview ) && ( multiviewGeometryShader == rhs.multiviewGeometryShader ) &&
74311              ( multiviewTessellationShader == rhs.multiviewTessellationShader );
74312 #  endif
74313     }
74314 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures74315     bool operator!=( PhysicalDeviceMultiviewFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
74316     {
74317       return !operator==( rhs );
74318     }
74319 #endif
74320 
74321   public:
74322     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceMultiviewFeatures;
74323     void *                              pNext                       = {};
74324     VULKAN_HPP_NAMESPACE::Bool32        multiview                   = {};
74325     VULKAN_HPP_NAMESPACE::Bool32        multiviewGeometryShader     = {};
74326     VULKAN_HPP_NAMESPACE::Bool32        multiviewTessellationShader = {};
74327   };
74328 
74329   template <>
74330   struct CppType<StructureType, StructureType::ePhysicalDeviceMultiviewFeatures>
74331   {
74332     using Type = PhysicalDeviceMultiviewFeatures;
74333   };
74334 
74335   using PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures;
74336 
74337   struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
74338   {
74339     using NativeType = VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
74340 
74341     static const bool                                  allowDuplicate = false;
74342     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
74343 
74344 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX74345     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( VULKAN_HPP_NAMESPACE::Bool32 perViewPositionAllComponents_ = {},
74346                                                                                 void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
74347       : pNext{ pNext_ }
74348       , perViewPositionAllComponents{ perViewPositionAllComponents_ }
74349     {
74350     }
74351 
74352     VULKAN_HPP_CONSTEXPR
74353       PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74354 
PhysicalDeviceMultiviewPerViewAttributesPropertiesNVXVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX74355     PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT
74356       : PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( *reinterpret_cast<PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const *>( &rhs ) )
74357     {
74358     }
74359 
74360     PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX &
74361       operator=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74362 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74363 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX74364     PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX & operator=( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT
74365     {
74366       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const *>( &rhs );
74367       return *this;
74368     }
74369 
operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX74370     operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const &() const VULKAN_HPP_NOEXCEPT
74371     {
74372       return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX *>( this );
74373     }
74374 
operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX74375     operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX &() VULKAN_HPP_NOEXCEPT
74376     {
74377       return *reinterpret_cast<VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX *>( this );
74378     }
74379 
74380 #if defined( VULKAN_HPP_USE_REFLECT )
74381 #  if 14 <= VULKAN_HPP_CPP_VERSION
74382     auto
74383 #  else
74384     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
74385 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX74386       reflect() const VULKAN_HPP_NOEXCEPT
74387     {
74388       return std::tie( sType, pNext, perViewPositionAllComponents );
74389     }
74390 #endif
74391 
74392 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74393     auto operator<=>( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & ) const = default;
74394 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX74395     bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
74396     {
74397 #  if defined( VULKAN_HPP_USE_REFLECT )
74398       return this->reflect() == rhs.reflect();
74399 #  else
74400       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents );
74401 #  endif
74402     }
74403 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX74404     bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) const VULKAN_HPP_NOEXCEPT
74405     {
74406       return !operator==( rhs );
74407     }
74408 #endif
74409 
74410   public:
74411     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
74412     void *                              pNext                        = {};
74413     VULKAN_HPP_NAMESPACE::Bool32        perViewPositionAllComponents = {};
74414   };
74415 
74416   template <>
74417   struct CppType<StructureType, StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>
74418   {
74419     using Type = PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
74420   };
74421 
74422   struct PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
74423   {
74424     using NativeType = VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM;
74425 
74426     static const bool                                  allowDuplicate = false;
74427     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM;
74428 
74429 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM74430     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM( VULKAN_HPP_NAMESPACE::Bool32 multiviewPerViewRenderAreas_ = {},
74431                                                                                 void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
74432       : pNext{ pNext_ }
74433       , multiviewPerViewRenderAreas{ multiviewPerViewRenderAreas_ }
74434     {
74435     }
74436 
74437     VULKAN_HPP_CONSTEXPR
74438       PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM( PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74439 
PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM74440     PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM( VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
74441       : PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM( *reinterpret_cast<PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const *>( &rhs ) )
74442     {
74443     }
74444 
74445     PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM &
74446       operator=( PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74447 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74448 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM74449     PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM & operator=( VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
74450     {
74451       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const *>( &rhs );
74452       return *this;
74453     }
74454 
74455 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM74456     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
74457     {
74458       pNext = pNext_;
74459       return *this;
74460     }
74461 
74462     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM &
setMultiviewPerViewRenderAreasVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM74463       setMultiviewPerViewRenderAreas( VULKAN_HPP_NAMESPACE::Bool32 multiviewPerViewRenderAreas_ ) VULKAN_HPP_NOEXCEPT
74464     {
74465       multiviewPerViewRenderAreas = multiviewPerViewRenderAreas_;
74466       return *this;
74467     }
74468 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
74469 
operator VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM74470     operator VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT
74471     {
74472       return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM *>( this );
74473     }
74474 
operator VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM74475     operator VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM &() VULKAN_HPP_NOEXCEPT
74476     {
74477       return *reinterpret_cast<VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM *>( this );
74478     }
74479 
74480 #if defined( VULKAN_HPP_USE_REFLECT )
74481 #  if 14 <= VULKAN_HPP_CPP_VERSION
74482     auto
74483 #  else
74484     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
74485 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM74486       reflect() const VULKAN_HPP_NOEXCEPT
74487     {
74488       return std::tie( sType, pNext, multiviewPerViewRenderAreas );
74489     }
74490 #endif
74491 
74492 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74493     auto operator<=>( PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & ) const = default;
74494 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM74495     bool operator==( PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
74496     {
74497 #  if defined( VULKAN_HPP_USE_REFLECT )
74498       return this->reflect() == rhs.reflect();
74499 #  else
74500       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( multiviewPerViewRenderAreas == rhs.multiviewPerViewRenderAreas );
74501 #  endif
74502     }
74503 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM74504     bool operator!=( PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
74505     {
74506       return !operator==( rhs );
74507     }
74508 #endif
74509 
74510   public:
74511     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM;
74512     void *                              pNext                       = {};
74513     VULKAN_HPP_NAMESPACE::Bool32        multiviewPerViewRenderAreas = {};
74514   };
74515 
74516   template <>
74517   struct CppType<StructureType, StructureType::ePhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM>
74518   {
74519     using Type = PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM;
74520   };
74521 
74522   struct PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM
74523   {
74524     using NativeType = VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM;
74525 
74526     static const bool                                  allowDuplicate = false;
74527     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM;
74528 
74529 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM74530     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM( VULKAN_HPP_NAMESPACE::Bool32 multiviewPerViewViewports_ = {},
74531                                                                               void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
74532       : pNext{ pNext_ }
74533       , multiviewPerViewViewports{ multiviewPerViewViewports_ }
74534     {
74535     }
74536 
74537     VULKAN_HPP_CONSTEXPR
74538       PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM( PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74539 
PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM74540     PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM( VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
74541       : PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM( *reinterpret_cast<PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const *>( &rhs ) )
74542     {
74543     }
74544 
74545     PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM &
74546       operator=( PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74547 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74548 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM74549     PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM & operator=( VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
74550     {
74551       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const *>( &rhs );
74552       return *this;
74553     }
74554 
74555 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM74556     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
74557     {
74558       pNext = pNext_;
74559       return *this;
74560     }
74561 
74562     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM &
setMultiviewPerViewViewportsVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM74563       setMultiviewPerViewViewports( VULKAN_HPP_NAMESPACE::Bool32 multiviewPerViewViewports_ ) VULKAN_HPP_NOEXCEPT
74564     {
74565       multiviewPerViewViewports = multiviewPerViewViewports_;
74566       return *this;
74567     }
74568 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
74569 
operator VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM74570     operator VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT
74571     {
74572       return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM *>( this );
74573     }
74574 
operator VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM74575     operator VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM &() VULKAN_HPP_NOEXCEPT
74576     {
74577       return *reinterpret_cast<VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM *>( this );
74578     }
74579 
74580 #if defined( VULKAN_HPP_USE_REFLECT )
74581 #  if 14 <= VULKAN_HPP_CPP_VERSION
74582     auto
74583 #  else
74584     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
74585 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM74586       reflect() const VULKAN_HPP_NOEXCEPT
74587     {
74588       return std::tie( sType, pNext, multiviewPerViewViewports );
74589     }
74590 #endif
74591 
74592 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74593     auto operator<=>( PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & ) const = default;
74594 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM74595     bool operator==( PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
74596     {
74597 #  if defined( VULKAN_HPP_USE_REFLECT )
74598       return this->reflect() == rhs.reflect();
74599 #  else
74600       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( multiviewPerViewViewports == rhs.multiviewPerViewViewports );
74601 #  endif
74602     }
74603 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM74604     bool operator!=( PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
74605     {
74606       return !operator==( rhs );
74607     }
74608 #endif
74609 
74610   public:
74611     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::ePhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM;
74612     void *                              pNext                     = {};
74613     VULKAN_HPP_NAMESPACE::Bool32        multiviewPerViewViewports = {};
74614   };
74615 
74616   template <>
74617   struct CppType<StructureType, StructureType::ePhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM>
74618   {
74619     using Type = PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM;
74620   };
74621 
74622   struct PhysicalDeviceMultiviewProperties
74623   {
74624     using NativeType = VkPhysicalDeviceMultiviewProperties;
74625 
74626     static const bool                                  allowDuplicate = false;
74627     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMultiviewProperties;
74628 
74629 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMultiviewPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties74630     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewProperties( uint32_t maxMultiviewViewCount_     = {},
74631                                                             uint32_t maxMultiviewInstanceIndex_ = {},
74632                                                             void *   pNext_                     = nullptr ) VULKAN_HPP_NOEXCEPT
74633       : pNext{ pNext_ }
74634       , maxMultiviewViewCount{ maxMultiviewViewCount_ }
74635       , maxMultiviewInstanceIndex{ maxMultiviewInstanceIndex_ }
74636     {
74637     }
74638 
74639     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewProperties( PhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74640 
PhysicalDeviceMultiviewPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties74641     PhysicalDeviceMultiviewProperties( VkPhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT
74642       : PhysicalDeviceMultiviewProperties( *reinterpret_cast<PhysicalDeviceMultiviewProperties const *>( &rhs ) )
74643     {
74644     }
74645 
74646     PhysicalDeviceMultiviewProperties & operator=( PhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74647 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74648 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties74649     PhysicalDeviceMultiviewProperties & operator=( VkPhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT
74650     {
74651       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties const *>( &rhs );
74652       return *this;
74653     }
74654 
operator VkPhysicalDeviceMultiviewProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties74655     operator VkPhysicalDeviceMultiviewProperties const &() const VULKAN_HPP_NOEXCEPT
74656     {
74657       return *reinterpret_cast<const VkPhysicalDeviceMultiviewProperties *>( this );
74658     }
74659 
operator VkPhysicalDeviceMultiviewProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties74660     operator VkPhysicalDeviceMultiviewProperties &() VULKAN_HPP_NOEXCEPT
74661     {
74662       return *reinterpret_cast<VkPhysicalDeviceMultiviewProperties *>( this );
74663     }
74664 
74665 #if defined( VULKAN_HPP_USE_REFLECT )
74666 #  if 14 <= VULKAN_HPP_CPP_VERSION
74667     auto
74668 #  else
74669     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &>
74670 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties74671       reflect() const VULKAN_HPP_NOEXCEPT
74672     {
74673       return std::tie( sType, pNext, maxMultiviewViewCount, maxMultiviewInstanceIndex );
74674     }
74675 #endif
74676 
74677 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74678     auto operator<=>( PhysicalDeviceMultiviewProperties const & ) const = default;
74679 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties74680     bool operator==( PhysicalDeviceMultiviewProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
74681     {
74682 #  if defined( VULKAN_HPP_USE_REFLECT )
74683       return this->reflect() == rhs.reflect();
74684 #  else
74685       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount ) &&
74686              ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex );
74687 #  endif
74688     }
74689 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties74690     bool operator!=( PhysicalDeviceMultiviewProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
74691     {
74692       return !operator==( rhs );
74693     }
74694 #endif
74695 
74696   public:
74697     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::ePhysicalDeviceMultiviewProperties;
74698     void *                              pNext                     = {};
74699     uint32_t                            maxMultiviewViewCount     = {};
74700     uint32_t                            maxMultiviewInstanceIndex = {};
74701   };
74702 
74703   template <>
74704   struct CppType<StructureType, StructureType::ePhysicalDeviceMultiviewProperties>
74705   {
74706     using Type = PhysicalDeviceMultiviewProperties;
74707   };
74708 
74709   using PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties;
74710 
74711   struct PhysicalDeviceMutableDescriptorTypeFeaturesEXT
74712   {
74713     using NativeType = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT;
74714 
74715     static const bool                                  allowDuplicate = false;
74716     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceMutableDescriptorTypeFeaturesEXT;
74717 
74718 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMutableDescriptorTypeFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT74719     VULKAN_HPP_CONSTEXPR PhysicalDeviceMutableDescriptorTypeFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 mutableDescriptorType_ = {},
74720                                                                          void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
74721       : pNext{ pNext_ }
74722       , mutableDescriptorType{ mutableDescriptorType_ }
74723     {
74724     }
74725 
74726     VULKAN_HPP_CONSTEXPR
74727       PhysicalDeviceMutableDescriptorTypeFeaturesEXT( PhysicalDeviceMutableDescriptorTypeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74728 
PhysicalDeviceMutableDescriptorTypeFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT74729     PhysicalDeviceMutableDescriptorTypeFeaturesEXT( VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
74730       : PhysicalDeviceMutableDescriptorTypeFeaturesEXT( *reinterpret_cast<PhysicalDeviceMutableDescriptorTypeFeaturesEXT const *>( &rhs ) )
74731     {
74732     }
74733 
74734     PhysicalDeviceMutableDescriptorTypeFeaturesEXT & operator=( PhysicalDeviceMutableDescriptorTypeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74735 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74736 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT74737     PhysicalDeviceMutableDescriptorTypeFeaturesEXT & operator=( VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
74738     {
74739       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT const *>( &rhs );
74740       return *this;
74741     }
74742 
74743 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT74744     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMutableDescriptorTypeFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
74745     {
74746       pNext = pNext_;
74747       return *this;
74748     }
74749 
74750     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMutableDescriptorTypeFeaturesEXT &
setMutableDescriptorTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT74751       setMutableDescriptorType( VULKAN_HPP_NAMESPACE::Bool32 mutableDescriptorType_ ) VULKAN_HPP_NOEXCEPT
74752     {
74753       mutableDescriptorType = mutableDescriptorType_;
74754       return *this;
74755     }
74756 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
74757 
operator VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT74758     operator VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
74759     {
74760       return *reinterpret_cast<const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *>( this );
74761     }
74762 
operator VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT74763     operator VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT &() VULKAN_HPP_NOEXCEPT
74764     {
74765       return *reinterpret_cast<VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *>( this );
74766     }
74767 
74768 #if defined( VULKAN_HPP_USE_REFLECT )
74769 #  if 14 <= VULKAN_HPP_CPP_VERSION
74770     auto
74771 #  else
74772     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
74773 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT74774       reflect() const VULKAN_HPP_NOEXCEPT
74775     {
74776       return std::tie( sType, pNext, mutableDescriptorType );
74777     }
74778 #endif
74779 
74780 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74781     auto operator<=>( PhysicalDeviceMutableDescriptorTypeFeaturesEXT const & ) const = default;
74782 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT74783     bool operator==( PhysicalDeviceMutableDescriptorTypeFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
74784     {
74785 #  if defined( VULKAN_HPP_USE_REFLECT )
74786       return this->reflect() == rhs.reflect();
74787 #  else
74788       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mutableDescriptorType == rhs.mutableDescriptorType );
74789 #  endif
74790     }
74791 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT74792     bool operator!=( PhysicalDeviceMutableDescriptorTypeFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
74793     {
74794       return !operator==( rhs );
74795     }
74796 #endif
74797 
74798   public:
74799     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceMutableDescriptorTypeFeaturesEXT;
74800     void *                              pNext                 = {};
74801     VULKAN_HPP_NAMESPACE::Bool32        mutableDescriptorType = {};
74802   };
74803 
74804   template <>
74805   struct CppType<StructureType, StructureType::ePhysicalDeviceMutableDescriptorTypeFeaturesEXT>
74806   {
74807     using Type = PhysicalDeviceMutableDescriptorTypeFeaturesEXT;
74808   };
74809 
74810   using PhysicalDeviceMutableDescriptorTypeFeaturesVALVE = PhysicalDeviceMutableDescriptorTypeFeaturesEXT;
74811 
74812   struct PhysicalDeviceNestedCommandBufferFeaturesEXT
74813   {
74814     using NativeType = VkPhysicalDeviceNestedCommandBufferFeaturesEXT;
74815 
74816     static const bool                                  allowDuplicate = false;
74817     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceNestedCommandBufferFeaturesEXT;
74818 
74819 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceNestedCommandBufferFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT74820     VULKAN_HPP_CONSTEXPR PhysicalDeviceNestedCommandBufferFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 nestedCommandBuffer_                = {},
74821                                                                        VULKAN_HPP_NAMESPACE::Bool32 nestedCommandBufferRendering_       = {},
74822                                                                        VULKAN_HPP_NAMESPACE::Bool32 nestedCommandBufferSimultaneousUse_ = {},
74823                                                                        void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
74824       : pNext{ pNext_ }
74825       , nestedCommandBuffer{ nestedCommandBuffer_ }
74826       , nestedCommandBufferRendering{ nestedCommandBufferRendering_ }
74827       , nestedCommandBufferSimultaneousUse{ nestedCommandBufferSimultaneousUse_ }
74828     {
74829     }
74830 
74831     VULKAN_HPP_CONSTEXPR PhysicalDeviceNestedCommandBufferFeaturesEXT( PhysicalDeviceNestedCommandBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74832 
PhysicalDeviceNestedCommandBufferFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT74833     PhysicalDeviceNestedCommandBufferFeaturesEXT( VkPhysicalDeviceNestedCommandBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
74834       : PhysicalDeviceNestedCommandBufferFeaturesEXT( *reinterpret_cast<PhysicalDeviceNestedCommandBufferFeaturesEXT const *>( &rhs ) )
74835     {
74836     }
74837 
74838     PhysicalDeviceNestedCommandBufferFeaturesEXT & operator=( PhysicalDeviceNestedCommandBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74839 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74840 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT74841     PhysicalDeviceNestedCommandBufferFeaturesEXT & operator=( VkPhysicalDeviceNestedCommandBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
74842     {
74843       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT const *>( &rhs );
74844       return *this;
74845     }
74846 
74847 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT74848     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNestedCommandBufferFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
74849     {
74850       pNext = pNext_;
74851       return *this;
74852     }
74853 
74854     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNestedCommandBufferFeaturesEXT &
setNestedCommandBufferVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT74855       setNestedCommandBuffer( VULKAN_HPP_NAMESPACE::Bool32 nestedCommandBuffer_ ) VULKAN_HPP_NOEXCEPT
74856     {
74857       nestedCommandBuffer = nestedCommandBuffer_;
74858       return *this;
74859     }
74860 
74861     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNestedCommandBufferFeaturesEXT &
setNestedCommandBufferRenderingVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT74862       setNestedCommandBufferRendering( VULKAN_HPP_NAMESPACE::Bool32 nestedCommandBufferRendering_ ) VULKAN_HPP_NOEXCEPT
74863     {
74864       nestedCommandBufferRendering = nestedCommandBufferRendering_;
74865       return *this;
74866     }
74867 
74868     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNestedCommandBufferFeaturesEXT &
setNestedCommandBufferSimultaneousUseVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT74869       setNestedCommandBufferSimultaneousUse( VULKAN_HPP_NAMESPACE::Bool32 nestedCommandBufferSimultaneousUse_ ) VULKAN_HPP_NOEXCEPT
74870     {
74871       nestedCommandBufferSimultaneousUse = nestedCommandBufferSimultaneousUse_;
74872       return *this;
74873     }
74874 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
74875 
operator VkPhysicalDeviceNestedCommandBufferFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT74876     operator VkPhysicalDeviceNestedCommandBufferFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
74877     {
74878       return *reinterpret_cast<const VkPhysicalDeviceNestedCommandBufferFeaturesEXT *>( this );
74879     }
74880 
operator VkPhysicalDeviceNestedCommandBufferFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT74881     operator VkPhysicalDeviceNestedCommandBufferFeaturesEXT &() VULKAN_HPP_NOEXCEPT
74882     {
74883       return *reinterpret_cast<VkPhysicalDeviceNestedCommandBufferFeaturesEXT *>( this );
74884     }
74885 
74886 #if defined( VULKAN_HPP_USE_REFLECT )
74887 #  if 14 <= VULKAN_HPP_CPP_VERSION
74888     auto
74889 #  else
74890     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
74891                void * const &,
74892                VULKAN_HPP_NAMESPACE::Bool32 const &,
74893                VULKAN_HPP_NAMESPACE::Bool32 const &,
74894                VULKAN_HPP_NAMESPACE::Bool32 const &>
74895 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT74896       reflect() const VULKAN_HPP_NOEXCEPT
74897     {
74898       return std::tie( sType, pNext, nestedCommandBuffer, nestedCommandBufferRendering, nestedCommandBufferSimultaneousUse );
74899     }
74900 #endif
74901 
74902 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
74903     auto operator<=>( PhysicalDeviceNestedCommandBufferFeaturesEXT const & ) const = default;
74904 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT74905     bool operator==( PhysicalDeviceNestedCommandBufferFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
74906     {
74907 #  if defined( VULKAN_HPP_USE_REFLECT )
74908       return this->reflect() == rhs.reflect();
74909 #  else
74910       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( nestedCommandBuffer == rhs.nestedCommandBuffer ) &&
74911              ( nestedCommandBufferRendering == rhs.nestedCommandBufferRendering ) &&
74912              ( nestedCommandBufferSimultaneousUse == rhs.nestedCommandBufferSimultaneousUse );
74913 #  endif
74914     }
74915 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT74916     bool operator!=( PhysicalDeviceNestedCommandBufferFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
74917     {
74918       return !operator==( rhs );
74919     }
74920 #endif
74921 
74922   public:
74923     VULKAN_HPP_NAMESPACE::StructureType sType                              = StructureType::ePhysicalDeviceNestedCommandBufferFeaturesEXT;
74924     void *                              pNext                              = {};
74925     VULKAN_HPP_NAMESPACE::Bool32        nestedCommandBuffer                = {};
74926     VULKAN_HPP_NAMESPACE::Bool32        nestedCommandBufferRendering       = {};
74927     VULKAN_HPP_NAMESPACE::Bool32        nestedCommandBufferSimultaneousUse = {};
74928   };
74929 
74930   template <>
74931   struct CppType<StructureType, StructureType::ePhysicalDeviceNestedCommandBufferFeaturesEXT>
74932   {
74933     using Type = PhysicalDeviceNestedCommandBufferFeaturesEXT;
74934   };
74935 
74936   struct PhysicalDeviceNestedCommandBufferPropertiesEXT
74937   {
74938     using NativeType = VkPhysicalDeviceNestedCommandBufferPropertiesEXT;
74939 
74940     static const bool                                  allowDuplicate = false;
74941     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceNestedCommandBufferPropertiesEXT;
74942 
74943 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceNestedCommandBufferPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT74944     VULKAN_HPP_CONSTEXPR PhysicalDeviceNestedCommandBufferPropertiesEXT( uint32_t maxCommandBufferNestingLevel_ = {},
74945                                                                          void *   pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
74946       : pNext{ pNext_ }
74947       , maxCommandBufferNestingLevel{ maxCommandBufferNestingLevel_ }
74948     {
74949     }
74950 
74951     VULKAN_HPP_CONSTEXPR
74952       PhysicalDeviceNestedCommandBufferPropertiesEXT( PhysicalDeviceNestedCommandBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74953 
PhysicalDeviceNestedCommandBufferPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT74954     PhysicalDeviceNestedCommandBufferPropertiesEXT( VkPhysicalDeviceNestedCommandBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
74955       : PhysicalDeviceNestedCommandBufferPropertiesEXT( *reinterpret_cast<PhysicalDeviceNestedCommandBufferPropertiesEXT const *>( &rhs ) )
74956     {
74957     }
74958 
74959     PhysicalDeviceNestedCommandBufferPropertiesEXT & operator=( PhysicalDeviceNestedCommandBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
74960 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
74961 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT74962     PhysicalDeviceNestedCommandBufferPropertiesEXT & operator=( VkPhysicalDeviceNestedCommandBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
74963     {
74964       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT const *>( &rhs );
74965       return *this;
74966     }
74967 
74968 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT74969     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNestedCommandBufferPropertiesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
74970     {
74971       pNext = pNext_;
74972       return *this;
74973     }
74974 
74975     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNestedCommandBufferPropertiesEXT &
setMaxCommandBufferNestingLevelVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT74976       setMaxCommandBufferNestingLevel( uint32_t maxCommandBufferNestingLevel_ ) VULKAN_HPP_NOEXCEPT
74977     {
74978       maxCommandBufferNestingLevel = maxCommandBufferNestingLevel_;
74979       return *this;
74980     }
74981 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
74982 
operator VkPhysicalDeviceNestedCommandBufferPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT74983     operator VkPhysicalDeviceNestedCommandBufferPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
74984     {
74985       return *reinterpret_cast<const VkPhysicalDeviceNestedCommandBufferPropertiesEXT *>( this );
74986     }
74987 
operator VkPhysicalDeviceNestedCommandBufferPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT74988     operator VkPhysicalDeviceNestedCommandBufferPropertiesEXT &() VULKAN_HPP_NOEXCEPT
74989     {
74990       return *reinterpret_cast<VkPhysicalDeviceNestedCommandBufferPropertiesEXT *>( this );
74991     }
74992 
74993 #if defined( VULKAN_HPP_USE_REFLECT )
74994 #  if 14 <= VULKAN_HPP_CPP_VERSION
74995     auto
74996 #  else
74997     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
74998 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT74999       reflect() const VULKAN_HPP_NOEXCEPT
75000     {
75001       return std::tie( sType, pNext, maxCommandBufferNestingLevel );
75002     }
75003 #endif
75004 
75005 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75006     auto operator<=>( PhysicalDeviceNestedCommandBufferPropertiesEXT const & ) const = default;
75007 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT75008     bool operator==( PhysicalDeviceNestedCommandBufferPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
75009     {
75010 #  if defined( VULKAN_HPP_USE_REFLECT )
75011       return this->reflect() == rhs.reflect();
75012 #  else
75013       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxCommandBufferNestingLevel == rhs.maxCommandBufferNestingLevel );
75014 #  endif
75015     }
75016 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT75017     bool operator!=( PhysicalDeviceNestedCommandBufferPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
75018     {
75019       return !operator==( rhs );
75020     }
75021 #endif
75022 
75023   public:
75024     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDeviceNestedCommandBufferPropertiesEXT;
75025     void *                              pNext                        = {};
75026     uint32_t                            maxCommandBufferNestingLevel = {};
75027   };
75028 
75029   template <>
75030   struct CppType<StructureType, StructureType::ePhysicalDeviceNestedCommandBufferPropertiesEXT>
75031   {
75032     using Type = PhysicalDeviceNestedCommandBufferPropertiesEXT;
75033   };
75034 
75035   struct PhysicalDeviceNonSeamlessCubeMapFeaturesEXT
75036   {
75037     using NativeType = VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT;
75038 
75039     static const bool                                  allowDuplicate = false;
75040     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceNonSeamlessCubeMapFeaturesEXT;
75041 
75042 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceNonSeamlessCubeMapFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT75043     VULKAN_HPP_CONSTEXPR PhysicalDeviceNonSeamlessCubeMapFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 nonSeamlessCubeMap_ = {},
75044                                                                       void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
75045       : pNext{ pNext_ }
75046       , nonSeamlessCubeMap{ nonSeamlessCubeMap_ }
75047     {
75048     }
75049 
75050     VULKAN_HPP_CONSTEXPR PhysicalDeviceNonSeamlessCubeMapFeaturesEXT( PhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75051 
PhysicalDeviceNonSeamlessCubeMapFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT75052     PhysicalDeviceNonSeamlessCubeMapFeaturesEXT( VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
75053       : PhysicalDeviceNonSeamlessCubeMapFeaturesEXT( *reinterpret_cast<PhysicalDeviceNonSeamlessCubeMapFeaturesEXT const *>( &rhs ) )
75054     {
75055     }
75056 
75057     PhysicalDeviceNonSeamlessCubeMapFeaturesEXT & operator=( PhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75058 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75059 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT75060     PhysicalDeviceNonSeamlessCubeMapFeaturesEXT & operator=( VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
75061     {
75062       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT const *>( &rhs );
75063       return *this;
75064     }
75065 
75066 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT75067     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNonSeamlessCubeMapFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
75068     {
75069       pNext = pNext_;
75070       return *this;
75071     }
75072 
75073     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNonSeamlessCubeMapFeaturesEXT &
setNonSeamlessCubeMapVULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT75074       setNonSeamlessCubeMap( VULKAN_HPP_NAMESPACE::Bool32 nonSeamlessCubeMap_ ) VULKAN_HPP_NOEXCEPT
75075     {
75076       nonSeamlessCubeMap = nonSeamlessCubeMap_;
75077       return *this;
75078     }
75079 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
75080 
operator VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT75081     operator VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
75082     {
75083       return *reinterpret_cast<const VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT *>( this );
75084     }
75085 
operator VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT75086     operator VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT &() VULKAN_HPP_NOEXCEPT
75087     {
75088       return *reinterpret_cast<VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT *>( this );
75089     }
75090 
75091 #if defined( VULKAN_HPP_USE_REFLECT )
75092 #  if 14 <= VULKAN_HPP_CPP_VERSION
75093     auto
75094 #  else
75095     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
75096 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT75097       reflect() const VULKAN_HPP_NOEXCEPT
75098     {
75099       return std::tie( sType, pNext, nonSeamlessCubeMap );
75100     }
75101 #endif
75102 
75103 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75104     auto operator<=>( PhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & ) const = default;
75105 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT75106     bool operator==( PhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
75107     {
75108 #  if defined( VULKAN_HPP_USE_REFLECT )
75109       return this->reflect() == rhs.reflect();
75110 #  else
75111       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( nonSeamlessCubeMap == rhs.nonSeamlessCubeMap );
75112 #  endif
75113     }
75114 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT75115     bool operator!=( PhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
75116     {
75117       return !operator==( rhs );
75118     }
75119 #endif
75120 
75121   public:
75122     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceNonSeamlessCubeMapFeaturesEXT;
75123     void *                              pNext              = {};
75124     VULKAN_HPP_NAMESPACE::Bool32        nonSeamlessCubeMap = {};
75125   };
75126 
75127   template <>
75128   struct CppType<StructureType, StructureType::ePhysicalDeviceNonSeamlessCubeMapFeaturesEXT>
75129   {
75130     using Type = PhysicalDeviceNonSeamlessCubeMapFeaturesEXT;
75131   };
75132 
75133   struct PhysicalDeviceOpacityMicromapFeaturesEXT
75134   {
75135     using NativeType = VkPhysicalDeviceOpacityMicromapFeaturesEXT;
75136 
75137     static const bool                                  allowDuplicate = false;
75138     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceOpacityMicromapFeaturesEXT;
75139 
75140 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceOpacityMicromapFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT75141     VULKAN_HPP_CONSTEXPR PhysicalDeviceOpacityMicromapFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 micromap_              = {},
75142                                                                    VULKAN_HPP_NAMESPACE::Bool32 micromapCaptureReplay_ = {},
75143                                                                    VULKAN_HPP_NAMESPACE::Bool32 micromapHostCommands_  = {},
75144                                                                    void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
75145       : pNext{ pNext_ }
75146       , micromap{ micromap_ }
75147       , micromapCaptureReplay{ micromapCaptureReplay_ }
75148       , micromapHostCommands{ micromapHostCommands_ }
75149     {
75150     }
75151 
75152     VULKAN_HPP_CONSTEXPR PhysicalDeviceOpacityMicromapFeaturesEXT( PhysicalDeviceOpacityMicromapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75153 
PhysicalDeviceOpacityMicromapFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT75154     PhysicalDeviceOpacityMicromapFeaturesEXT( VkPhysicalDeviceOpacityMicromapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
75155       : PhysicalDeviceOpacityMicromapFeaturesEXT( *reinterpret_cast<PhysicalDeviceOpacityMicromapFeaturesEXT const *>( &rhs ) )
75156     {
75157     }
75158 
75159     PhysicalDeviceOpacityMicromapFeaturesEXT & operator=( PhysicalDeviceOpacityMicromapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75160 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75161 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT75162     PhysicalDeviceOpacityMicromapFeaturesEXT & operator=( VkPhysicalDeviceOpacityMicromapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
75163     {
75164       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT const *>( &rhs );
75165       return *this;
75166     }
75167 
75168 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT75169     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpacityMicromapFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
75170     {
75171       pNext = pNext_;
75172       return *this;
75173     }
75174 
setMicromapVULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT75175     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpacityMicromapFeaturesEXT & setMicromap( VULKAN_HPP_NAMESPACE::Bool32 micromap_ ) VULKAN_HPP_NOEXCEPT
75176     {
75177       micromap = micromap_;
75178       return *this;
75179     }
75180 
75181     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpacityMicromapFeaturesEXT &
setMicromapCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT75182       setMicromapCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 micromapCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
75183     {
75184       micromapCaptureReplay = micromapCaptureReplay_;
75185       return *this;
75186     }
75187 
75188     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpacityMicromapFeaturesEXT &
setMicromapHostCommandsVULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT75189       setMicromapHostCommands( VULKAN_HPP_NAMESPACE::Bool32 micromapHostCommands_ ) VULKAN_HPP_NOEXCEPT
75190     {
75191       micromapHostCommands = micromapHostCommands_;
75192       return *this;
75193     }
75194 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
75195 
operator VkPhysicalDeviceOpacityMicromapFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT75196     operator VkPhysicalDeviceOpacityMicromapFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
75197     {
75198       return *reinterpret_cast<const VkPhysicalDeviceOpacityMicromapFeaturesEXT *>( this );
75199     }
75200 
operator VkPhysicalDeviceOpacityMicromapFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT75201     operator VkPhysicalDeviceOpacityMicromapFeaturesEXT &() VULKAN_HPP_NOEXCEPT
75202     {
75203       return *reinterpret_cast<VkPhysicalDeviceOpacityMicromapFeaturesEXT *>( this );
75204     }
75205 
75206 #if defined( VULKAN_HPP_USE_REFLECT )
75207 #  if 14 <= VULKAN_HPP_CPP_VERSION
75208     auto
75209 #  else
75210     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
75211                void * const &,
75212                VULKAN_HPP_NAMESPACE::Bool32 const &,
75213                VULKAN_HPP_NAMESPACE::Bool32 const &,
75214                VULKAN_HPP_NAMESPACE::Bool32 const &>
75215 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT75216       reflect() const VULKAN_HPP_NOEXCEPT
75217     {
75218       return std::tie( sType, pNext, micromap, micromapCaptureReplay, micromapHostCommands );
75219     }
75220 #endif
75221 
75222 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75223     auto operator<=>( PhysicalDeviceOpacityMicromapFeaturesEXT const & ) const = default;
75224 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT75225     bool operator==( PhysicalDeviceOpacityMicromapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
75226     {
75227 #  if defined( VULKAN_HPP_USE_REFLECT )
75228       return this->reflect() == rhs.reflect();
75229 #  else
75230       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( micromap == rhs.micromap ) && ( micromapCaptureReplay == rhs.micromapCaptureReplay ) &&
75231              ( micromapHostCommands == rhs.micromapHostCommands );
75232 #  endif
75233     }
75234 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT75235     bool operator!=( PhysicalDeviceOpacityMicromapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
75236     {
75237       return !operator==( rhs );
75238     }
75239 #endif
75240 
75241   public:
75242     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceOpacityMicromapFeaturesEXT;
75243     void *                              pNext                 = {};
75244     VULKAN_HPP_NAMESPACE::Bool32        micromap              = {};
75245     VULKAN_HPP_NAMESPACE::Bool32        micromapCaptureReplay = {};
75246     VULKAN_HPP_NAMESPACE::Bool32        micromapHostCommands  = {};
75247   };
75248 
75249   template <>
75250   struct CppType<StructureType, StructureType::ePhysicalDeviceOpacityMicromapFeaturesEXT>
75251   {
75252     using Type = PhysicalDeviceOpacityMicromapFeaturesEXT;
75253   };
75254 
75255   struct PhysicalDeviceOpacityMicromapPropertiesEXT
75256   {
75257     using NativeType = VkPhysicalDeviceOpacityMicromapPropertiesEXT;
75258 
75259     static const bool                                  allowDuplicate = false;
75260     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceOpacityMicromapPropertiesEXT;
75261 
75262 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceOpacityMicromapPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT75263     VULKAN_HPP_CONSTEXPR PhysicalDeviceOpacityMicromapPropertiesEXT( uint32_t maxOpacity2StateSubdivisionLevel_ = {},
75264                                                                      uint32_t maxOpacity4StateSubdivisionLevel_ = {},
75265                                                                      void *   pNext_                            = nullptr ) VULKAN_HPP_NOEXCEPT
75266       : pNext{ pNext_ }
75267       , maxOpacity2StateSubdivisionLevel{ maxOpacity2StateSubdivisionLevel_ }
75268       , maxOpacity4StateSubdivisionLevel{ maxOpacity4StateSubdivisionLevel_ }
75269     {
75270     }
75271 
75272     VULKAN_HPP_CONSTEXPR PhysicalDeviceOpacityMicromapPropertiesEXT( PhysicalDeviceOpacityMicromapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75273 
PhysicalDeviceOpacityMicromapPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT75274     PhysicalDeviceOpacityMicromapPropertiesEXT( VkPhysicalDeviceOpacityMicromapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
75275       : PhysicalDeviceOpacityMicromapPropertiesEXT( *reinterpret_cast<PhysicalDeviceOpacityMicromapPropertiesEXT const *>( &rhs ) )
75276     {
75277     }
75278 
75279     PhysicalDeviceOpacityMicromapPropertiesEXT & operator=( PhysicalDeviceOpacityMicromapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75280 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75281 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT75282     PhysicalDeviceOpacityMicromapPropertiesEXT & operator=( VkPhysicalDeviceOpacityMicromapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
75283     {
75284       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT const *>( &rhs );
75285       return *this;
75286     }
75287 
operator VkPhysicalDeviceOpacityMicromapPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT75288     operator VkPhysicalDeviceOpacityMicromapPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
75289     {
75290       return *reinterpret_cast<const VkPhysicalDeviceOpacityMicromapPropertiesEXT *>( this );
75291     }
75292 
operator VkPhysicalDeviceOpacityMicromapPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT75293     operator VkPhysicalDeviceOpacityMicromapPropertiesEXT &() VULKAN_HPP_NOEXCEPT
75294     {
75295       return *reinterpret_cast<VkPhysicalDeviceOpacityMicromapPropertiesEXT *>( this );
75296     }
75297 
75298 #if defined( VULKAN_HPP_USE_REFLECT )
75299 #  if 14 <= VULKAN_HPP_CPP_VERSION
75300     auto
75301 #  else
75302     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &>
75303 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT75304       reflect() const VULKAN_HPP_NOEXCEPT
75305     {
75306       return std::tie( sType, pNext, maxOpacity2StateSubdivisionLevel, maxOpacity4StateSubdivisionLevel );
75307     }
75308 #endif
75309 
75310 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75311     auto operator<=>( PhysicalDeviceOpacityMicromapPropertiesEXT const & ) const = default;
75312 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT75313     bool operator==( PhysicalDeviceOpacityMicromapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
75314     {
75315 #  if defined( VULKAN_HPP_USE_REFLECT )
75316       return this->reflect() == rhs.reflect();
75317 #  else
75318       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxOpacity2StateSubdivisionLevel == rhs.maxOpacity2StateSubdivisionLevel ) &&
75319              ( maxOpacity4StateSubdivisionLevel == rhs.maxOpacity4StateSubdivisionLevel );
75320 #  endif
75321     }
75322 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT75323     bool operator!=( PhysicalDeviceOpacityMicromapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
75324     {
75325       return !operator==( rhs );
75326     }
75327 #endif
75328 
75329   public:
75330     VULKAN_HPP_NAMESPACE::StructureType sType                            = StructureType::ePhysicalDeviceOpacityMicromapPropertiesEXT;
75331     void *                              pNext                            = {};
75332     uint32_t                            maxOpacity2StateSubdivisionLevel = {};
75333     uint32_t                            maxOpacity4StateSubdivisionLevel = {};
75334   };
75335 
75336   template <>
75337   struct CppType<StructureType, StructureType::ePhysicalDeviceOpacityMicromapPropertiesEXT>
75338   {
75339     using Type = PhysicalDeviceOpacityMicromapPropertiesEXT;
75340   };
75341 
75342   struct PhysicalDeviceOpticalFlowFeaturesNV
75343   {
75344     using NativeType = VkPhysicalDeviceOpticalFlowFeaturesNV;
75345 
75346     static const bool                                  allowDuplicate = false;
75347     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceOpticalFlowFeaturesNV;
75348 
75349 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceOpticalFlowFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV75350     VULKAN_HPP_CONSTEXPR PhysicalDeviceOpticalFlowFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 opticalFlow_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
75351       : pNext{ pNext_ }
75352       , opticalFlow{ opticalFlow_ }
75353     {
75354     }
75355 
75356     VULKAN_HPP_CONSTEXPR PhysicalDeviceOpticalFlowFeaturesNV( PhysicalDeviceOpticalFlowFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75357 
PhysicalDeviceOpticalFlowFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV75358     PhysicalDeviceOpticalFlowFeaturesNV( VkPhysicalDeviceOpticalFlowFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
75359       : PhysicalDeviceOpticalFlowFeaturesNV( *reinterpret_cast<PhysicalDeviceOpticalFlowFeaturesNV const *>( &rhs ) )
75360     {
75361     }
75362 
75363     PhysicalDeviceOpticalFlowFeaturesNV & operator=( PhysicalDeviceOpticalFlowFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75364 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75365 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV75366     PhysicalDeviceOpticalFlowFeaturesNV & operator=( VkPhysicalDeviceOpticalFlowFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
75367     {
75368       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV const *>( &rhs );
75369       return *this;
75370     }
75371 
75372 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV75373     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpticalFlowFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
75374     {
75375       pNext = pNext_;
75376       return *this;
75377     }
75378 
setOpticalFlowVULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV75379     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpticalFlowFeaturesNV & setOpticalFlow( VULKAN_HPP_NAMESPACE::Bool32 opticalFlow_ ) VULKAN_HPP_NOEXCEPT
75380     {
75381       opticalFlow = opticalFlow_;
75382       return *this;
75383     }
75384 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
75385 
operator VkPhysicalDeviceOpticalFlowFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV75386     operator VkPhysicalDeviceOpticalFlowFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
75387     {
75388       return *reinterpret_cast<const VkPhysicalDeviceOpticalFlowFeaturesNV *>( this );
75389     }
75390 
operator VkPhysicalDeviceOpticalFlowFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV75391     operator VkPhysicalDeviceOpticalFlowFeaturesNV &() VULKAN_HPP_NOEXCEPT
75392     {
75393       return *reinterpret_cast<VkPhysicalDeviceOpticalFlowFeaturesNV *>( this );
75394     }
75395 
75396 #if defined( VULKAN_HPP_USE_REFLECT )
75397 #  if 14 <= VULKAN_HPP_CPP_VERSION
75398     auto
75399 #  else
75400     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
75401 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV75402       reflect() const VULKAN_HPP_NOEXCEPT
75403     {
75404       return std::tie( sType, pNext, opticalFlow );
75405     }
75406 #endif
75407 
75408 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75409     auto operator<=>( PhysicalDeviceOpticalFlowFeaturesNV const & ) const = default;
75410 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV75411     bool operator==( PhysicalDeviceOpticalFlowFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
75412     {
75413 #  if defined( VULKAN_HPP_USE_REFLECT )
75414       return this->reflect() == rhs.reflect();
75415 #  else
75416       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( opticalFlow == rhs.opticalFlow );
75417 #  endif
75418     }
75419 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV75420     bool operator!=( PhysicalDeviceOpticalFlowFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
75421     {
75422       return !operator==( rhs );
75423     }
75424 #endif
75425 
75426   public:
75427     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::ePhysicalDeviceOpticalFlowFeaturesNV;
75428     void *                              pNext       = {};
75429     VULKAN_HPP_NAMESPACE::Bool32        opticalFlow = {};
75430   };
75431 
75432   template <>
75433   struct CppType<StructureType, StructureType::ePhysicalDeviceOpticalFlowFeaturesNV>
75434   {
75435     using Type = PhysicalDeviceOpticalFlowFeaturesNV;
75436   };
75437 
75438   struct PhysicalDeviceOpticalFlowPropertiesNV
75439   {
75440     using NativeType = VkPhysicalDeviceOpticalFlowPropertiesNV;
75441 
75442     static const bool                                  allowDuplicate = false;
75443     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceOpticalFlowPropertiesNV;
75444 
75445 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceOpticalFlowPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV75446     VULKAN_HPP_CONSTEXPR PhysicalDeviceOpticalFlowPropertiesNV( VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV supportedOutputGridSizes_   = {},
75447                                                                 VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV supportedHintGridSizes_     = {},
75448                                                                 VULKAN_HPP_NAMESPACE::Bool32                     hintSupported_              = {},
75449                                                                 VULKAN_HPP_NAMESPACE::Bool32                     costSupported_              = {},
75450                                                                 VULKAN_HPP_NAMESPACE::Bool32                     bidirectionalFlowSupported_ = {},
75451                                                                 VULKAN_HPP_NAMESPACE::Bool32                     globalFlowSupported_        = {},
75452                                                                 uint32_t                                         minWidth_                   = {},
75453                                                                 uint32_t                                         minHeight_                  = {},
75454                                                                 uint32_t                                         maxWidth_                   = {},
75455                                                                 uint32_t                                         maxHeight_                  = {},
75456                                                                 uint32_t                                         maxNumRegionsOfInterest_    = {},
75457                                                                 void *                                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
75458       : pNext{ pNext_ }
75459       , supportedOutputGridSizes{ supportedOutputGridSizes_ }
75460       , supportedHintGridSizes{ supportedHintGridSizes_ }
75461       , hintSupported{ hintSupported_ }
75462       , costSupported{ costSupported_ }
75463       , bidirectionalFlowSupported{ bidirectionalFlowSupported_ }
75464       , globalFlowSupported{ globalFlowSupported_ }
75465       , minWidth{ minWidth_ }
75466       , minHeight{ minHeight_ }
75467       , maxWidth{ maxWidth_ }
75468       , maxHeight{ maxHeight_ }
75469       , maxNumRegionsOfInterest{ maxNumRegionsOfInterest_ }
75470     {
75471     }
75472 
75473     VULKAN_HPP_CONSTEXPR PhysicalDeviceOpticalFlowPropertiesNV( PhysicalDeviceOpticalFlowPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75474 
PhysicalDeviceOpticalFlowPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV75475     PhysicalDeviceOpticalFlowPropertiesNV( VkPhysicalDeviceOpticalFlowPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
75476       : PhysicalDeviceOpticalFlowPropertiesNV( *reinterpret_cast<PhysicalDeviceOpticalFlowPropertiesNV const *>( &rhs ) )
75477     {
75478     }
75479 
75480     PhysicalDeviceOpticalFlowPropertiesNV & operator=( PhysicalDeviceOpticalFlowPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75481 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75482 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV75483     PhysicalDeviceOpticalFlowPropertiesNV & operator=( VkPhysicalDeviceOpticalFlowPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
75484     {
75485       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV const *>( &rhs );
75486       return *this;
75487     }
75488 
operator VkPhysicalDeviceOpticalFlowPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV75489     operator VkPhysicalDeviceOpticalFlowPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
75490     {
75491       return *reinterpret_cast<const VkPhysicalDeviceOpticalFlowPropertiesNV *>( this );
75492     }
75493 
operator VkPhysicalDeviceOpticalFlowPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV75494     operator VkPhysicalDeviceOpticalFlowPropertiesNV &() VULKAN_HPP_NOEXCEPT
75495     {
75496       return *reinterpret_cast<VkPhysicalDeviceOpticalFlowPropertiesNV *>( this );
75497     }
75498 
75499 #if defined( VULKAN_HPP_USE_REFLECT )
75500 #  if 14 <= VULKAN_HPP_CPP_VERSION
75501     auto
75502 #  else
75503     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
75504                void * const &,
75505                VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV const &,
75506                VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV const &,
75507                VULKAN_HPP_NAMESPACE::Bool32 const &,
75508                VULKAN_HPP_NAMESPACE::Bool32 const &,
75509                VULKAN_HPP_NAMESPACE::Bool32 const &,
75510                VULKAN_HPP_NAMESPACE::Bool32 const &,
75511                uint32_t const &,
75512                uint32_t const &,
75513                uint32_t const &,
75514                uint32_t const &,
75515                uint32_t const &>
75516 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV75517       reflect() const VULKAN_HPP_NOEXCEPT
75518     {
75519       return std::tie( sType,
75520                        pNext,
75521                        supportedOutputGridSizes,
75522                        supportedHintGridSizes,
75523                        hintSupported,
75524                        costSupported,
75525                        bidirectionalFlowSupported,
75526                        globalFlowSupported,
75527                        minWidth,
75528                        minHeight,
75529                        maxWidth,
75530                        maxHeight,
75531                        maxNumRegionsOfInterest );
75532     }
75533 #endif
75534 
75535 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75536     auto operator<=>( PhysicalDeviceOpticalFlowPropertiesNV const & ) const = default;
75537 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV75538     bool operator==( PhysicalDeviceOpticalFlowPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
75539     {
75540 #  if defined( VULKAN_HPP_USE_REFLECT )
75541       return this->reflect() == rhs.reflect();
75542 #  else
75543       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportedOutputGridSizes == rhs.supportedOutputGridSizes ) &&
75544              ( supportedHintGridSizes == rhs.supportedHintGridSizes ) && ( hintSupported == rhs.hintSupported ) && ( costSupported == rhs.costSupported ) &&
75545              ( bidirectionalFlowSupported == rhs.bidirectionalFlowSupported ) && ( globalFlowSupported == rhs.globalFlowSupported ) &&
75546              ( minWidth == rhs.minWidth ) && ( minHeight == rhs.minHeight ) && ( maxWidth == rhs.maxWidth ) && ( maxHeight == rhs.maxHeight ) &&
75547              ( maxNumRegionsOfInterest == rhs.maxNumRegionsOfInterest );
75548 #  endif
75549     }
75550 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV75551     bool operator!=( PhysicalDeviceOpticalFlowPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
75552     {
75553       return !operator==( rhs );
75554     }
75555 #endif
75556 
75557   public:
75558     VULKAN_HPP_NAMESPACE::StructureType              sType                      = StructureType::ePhysicalDeviceOpticalFlowPropertiesNV;
75559     void *                                           pNext                      = {};
75560     VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV supportedOutputGridSizes   = {};
75561     VULKAN_HPP_NAMESPACE::OpticalFlowGridSizeFlagsNV supportedHintGridSizes     = {};
75562     VULKAN_HPP_NAMESPACE::Bool32                     hintSupported              = {};
75563     VULKAN_HPP_NAMESPACE::Bool32                     costSupported              = {};
75564     VULKAN_HPP_NAMESPACE::Bool32                     bidirectionalFlowSupported = {};
75565     VULKAN_HPP_NAMESPACE::Bool32                     globalFlowSupported        = {};
75566     uint32_t                                         minWidth                   = {};
75567     uint32_t                                         minHeight                  = {};
75568     uint32_t                                         maxWidth                   = {};
75569     uint32_t                                         maxHeight                  = {};
75570     uint32_t                                         maxNumRegionsOfInterest    = {};
75571   };
75572 
75573   template <>
75574   struct CppType<StructureType, StructureType::ePhysicalDeviceOpticalFlowPropertiesNV>
75575   {
75576     using Type = PhysicalDeviceOpticalFlowPropertiesNV;
75577   };
75578 
75579   struct PhysicalDevicePCIBusInfoPropertiesEXT
75580   {
75581     using NativeType = VkPhysicalDevicePCIBusInfoPropertiesEXT;
75582 
75583     static const bool                                  allowDuplicate = false;
75584     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePciBusInfoPropertiesEXT;
75585 
75586 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePCIBusInfoPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT75587     VULKAN_HPP_CONSTEXPR PhysicalDevicePCIBusInfoPropertiesEXT(
75588       uint32_t pciDomain_ = {}, uint32_t pciBus_ = {}, uint32_t pciDevice_ = {}, uint32_t pciFunction_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
75589       : pNext{ pNext_ }
75590       , pciDomain{ pciDomain_ }
75591       , pciBus{ pciBus_ }
75592       , pciDevice{ pciDevice_ }
75593       , pciFunction{ pciFunction_ }
75594     {
75595     }
75596 
75597     VULKAN_HPP_CONSTEXPR PhysicalDevicePCIBusInfoPropertiesEXT( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75598 
PhysicalDevicePCIBusInfoPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT75599     PhysicalDevicePCIBusInfoPropertiesEXT( VkPhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
75600       : PhysicalDevicePCIBusInfoPropertiesEXT( *reinterpret_cast<PhysicalDevicePCIBusInfoPropertiesEXT const *>( &rhs ) )
75601     {
75602     }
75603 
75604     PhysicalDevicePCIBusInfoPropertiesEXT & operator=( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75605 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75606 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT75607     PhysicalDevicePCIBusInfoPropertiesEXT & operator=( VkPhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
75608     {
75609       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT const *>( &rhs );
75610       return *this;
75611     }
75612 
operator VkPhysicalDevicePCIBusInfoPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT75613     operator VkPhysicalDevicePCIBusInfoPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
75614     {
75615       return *reinterpret_cast<const VkPhysicalDevicePCIBusInfoPropertiesEXT *>( this );
75616     }
75617 
operator VkPhysicalDevicePCIBusInfoPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT75618     operator VkPhysicalDevicePCIBusInfoPropertiesEXT &() VULKAN_HPP_NOEXCEPT
75619     {
75620       return *reinterpret_cast<VkPhysicalDevicePCIBusInfoPropertiesEXT *>( this );
75621     }
75622 
75623 #if defined( VULKAN_HPP_USE_REFLECT )
75624 #  if 14 <= VULKAN_HPP_CPP_VERSION
75625     auto
75626 #  else
75627     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &>
75628 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT75629       reflect() const VULKAN_HPP_NOEXCEPT
75630     {
75631       return std::tie( sType, pNext, pciDomain, pciBus, pciDevice, pciFunction );
75632     }
75633 #endif
75634 
75635 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75636     auto operator<=>( PhysicalDevicePCIBusInfoPropertiesEXT const & ) const = default;
75637 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT75638     bool operator==( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
75639     {
75640 #  if defined( VULKAN_HPP_USE_REFLECT )
75641       return this->reflect() == rhs.reflect();
75642 #  else
75643       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pciDomain == rhs.pciDomain ) && ( pciBus == rhs.pciBus ) && ( pciDevice == rhs.pciDevice ) &&
75644              ( pciFunction == rhs.pciFunction );
75645 #  endif
75646     }
75647 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT75648     bool operator!=( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
75649     {
75650       return !operator==( rhs );
75651     }
75652 #endif
75653 
75654   public:
75655     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::ePhysicalDevicePciBusInfoPropertiesEXT;
75656     void *                              pNext       = {};
75657     uint32_t                            pciDomain   = {};
75658     uint32_t                            pciBus      = {};
75659     uint32_t                            pciDevice   = {};
75660     uint32_t                            pciFunction = {};
75661   };
75662 
75663   template <>
75664   struct CppType<StructureType, StructureType::ePhysicalDevicePciBusInfoPropertiesEXT>
75665   {
75666     using Type = PhysicalDevicePCIBusInfoPropertiesEXT;
75667   };
75668 
75669   struct PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT
75670   {
75671     using NativeType = VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;
75672 
75673     static const bool                                  allowDuplicate = false;
75674     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;
75675 
75676 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT75677     VULKAN_HPP_CONSTEXPR PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 pageableDeviceLocalMemory_ = {},
75678                                                                              void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
75679       : pNext{ pNext_ }
75680       , pageableDeviceLocalMemory{ pageableDeviceLocalMemory_ }
75681     {
75682     }
75683 
75684     VULKAN_HPP_CONSTEXPR
75685       PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75686 
PhysicalDevicePageableDeviceLocalMemoryFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT75687     PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT( VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
75688       : PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT( *reinterpret_cast<PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const *>( &rhs ) )
75689     {
75690     }
75691 
75692     PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT &
75693       operator=( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75694 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75695 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT75696     PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT & operator=( VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
75697     {
75698       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const *>( &rhs );
75699       return *this;
75700     }
75701 
75702 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT75703     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
75704     {
75705       pNext = pNext_;
75706       return *this;
75707     }
75708 
75709     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT &
setPageableDeviceLocalMemoryVULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT75710       setPageableDeviceLocalMemory( VULKAN_HPP_NAMESPACE::Bool32 pageableDeviceLocalMemory_ ) VULKAN_HPP_NOEXCEPT
75711     {
75712       pageableDeviceLocalMemory = pageableDeviceLocalMemory_;
75713       return *this;
75714     }
75715 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
75716 
operator VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT75717     operator VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
75718     {
75719       return *reinterpret_cast<const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT *>( this );
75720     }
75721 
operator VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT75722     operator VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT &() VULKAN_HPP_NOEXCEPT
75723     {
75724       return *reinterpret_cast<VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT *>( this );
75725     }
75726 
75727 #if defined( VULKAN_HPP_USE_REFLECT )
75728 #  if 14 <= VULKAN_HPP_CPP_VERSION
75729     auto
75730 #  else
75731     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
75732 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT75733       reflect() const VULKAN_HPP_NOEXCEPT
75734     {
75735       return std::tie( sType, pNext, pageableDeviceLocalMemory );
75736     }
75737 #endif
75738 
75739 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75740     auto operator<=>( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & ) const = default;
75741 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT75742     bool operator==( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
75743     {
75744 #  if defined( VULKAN_HPP_USE_REFLECT )
75745       return this->reflect() == rhs.reflect();
75746 #  else
75747       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pageableDeviceLocalMemory == rhs.pageableDeviceLocalMemory );
75748 #  endif
75749     }
75750 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT75751     bool operator!=( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
75752     {
75753       return !operator==( rhs );
75754     }
75755 #endif
75756 
75757   public:
75758     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::ePhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;
75759     void *                              pNext                     = {};
75760     VULKAN_HPP_NAMESPACE::Bool32        pageableDeviceLocalMemory = {};
75761   };
75762 
75763   template <>
75764   struct CppType<StructureType, StructureType::ePhysicalDevicePageableDeviceLocalMemoryFeaturesEXT>
75765   {
75766     using Type = PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;
75767   };
75768 
75769   struct PhysicalDevicePerStageDescriptorSetFeaturesNV
75770   {
75771     using NativeType = VkPhysicalDevicePerStageDescriptorSetFeaturesNV;
75772 
75773     static const bool                                  allowDuplicate = false;
75774     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePerStageDescriptorSetFeaturesNV;
75775 
75776 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePerStageDescriptorSetFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV75777     VULKAN_HPP_CONSTEXPR PhysicalDevicePerStageDescriptorSetFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 perStageDescriptorSet_ = {},
75778                                                                         VULKAN_HPP_NAMESPACE::Bool32 dynamicPipelineLayout_ = {},
75779                                                                         void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
75780       : pNext{ pNext_ }
75781       , perStageDescriptorSet{ perStageDescriptorSet_ }
75782       , dynamicPipelineLayout{ dynamicPipelineLayout_ }
75783     {
75784     }
75785 
75786     VULKAN_HPP_CONSTEXPR
75787       PhysicalDevicePerStageDescriptorSetFeaturesNV( PhysicalDevicePerStageDescriptorSetFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75788 
PhysicalDevicePerStageDescriptorSetFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV75789     PhysicalDevicePerStageDescriptorSetFeaturesNV( VkPhysicalDevicePerStageDescriptorSetFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
75790       : PhysicalDevicePerStageDescriptorSetFeaturesNV( *reinterpret_cast<PhysicalDevicePerStageDescriptorSetFeaturesNV const *>( &rhs ) )
75791     {
75792     }
75793 
75794     PhysicalDevicePerStageDescriptorSetFeaturesNV & operator=( PhysicalDevicePerStageDescriptorSetFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75795 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75796 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV75797     PhysicalDevicePerStageDescriptorSetFeaturesNV & operator=( VkPhysicalDevicePerStageDescriptorSetFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
75798     {
75799       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV const *>( &rhs );
75800       return *this;
75801     }
75802 
75803 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV75804     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerStageDescriptorSetFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
75805     {
75806       pNext = pNext_;
75807       return *this;
75808     }
75809 
75810     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerStageDescriptorSetFeaturesNV &
setPerStageDescriptorSetVULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV75811       setPerStageDescriptorSet( VULKAN_HPP_NAMESPACE::Bool32 perStageDescriptorSet_ ) VULKAN_HPP_NOEXCEPT
75812     {
75813       perStageDescriptorSet = perStageDescriptorSet_;
75814       return *this;
75815     }
75816 
75817     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerStageDescriptorSetFeaturesNV &
setDynamicPipelineLayoutVULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV75818       setDynamicPipelineLayout( VULKAN_HPP_NAMESPACE::Bool32 dynamicPipelineLayout_ ) VULKAN_HPP_NOEXCEPT
75819     {
75820       dynamicPipelineLayout = dynamicPipelineLayout_;
75821       return *this;
75822     }
75823 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
75824 
operator VkPhysicalDevicePerStageDescriptorSetFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV75825     operator VkPhysicalDevicePerStageDescriptorSetFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
75826     {
75827       return *reinterpret_cast<const VkPhysicalDevicePerStageDescriptorSetFeaturesNV *>( this );
75828     }
75829 
operator VkPhysicalDevicePerStageDescriptorSetFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV75830     operator VkPhysicalDevicePerStageDescriptorSetFeaturesNV &() VULKAN_HPP_NOEXCEPT
75831     {
75832       return *reinterpret_cast<VkPhysicalDevicePerStageDescriptorSetFeaturesNV *>( this );
75833     }
75834 
75835 #if defined( VULKAN_HPP_USE_REFLECT )
75836 #  if 14 <= VULKAN_HPP_CPP_VERSION
75837     auto
75838 #  else
75839     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
75840 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV75841       reflect() const VULKAN_HPP_NOEXCEPT
75842     {
75843       return std::tie( sType, pNext, perStageDescriptorSet, dynamicPipelineLayout );
75844     }
75845 #endif
75846 
75847 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75848     auto operator<=>( PhysicalDevicePerStageDescriptorSetFeaturesNV const & ) const = default;
75849 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV75850     bool operator==( PhysicalDevicePerStageDescriptorSetFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
75851     {
75852 #  if defined( VULKAN_HPP_USE_REFLECT )
75853       return this->reflect() == rhs.reflect();
75854 #  else
75855       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( perStageDescriptorSet == rhs.perStageDescriptorSet ) &&
75856              ( dynamicPipelineLayout == rhs.dynamicPipelineLayout );
75857 #  endif
75858     }
75859 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV75860     bool operator!=( PhysicalDevicePerStageDescriptorSetFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
75861     {
75862       return !operator==( rhs );
75863     }
75864 #endif
75865 
75866   public:
75867     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDevicePerStageDescriptorSetFeaturesNV;
75868     void *                              pNext                 = {};
75869     VULKAN_HPP_NAMESPACE::Bool32        perStageDescriptorSet = {};
75870     VULKAN_HPP_NAMESPACE::Bool32        dynamicPipelineLayout = {};
75871   };
75872 
75873   template <>
75874   struct CppType<StructureType, StructureType::ePhysicalDevicePerStageDescriptorSetFeaturesNV>
75875   {
75876     using Type = PhysicalDevicePerStageDescriptorSetFeaturesNV;
75877   };
75878 
75879   struct PhysicalDevicePerformanceQueryFeaturesKHR
75880   {
75881     using NativeType = VkPhysicalDevicePerformanceQueryFeaturesKHR;
75882 
75883     static const bool                                  allowDuplicate = false;
75884     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR;
75885 
75886 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePerformanceQueryFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR75887     VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 performanceCounterQueryPools_         = {},
75888                                                                     VULKAN_HPP_NAMESPACE::Bool32 performanceCounterMultipleQueryPools_ = {},
75889                                                                     void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
75890       : pNext{ pNext_ }
75891       , performanceCounterQueryPools{ performanceCounterQueryPools_ }
75892       , performanceCounterMultipleQueryPools{ performanceCounterMultipleQueryPools_ }
75893     {
75894     }
75895 
75896     VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryFeaturesKHR( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75897 
PhysicalDevicePerformanceQueryFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR75898     PhysicalDevicePerformanceQueryFeaturesKHR( VkPhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
75899       : PhysicalDevicePerformanceQueryFeaturesKHR( *reinterpret_cast<PhysicalDevicePerformanceQueryFeaturesKHR const *>( &rhs ) )
75900     {
75901     }
75902 
75903     PhysicalDevicePerformanceQueryFeaturesKHR & operator=( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
75904 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
75905 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR75906     PhysicalDevicePerformanceQueryFeaturesKHR & operator=( VkPhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
75907     {
75908       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR const *>( &rhs );
75909       return *this;
75910     }
75911 
75912 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR75913     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
75914     {
75915       pNext = pNext_;
75916       return *this;
75917     }
75918 
75919     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR &
setPerformanceCounterQueryPoolsVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR75920       setPerformanceCounterQueryPools( VULKAN_HPP_NAMESPACE::Bool32 performanceCounterQueryPools_ ) VULKAN_HPP_NOEXCEPT
75921     {
75922       performanceCounterQueryPools = performanceCounterQueryPools_;
75923       return *this;
75924     }
75925 
75926     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR &
setPerformanceCounterMultipleQueryPoolsVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR75927       setPerformanceCounterMultipleQueryPools( VULKAN_HPP_NAMESPACE::Bool32 performanceCounterMultipleQueryPools_ ) VULKAN_HPP_NOEXCEPT
75928     {
75929       performanceCounterMultipleQueryPools = performanceCounterMultipleQueryPools_;
75930       return *this;
75931     }
75932 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
75933 
operator VkPhysicalDevicePerformanceQueryFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR75934     operator VkPhysicalDevicePerformanceQueryFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
75935     {
75936       return *reinterpret_cast<const VkPhysicalDevicePerformanceQueryFeaturesKHR *>( this );
75937     }
75938 
operator VkPhysicalDevicePerformanceQueryFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR75939     operator VkPhysicalDevicePerformanceQueryFeaturesKHR &() VULKAN_HPP_NOEXCEPT
75940     {
75941       return *reinterpret_cast<VkPhysicalDevicePerformanceQueryFeaturesKHR *>( this );
75942     }
75943 
75944 #if defined( VULKAN_HPP_USE_REFLECT )
75945 #  if 14 <= VULKAN_HPP_CPP_VERSION
75946     auto
75947 #  else
75948     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
75949 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR75950       reflect() const VULKAN_HPP_NOEXCEPT
75951     {
75952       return std::tie( sType, pNext, performanceCounterQueryPools, performanceCounterMultipleQueryPools );
75953     }
75954 #endif
75955 
75956 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
75957     auto operator<=>( PhysicalDevicePerformanceQueryFeaturesKHR const & ) const = default;
75958 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR75959     bool operator==( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
75960     {
75961 #  if defined( VULKAN_HPP_USE_REFLECT )
75962       return this->reflect() == rhs.reflect();
75963 #  else
75964       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( performanceCounterQueryPools == rhs.performanceCounterQueryPools ) &&
75965              ( performanceCounterMultipleQueryPools == rhs.performanceCounterMultipleQueryPools );
75966 #  endif
75967     }
75968 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR75969     bool operator!=( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
75970     {
75971       return !operator==( rhs );
75972     }
75973 #endif
75974 
75975   public:
75976     VULKAN_HPP_NAMESPACE::StructureType sType                                = StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR;
75977     void *                              pNext                                = {};
75978     VULKAN_HPP_NAMESPACE::Bool32        performanceCounterQueryPools         = {};
75979     VULKAN_HPP_NAMESPACE::Bool32        performanceCounterMultipleQueryPools = {};
75980   };
75981 
75982   template <>
75983   struct CppType<StructureType, StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR>
75984   {
75985     using Type = PhysicalDevicePerformanceQueryFeaturesKHR;
75986   };
75987 
75988   struct PhysicalDevicePerformanceQueryPropertiesKHR
75989   {
75990     using NativeType = VkPhysicalDevicePerformanceQueryPropertiesKHR;
75991 
75992     static const bool                                  allowDuplicate = false;
75993     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR;
75994 
75995 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePerformanceQueryPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR75996     VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryPropertiesKHR( VULKAN_HPP_NAMESPACE::Bool32 allowCommandBufferQueryCopies_ = {},
75997                                                                       void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
75998       : pNext{ pNext_ }
75999       , allowCommandBufferQueryCopies{ allowCommandBufferQueryCopies_ }
76000     {
76001     }
76002 
76003     VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryPropertiesKHR( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76004 
PhysicalDevicePerformanceQueryPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR76005     PhysicalDevicePerformanceQueryPropertiesKHR( VkPhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
76006       : PhysicalDevicePerformanceQueryPropertiesKHR( *reinterpret_cast<PhysicalDevicePerformanceQueryPropertiesKHR const *>( &rhs ) )
76007     {
76008     }
76009 
76010     PhysicalDevicePerformanceQueryPropertiesKHR & operator=( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76011 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76012 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR76013     PhysicalDevicePerformanceQueryPropertiesKHR & operator=( VkPhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
76014     {
76015       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR const *>( &rhs );
76016       return *this;
76017     }
76018 
operator VkPhysicalDevicePerformanceQueryPropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR76019     operator VkPhysicalDevicePerformanceQueryPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
76020     {
76021       return *reinterpret_cast<const VkPhysicalDevicePerformanceQueryPropertiesKHR *>( this );
76022     }
76023 
operator VkPhysicalDevicePerformanceQueryPropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR76024     operator VkPhysicalDevicePerformanceQueryPropertiesKHR &() VULKAN_HPP_NOEXCEPT
76025     {
76026       return *reinterpret_cast<VkPhysicalDevicePerformanceQueryPropertiesKHR *>( this );
76027     }
76028 
76029 #if defined( VULKAN_HPP_USE_REFLECT )
76030 #  if 14 <= VULKAN_HPP_CPP_VERSION
76031     auto
76032 #  else
76033     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
76034 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR76035       reflect() const VULKAN_HPP_NOEXCEPT
76036     {
76037       return std::tie( sType, pNext, allowCommandBufferQueryCopies );
76038     }
76039 #endif
76040 
76041 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76042     auto operator<=>( PhysicalDevicePerformanceQueryPropertiesKHR const & ) const = default;
76043 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR76044     bool operator==( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
76045     {
76046 #  if defined( VULKAN_HPP_USE_REFLECT )
76047       return this->reflect() == rhs.reflect();
76048 #  else
76049       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( allowCommandBufferQueryCopies == rhs.allowCommandBufferQueryCopies );
76050 #  endif
76051     }
76052 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR76053     bool operator!=( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
76054     {
76055       return !operator==( rhs );
76056     }
76057 #endif
76058 
76059   public:
76060     VULKAN_HPP_NAMESPACE::StructureType sType                         = StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR;
76061     void *                              pNext                         = {};
76062     VULKAN_HPP_NAMESPACE::Bool32        allowCommandBufferQueryCopies = {};
76063   };
76064 
76065   template <>
76066   struct CppType<StructureType, StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR>
76067   {
76068     using Type = PhysicalDevicePerformanceQueryPropertiesKHR;
76069   };
76070 
76071   struct PhysicalDevicePipelineCreationCacheControlFeatures
76072   {
76073     using NativeType = VkPhysicalDevicePipelineCreationCacheControlFeatures;
76074 
76075     static const bool                                  allowDuplicate = false;
76076     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePipelineCreationCacheControlFeatures;
76077 
76078 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePipelineCreationCacheControlFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures76079     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineCreationCacheControlFeatures( VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl_ = {},
76080                                                                              void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
76081       : pNext{ pNext_ }
76082       , pipelineCreationCacheControl{ pipelineCreationCacheControl_ }
76083     {
76084     }
76085 
76086     VULKAN_HPP_CONSTEXPR
76087       PhysicalDevicePipelineCreationCacheControlFeatures( PhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76088 
PhysicalDevicePipelineCreationCacheControlFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures76089     PhysicalDevicePipelineCreationCacheControlFeatures( VkPhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
76090       : PhysicalDevicePipelineCreationCacheControlFeatures( *reinterpret_cast<PhysicalDevicePipelineCreationCacheControlFeatures const *>( &rhs ) )
76091     {
76092     }
76093 
76094     PhysicalDevicePipelineCreationCacheControlFeatures &
76095       operator=( PhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76096 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76097 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures76098     PhysicalDevicePipelineCreationCacheControlFeatures & operator=( VkPhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
76099     {
76100       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures const *>( &rhs );
76101       return *this;
76102     }
76103 
76104 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures76105     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineCreationCacheControlFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
76106     {
76107       pNext = pNext_;
76108       return *this;
76109     }
76110 
76111     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineCreationCacheControlFeatures &
setPipelineCreationCacheControlVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures76112       setPipelineCreationCacheControl( VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl_ ) VULKAN_HPP_NOEXCEPT
76113     {
76114       pipelineCreationCacheControl = pipelineCreationCacheControl_;
76115       return *this;
76116     }
76117 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
76118 
operator VkPhysicalDevicePipelineCreationCacheControlFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures76119     operator VkPhysicalDevicePipelineCreationCacheControlFeatures const &() const VULKAN_HPP_NOEXCEPT
76120     {
76121       return *reinterpret_cast<const VkPhysicalDevicePipelineCreationCacheControlFeatures *>( this );
76122     }
76123 
operator VkPhysicalDevicePipelineCreationCacheControlFeatures&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures76124     operator VkPhysicalDevicePipelineCreationCacheControlFeatures &() VULKAN_HPP_NOEXCEPT
76125     {
76126       return *reinterpret_cast<VkPhysicalDevicePipelineCreationCacheControlFeatures *>( this );
76127     }
76128 
76129 #if defined( VULKAN_HPP_USE_REFLECT )
76130 #  if 14 <= VULKAN_HPP_CPP_VERSION
76131     auto
76132 #  else
76133     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
76134 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures76135       reflect() const VULKAN_HPP_NOEXCEPT
76136     {
76137       return std::tie( sType, pNext, pipelineCreationCacheControl );
76138     }
76139 #endif
76140 
76141 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76142     auto operator<=>( PhysicalDevicePipelineCreationCacheControlFeatures const & ) const = default;
76143 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures76144     bool operator==( PhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
76145     {
76146 #  if defined( VULKAN_HPP_USE_REFLECT )
76147       return this->reflect() == rhs.reflect();
76148 #  else
76149       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineCreationCacheControl == rhs.pipelineCreationCacheControl );
76150 #  endif
76151     }
76152 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures76153     bool operator!=( PhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
76154     {
76155       return !operator==( rhs );
76156     }
76157 #endif
76158 
76159   public:
76160     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDevicePipelineCreationCacheControlFeatures;
76161     void *                              pNext                        = {};
76162     VULKAN_HPP_NAMESPACE::Bool32        pipelineCreationCacheControl = {};
76163   };
76164 
76165   template <>
76166   struct CppType<StructureType, StructureType::ePhysicalDevicePipelineCreationCacheControlFeatures>
76167   {
76168     using Type = PhysicalDevicePipelineCreationCacheControlFeatures;
76169   };
76170 
76171   using PhysicalDevicePipelineCreationCacheControlFeaturesEXT = PhysicalDevicePipelineCreationCacheControlFeatures;
76172 
76173   struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR
76174   {
76175     using NativeType = VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
76176 
76177     static const bool                                  allowDuplicate = false;
76178     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
76179 
76180 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePipelineExecutablePropertiesFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR76181     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 pipelineExecutableInfo_ = {},
76182                                                                                 void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
76183       : pNext{ pNext_ }
76184       , pipelineExecutableInfo{ pipelineExecutableInfo_ }
76185     {
76186     }
76187 
76188     VULKAN_HPP_CONSTEXPR
76189       PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76190 
PhysicalDevicePipelineExecutablePropertiesFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR76191     PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
76192       : PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( *reinterpret_cast<PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const *>( &rhs ) )
76193     {
76194     }
76195 
76196     PhysicalDevicePipelineExecutablePropertiesFeaturesKHR &
76197       operator=( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76198 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76199 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR76200     PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & operator=( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
76201     {
76202       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const *>( &rhs );
76203       return *this;
76204     }
76205 
76206 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR76207     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
76208     {
76209       pNext = pNext_;
76210       return *this;
76211     }
76212 
76213     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineExecutablePropertiesFeaturesKHR &
setPipelineExecutableInfoVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR76214       setPipelineExecutableInfo( VULKAN_HPP_NAMESPACE::Bool32 pipelineExecutableInfo_ ) VULKAN_HPP_NOEXCEPT
76215     {
76216       pipelineExecutableInfo = pipelineExecutableInfo_;
76217       return *this;
76218     }
76219 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
76220 
operator VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR76221     operator VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
76222     {
76223       return *reinterpret_cast<const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *>( this );
76224     }
76225 
operator VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR76226     operator VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR &() VULKAN_HPP_NOEXCEPT
76227     {
76228       return *reinterpret_cast<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *>( this );
76229     }
76230 
76231 #if defined( VULKAN_HPP_USE_REFLECT )
76232 #  if 14 <= VULKAN_HPP_CPP_VERSION
76233     auto
76234 #  else
76235     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
76236 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR76237       reflect() const VULKAN_HPP_NOEXCEPT
76238     {
76239       return std::tie( sType, pNext, pipelineExecutableInfo );
76240     }
76241 #endif
76242 
76243 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76244     auto operator<=>( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & ) const = default;
76245 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR76246     bool operator==( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
76247     {
76248 #  if defined( VULKAN_HPP_USE_REFLECT )
76249       return this->reflect() == rhs.reflect();
76250 #  else
76251       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineExecutableInfo == rhs.pipelineExecutableInfo );
76252 #  endif
76253     }
76254 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR76255     bool operator!=( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
76256     {
76257       return !operator==( rhs );
76258     }
76259 #endif
76260 
76261   public:
76262     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
76263     void *                              pNext                  = {};
76264     VULKAN_HPP_NAMESPACE::Bool32        pipelineExecutableInfo = {};
76265   };
76266 
76267   template <>
76268   struct CppType<StructureType, StructureType::ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR>
76269   {
76270     using Type = PhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
76271   };
76272 
76273   struct PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT
76274   {
76275     using NativeType = VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT;
76276 
76277     static const bool                                  allowDuplicate = false;
76278     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT;
76279 
76280 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT76281     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 pipelineLibraryGroupHandles_ = {},
76282                                                                                void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
76283       : pNext{ pNext_ }
76284       , pipelineLibraryGroupHandles{ pipelineLibraryGroupHandles_ }
76285     {
76286     }
76287 
76288     VULKAN_HPP_CONSTEXPR
76289       PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT( PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76290 
PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT76291     PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT( VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76292       : PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT( *reinterpret_cast<PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const *>( &rhs ) )
76293     {
76294     }
76295 
76296     PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT &
76297       operator=( PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76298 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76299 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT76300     PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT & operator=( VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76301     {
76302       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const *>( &rhs );
76303       return *this;
76304     }
76305 
76306 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT76307     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
76308     {
76309       pNext = pNext_;
76310       return *this;
76311     }
76312 
76313     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT &
setPipelineLibraryGroupHandlesVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT76314       setPipelineLibraryGroupHandles( VULKAN_HPP_NAMESPACE::Bool32 pipelineLibraryGroupHandles_ ) VULKAN_HPP_NOEXCEPT
76315     {
76316       pipelineLibraryGroupHandles = pipelineLibraryGroupHandles_;
76317       return *this;
76318     }
76319 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
76320 
operator VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT76321     operator VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
76322     {
76323       return *reinterpret_cast<const VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT *>( this );
76324     }
76325 
operator VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT76326     operator VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT &() VULKAN_HPP_NOEXCEPT
76327     {
76328       return *reinterpret_cast<VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT *>( this );
76329     }
76330 
76331 #if defined( VULKAN_HPP_USE_REFLECT )
76332 #  if 14 <= VULKAN_HPP_CPP_VERSION
76333     auto
76334 #  else
76335     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
76336 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT76337       reflect() const VULKAN_HPP_NOEXCEPT
76338     {
76339       return std::tie( sType, pNext, pipelineLibraryGroupHandles );
76340     }
76341 #endif
76342 
76343 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76344     auto operator<=>( PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & ) const = default;
76345 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT76346     bool operator==( PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76347     {
76348 #  if defined( VULKAN_HPP_USE_REFLECT )
76349       return this->reflect() == rhs.reflect();
76350 #  else
76351       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineLibraryGroupHandles == rhs.pipelineLibraryGroupHandles );
76352 #  endif
76353     }
76354 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT76355     bool operator!=( PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76356     {
76357       return !operator==( rhs );
76358     }
76359 #endif
76360 
76361   public:
76362     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT;
76363     void *                              pNext                       = {};
76364     VULKAN_HPP_NAMESPACE::Bool32        pipelineLibraryGroupHandles = {};
76365   };
76366 
76367   template <>
76368   struct CppType<StructureType, StructureType::ePhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT>
76369   {
76370     using Type = PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT;
76371   };
76372 
76373   struct PhysicalDevicePipelinePropertiesFeaturesEXT
76374   {
76375     using NativeType = VkPhysicalDevicePipelinePropertiesFeaturesEXT;
76376 
76377     static const bool                                  allowDuplicate = false;
76378     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePipelinePropertiesFeaturesEXT;
76379 
76380 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePipelinePropertiesFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT76381     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelinePropertiesFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 pipelinePropertiesIdentifier_ = {},
76382                                                                       void *                       pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
76383       : pNext{ pNext_ }
76384       , pipelinePropertiesIdentifier{ pipelinePropertiesIdentifier_ }
76385     {
76386     }
76387 
76388     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelinePropertiesFeaturesEXT( PhysicalDevicePipelinePropertiesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76389 
PhysicalDevicePipelinePropertiesFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT76390     PhysicalDevicePipelinePropertiesFeaturesEXT( VkPhysicalDevicePipelinePropertiesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76391       : PhysicalDevicePipelinePropertiesFeaturesEXT( *reinterpret_cast<PhysicalDevicePipelinePropertiesFeaturesEXT const *>( &rhs ) )
76392     {
76393     }
76394 
76395     PhysicalDevicePipelinePropertiesFeaturesEXT & operator=( PhysicalDevicePipelinePropertiesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76396 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76397 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT76398     PhysicalDevicePipelinePropertiesFeaturesEXT & operator=( VkPhysicalDevicePipelinePropertiesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76399     {
76400       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT const *>( &rhs );
76401       return *this;
76402     }
76403 
76404 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT76405     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelinePropertiesFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
76406     {
76407       pNext = pNext_;
76408       return *this;
76409     }
76410 
76411     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelinePropertiesFeaturesEXT &
setPipelinePropertiesIdentifierVULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT76412       setPipelinePropertiesIdentifier( VULKAN_HPP_NAMESPACE::Bool32 pipelinePropertiesIdentifier_ ) VULKAN_HPP_NOEXCEPT
76413     {
76414       pipelinePropertiesIdentifier = pipelinePropertiesIdentifier_;
76415       return *this;
76416     }
76417 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
76418 
operator VkPhysicalDevicePipelinePropertiesFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT76419     operator VkPhysicalDevicePipelinePropertiesFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
76420     {
76421       return *reinterpret_cast<const VkPhysicalDevicePipelinePropertiesFeaturesEXT *>( this );
76422     }
76423 
operator VkPhysicalDevicePipelinePropertiesFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT76424     operator VkPhysicalDevicePipelinePropertiesFeaturesEXT &() VULKAN_HPP_NOEXCEPT
76425     {
76426       return *reinterpret_cast<VkPhysicalDevicePipelinePropertiesFeaturesEXT *>( this );
76427     }
76428 
76429 #if defined( VULKAN_HPP_USE_REFLECT )
76430 #  if 14 <= VULKAN_HPP_CPP_VERSION
76431     auto
76432 #  else
76433     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
76434 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT76435       reflect() const VULKAN_HPP_NOEXCEPT
76436     {
76437       return std::tie( sType, pNext, pipelinePropertiesIdentifier );
76438     }
76439 #endif
76440 
76441 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76442     auto operator<=>( PhysicalDevicePipelinePropertiesFeaturesEXT const & ) const = default;
76443 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT76444     bool operator==( PhysicalDevicePipelinePropertiesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76445     {
76446 #  if defined( VULKAN_HPP_USE_REFLECT )
76447       return this->reflect() == rhs.reflect();
76448 #  else
76449       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelinePropertiesIdentifier == rhs.pipelinePropertiesIdentifier );
76450 #  endif
76451     }
76452 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT76453     bool operator!=( PhysicalDevicePipelinePropertiesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76454     {
76455       return !operator==( rhs );
76456     }
76457 #endif
76458 
76459   public:
76460     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDevicePipelinePropertiesFeaturesEXT;
76461     void *                              pNext                        = {};
76462     VULKAN_HPP_NAMESPACE::Bool32        pipelinePropertiesIdentifier = {};
76463   };
76464 
76465   template <>
76466   struct CppType<StructureType, StructureType::ePhysicalDevicePipelinePropertiesFeaturesEXT>
76467   {
76468     using Type = PhysicalDevicePipelinePropertiesFeaturesEXT;
76469   };
76470 
76471   struct PhysicalDevicePipelineProtectedAccessFeaturesEXT
76472   {
76473     using NativeType = VkPhysicalDevicePipelineProtectedAccessFeaturesEXT;
76474 
76475     static const bool                                  allowDuplicate = false;
76476     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePipelineProtectedAccessFeaturesEXT;
76477 
76478 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePipelineProtectedAccessFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeaturesEXT76479     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineProtectedAccessFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 pipelineProtectedAccess_ = {},
76480                                                                            void *                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
76481       : pNext{ pNext_ }
76482       , pipelineProtectedAccess{ pipelineProtectedAccess_ }
76483     {
76484     }
76485 
76486     VULKAN_HPP_CONSTEXPR
76487       PhysicalDevicePipelineProtectedAccessFeaturesEXT( PhysicalDevicePipelineProtectedAccessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76488 
PhysicalDevicePipelineProtectedAccessFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeaturesEXT76489     PhysicalDevicePipelineProtectedAccessFeaturesEXT( VkPhysicalDevicePipelineProtectedAccessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76490       : PhysicalDevicePipelineProtectedAccessFeaturesEXT( *reinterpret_cast<PhysicalDevicePipelineProtectedAccessFeaturesEXT const *>( &rhs ) )
76491     {
76492     }
76493 
76494     PhysicalDevicePipelineProtectedAccessFeaturesEXT & operator=( PhysicalDevicePipelineProtectedAccessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76495 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76496 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeaturesEXT76497     PhysicalDevicePipelineProtectedAccessFeaturesEXT & operator=( VkPhysicalDevicePipelineProtectedAccessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76498     {
76499       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeaturesEXT const *>( &rhs );
76500       return *this;
76501     }
76502 
76503 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeaturesEXT76504     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineProtectedAccessFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
76505     {
76506       pNext = pNext_;
76507       return *this;
76508     }
76509 
76510     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineProtectedAccessFeaturesEXT &
setPipelineProtectedAccessVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeaturesEXT76511       setPipelineProtectedAccess( VULKAN_HPP_NAMESPACE::Bool32 pipelineProtectedAccess_ ) VULKAN_HPP_NOEXCEPT
76512     {
76513       pipelineProtectedAccess = pipelineProtectedAccess_;
76514       return *this;
76515     }
76516 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
76517 
operator VkPhysicalDevicePipelineProtectedAccessFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeaturesEXT76518     operator VkPhysicalDevicePipelineProtectedAccessFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
76519     {
76520       return *reinterpret_cast<const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT *>( this );
76521     }
76522 
operator VkPhysicalDevicePipelineProtectedAccessFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeaturesEXT76523     operator VkPhysicalDevicePipelineProtectedAccessFeaturesEXT &() VULKAN_HPP_NOEXCEPT
76524     {
76525       return *reinterpret_cast<VkPhysicalDevicePipelineProtectedAccessFeaturesEXT *>( this );
76526     }
76527 
76528 #if defined( VULKAN_HPP_USE_REFLECT )
76529 #  if 14 <= VULKAN_HPP_CPP_VERSION
76530     auto
76531 #  else
76532     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
76533 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeaturesEXT76534       reflect() const VULKAN_HPP_NOEXCEPT
76535     {
76536       return std::tie( sType, pNext, pipelineProtectedAccess );
76537     }
76538 #endif
76539 
76540 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76541     auto operator<=>( PhysicalDevicePipelineProtectedAccessFeaturesEXT const & ) const = default;
76542 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeaturesEXT76543     bool operator==( PhysicalDevicePipelineProtectedAccessFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76544     {
76545 #  if defined( VULKAN_HPP_USE_REFLECT )
76546       return this->reflect() == rhs.reflect();
76547 #  else
76548       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineProtectedAccess == rhs.pipelineProtectedAccess );
76549 #  endif
76550     }
76551 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeaturesEXT76552     bool operator!=( PhysicalDevicePipelineProtectedAccessFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76553     {
76554       return !operator==( rhs );
76555     }
76556 #endif
76557 
76558   public:
76559     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDevicePipelineProtectedAccessFeaturesEXT;
76560     void *                              pNext                   = {};
76561     VULKAN_HPP_NAMESPACE::Bool32        pipelineProtectedAccess = {};
76562   };
76563 
76564   template <>
76565   struct CppType<StructureType, StructureType::ePhysicalDevicePipelineProtectedAccessFeaturesEXT>
76566   {
76567     using Type = PhysicalDevicePipelineProtectedAccessFeaturesEXT;
76568   };
76569 
76570   struct PhysicalDevicePipelineRobustnessFeaturesEXT
76571   {
76572     using NativeType = VkPhysicalDevicePipelineRobustnessFeaturesEXT;
76573 
76574     static const bool                                  allowDuplicate = false;
76575     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePipelineRobustnessFeaturesEXT;
76576 
76577 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePipelineRobustnessFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeaturesEXT76578     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineRobustnessFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 pipelineRobustness_ = {},
76579                                                                       void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
76580       : pNext{ pNext_ }
76581       , pipelineRobustness{ pipelineRobustness_ }
76582     {
76583     }
76584 
76585     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineRobustnessFeaturesEXT( PhysicalDevicePipelineRobustnessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76586 
PhysicalDevicePipelineRobustnessFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeaturesEXT76587     PhysicalDevicePipelineRobustnessFeaturesEXT( VkPhysicalDevicePipelineRobustnessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76588       : PhysicalDevicePipelineRobustnessFeaturesEXT( *reinterpret_cast<PhysicalDevicePipelineRobustnessFeaturesEXT const *>( &rhs ) )
76589     {
76590     }
76591 
76592     PhysicalDevicePipelineRobustnessFeaturesEXT & operator=( PhysicalDevicePipelineRobustnessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76593 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76594 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeaturesEXT76595     PhysicalDevicePipelineRobustnessFeaturesEXT & operator=( VkPhysicalDevicePipelineRobustnessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76596     {
76597       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeaturesEXT const *>( &rhs );
76598       return *this;
76599     }
76600 
76601 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeaturesEXT76602     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineRobustnessFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
76603     {
76604       pNext = pNext_;
76605       return *this;
76606     }
76607 
76608     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineRobustnessFeaturesEXT &
setPipelineRobustnessVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeaturesEXT76609       setPipelineRobustness( VULKAN_HPP_NAMESPACE::Bool32 pipelineRobustness_ ) VULKAN_HPP_NOEXCEPT
76610     {
76611       pipelineRobustness = pipelineRobustness_;
76612       return *this;
76613     }
76614 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
76615 
operator VkPhysicalDevicePipelineRobustnessFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeaturesEXT76616     operator VkPhysicalDevicePipelineRobustnessFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
76617     {
76618       return *reinterpret_cast<const VkPhysicalDevicePipelineRobustnessFeaturesEXT *>( this );
76619     }
76620 
operator VkPhysicalDevicePipelineRobustnessFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeaturesEXT76621     operator VkPhysicalDevicePipelineRobustnessFeaturesEXT &() VULKAN_HPP_NOEXCEPT
76622     {
76623       return *reinterpret_cast<VkPhysicalDevicePipelineRobustnessFeaturesEXT *>( this );
76624     }
76625 
76626 #if defined( VULKAN_HPP_USE_REFLECT )
76627 #  if 14 <= VULKAN_HPP_CPP_VERSION
76628     auto
76629 #  else
76630     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
76631 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeaturesEXT76632       reflect() const VULKAN_HPP_NOEXCEPT
76633     {
76634       return std::tie( sType, pNext, pipelineRobustness );
76635     }
76636 #endif
76637 
76638 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76639     auto operator<=>( PhysicalDevicePipelineRobustnessFeaturesEXT const & ) const = default;
76640 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeaturesEXT76641     bool operator==( PhysicalDevicePipelineRobustnessFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76642     {
76643 #  if defined( VULKAN_HPP_USE_REFLECT )
76644       return this->reflect() == rhs.reflect();
76645 #  else
76646       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineRobustness == rhs.pipelineRobustness );
76647 #  endif
76648     }
76649 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeaturesEXT76650     bool operator!=( PhysicalDevicePipelineRobustnessFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76651     {
76652       return !operator==( rhs );
76653     }
76654 #endif
76655 
76656   public:
76657     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDevicePipelineRobustnessFeaturesEXT;
76658     void *                              pNext              = {};
76659     VULKAN_HPP_NAMESPACE::Bool32        pipelineRobustness = {};
76660   };
76661 
76662   template <>
76663   struct CppType<StructureType, StructureType::ePhysicalDevicePipelineRobustnessFeaturesEXT>
76664   {
76665     using Type = PhysicalDevicePipelineRobustnessFeaturesEXT;
76666   };
76667 
76668   struct PhysicalDevicePipelineRobustnessPropertiesEXT
76669   {
76670     using NativeType = VkPhysicalDevicePipelineRobustnessPropertiesEXT;
76671 
76672     static const bool                                  allowDuplicate = false;
76673     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePipelineRobustnessPropertiesEXT;
76674 
76675 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
76676     VULKAN_HPP_CONSTEXPR
PhysicalDevicePipelineRobustnessPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessPropertiesEXT76677       PhysicalDevicePipelineRobustnessPropertiesEXT( VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT defaultRobustnessStorageBuffers_ =
76678                                                        VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT::eDeviceDefault,
76679                                                      VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT defaultRobustnessUniformBuffers_ =
76680                                                        VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT::eDeviceDefault,
76681                                                      VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT defaultRobustnessVertexInputs_ =
76682                                                        VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT::eDeviceDefault,
76683                                                      VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehaviorEXT defaultRobustnessImages_ =
76684                                                        VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehaviorEXT::eDeviceDefault,
76685                                                      void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
76686       : pNext{ pNext_ }
76687       , defaultRobustnessStorageBuffers{ defaultRobustnessStorageBuffers_ }
76688       , defaultRobustnessUniformBuffers{ defaultRobustnessUniformBuffers_ }
76689       , defaultRobustnessVertexInputs{ defaultRobustnessVertexInputs_ }
76690       , defaultRobustnessImages{ defaultRobustnessImages_ }
76691     {
76692     }
76693 
76694     VULKAN_HPP_CONSTEXPR
76695       PhysicalDevicePipelineRobustnessPropertiesEXT( PhysicalDevicePipelineRobustnessPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76696 
PhysicalDevicePipelineRobustnessPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessPropertiesEXT76697     PhysicalDevicePipelineRobustnessPropertiesEXT( VkPhysicalDevicePipelineRobustnessPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76698       : PhysicalDevicePipelineRobustnessPropertiesEXT( *reinterpret_cast<PhysicalDevicePipelineRobustnessPropertiesEXT const *>( &rhs ) )
76699     {
76700     }
76701 
76702     PhysicalDevicePipelineRobustnessPropertiesEXT & operator=( PhysicalDevicePipelineRobustnessPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76703 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76704 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessPropertiesEXT76705     PhysicalDevicePipelineRobustnessPropertiesEXT & operator=( VkPhysicalDevicePipelineRobustnessPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
76706     {
76707       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessPropertiesEXT const *>( &rhs );
76708       return *this;
76709     }
76710 
operator VkPhysicalDevicePipelineRobustnessPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessPropertiesEXT76711     operator VkPhysicalDevicePipelineRobustnessPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
76712     {
76713       return *reinterpret_cast<const VkPhysicalDevicePipelineRobustnessPropertiesEXT *>( this );
76714     }
76715 
operator VkPhysicalDevicePipelineRobustnessPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessPropertiesEXT76716     operator VkPhysicalDevicePipelineRobustnessPropertiesEXT &() VULKAN_HPP_NOEXCEPT
76717     {
76718       return *reinterpret_cast<VkPhysicalDevicePipelineRobustnessPropertiesEXT *>( this );
76719     }
76720 
76721 #if defined( VULKAN_HPP_USE_REFLECT )
76722 #  if 14 <= VULKAN_HPP_CPP_VERSION
76723     auto
76724 #  else
76725     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
76726                void * const &,
76727                VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT const &,
76728                VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT const &,
76729                VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT const &,
76730                VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehaviorEXT const &>
76731 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessPropertiesEXT76732       reflect() const VULKAN_HPP_NOEXCEPT
76733     {
76734       return std::tie( sType, pNext, defaultRobustnessStorageBuffers, defaultRobustnessUniformBuffers, defaultRobustnessVertexInputs, defaultRobustnessImages );
76735     }
76736 #endif
76737 
76738 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76739     auto operator<=>( PhysicalDevicePipelineRobustnessPropertiesEXT const & ) const = default;
76740 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessPropertiesEXT76741     bool operator==( PhysicalDevicePipelineRobustnessPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76742     {
76743 #  if defined( VULKAN_HPP_USE_REFLECT )
76744       return this->reflect() == rhs.reflect();
76745 #  else
76746       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( defaultRobustnessStorageBuffers == rhs.defaultRobustnessStorageBuffers ) &&
76747              ( defaultRobustnessUniformBuffers == rhs.defaultRobustnessUniformBuffers ) &&
76748              ( defaultRobustnessVertexInputs == rhs.defaultRobustnessVertexInputs ) && ( defaultRobustnessImages == rhs.defaultRobustnessImages );
76749 #  endif
76750     }
76751 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessPropertiesEXT76752     bool operator!=( PhysicalDevicePipelineRobustnessPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
76753     {
76754       return !operator==( rhs );
76755     }
76756 #endif
76757 
76758   public:
76759     VULKAN_HPP_NAMESPACE::StructureType                       sType = StructureType::ePhysicalDevicePipelineRobustnessPropertiesEXT;
76760     void *                                                    pNext = {};
76761     VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT defaultRobustnessStorageBuffers =
76762       VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT::eDeviceDefault;
76763     VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT defaultRobustnessUniformBuffers =
76764       VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT::eDeviceDefault;
76765     VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT defaultRobustnessVertexInputs =
76766       VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT::eDeviceDefault;
76767     VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehaviorEXT defaultRobustnessImages = VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehaviorEXT::eDeviceDefault;
76768   };
76769 
76770   template <>
76771   struct CppType<StructureType, StructureType::ePhysicalDevicePipelineRobustnessPropertiesEXT>
76772   {
76773     using Type = PhysicalDevicePipelineRobustnessPropertiesEXT;
76774   };
76775 
76776   struct PhysicalDevicePointClippingProperties
76777   {
76778     using NativeType = VkPhysicalDevicePointClippingProperties;
76779 
76780     static const bool                                  allowDuplicate = false;
76781     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePointClippingProperties;
76782 
76783 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePointClippingPropertiesVULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties76784     VULKAN_HPP_CONSTEXPR PhysicalDevicePointClippingProperties(
76785       VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior_ = VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes,
76786       void *                                      pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
76787       : pNext{ pNext_ }
76788       , pointClippingBehavior{ pointClippingBehavior_ }
76789     {
76790     }
76791 
76792     VULKAN_HPP_CONSTEXPR PhysicalDevicePointClippingProperties( PhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76793 
PhysicalDevicePointClippingPropertiesVULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties76794     PhysicalDevicePointClippingProperties( VkPhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT
76795       : PhysicalDevicePointClippingProperties( *reinterpret_cast<PhysicalDevicePointClippingProperties const *>( &rhs ) )
76796     {
76797     }
76798 
76799     PhysicalDevicePointClippingProperties & operator=( PhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76800 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76801 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties76802     PhysicalDevicePointClippingProperties & operator=( VkPhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT
76803     {
76804       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties const *>( &rhs );
76805       return *this;
76806     }
76807 
operator VkPhysicalDevicePointClippingProperties const&VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties76808     operator VkPhysicalDevicePointClippingProperties const &() const VULKAN_HPP_NOEXCEPT
76809     {
76810       return *reinterpret_cast<const VkPhysicalDevicePointClippingProperties *>( this );
76811     }
76812 
operator VkPhysicalDevicePointClippingProperties&VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties76813     operator VkPhysicalDevicePointClippingProperties &() VULKAN_HPP_NOEXCEPT
76814     {
76815       return *reinterpret_cast<VkPhysicalDevicePointClippingProperties *>( this );
76816     }
76817 
76818 #if defined( VULKAN_HPP_USE_REFLECT )
76819 #  if 14 <= VULKAN_HPP_CPP_VERSION
76820     auto
76821 #  else
76822     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PointClippingBehavior const &>
76823 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties76824       reflect() const VULKAN_HPP_NOEXCEPT
76825     {
76826       return std::tie( sType, pNext, pointClippingBehavior );
76827     }
76828 #endif
76829 
76830 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
76831     auto operator<=>( PhysicalDevicePointClippingProperties const & ) const = default;
76832 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties76833     bool operator==( PhysicalDevicePointClippingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
76834     {
76835 #  if defined( VULKAN_HPP_USE_REFLECT )
76836       return this->reflect() == rhs.reflect();
76837 #  else
76838       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pointClippingBehavior == rhs.pointClippingBehavior );
76839 #  endif
76840     }
76841 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties76842     bool operator!=( PhysicalDevicePointClippingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
76843     {
76844       return !operator==( rhs );
76845     }
76846 #endif
76847 
76848   public:
76849     VULKAN_HPP_NAMESPACE::StructureType         sType                 = StructureType::ePhysicalDevicePointClippingProperties;
76850     void *                                      pNext                 = {};
76851     VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior = VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes;
76852   };
76853 
76854   template <>
76855   struct CppType<StructureType, StructureType::ePhysicalDevicePointClippingProperties>
76856   {
76857     using Type = PhysicalDevicePointClippingProperties;
76858   };
76859 
76860   using PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties;
76861 
76862 #if defined( VK_ENABLE_BETA_EXTENSIONS )
76863   struct PhysicalDevicePortabilitySubsetFeaturesKHR
76864   {
76865     using NativeType = VkPhysicalDevicePortabilitySubsetFeaturesKHR;
76866 
76867     static const bool                                  allowDuplicate = false;
76868     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePortabilitySubsetFeaturesKHR;
76869 
76870 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePortabilitySubsetFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR76871     VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 constantAlphaColorBlendFactors_         = {},
76872                                                                      VULKAN_HPP_NAMESPACE::Bool32 events_                                 = {},
76873                                                                      VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatReinterpretation_        = {},
76874                                                                      VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatSwizzle_                 = {},
76875                                                                      VULKAN_HPP_NAMESPACE::Bool32 imageView2DOn3DImage_                   = {},
76876                                                                      VULKAN_HPP_NAMESPACE::Bool32 multisampleArrayImage_                  = {},
76877                                                                      VULKAN_HPP_NAMESPACE::Bool32 mutableComparisonSamplers_              = {},
76878                                                                      VULKAN_HPP_NAMESPACE::Bool32 pointPolygons_                          = {},
76879                                                                      VULKAN_HPP_NAMESPACE::Bool32 samplerMipLodBias_                      = {},
76880                                                                      VULKAN_HPP_NAMESPACE::Bool32 separateStencilMaskRef_                 = {},
76881                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderSampleRateInterpolationFunctions_ = {},
76882                                                                      VULKAN_HPP_NAMESPACE::Bool32 tessellationIsolines_                   = {},
76883                                                                      VULKAN_HPP_NAMESPACE::Bool32 tessellationPointMode_                  = {},
76884                                                                      VULKAN_HPP_NAMESPACE::Bool32 triangleFans_                           = {},
76885                                                                      VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeAccessBeyondStride_      = {},
76886                                                                      void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
76887       : pNext{ pNext_ }
76888       , constantAlphaColorBlendFactors{ constantAlphaColorBlendFactors_ }
76889       , events{ events_ }
76890       , imageViewFormatReinterpretation{ imageViewFormatReinterpretation_ }
76891       , imageViewFormatSwizzle{ imageViewFormatSwizzle_ }
76892       , imageView2DOn3DImage{ imageView2DOn3DImage_ }
76893       , multisampleArrayImage{ multisampleArrayImage_ }
76894       , mutableComparisonSamplers{ mutableComparisonSamplers_ }
76895       , pointPolygons{ pointPolygons_ }
76896       , samplerMipLodBias{ samplerMipLodBias_ }
76897       , separateStencilMaskRef{ separateStencilMaskRef_ }
76898       , shaderSampleRateInterpolationFunctions{ shaderSampleRateInterpolationFunctions_ }
76899       , tessellationIsolines{ tessellationIsolines_ }
76900       , tessellationPointMode{ tessellationPointMode_ }
76901       , triangleFans{ triangleFans_ }
76902       , vertexAttributeAccessBeyondStride{ vertexAttributeAccessBeyondStride_ }
76903     {
76904     }
76905 
76906     VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetFeaturesKHR( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76907 
PhysicalDevicePortabilitySubsetFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR76908     PhysicalDevicePortabilitySubsetFeaturesKHR( VkPhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
76909       : PhysicalDevicePortabilitySubsetFeaturesKHR( *reinterpret_cast<PhysicalDevicePortabilitySubsetFeaturesKHR const *>( &rhs ) )
76910     {
76911     }
76912 
76913     PhysicalDevicePortabilitySubsetFeaturesKHR & operator=( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
76914 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
76915 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR76916     PhysicalDevicePortabilitySubsetFeaturesKHR & operator=( VkPhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
76917     {
76918       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR const *>( &rhs );
76919       return *this;
76920     }
76921 
76922 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR76923     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
76924     {
76925       pNext = pNext_;
76926       return *this;
76927     }
76928 
76929     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setConstantAlphaColorBlendFactorsVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR76930       setConstantAlphaColorBlendFactors( VULKAN_HPP_NAMESPACE::Bool32 constantAlphaColorBlendFactors_ ) VULKAN_HPP_NOEXCEPT
76931     {
76932       constantAlphaColorBlendFactors = constantAlphaColorBlendFactors_;
76933       return *this;
76934     }
76935 
setEventsVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR76936     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setEvents( VULKAN_HPP_NAMESPACE::Bool32 events_ ) VULKAN_HPP_NOEXCEPT
76937     {
76938       events = events_;
76939       return *this;
76940     }
76941 
76942     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setImageViewFormatReinterpretationVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR76943       setImageViewFormatReinterpretation( VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatReinterpretation_ ) VULKAN_HPP_NOEXCEPT
76944     {
76945       imageViewFormatReinterpretation = imageViewFormatReinterpretation_;
76946       return *this;
76947     }
76948 
76949     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setImageViewFormatSwizzleVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR76950       setImageViewFormatSwizzle( VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatSwizzle_ ) VULKAN_HPP_NOEXCEPT
76951     {
76952       imageViewFormatSwizzle = imageViewFormatSwizzle_;
76953       return *this;
76954     }
76955 
76956     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setImageView2DOn3DImageVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR76957       setImageView2DOn3DImage( VULKAN_HPP_NAMESPACE::Bool32 imageView2DOn3DImage_ ) VULKAN_HPP_NOEXCEPT
76958     {
76959       imageView2DOn3DImage = imageView2DOn3DImage_;
76960       return *this;
76961     }
76962 
76963     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setMultisampleArrayImageVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR76964       setMultisampleArrayImage( VULKAN_HPP_NAMESPACE::Bool32 multisampleArrayImage_ ) VULKAN_HPP_NOEXCEPT
76965     {
76966       multisampleArrayImage = multisampleArrayImage_;
76967       return *this;
76968     }
76969 
76970     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setMutableComparisonSamplersVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR76971       setMutableComparisonSamplers( VULKAN_HPP_NAMESPACE::Bool32 mutableComparisonSamplers_ ) VULKAN_HPP_NOEXCEPT
76972     {
76973       mutableComparisonSamplers = mutableComparisonSamplers_;
76974       return *this;
76975     }
76976 
setPointPolygonsVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR76977     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setPointPolygons( VULKAN_HPP_NAMESPACE::Bool32 pointPolygons_ ) VULKAN_HPP_NOEXCEPT
76978     {
76979       pointPolygons = pointPolygons_;
76980       return *this;
76981     }
76982 
76983     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setSamplerMipLodBiasVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR76984       setSamplerMipLodBias( VULKAN_HPP_NAMESPACE::Bool32 samplerMipLodBias_ ) VULKAN_HPP_NOEXCEPT
76985     {
76986       samplerMipLodBias = samplerMipLodBias_;
76987       return *this;
76988     }
76989 
76990     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setSeparateStencilMaskRefVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR76991       setSeparateStencilMaskRef( VULKAN_HPP_NAMESPACE::Bool32 separateStencilMaskRef_ ) VULKAN_HPP_NOEXCEPT
76992     {
76993       separateStencilMaskRef = separateStencilMaskRef_;
76994       return *this;
76995     }
76996 
76997     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setShaderSampleRateInterpolationFunctionsVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR76998       setShaderSampleRateInterpolationFunctions( VULKAN_HPP_NAMESPACE::Bool32 shaderSampleRateInterpolationFunctions_ ) VULKAN_HPP_NOEXCEPT
76999     {
77000       shaderSampleRateInterpolationFunctions = shaderSampleRateInterpolationFunctions_;
77001       return *this;
77002     }
77003 
77004     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setTessellationIsolinesVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR77005       setTessellationIsolines( VULKAN_HPP_NAMESPACE::Bool32 tessellationIsolines_ ) VULKAN_HPP_NOEXCEPT
77006     {
77007       tessellationIsolines = tessellationIsolines_;
77008       return *this;
77009     }
77010 
77011     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setTessellationPointModeVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR77012       setTessellationPointMode( VULKAN_HPP_NAMESPACE::Bool32 tessellationPointMode_ ) VULKAN_HPP_NOEXCEPT
77013     {
77014       tessellationPointMode = tessellationPointMode_;
77015       return *this;
77016     }
77017 
setTriangleFansVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR77018     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setTriangleFans( VULKAN_HPP_NAMESPACE::Bool32 triangleFans_ ) VULKAN_HPP_NOEXCEPT
77019     {
77020       triangleFans = triangleFans_;
77021       return *this;
77022     }
77023 
77024     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR &
setVertexAttributeAccessBeyondStrideVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR77025       setVertexAttributeAccessBeyondStride( VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeAccessBeyondStride_ ) VULKAN_HPP_NOEXCEPT
77026     {
77027       vertexAttributeAccessBeyondStride = vertexAttributeAccessBeyondStride_;
77028       return *this;
77029     }
77030 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77031 
operator VkPhysicalDevicePortabilitySubsetFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR77032     operator VkPhysicalDevicePortabilitySubsetFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
77033     {
77034       return *reinterpret_cast<const VkPhysicalDevicePortabilitySubsetFeaturesKHR *>( this );
77035     }
77036 
operator VkPhysicalDevicePortabilitySubsetFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR77037     operator VkPhysicalDevicePortabilitySubsetFeaturesKHR &() VULKAN_HPP_NOEXCEPT
77038     {
77039       return *reinterpret_cast<VkPhysicalDevicePortabilitySubsetFeaturesKHR *>( this );
77040     }
77041 
77042 #  if defined( VULKAN_HPP_USE_REFLECT )
77043 #    if 14 <= VULKAN_HPP_CPP_VERSION
77044     auto
77045 #    else
77046     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
77047                void * const &,
77048                VULKAN_HPP_NAMESPACE::Bool32 const &,
77049                VULKAN_HPP_NAMESPACE::Bool32 const &,
77050                VULKAN_HPP_NAMESPACE::Bool32 const &,
77051                VULKAN_HPP_NAMESPACE::Bool32 const &,
77052                VULKAN_HPP_NAMESPACE::Bool32 const &,
77053                VULKAN_HPP_NAMESPACE::Bool32 const &,
77054                VULKAN_HPP_NAMESPACE::Bool32 const &,
77055                VULKAN_HPP_NAMESPACE::Bool32 const &,
77056                VULKAN_HPP_NAMESPACE::Bool32 const &,
77057                VULKAN_HPP_NAMESPACE::Bool32 const &,
77058                VULKAN_HPP_NAMESPACE::Bool32 const &,
77059                VULKAN_HPP_NAMESPACE::Bool32 const &,
77060                VULKAN_HPP_NAMESPACE::Bool32 const &,
77061                VULKAN_HPP_NAMESPACE::Bool32 const &,
77062                VULKAN_HPP_NAMESPACE::Bool32 const &>
77063 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR77064       reflect() const VULKAN_HPP_NOEXCEPT
77065     {
77066       return std::tie( sType,
77067                        pNext,
77068                        constantAlphaColorBlendFactors,
77069                        events,
77070                        imageViewFormatReinterpretation,
77071                        imageViewFormatSwizzle,
77072                        imageView2DOn3DImage,
77073                        multisampleArrayImage,
77074                        mutableComparisonSamplers,
77075                        pointPolygons,
77076                        samplerMipLodBias,
77077                        separateStencilMaskRef,
77078                        shaderSampleRateInterpolationFunctions,
77079                        tessellationIsolines,
77080                        tessellationPointMode,
77081                        triangleFans,
77082                        vertexAttributeAccessBeyondStride );
77083     }
77084 #  endif
77085 
77086 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77087     auto operator<=>( PhysicalDevicePortabilitySubsetFeaturesKHR const & ) const = default;
77088 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR77089     bool operator==( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
77090     {
77091 #    if defined( VULKAN_HPP_USE_REFLECT )
77092       return this->reflect() == rhs.reflect();
77093 #    else
77094       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( constantAlphaColorBlendFactors == rhs.constantAlphaColorBlendFactors ) &&
77095              ( events == rhs.events ) && ( imageViewFormatReinterpretation == rhs.imageViewFormatReinterpretation ) &&
77096              ( imageViewFormatSwizzle == rhs.imageViewFormatSwizzle ) && ( imageView2DOn3DImage == rhs.imageView2DOn3DImage ) &&
77097              ( multisampleArrayImage == rhs.multisampleArrayImage ) && ( mutableComparisonSamplers == rhs.mutableComparisonSamplers ) &&
77098              ( pointPolygons == rhs.pointPolygons ) && ( samplerMipLodBias == rhs.samplerMipLodBias ) &&
77099              ( separateStencilMaskRef == rhs.separateStencilMaskRef ) &&
77100              ( shaderSampleRateInterpolationFunctions == rhs.shaderSampleRateInterpolationFunctions ) && ( tessellationIsolines == rhs.tessellationIsolines ) &&
77101              ( tessellationPointMode == rhs.tessellationPointMode ) && ( triangleFans == rhs.triangleFans ) &&
77102              ( vertexAttributeAccessBeyondStride == rhs.vertexAttributeAccessBeyondStride );
77103 #    endif
77104     }
77105 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR77106     bool operator!=( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
77107     {
77108       return !operator==( rhs );
77109     }
77110 #  endif
77111 
77112   public:
77113     VULKAN_HPP_NAMESPACE::StructureType sType                                  = StructureType::ePhysicalDevicePortabilitySubsetFeaturesKHR;
77114     void *                              pNext                                  = {};
77115     VULKAN_HPP_NAMESPACE::Bool32        constantAlphaColorBlendFactors         = {};
77116     VULKAN_HPP_NAMESPACE::Bool32        events                                 = {};
77117     VULKAN_HPP_NAMESPACE::Bool32        imageViewFormatReinterpretation        = {};
77118     VULKAN_HPP_NAMESPACE::Bool32        imageViewFormatSwizzle                 = {};
77119     VULKAN_HPP_NAMESPACE::Bool32        imageView2DOn3DImage                   = {};
77120     VULKAN_HPP_NAMESPACE::Bool32        multisampleArrayImage                  = {};
77121     VULKAN_HPP_NAMESPACE::Bool32        mutableComparisonSamplers              = {};
77122     VULKAN_HPP_NAMESPACE::Bool32        pointPolygons                          = {};
77123     VULKAN_HPP_NAMESPACE::Bool32        samplerMipLodBias                      = {};
77124     VULKAN_HPP_NAMESPACE::Bool32        separateStencilMaskRef                 = {};
77125     VULKAN_HPP_NAMESPACE::Bool32        shaderSampleRateInterpolationFunctions = {};
77126     VULKAN_HPP_NAMESPACE::Bool32        tessellationIsolines                   = {};
77127     VULKAN_HPP_NAMESPACE::Bool32        tessellationPointMode                  = {};
77128     VULKAN_HPP_NAMESPACE::Bool32        triangleFans                           = {};
77129     VULKAN_HPP_NAMESPACE::Bool32        vertexAttributeAccessBeyondStride      = {};
77130   };
77131 
77132   template <>
77133   struct CppType<StructureType, StructureType::ePhysicalDevicePortabilitySubsetFeaturesKHR>
77134   {
77135     using Type = PhysicalDevicePortabilitySubsetFeaturesKHR;
77136   };
77137 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
77138 
77139 #if defined( VK_ENABLE_BETA_EXTENSIONS )
77140   struct PhysicalDevicePortabilitySubsetPropertiesKHR
77141   {
77142     using NativeType = VkPhysicalDevicePortabilitySubsetPropertiesKHR;
77143 
77144     static const bool                                  allowDuplicate = false;
77145     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePortabilitySubsetPropertiesKHR;
77146 
77147 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePortabilitySubsetPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR77148     VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetPropertiesKHR( uint32_t minVertexInputBindingStrideAlignment_ = {},
77149                                                                        void *   pNext_                                = nullptr ) VULKAN_HPP_NOEXCEPT
77150       : pNext{ pNext_ }
77151       , minVertexInputBindingStrideAlignment{ minVertexInputBindingStrideAlignment_ }
77152     {
77153     }
77154 
77155     VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetPropertiesKHR( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77156 
PhysicalDevicePortabilitySubsetPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR77157     PhysicalDevicePortabilitySubsetPropertiesKHR( VkPhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
77158       : PhysicalDevicePortabilitySubsetPropertiesKHR( *reinterpret_cast<PhysicalDevicePortabilitySubsetPropertiesKHR const *>( &rhs ) )
77159     {
77160     }
77161 
77162     PhysicalDevicePortabilitySubsetPropertiesKHR & operator=( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77163 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77164 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR77165     PhysicalDevicePortabilitySubsetPropertiesKHR & operator=( VkPhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
77166     {
77167       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR const *>( &rhs );
77168       return *this;
77169     }
77170 
77171 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR77172     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetPropertiesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
77173     {
77174       pNext = pNext_;
77175       return *this;
77176     }
77177 
77178     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetPropertiesKHR &
setMinVertexInputBindingStrideAlignmentVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR77179       setMinVertexInputBindingStrideAlignment( uint32_t minVertexInputBindingStrideAlignment_ ) VULKAN_HPP_NOEXCEPT
77180     {
77181       minVertexInputBindingStrideAlignment = minVertexInputBindingStrideAlignment_;
77182       return *this;
77183     }
77184 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77185 
operator VkPhysicalDevicePortabilitySubsetPropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR77186     operator VkPhysicalDevicePortabilitySubsetPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
77187     {
77188       return *reinterpret_cast<const VkPhysicalDevicePortabilitySubsetPropertiesKHR *>( this );
77189     }
77190 
operator VkPhysicalDevicePortabilitySubsetPropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR77191     operator VkPhysicalDevicePortabilitySubsetPropertiesKHR &() VULKAN_HPP_NOEXCEPT
77192     {
77193       return *reinterpret_cast<VkPhysicalDevicePortabilitySubsetPropertiesKHR *>( this );
77194     }
77195 
77196 #  if defined( VULKAN_HPP_USE_REFLECT )
77197 #    if 14 <= VULKAN_HPP_CPP_VERSION
77198     auto
77199 #    else
77200     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
77201 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR77202       reflect() const VULKAN_HPP_NOEXCEPT
77203     {
77204       return std::tie( sType, pNext, minVertexInputBindingStrideAlignment );
77205     }
77206 #  endif
77207 
77208 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77209     auto operator<=>( PhysicalDevicePortabilitySubsetPropertiesKHR const & ) const = default;
77210 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR77211     bool operator==( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
77212     {
77213 #    if defined( VULKAN_HPP_USE_REFLECT )
77214       return this->reflect() == rhs.reflect();
77215 #    else
77216       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minVertexInputBindingStrideAlignment == rhs.minVertexInputBindingStrideAlignment );
77217 #    endif
77218     }
77219 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR77220     bool operator!=( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
77221     {
77222       return !operator==( rhs );
77223     }
77224 #  endif
77225 
77226   public:
77227     VULKAN_HPP_NAMESPACE::StructureType sType                                = StructureType::ePhysicalDevicePortabilitySubsetPropertiesKHR;
77228     void *                              pNext                                = {};
77229     uint32_t                            minVertexInputBindingStrideAlignment = {};
77230   };
77231 
77232   template <>
77233   struct CppType<StructureType, StructureType::ePhysicalDevicePortabilitySubsetPropertiesKHR>
77234   {
77235     using Type = PhysicalDevicePortabilitySubsetPropertiesKHR;
77236   };
77237 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
77238 
77239   struct PhysicalDevicePresentBarrierFeaturesNV
77240   {
77241     using NativeType = VkPhysicalDevicePresentBarrierFeaturesNV;
77242 
77243     static const bool                                  allowDuplicate = false;
77244     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePresentBarrierFeaturesNV;
77245 
77246 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePresentBarrierFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV77247     VULKAN_HPP_CONSTEXPR PhysicalDevicePresentBarrierFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 presentBarrier_ = {},
77248                                                                  void *                       pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
77249       : pNext{ pNext_ }
77250       , presentBarrier{ presentBarrier_ }
77251     {
77252     }
77253 
77254     VULKAN_HPP_CONSTEXPR PhysicalDevicePresentBarrierFeaturesNV( PhysicalDevicePresentBarrierFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77255 
PhysicalDevicePresentBarrierFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV77256     PhysicalDevicePresentBarrierFeaturesNV( VkPhysicalDevicePresentBarrierFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
77257       : PhysicalDevicePresentBarrierFeaturesNV( *reinterpret_cast<PhysicalDevicePresentBarrierFeaturesNV const *>( &rhs ) )
77258     {
77259     }
77260 
77261     PhysicalDevicePresentBarrierFeaturesNV & operator=( PhysicalDevicePresentBarrierFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77262 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77263 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV77264     PhysicalDevicePresentBarrierFeaturesNV & operator=( VkPhysicalDevicePresentBarrierFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
77265     {
77266       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV const *>( &rhs );
77267       return *this;
77268     }
77269 
77270 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV77271     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentBarrierFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
77272     {
77273       pNext = pNext_;
77274       return *this;
77275     }
77276 
setPresentBarrierVULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV77277     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentBarrierFeaturesNV & setPresentBarrier( VULKAN_HPP_NAMESPACE::Bool32 presentBarrier_ ) VULKAN_HPP_NOEXCEPT
77278     {
77279       presentBarrier = presentBarrier_;
77280       return *this;
77281     }
77282 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77283 
operator VkPhysicalDevicePresentBarrierFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV77284     operator VkPhysicalDevicePresentBarrierFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
77285     {
77286       return *reinterpret_cast<const VkPhysicalDevicePresentBarrierFeaturesNV *>( this );
77287     }
77288 
operator VkPhysicalDevicePresentBarrierFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV77289     operator VkPhysicalDevicePresentBarrierFeaturesNV &() VULKAN_HPP_NOEXCEPT
77290     {
77291       return *reinterpret_cast<VkPhysicalDevicePresentBarrierFeaturesNV *>( this );
77292     }
77293 
77294 #if defined( VULKAN_HPP_USE_REFLECT )
77295 #  if 14 <= VULKAN_HPP_CPP_VERSION
77296     auto
77297 #  else
77298     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
77299 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV77300       reflect() const VULKAN_HPP_NOEXCEPT
77301     {
77302       return std::tie( sType, pNext, presentBarrier );
77303     }
77304 #endif
77305 
77306 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77307     auto operator<=>( PhysicalDevicePresentBarrierFeaturesNV const & ) const = default;
77308 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV77309     bool operator==( PhysicalDevicePresentBarrierFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
77310     {
77311 #  if defined( VULKAN_HPP_USE_REFLECT )
77312       return this->reflect() == rhs.reflect();
77313 #  else
77314       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentBarrier == rhs.presentBarrier );
77315 #  endif
77316     }
77317 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV77318     bool operator!=( PhysicalDevicePresentBarrierFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
77319     {
77320       return !operator==( rhs );
77321     }
77322 #endif
77323 
77324   public:
77325     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDevicePresentBarrierFeaturesNV;
77326     void *                              pNext          = {};
77327     VULKAN_HPP_NAMESPACE::Bool32        presentBarrier = {};
77328   };
77329 
77330   template <>
77331   struct CppType<StructureType, StructureType::ePhysicalDevicePresentBarrierFeaturesNV>
77332   {
77333     using Type = PhysicalDevicePresentBarrierFeaturesNV;
77334   };
77335 
77336   struct PhysicalDevicePresentIdFeaturesKHR
77337   {
77338     using NativeType = VkPhysicalDevicePresentIdFeaturesKHR;
77339 
77340     static const bool                                  allowDuplicate = false;
77341     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePresentIdFeaturesKHR;
77342 
77343 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePresentIdFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR77344     VULKAN_HPP_CONSTEXPR PhysicalDevicePresentIdFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 presentId_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
77345       : pNext{ pNext_ }
77346       , presentId{ presentId_ }
77347     {
77348     }
77349 
77350     VULKAN_HPP_CONSTEXPR PhysicalDevicePresentIdFeaturesKHR( PhysicalDevicePresentIdFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77351 
PhysicalDevicePresentIdFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR77352     PhysicalDevicePresentIdFeaturesKHR( VkPhysicalDevicePresentIdFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
77353       : PhysicalDevicePresentIdFeaturesKHR( *reinterpret_cast<PhysicalDevicePresentIdFeaturesKHR const *>( &rhs ) )
77354     {
77355     }
77356 
77357     PhysicalDevicePresentIdFeaturesKHR & operator=( PhysicalDevicePresentIdFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77358 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77359 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR77360     PhysicalDevicePresentIdFeaturesKHR & operator=( VkPhysicalDevicePresentIdFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
77361     {
77362       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR const *>( &rhs );
77363       return *this;
77364     }
77365 
77366 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR77367     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentIdFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
77368     {
77369       pNext = pNext_;
77370       return *this;
77371     }
77372 
setPresentIdVULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR77373     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentIdFeaturesKHR & setPresentId( VULKAN_HPP_NAMESPACE::Bool32 presentId_ ) VULKAN_HPP_NOEXCEPT
77374     {
77375       presentId = presentId_;
77376       return *this;
77377     }
77378 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77379 
operator VkPhysicalDevicePresentIdFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR77380     operator VkPhysicalDevicePresentIdFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
77381     {
77382       return *reinterpret_cast<const VkPhysicalDevicePresentIdFeaturesKHR *>( this );
77383     }
77384 
operator VkPhysicalDevicePresentIdFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR77385     operator VkPhysicalDevicePresentIdFeaturesKHR &() VULKAN_HPP_NOEXCEPT
77386     {
77387       return *reinterpret_cast<VkPhysicalDevicePresentIdFeaturesKHR *>( this );
77388     }
77389 
77390 #if defined( VULKAN_HPP_USE_REFLECT )
77391 #  if 14 <= VULKAN_HPP_CPP_VERSION
77392     auto
77393 #  else
77394     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
77395 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR77396       reflect() const VULKAN_HPP_NOEXCEPT
77397     {
77398       return std::tie( sType, pNext, presentId );
77399     }
77400 #endif
77401 
77402 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77403     auto operator<=>( PhysicalDevicePresentIdFeaturesKHR const & ) const = default;
77404 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR77405     bool operator==( PhysicalDevicePresentIdFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
77406     {
77407 #  if defined( VULKAN_HPP_USE_REFLECT )
77408       return this->reflect() == rhs.reflect();
77409 #  else
77410       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentId == rhs.presentId );
77411 #  endif
77412     }
77413 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR77414     bool operator!=( PhysicalDevicePresentIdFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
77415     {
77416       return !operator==( rhs );
77417     }
77418 #endif
77419 
77420   public:
77421     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::ePhysicalDevicePresentIdFeaturesKHR;
77422     void *                              pNext     = {};
77423     VULKAN_HPP_NAMESPACE::Bool32        presentId = {};
77424   };
77425 
77426   template <>
77427   struct CppType<StructureType, StructureType::ePhysicalDevicePresentIdFeaturesKHR>
77428   {
77429     using Type = PhysicalDevicePresentIdFeaturesKHR;
77430   };
77431 
77432   struct PhysicalDevicePresentWaitFeaturesKHR
77433   {
77434     using NativeType = VkPhysicalDevicePresentWaitFeaturesKHR;
77435 
77436     static const bool                                  allowDuplicate = false;
77437     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePresentWaitFeaturesKHR;
77438 
77439 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePresentWaitFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR77440     VULKAN_HPP_CONSTEXPR PhysicalDevicePresentWaitFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 presentWait_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
77441       : pNext{ pNext_ }
77442       , presentWait{ presentWait_ }
77443     {
77444     }
77445 
77446     VULKAN_HPP_CONSTEXPR PhysicalDevicePresentWaitFeaturesKHR( PhysicalDevicePresentWaitFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77447 
PhysicalDevicePresentWaitFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR77448     PhysicalDevicePresentWaitFeaturesKHR( VkPhysicalDevicePresentWaitFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
77449       : PhysicalDevicePresentWaitFeaturesKHR( *reinterpret_cast<PhysicalDevicePresentWaitFeaturesKHR const *>( &rhs ) )
77450     {
77451     }
77452 
77453     PhysicalDevicePresentWaitFeaturesKHR & operator=( PhysicalDevicePresentWaitFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77454 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77455 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR77456     PhysicalDevicePresentWaitFeaturesKHR & operator=( VkPhysicalDevicePresentWaitFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
77457     {
77458       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR const *>( &rhs );
77459       return *this;
77460     }
77461 
77462 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR77463     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentWaitFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
77464     {
77465       pNext = pNext_;
77466       return *this;
77467     }
77468 
setPresentWaitVULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR77469     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentWaitFeaturesKHR & setPresentWait( VULKAN_HPP_NAMESPACE::Bool32 presentWait_ ) VULKAN_HPP_NOEXCEPT
77470     {
77471       presentWait = presentWait_;
77472       return *this;
77473     }
77474 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77475 
operator VkPhysicalDevicePresentWaitFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR77476     operator VkPhysicalDevicePresentWaitFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
77477     {
77478       return *reinterpret_cast<const VkPhysicalDevicePresentWaitFeaturesKHR *>( this );
77479     }
77480 
operator VkPhysicalDevicePresentWaitFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR77481     operator VkPhysicalDevicePresentWaitFeaturesKHR &() VULKAN_HPP_NOEXCEPT
77482     {
77483       return *reinterpret_cast<VkPhysicalDevicePresentWaitFeaturesKHR *>( this );
77484     }
77485 
77486 #if defined( VULKAN_HPP_USE_REFLECT )
77487 #  if 14 <= VULKAN_HPP_CPP_VERSION
77488     auto
77489 #  else
77490     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
77491 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR77492       reflect() const VULKAN_HPP_NOEXCEPT
77493     {
77494       return std::tie( sType, pNext, presentWait );
77495     }
77496 #endif
77497 
77498 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77499     auto operator<=>( PhysicalDevicePresentWaitFeaturesKHR const & ) const = default;
77500 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR77501     bool operator==( PhysicalDevicePresentWaitFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
77502     {
77503 #  if defined( VULKAN_HPP_USE_REFLECT )
77504       return this->reflect() == rhs.reflect();
77505 #  else
77506       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentWait == rhs.presentWait );
77507 #  endif
77508     }
77509 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR77510     bool operator!=( PhysicalDevicePresentWaitFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
77511     {
77512       return !operator==( rhs );
77513     }
77514 #endif
77515 
77516   public:
77517     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::ePhysicalDevicePresentWaitFeaturesKHR;
77518     void *                              pNext       = {};
77519     VULKAN_HPP_NAMESPACE::Bool32        presentWait = {};
77520   };
77521 
77522   template <>
77523   struct CppType<StructureType, StructureType::ePhysicalDevicePresentWaitFeaturesKHR>
77524   {
77525     using Type = PhysicalDevicePresentWaitFeaturesKHR;
77526   };
77527 
77528   struct PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT
77529   {
77530     using NativeType = VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
77531 
77532     static const bool                                  allowDuplicate = false;
77533     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
77534 
77535 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT77536     VULKAN_HPP_CONSTEXPR PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 primitiveTopologyListRestart_      = {},
77537                                                                                 VULKAN_HPP_NAMESPACE::Bool32 primitiveTopologyPatchListRestart_ = {},
77538                                                                                 void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
77539       : pNext{ pNext_ }
77540       , primitiveTopologyListRestart{ primitiveTopologyListRestart_ }
77541       , primitiveTopologyPatchListRestart{ primitiveTopologyPatchListRestart_ }
77542     {
77543     }
77544 
77545     VULKAN_HPP_CONSTEXPR
77546       PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77547 
PhysicalDevicePrimitiveTopologyListRestartFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT77548     PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT( VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
77549       : PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT( *reinterpret_cast<PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const *>( &rhs ) )
77550     {
77551     }
77552 
77553     PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT &
77554       operator=( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77555 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77556 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT77557     PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT & operator=( VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
77558     {
77559       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const *>( &rhs );
77560       return *this;
77561     }
77562 
77563 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT77564     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
77565     {
77566       pNext = pNext_;
77567       return *this;
77568     }
77569 
77570     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT &
setPrimitiveTopologyListRestartVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT77571       setPrimitiveTopologyListRestart( VULKAN_HPP_NAMESPACE::Bool32 primitiveTopologyListRestart_ ) VULKAN_HPP_NOEXCEPT
77572     {
77573       primitiveTopologyListRestart = primitiveTopologyListRestart_;
77574       return *this;
77575     }
77576 
77577     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT &
setPrimitiveTopologyPatchListRestartVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT77578       setPrimitiveTopologyPatchListRestart( VULKAN_HPP_NAMESPACE::Bool32 primitiveTopologyPatchListRestart_ ) VULKAN_HPP_NOEXCEPT
77579     {
77580       primitiveTopologyPatchListRestart = primitiveTopologyPatchListRestart_;
77581       return *this;
77582     }
77583 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77584 
operator VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT77585     operator VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
77586     {
77587       return *reinterpret_cast<const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT *>( this );
77588     }
77589 
operator VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT77590     operator VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT &() VULKAN_HPP_NOEXCEPT
77591     {
77592       return *reinterpret_cast<VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT *>( this );
77593     }
77594 
77595 #if defined( VULKAN_HPP_USE_REFLECT )
77596 #  if 14 <= VULKAN_HPP_CPP_VERSION
77597     auto
77598 #  else
77599     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
77600 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT77601       reflect() const VULKAN_HPP_NOEXCEPT
77602     {
77603       return std::tie( sType, pNext, primitiveTopologyListRestart, primitiveTopologyPatchListRestart );
77604     }
77605 #endif
77606 
77607 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77608     auto operator<=>( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & ) const = default;
77609 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT77610     bool operator==( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
77611     {
77612 #  if defined( VULKAN_HPP_USE_REFLECT )
77613       return this->reflect() == rhs.reflect();
77614 #  else
77615       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( primitiveTopologyListRestart == rhs.primitiveTopologyListRestart ) &&
77616              ( primitiveTopologyPatchListRestart == rhs.primitiveTopologyPatchListRestart );
77617 #  endif
77618     }
77619 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT77620     bool operator!=( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
77621     {
77622       return !operator==( rhs );
77623     }
77624 #endif
77625 
77626   public:
77627     VULKAN_HPP_NAMESPACE::StructureType sType                             = StructureType::ePhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
77628     void *                              pNext                             = {};
77629     VULKAN_HPP_NAMESPACE::Bool32        primitiveTopologyListRestart      = {};
77630     VULKAN_HPP_NAMESPACE::Bool32        primitiveTopologyPatchListRestart = {};
77631   };
77632 
77633   template <>
77634   struct CppType<StructureType, StructureType::ePhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>
77635   {
77636     using Type = PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
77637   };
77638 
77639   struct PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT
77640   {
77641     using NativeType = VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT;
77642 
77643     static const bool                                  allowDuplicate = false;
77644     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePrimitivesGeneratedQueryFeaturesEXT;
77645 
77646 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePrimitivesGeneratedQueryFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT77647     VULKAN_HPP_CONSTEXPR PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 primitivesGeneratedQuery_                      = {},
77648                                                                             VULKAN_HPP_NAMESPACE::Bool32 primitivesGeneratedQueryWithRasterizerDiscard_ = {},
77649                                                                             VULKAN_HPP_NAMESPACE::Bool32 primitivesGeneratedQueryWithNonZeroStreams_    = {},
77650                                                                             void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
77651       : pNext{ pNext_ }
77652       , primitivesGeneratedQuery{ primitivesGeneratedQuery_ }
77653       , primitivesGeneratedQueryWithRasterizerDiscard{ primitivesGeneratedQueryWithRasterizerDiscard_ }
77654       , primitivesGeneratedQueryWithNonZeroStreams{ primitivesGeneratedQueryWithNonZeroStreams_ }
77655     {
77656     }
77657 
77658     VULKAN_HPP_CONSTEXPR
77659       PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT( PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77660 
PhysicalDevicePrimitivesGeneratedQueryFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT77661     PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT( VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
77662       : PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT( *reinterpret_cast<PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const *>( &rhs ) )
77663     {
77664     }
77665 
77666     PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT &
77667       operator=( PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77668 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77669 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT77670     PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT & operator=( VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
77671     {
77672       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const *>( &rhs );
77673       return *this;
77674     }
77675 
77676 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT77677     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
77678     {
77679       pNext = pNext_;
77680       return *this;
77681     }
77682 
77683     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT &
setPrimitivesGeneratedQueryVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT77684       setPrimitivesGeneratedQuery( VULKAN_HPP_NAMESPACE::Bool32 primitivesGeneratedQuery_ ) VULKAN_HPP_NOEXCEPT
77685     {
77686       primitivesGeneratedQuery = primitivesGeneratedQuery_;
77687       return *this;
77688     }
77689 
77690     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT &
setPrimitivesGeneratedQueryWithRasterizerDiscardVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT77691       setPrimitivesGeneratedQueryWithRasterizerDiscard( VULKAN_HPP_NAMESPACE::Bool32 primitivesGeneratedQueryWithRasterizerDiscard_ ) VULKAN_HPP_NOEXCEPT
77692     {
77693       primitivesGeneratedQueryWithRasterizerDiscard = primitivesGeneratedQueryWithRasterizerDiscard_;
77694       return *this;
77695     }
77696 
77697     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT &
setPrimitivesGeneratedQueryWithNonZeroStreamsVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT77698       setPrimitivesGeneratedQueryWithNonZeroStreams( VULKAN_HPP_NAMESPACE::Bool32 primitivesGeneratedQueryWithNonZeroStreams_ ) VULKAN_HPP_NOEXCEPT
77699     {
77700       primitivesGeneratedQueryWithNonZeroStreams = primitivesGeneratedQueryWithNonZeroStreams_;
77701       return *this;
77702     }
77703 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77704 
operator VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT77705     operator VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
77706     {
77707       return *reinterpret_cast<const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *>( this );
77708     }
77709 
operator VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT77710     operator VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT &() VULKAN_HPP_NOEXCEPT
77711     {
77712       return *reinterpret_cast<VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *>( this );
77713     }
77714 
77715 #if defined( VULKAN_HPP_USE_REFLECT )
77716 #  if 14 <= VULKAN_HPP_CPP_VERSION
77717     auto
77718 #  else
77719     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
77720                void * const &,
77721                VULKAN_HPP_NAMESPACE::Bool32 const &,
77722                VULKAN_HPP_NAMESPACE::Bool32 const &,
77723                VULKAN_HPP_NAMESPACE::Bool32 const &>
77724 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT77725       reflect() const VULKAN_HPP_NOEXCEPT
77726     {
77727       return std::tie( sType, pNext, primitivesGeneratedQuery, primitivesGeneratedQueryWithRasterizerDiscard, primitivesGeneratedQueryWithNonZeroStreams );
77728     }
77729 #endif
77730 
77731 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77732     auto operator<=>( PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & ) const = default;
77733 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT77734     bool operator==( PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
77735     {
77736 #  if defined( VULKAN_HPP_USE_REFLECT )
77737       return this->reflect() == rhs.reflect();
77738 #  else
77739       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( primitivesGeneratedQuery == rhs.primitivesGeneratedQuery ) &&
77740              ( primitivesGeneratedQueryWithRasterizerDiscard == rhs.primitivesGeneratedQueryWithRasterizerDiscard ) &&
77741              ( primitivesGeneratedQueryWithNonZeroStreams == rhs.primitivesGeneratedQueryWithNonZeroStreams );
77742 #  endif
77743     }
77744 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT77745     bool operator!=( PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
77746     {
77747       return !operator==( rhs );
77748     }
77749 #endif
77750 
77751   public:
77752     VULKAN_HPP_NAMESPACE::StructureType sType                                         = StructureType::ePhysicalDevicePrimitivesGeneratedQueryFeaturesEXT;
77753     void *                              pNext                                         = {};
77754     VULKAN_HPP_NAMESPACE::Bool32        primitivesGeneratedQuery                      = {};
77755     VULKAN_HPP_NAMESPACE::Bool32        primitivesGeneratedQueryWithRasterizerDiscard = {};
77756     VULKAN_HPP_NAMESPACE::Bool32        primitivesGeneratedQueryWithNonZeroStreams    = {};
77757   };
77758 
77759   template <>
77760   struct CppType<StructureType, StructureType::ePhysicalDevicePrimitivesGeneratedQueryFeaturesEXT>
77761   {
77762     using Type = PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT;
77763   };
77764 
77765   struct PhysicalDevicePrivateDataFeatures
77766   {
77767     using NativeType = VkPhysicalDevicePrivateDataFeatures;
77768 
77769     static const bool                                  allowDuplicate = false;
77770     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePrivateDataFeatures;
77771 
77772 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePrivateDataFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures77773     VULKAN_HPP_CONSTEXPR PhysicalDevicePrivateDataFeatures( VULKAN_HPP_NAMESPACE::Bool32 privateData_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
77774       : pNext{ pNext_ }
77775       , privateData{ privateData_ }
77776     {
77777     }
77778 
77779     VULKAN_HPP_CONSTEXPR PhysicalDevicePrivateDataFeatures( PhysicalDevicePrivateDataFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77780 
PhysicalDevicePrivateDataFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures77781     PhysicalDevicePrivateDataFeatures( VkPhysicalDevicePrivateDataFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
77782       : PhysicalDevicePrivateDataFeatures( *reinterpret_cast<PhysicalDevicePrivateDataFeatures const *>( &rhs ) )
77783     {
77784     }
77785 
77786     PhysicalDevicePrivateDataFeatures & operator=( PhysicalDevicePrivateDataFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77787 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77788 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures77789     PhysicalDevicePrivateDataFeatures & operator=( VkPhysicalDevicePrivateDataFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
77790     {
77791       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures const *>( &rhs );
77792       return *this;
77793     }
77794 
77795 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures77796     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrivateDataFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
77797     {
77798       pNext = pNext_;
77799       return *this;
77800     }
77801 
setPrivateDataVULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures77802     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrivateDataFeatures & setPrivateData( VULKAN_HPP_NAMESPACE::Bool32 privateData_ ) VULKAN_HPP_NOEXCEPT
77803     {
77804       privateData = privateData_;
77805       return *this;
77806     }
77807 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
77808 
operator VkPhysicalDevicePrivateDataFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures77809     operator VkPhysicalDevicePrivateDataFeatures const &() const VULKAN_HPP_NOEXCEPT
77810     {
77811       return *reinterpret_cast<const VkPhysicalDevicePrivateDataFeatures *>( this );
77812     }
77813 
operator VkPhysicalDevicePrivateDataFeatures&VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures77814     operator VkPhysicalDevicePrivateDataFeatures &() VULKAN_HPP_NOEXCEPT
77815     {
77816       return *reinterpret_cast<VkPhysicalDevicePrivateDataFeatures *>( this );
77817     }
77818 
77819 #if defined( VULKAN_HPP_USE_REFLECT )
77820 #  if 14 <= VULKAN_HPP_CPP_VERSION
77821     auto
77822 #  else
77823     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
77824 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures77825       reflect() const VULKAN_HPP_NOEXCEPT
77826     {
77827       return std::tie( sType, pNext, privateData );
77828     }
77829 #endif
77830 
77831 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77832     auto operator<=>( PhysicalDevicePrivateDataFeatures const & ) const = default;
77833 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures77834     bool operator==( PhysicalDevicePrivateDataFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
77835     {
77836 #  if defined( VULKAN_HPP_USE_REFLECT )
77837       return this->reflect() == rhs.reflect();
77838 #  else
77839       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( privateData == rhs.privateData );
77840 #  endif
77841     }
77842 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures77843     bool operator!=( PhysicalDevicePrivateDataFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
77844     {
77845       return !operator==( rhs );
77846     }
77847 #endif
77848 
77849   public:
77850     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::ePhysicalDevicePrivateDataFeatures;
77851     void *                              pNext       = {};
77852     VULKAN_HPP_NAMESPACE::Bool32        privateData = {};
77853   };
77854 
77855   template <>
77856   struct CppType<StructureType, StructureType::ePhysicalDevicePrivateDataFeatures>
77857   {
77858     using Type = PhysicalDevicePrivateDataFeatures;
77859   };
77860 
77861   using PhysicalDevicePrivateDataFeaturesEXT = PhysicalDevicePrivateDataFeatures;
77862 
77863   struct PhysicalDeviceSparseProperties
77864   {
77865     using NativeType = VkPhysicalDeviceSparseProperties;
77866 
77867 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSparsePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties77868     VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseProperties( VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DBlockShape_            = {},
77869                                                          VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DMultisampleBlockShape_ = {},
77870                                                          VULKAN_HPP_NAMESPACE::Bool32 residencyStandard3DBlockShape_            = {},
77871                                                          VULKAN_HPP_NAMESPACE::Bool32 residencyAlignedMipSize_                  = {},
77872                                                          VULKAN_HPP_NAMESPACE::Bool32 residencyNonResidentStrict_               = {} ) VULKAN_HPP_NOEXCEPT
77873       : residencyStandard2DBlockShape{ residencyStandard2DBlockShape_ }
77874       , residencyStandard2DMultisampleBlockShape{ residencyStandard2DMultisampleBlockShape_ }
77875       , residencyStandard3DBlockShape{ residencyStandard3DBlockShape_ }
77876       , residencyAlignedMipSize{ residencyAlignedMipSize_ }
77877       , residencyNonResidentStrict{ residencyNonResidentStrict_ }
77878     {
77879     }
77880 
77881     VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseProperties( PhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77882 
PhysicalDeviceSparsePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties77883     PhysicalDeviceSparseProperties( VkPhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT
77884       : PhysicalDeviceSparseProperties( *reinterpret_cast<PhysicalDeviceSparseProperties const *>( &rhs ) )
77885     {
77886     }
77887 
77888     PhysicalDeviceSparseProperties & operator=( PhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77889 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
77890 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties77891     PhysicalDeviceSparseProperties & operator=( VkPhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT
77892     {
77893       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties const *>( &rhs );
77894       return *this;
77895     }
77896 
operator VkPhysicalDeviceSparseProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties77897     operator VkPhysicalDeviceSparseProperties const &() const VULKAN_HPP_NOEXCEPT
77898     {
77899       return *reinterpret_cast<const VkPhysicalDeviceSparseProperties *>( this );
77900     }
77901 
operator VkPhysicalDeviceSparseProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties77902     operator VkPhysicalDeviceSparseProperties &() VULKAN_HPP_NOEXCEPT
77903     {
77904       return *reinterpret_cast<VkPhysicalDeviceSparseProperties *>( this );
77905     }
77906 
77907 #if defined( VULKAN_HPP_USE_REFLECT )
77908 #  if 14 <= VULKAN_HPP_CPP_VERSION
77909     auto
77910 #  else
77911     std::tuple<VULKAN_HPP_NAMESPACE::Bool32 const &,
77912                VULKAN_HPP_NAMESPACE::Bool32 const &,
77913                VULKAN_HPP_NAMESPACE::Bool32 const &,
77914                VULKAN_HPP_NAMESPACE::Bool32 const &,
77915                VULKAN_HPP_NAMESPACE::Bool32 const &>
77916 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties77917       reflect() const VULKAN_HPP_NOEXCEPT
77918     {
77919       return std::tie( residencyStandard2DBlockShape,
77920                        residencyStandard2DMultisampleBlockShape,
77921                        residencyStandard3DBlockShape,
77922                        residencyAlignedMipSize,
77923                        residencyNonResidentStrict );
77924     }
77925 #endif
77926 
77927 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
77928     auto operator<=>( PhysicalDeviceSparseProperties const & ) const = default;
77929 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties77930     bool operator==( PhysicalDeviceSparseProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
77931     {
77932 #  if defined( VULKAN_HPP_USE_REFLECT )
77933       return this->reflect() == rhs.reflect();
77934 #  else
77935       return ( residencyStandard2DBlockShape == rhs.residencyStandard2DBlockShape ) &&
77936              ( residencyStandard2DMultisampleBlockShape == rhs.residencyStandard2DMultisampleBlockShape ) &&
77937              ( residencyStandard3DBlockShape == rhs.residencyStandard3DBlockShape ) && ( residencyAlignedMipSize == rhs.residencyAlignedMipSize ) &&
77938              ( residencyNonResidentStrict == rhs.residencyNonResidentStrict );
77939 #  endif
77940     }
77941 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties77942     bool operator!=( PhysicalDeviceSparseProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
77943     {
77944       return !operator==( rhs );
77945     }
77946 #endif
77947 
77948   public:
77949     VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DBlockShape            = {};
77950     VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DMultisampleBlockShape = {};
77951     VULKAN_HPP_NAMESPACE::Bool32 residencyStandard3DBlockShape            = {};
77952     VULKAN_HPP_NAMESPACE::Bool32 residencyAlignedMipSize                  = {};
77953     VULKAN_HPP_NAMESPACE::Bool32 residencyNonResidentStrict               = {};
77954   };
77955 
77956   struct PhysicalDeviceProperties
77957   {
77958     using NativeType = VkPhysicalDeviceProperties;
77959 
77960 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceProperties77961     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties( uint32_t                                 apiVersion_    = {},
77962                                                       uint32_t                                 driverVersion_ = {},
77963                                                       uint32_t                                 vendorID_      = {},
77964                                                       uint32_t                                 deviceID_      = {},
77965                                                       VULKAN_HPP_NAMESPACE::PhysicalDeviceType deviceType_ = VULKAN_HPP_NAMESPACE::PhysicalDeviceType::eOther,
77966                                                       std::array<char, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE> const & deviceName_        = {},
77967                                                       std::array<uint8_t, VK_UUID_SIZE> const &                  pipelineCacheUUID_ = {},
77968                                                       VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits                 limits_            = {},
77969                                                       VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties       sparseProperties_  = {} ) VULKAN_HPP_NOEXCEPT
77970       : apiVersion{ apiVersion_ }
77971       , driverVersion{ driverVersion_ }
77972       , vendorID{ vendorID_ }
77973       , deviceID{ deviceID_ }
77974       , deviceType{ deviceType_ }
77975       , deviceName{ deviceName_ }
77976       , pipelineCacheUUID{ pipelineCacheUUID_ }
77977       , limits{ limits_ }
77978       , sparseProperties{ sparseProperties_ }
77979     {
77980     }
77981 
77982     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties( PhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
77983 
PhysicalDevicePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceProperties77984     PhysicalDeviceProperties( VkPhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
77985       : PhysicalDeviceProperties( *reinterpret_cast<PhysicalDeviceProperties const *>( &rhs ) )
77986     {
77987     }
77988 
77989 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PhysicalDevicePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceProperties77990     PhysicalDeviceProperties( uint32_t                                             apiVersion_,
77991                               uint32_t                                             driverVersion_,
77992                               uint32_t                                             vendorID_,
77993                               uint32_t                                             deviceID_,
77994                               VULKAN_HPP_NAMESPACE::PhysicalDeviceType             deviceType_,
77995                               std::string const &                                  deviceName_,
77996                               std::array<uint8_t, VK_UUID_SIZE> const &            pipelineCacheUUID_ = {},
77997                               VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits           limits_            = {},
77998                               VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties sparseProperties_  = {} )
77999       : apiVersion( apiVersion_ )
78000       , driverVersion( driverVersion_ )
78001       , vendorID( vendorID_ )
78002       , deviceID( deviceID_ )
78003       , deviceType( deviceType_ )
78004       , pipelineCacheUUID( pipelineCacheUUID_ )
78005       , limits( limits_ )
78006       , sparseProperties( sparseProperties_ )
78007     {
78008       VULKAN_HPP_ASSERT( deviceName_.size() < VK_MAX_PHYSICAL_DEVICE_NAME_SIZE );
78009 #    if defined( WIN32 )
78010       strncpy_s( deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE, deviceName_.data(), deviceName_.size() );
78011 #    else
78012       strncpy( deviceName, deviceName_.data(), std::min<size_t>( VK_MAX_PHYSICAL_DEVICE_NAME_SIZE, deviceName_.size() ) );
78013 #    endif
78014     }
78015 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
78016 
78017     PhysicalDeviceProperties & operator=( PhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78018 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78019 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties78020     PhysicalDeviceProperties & operator=( VkPhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
78021     {
78022       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties const *>( &rhs );
78023       return *this;
78024     }
78025 
operator VkPhysicalDeviceProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties78026     operator VkPhysicalDeviceProperties const &() const VULKAN_HPP_NOEXCEPT
78027     {
78028       return *reinterpret_cast<const VkPhysicalDeviceProperties *>( this );
78029     }
78030 
operator VkPhysicalDeviceProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties78031     operator VkPhysicalDeviceProperties &() VULKAN_HPP_NOEXCEPT
78032     {
78033       return *reinterpret_cast<VkPhysicalDeviceProperties *>( this );
78034     }
78035 
78036 #if defined( VULKAN_HPP_USE_REFLECT )
78037 #  if 14 <= VULKAN_HPP_CPP_VERSION
78038     auto
78039 #  else
78040     std::tuple<uint32_t const &,
78041                uint32_t const &,
78042                uint32_t const &,
78043                uint32_t const &,
78044                VULKAN_HPP_NAMESPACE::PhysicalDeviceType const &,
78045                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE> const &,
78046                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &,
78047                VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits const &,
78048                VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties const &>
78049 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProperties78050       reflect() const VULKAN_HPP_NOEXCEPT
78051     {
78052       return std::tie( apiVersion, driverVersion, vendorID, deviceID, deviceType, deviceName, pipelineCacheUUID, limits, sparseProperties );
78053     }
78054 #endif
78055 
78056 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties78057     std::partial_ordering operator<=>( PhysicalDeviceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
78058     {
78059       if ( auto cmp = apiVersion <=> rhs.apiVersion; cmp != 0 )
78060         return cmp;
78061       if ( auto cmp = driverVersion <=> rhs.driverVersion; cmp != 0 )
78062         return cmp;
78063       if ( auto cmp = vendorID <=> rhs.vendorID; cmp != 0 )
78064         return cmp;
78065       if ( auto cmp = deviceID <=> rhs.deviceID; cmp != 0 )
78066         return cmp;
78067       if ( auto cmp = deviceType <=> rhs.deviceType; cmp != 0 )
78068         return cmp;
78069       if ( auto cmp = strcmp( deviceName, rhs.deviceName ); cmp != 0 )
78070         return ( cmp < 0 ) ? std::partial_ordering::less : std::partial_ordering::greater;
78071       if ( auto cmp = pipelineCacheUUID <=> rhs.pipelineCacheUUID; cmp != 0 )
78072         return cmp;
78073       if ( auto cmp = limits <=> rhs.limits; cmp != 0 )
78074         return cmp;
78075       if ( auto cmp = sparseProperties <=> rhs.sparseProperties; cmp != 0 )
78076         return cmp;
78077 
78078       return std::partial_ordering::equivalent;
78079     }
78080 #endif
78081 
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties78082     bool operator==( PhysicalDeviceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
78083     {
78084       return ( apiVersion == rhs.apiVersion ) && ( driverVersion == rhs.driverVersion ) && ( vendorID == rhs.vendorID ) && ( deviceID == rhs.deviceID ) &&
78085              ( deviceType == rhs.deviceType ) && ( strcmp( deviceName, rhs.deviceName ) == 0 ) && ( pipelineCacheUUID == rhs.pipelineCacheUUID ) &&
78086              ( limits == rhs.limits ) && ( sparseProperties == rhs.sparseProperties );
78087     }
78088 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties78089     bool operator!=( PhysicalDeviceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
78090     {
78091       return !operator==( rhs );
78092     }
78093 
78094   public:
78095     uint32_t                                                                     apiVersion        = {};
78096     uint32_t                                                                     driverVersion     = {};
78097     uint32_t                                                                     vendorID          = {};
78098     uint32_t                                                                     deviceID          = {};
78099     VULKAN_HPP_NAMESPACE::PhysicalDeviceType                                     deviceType        = VULKAN_HPP_NAMESPACE::PhysicalDeviceType::eOther;
78100     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE> deviceName        = {};
78101     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE>                  pipelineCacheUUID = {};
78102     VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits                                   limits            = {};
78103     VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties                         sparseProperties  = {};
78104   };
78105 
78106   struct PhysicalDeviceProperties2
78107   {
78108     using NativeType = VkPhysicalDeviceProperties2;
78109 
78110     static const bool                                  allowDuplicate = false;
78111     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceProperties2;
78112 
78113 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceProperties2VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties278114     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties2( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties properties_ = {},
78115                                                        void *                                         pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
78116       : pNext{ pNext_ }
78117       , properties{ properties_ }
78118     {
78119     }
78120 
78121     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties2( PhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78122 
PhysicalDeviceProperties2VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties278123     PhysicalDeviceProperties2( VkPhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
78124       : PhysicalDeviceProperties2( *reinterpret_cast<PhysicalDeviceProperties2 const *>( &rhs ) )
78125     {
78126     }
78127 
78128     PhysicalDeviceProperties2 & operator=( PhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78129 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78130 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties278131     PhysicalDeviceProperties2 & operator=( VkPhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
78132     {
78133       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 const *>( &rhs );
78134       return *this;
78135     }
78136 
operator VkPhysicalDeviceProperties2 const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties278137     operator VkPhysicalDeviceProperties2 const &() const VULKAN_HPP_NOEXCEPT
78138     {
78139       return *reinterpret_cast<const VkPhysicalDeviceProperties2 *>( this );
78140     }
78141 
operator VkPhysicalDeviceProperties2&VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties278142     operator VkPhysicalDeviceProperties2 &() VULKAN_HPP_NOEXCEPT
78143     {
78144       return *reinterpret_cast<VkPhysicalDeviceProperties2 *>( this );
78145     }
78146 
78147 #if defined( VULKAN_HPP_USE_REFLECT )
78148 #  if 14 <= VULKAN_HPP_CPP_VERSION
78149     auto
78150 #  else
78151     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties const &>
78152 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProperties278153       reflect() const VULKAN_HPP_NOEXCEPT
78154     {
78155       return std::tie( sType, pNext, properties );
78156     }
78157 #endif
78158 
78159 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78160     auto operator<=>( PhysicalDeviceProperties2 const & ) const = default;
78161 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties278162     bool operator==( PhysicalDeviceProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
78163     {
78164 #  if defined( VULKAN_HPP_USE_REFLECT )
78165       return this->reflect() == rhs.reflect();
78166 #  else
78167       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( properties == rhs.properties );
78168 #  endif
78169     }
78170 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties278171     bool operator!=( PhysicalDeviceProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
78172     {
78173       return !operator==( rhs );
78174     }
78175 #endif
78176 
78177   public:
78178     VULKAN_HPP_NAMESPACE::StructureType            sType      = StructureType::ePhysicalDeviceProperties2;
78179     void *                                         pNext      = {};
78180     VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties properties = {};
78181   };
78182 
78183   template <>
78184   struct CppType<StructureType, StructureType::ePhysicalDeviceProperties2>
78185   {
78186     using Type = PhysicalDeviceProperties2;
78187   };
78188 
78189   using PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2;
78190 
78191   struct PhysicalDeviceProtectedMemoryFeatures
78192   {
78193     using NativeType = VkPhysicalDeviceProtectedMemoryFeatures;
78194 
78195     static const bool                                  allowDuplicate = false;
78196     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceProtectedMemoryFeatures;
78197 
78198 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceProtectedMemoryFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures78199     VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryFeatures( VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_ = {},
78200                                                                 void *                       pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
78201       : pNext{ pNext_ }
78202       , protectedMemory{ protectedMemory_ }
78203     {
78204     }
78205 
78206     VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryFeatures( PhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78207 
PhysicalDeviceProtectedMemoryFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures78208     PhysicalDeviceProtectedMemoryFeatures( VkPhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
78209       : PhysicalDeviceProtectedMemoryFeatures( *reinterpret_cast<PhysicalDeviceProtectedMemoryFeatures const *>( &rhs ) )
78210     {
78211     }
78212 
78213     PhysicalDeviceProtectedMemoryFeatures & operator=( PhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78214 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78215 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures78216     PhysicalDeviceProtectedMemoryFeatures & operator=( VkPhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
78217     {
78218       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures const *>( &rhs );
78219       return *this;
78220     }
78221 
78222 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures78223     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProtectedMemoryFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
78224     {
78225       pNext = pNext_;
78226       return *this;
78227     }
78228 
setProtectedMemoryVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures78229     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProtectedMemoryFeatures & setProtectedMemory( VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_ ) VULKAN_HPP_NOEXCEPT
78230     {
78231       protectedMemory = protectedMemory_;
78232       return *this;
78233     }
78234 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
78235 
operator VkPhysicalDeviceProtectedMemoryFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures78236     operator VkPhysicalDeviceProtectedMemoryFeatures const &() const VULKAN_HPP_NOEXCEPT
78237     {
78238       return *reinterpret_cast<const VkPhysicalDeviceProtectedMemoryFeatures *>( this );
78239     }
78240 
operator VkPhysicalDeviceProtectedMemoryFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures78241     operator VkPhysicalDeviceProtectedMemoryFeatures &() VULKAN_HPP_NOEXCEPT
78242     {
78243       return *reinterpret_cast<VkPhysicalDeviceProtectedMemoryFeatures *>( this );
78244     }
78245 
78246 #if defined( VULKAN_HPP_USE_REFLECT )
78247 #  if 14 <= VULKAN_HPP_CPP_VERSION
78248     auto
78249 #  else
78250     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
78251 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures78252       reflect() const VULKAN_HPP_NOEXCEPT
78253     {
78254       return std::tie( sType, pNext, protectedMemory );
78255     }
78256 #endif
78257 
78258 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78259     auto operator<=>( PhysicalDeviceProtectedMemoryFeatures const & ) const = default;
78260 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures78261     bool operator==( PhysicalDeviceProtectedMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
78262     {
78263 #  if defined( VULKAN_HPP_USE_REFLECT )
78264       return this->reflect() == rhs.reflect();
78265 #  else
78266       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( protectedMemory == rhs.protectedMemory );
78267 #  endif
78268     }
78269 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures78270     bool operator!=( PhysicalDeviceProtectedMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
78271     {
78272       return !operator==( rhs );
78273     }
78274 #endif
78275 
78276   public:
78277     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::ePhysicalDeviceProtectedMemoryFeatures;
78278     void *                              pNext           = {};
78279     VULKAN_HPP_NAMESPACE::Bool32        protectedMemory = {};
78280   };
78281 
78282   template <>
78283   struct CppType<StructureType, StructureType::ePhysicalDeviceProtectedMemoryFeatures>
78284   {
78285     using Type = PhysicalDeviceProtectedMemoryFeatures;
78286   };
78287 
78288   struct PhysicalDeviceProtectedMemoryProperties
78289   {
78290     using NativeType = VkPhysicalDeviceProtectedMemoryProperties;
78291 
78292     static const bool                                  allowDuplicate = false;
78293     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceProtectedMemoryProperties;
78294 
78295 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceProtectedMemoryPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties78296     VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryProperties( VULKAN_HPP_NAMESPACE::Bool32 protectedNoFault_ = {},
78297                                                                   void *                       pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
78298       : pNext{ pNext_ }
78299       , protectedNoFault{ protectedNoFault_ }
78300     {
78301     }
78302 
78303     VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryProperties( PhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78304 
PhysicalDeviceProtectedMemoryPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties78305     PhysicalDeviceProtectedMemoryProperties( VkPhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
78306       : PhysicalDeviceProtectedMemoryProperties( *reinterpret_cast<PhysicalDeviceProtectedMemoryProperties const *>( &rhs ) )
78307     {
78308     }
78309 
78310     PhysicalDeviceProtectedMemoryProperties & operator=( PhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78311 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78312 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties78313     PhysicalDeviceProtectedMemoryProperties & operator=( VkPhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
78314     {
78315       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties const *>( &rhs );
78316       return *this;
78317     }
78318 
operator VkPhysicalDeviceProtectedMemoryProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties78319     operator VkPhysicalDeviceProtectedMemoryProperties const &() const VULKAN_HPP_NOEXCEPT
78320     {
78321       return *reinterpret_cast<const VkPhysicalDeviceProtectedMemoryProperties *>( this );
78322     }
78323 
operator VkPhysicalDeviceProtectedMemoryProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties78324     operator VkPhysicalDeviceProtectedMemoryProperties &() VULKAN_HPP_NOEXCEPT
78325     {
78326       return *reinterpret_cast<VkPhysicalDeviceProtectedMemoryProperties *>( this );
78327     }
78328 
78329 #if defined( VULKAN_HPP_USE_REFLECT )
78330 #  if 14 <= VULKAN_HPP_CPP_VERSION
78331     auto
78332 #  else
78333     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
78334 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties78335       reflect() const VULKAN_HPP_NOEXCEPT
78336     {
78337       return std::tie( sType, pNext, protectedNoFault );
78338     }
78339 #endif
78340 
78341 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78342     auto operator<=>( PhysicalDeviceProtectedMemoryProperties const & ) const = default;
78343 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties78344     bool operator==( PhysicalDeviceProtectedMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
78345     {
78346 #  if defined( VULKAN_HPP_USE_REFLECT )
78347       return this->reflect() == rhs.reflect();
78348 #  else
78349       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( protectedNoFault == rhs.protectedNoFault );
78350 #  endif
78351     }
78352 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties78353     bool operator!=( PhysicalDeviceProtectedMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
78354     {
78355       return !operator==( rhs );
78356     }
78357 #endif
78358 
78359   public:
78360     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceProtectedMemoryProperties;
78361     void *                              pNext            = {};
78362     VULKAN_HPP_NAMESPACE::Bool32        protectedNoFault = {};
78363   };
78364 
78365   template <>
78366   struct CppType<StructureType, StructureType::ePhysicalDeviceProtectedMemoryProperties>
78367   {
78368     using Type = PhysicalDeviceProtectedMemoryProperties;
78369   };
78370 
78371   struct PhysicalDeviceProvokingVertexFeaturesEXT
78372   {
78373     using NativeType = VkPhysicalDeviceProvokingVertexFeaturesEXT;
78374 
78375     static const bool                                  allowDuplicate = false;
78376     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceProvokingVertexFeaturesEXT;
78377 
78378 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceProvokingVertexFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT78379     VULKAN_HPP_CONSTEXPR PhysicalDeviceProvokingVertexFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 provokingVertexLast_                       = {},
78380                                                                    VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackPreservesProvokingVertex_ = {},
78381                                                                    void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
78382       : pNext{ pNext_ }
78383       , provokingVertexLast{ provokingVertexLast_ }
78384       , transformFeedbackPreservesProvokingVertex{ transformFeedbackPreservesProvokingVertex_ }
78385     {
78386     }
78387 
78388     VULKAN_HPP_CONSTEXPR PhysicalDeviceProvokingVertexFeaturesEXT( PhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78389 
PhysicalDeviceProvokingVertexFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT78390     PhysicalDeviceProvokingVertexFeaturesEXT( VkPhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
78391       : PhysicalDeviceProvokingVertexFeaturesEXT( *reinterpret_cast<PhysicalDeviceProvokingVertexFeaturesEXT const *>( &rhs ) )
78392     {
78393     }
78394 
78395     PhysicalDeviceProvokingVertexFeaturesEXT & operator=( PhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78396 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78397 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT78398     PhysicalDeviceProvokingVertexFeaturesEXT & operator=( VkPhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
78399     {
78400       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT const *>( &rhs );
78401       return *this;
78402     }
78403 
78404 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT78405     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProvokingVertexFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
78406     {
78407       pNext = pNext_;
78408       return *this;
78409     }
78410 
78411     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProvokingVertexFeaturesEXT &
setProvokingVertexLastVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT78412       setProvokingVertexLast( VULKAN_HPP_NAMESPACE::Bool32 provokingVertexLast_ ) VULKAN_HPP_NOEXCEPT
78413     {
78414       provokingVertexLast = provokingVertexLast_;
78415       return *this;
78416     }
78417 
78418     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProvokingVertexFeaturesEXT &
setTransformFeedbackPreservesProvokingVertexVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT78419       setTransformFeedbackPreservesProvokingVertex( VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackPreservesProvokingVertex_ ) VULKAN_HPP_NOEXCEPT
78420     {
78421       transformFeedbackPreservesProvokingVertex = transformFeedbackPreservesProvokingVertex_;
78422       return *this;
78423     }
78424 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
78425 
operator VkPhysicalDeviceProvokingVertexFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT78426     operator VkPhysicalDeviceProvokingVertexFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
78427     {
78428       return *reinterpret_cast<const VkPhysicalDeviceProvokingVertexFeaturesEXT *>( this );
78429     }
78430 
operator VkPhysicalDeviceProvokingVertexFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT78431     operator VkPhysicalDeviceProvokingVertexFeaturesEXT &() VULKAN_HPP_NOEXCEPT
78432     {
78433       return *reinterpret_cast<VkPhysicalDeviceProvokingVertexFeaturesEXT *>( this );
78434     }
78435 
78436 #if defined( VULKAN_HPP_USE_REFLECT )
78437 #  if 14 <= VULKAN_HPP_CPP_VERSION
78438     auto
78439 #  else
78440     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
78441 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT78442       reflect() const VULKAN_HPP_NOEXCEPT
78443     {
78444       return std::tie( sType, pNext, provokingVertexLast, transformFeedbackPreservesProvokingVertex );
78445     }
78446 #endif
78447 
78448 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78449     auto operator<=>( PhysicalDeviceProvokingVertexFeaturesEXT const & ) const = default;
78450 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT78451     bool operator==( PhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
78452     {
78453 #  if defined( VULKAN_HPP_USE_REFLECT )
78454       return this->reflect() == rhs.reflect();
78455 #  else
78456       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( provokingVertexLast == rhs.provokingVertexLast ) &&
78457              ( transformFeedbackPreservesProvokingVertex == rhs.transformFeedbackPreservesProvokingVertex );
78458 #  endif
78459     }
78460 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT78461     bool operator!=( PhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
78462     {
78463       return !operator==( rhs );
78464     }
78465 #endif
78466 
78467   public:
78468     VULKAN_HPP_NAMESPACE::StructureType sType                                     = StructureType::ePhysicalDeviceProvokingVertexFeaturesEXT;
78469     void *                              pNext                                     = {};
78470     VULKAN_HPP_NAMESPACE::Bool32        provokingVertexLast                       = {};
78471     VULKAN_HPP_NAMESPACE::Bool32        transformFeedbackPreservesProvokingVertex = {};
78472   };
78473 
78474   template <>
78475   struct CppType<StructureType, StructureType::ePhysicalDeviceProvokingVertexFeaturesEXT>
78476   {
78477     using Type = PhysicalDeviceProvokingVertexFeaturesEXT;
78478   };
78479 
78480   struct PhysicalDeviceProvokingVertexPropertiesEXT
78481   {
78482     using NativeType = VkPhysicalDeviceProvokingVertexPropertiesEXT;
78483 
78484     static const bool                                  allowDuplicate = false;
78485     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceProvokingVertexPropertiesEXT;
78486 
78487 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceProvokingVertexPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT78488     VULKAN_HPP_CONSTEXPR PhysicalDeviceProvokingVertexPropertiesEXT( VULKAN_HPP_NAMESPACE::Bool32 provokingVertexModePerPipeline_                       = {},
78489                                                                      VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackPreservesTriangleFanProvokingVertex_ = {},
78490                                                                      void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
78491       : pNext{ pNext_ }
78492       , provokingVertexModePerPipeline{ provokingVertexModePerPipeline_ }
78493       , transformFeedbackPreservesTriangleFanProvokingVertex{ transformFeedbackPreservesTriangleFanProvokingVertex_ }
78494     {
78495     }
78496 
78497     VULKAN_HPP_CONSTEXPR PhysicalDeviceProvokingVertexPropertiesEXT( PhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78498 
PhysicalDeviceProvokingVertexPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT78499     PhysicalDeviceProvokingVertexPropertiesEXT( VkPhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
78500       : PhysicalDeviceProvokingVertexPropertiesEXT( *reinterpret_cast<PhysicalDeviceProvokingVertexPropertiesEXT const *>( &rhs ) )
78501     {
78502     }
78503 
78504     PhysicalDeviceProvokingVertexPropertiesEXT & operator=( PhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78505 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78506 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT78507     PhysicalDeviceProvokingVertexPropertiesEXT & operator=( VkPhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
78508     {
78509       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT const *>( &rhs );
78510       return *this;
78511     }
78512 
operator VkPhysicalDeviceProvokingVertexPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT78513     operator VkPhysicalDeviceProvokingVertexPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
78514     {
78515       return *reinterpret_cast<const VkPhysicalDeviceProvokingVertexPropertiesEXT *>( this );
78516     }
78517 
operator VkPhysicalDeviceProvokingVertexPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT78518     operator VkPhysicalDeviceProvokingVertexPropertiesEXT &() VULKAN_HPP_NOEXCEPT
78519     {
78520       return *reinterpret_cast<VkPhysicalDeviceProvokingVertexPropertiesEXT *>( this );
78521     }
78522 
78523 #if defined( VULKAN_HPP_USE_REFLECT )
78524 #  if 14 <= VULKAN_HPP_CPP_VERSION
78525     auto
78526 #  else
78527     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
78528 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT78529       reflect() const VULKAN_HPP_NOEXCEPT
78530     {
78531       return std::tie( sType, pNext, provokingVertexModePerPipeline, transformFeedbackPreservesTriangleFanProvokingVertex );
78532     }
78533 #endif
78534 
78535 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78536     auto operator<=>( PhysicalDeviceProvokingVertexPropertiesEXT const & ) const = default;
78537 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT78538     bool operator==( PhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
78539     {
78540 #  if defined( VULKAN_HPP_USE_REFLECT )
78541       return this->reflect() == rhs.reflect();
78542 #  else
78543       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( provokingVertexModePerPipeline == rhs.provokingVertexModePerPipeline ) &&
78544              ( transformFeedbackPreservesTriangleFanProvokingVertex == rhs.transformFeedbackPreservesTriangleFanProvokingVertex );
78545 #  endif
78546     }
78547 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT78548     bool operator!=( PhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
78549     {
78550       return !operator==( rhs );
78551     }
78552 #endif
78553 
78554   public:
78555     VULKAN_HPP_NAMESPACE::StructureType sType                                                = StructureType::ePhysicalDeviceProvokingVertexPropertiesEXT;
78556     void *                              pNext                                                = {};
78557     VULKAN_HPP_NAMESPACE::Bool32        provokingVertexModePerPipeline                       = {};
78558     VULKAN_HPP_NAMESPACE::Bool32        transformFeedbackPreservesTriangleFanProvokingVertex = {};
78559   };
78560 
78561   template <>
78562   struct CppType<StructureType, StructureType::ePhysicalDeviceProvokingVertexPropertiesEXT>
78563   {
78564     using Type = PhysicalDeviceProvokingVertexPropertiesEXT;
78565   };
78566 
78567   struct PhysicalDevicePushDescriptorPropertiesKHR
78568   {
78569     using NativeType = VkPhysicalDevicePushDescriptorPropertiesKHR;
78570 
78571     static const bool                                  allowDuplicate = false;
78572     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDevicePushDescriptorPropertiesKHR;
78573 
78574 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePushDescriptorPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR78575     VULKAN_HPP_CONSTEXPR PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
78576       : pNext{ pNext_ }
78577       , maxPushDescriptors{ maxPushDescriptors_ }
78578     {
78579     }
78580 
78581     VULKAN_HPP_CONSTEXPR PhysicalDevicePushDescriptorPropertiesKHR( PhysicalDevicePushDescriptorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78582 
PhysicalDevicePushDescriptorPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR78583     PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
78584       : PhysicalDevicePushDescriptorPropertiesKHR( *reinterpret_cast<PhysicalDevicePushDescriptorPropertiesKHR const *>( &rhs ) )
78585     {
78586     }
78587 
78588     PhysicalDevicePushDescriptorPropertiesKHR & operator=( PhysicalDevicePushDescriptorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78589 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78590 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR78591     PhysicalDevicePushDescriptorPropertiesKHR & operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
78592     {
78593       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR const *>( &rhs );
78594       return *this;
78595     }
78596 
operator VkPhysicalDevicePushDescriptorPropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR78597     operator VkPhysicalDevicePushDescriptorPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
78598     {
78599       return *reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR *>( this );
78600     }
78601 
operator VkPhysicalDevicePushDescriptorPropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR78602     operator VkPhysicalDevicePushDescriptorPropertiesKHR &() VULKAN_HPP_NOEXCEPT
78603     {
78604       return *reinterpret_cast<VkPhysicalDevicePushDescriptorPropertiesKHR *>( this );
78605     }
78606 
78607 #if defined( VULKAN_HPP_USE_REFLECT )
78608 #  if 14 <= VULKAN_HPP_CPP_VERSION
78609     auto
78610 #  else
78611     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
78612 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR78613       reflect() const VULKAN_HPP_NOEXCEPT
78614     {
78615       return std::tie( sType, pNext, maxPushDescriptors );
78616     }
78617 #endif
78618 
78619 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78620     auto operator<=>( PhysicalDevicePushDescriptorPropertiesKHR const & ) const = default;
78621 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR78622     bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
78623     {
78624 #  if defined( VULKAN_HPP_USE_REFLECT )
78625       return this->reflect() == rhs.reflect();
78626 #  else
78627       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxPushDescriptors == rhs.maxPushDescriptors );
78628 #  endif
78629     }
78630 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR78631     bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
78632     {
78633       return !operator==( rhs );
78634     }
78635 #endif
78636 
78637   public:
78638     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDevicePushDescriptorPropertiesKHR;
78639     void *                              pNext              = {};
78640     uint32_t                            maxPushDescriptors = {};
78641   };
78642 
78643   template <>
78644   struct CppType<StructureType, StructureType::ePhysicalDevicePushDescriptorPropertiesKHR>
78645   {
78646     using Type = PhysicalDevicePushDescriptorPropertiesKHR;
78647   };
78648 
78649   struct PhysicalDeviceRGBA10X6FormatsFeaturesEXT
78650   {
78651     using NativeType = VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT;
78652 
78653     static const bool                                  allowDuplicate = false;
78654     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRgba10X6FormatsFeaturesEXT;
78655 
78656 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRGBA10X6FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT78657     VULKAN_HPP_CONSTEXPR PhysicalDeviceRGBA10X6FormatsFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 formatRgba10x6WithoutYCbCrSampler_ = {},
78658                                                                    void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
78659       : pNext{ pNext_ }
78660       , formatRgba10x6WithoutYCbCrSampler{ formatRgba10x6WithoutYCbCrSampler_ }
78661     {
78662     }
78663 
78664     VULKAN_HPP_CONSTEXPR PhysicalDeviceRGBA10X6FormatsFeaturesEXT( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78665 
PhysicalDeviceRGBA10X6FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT78666     PhysicalDeviceRGBA10X6FormatsFeaturesEXT( VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
78667       : PhysicalDeviceRGBA10X6FormatsFeaturesEXT( *reinterpret_cast<PhysicalDeviceRGBA10X6FormatsFeaturesEXT const *>( &rhs ) )
78668     {
78669     }
78670 
78671     PhysicalDeviceRGBA10X6FormatsFeaturesEXT & operator=( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78672 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78673 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT78674     PhysicalDeviceRGBA10X6FormatsFeaturesEXT & operator=( VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
78675     {
78676       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT const *>( &rhs );
78677       return *this;
78678     }
78679 
78680 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT78681     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRGBA10X6FormatsFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
78682     {
78683       pNext = pNext_;
78684       return *this;
78685     }
78686 
78687     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRGBA10X6FormatsFeaturesEXT &
setFormatRgba10x6WithoutYCbCrSamplerVULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT78688       setFormatRgba10x6WithoutYCbCrSampler( VULKAN_HPP_NAMESPACE::Bool32 formatRgba10x6WithoutYCbCrSampler_ ) VULKAN_HPP_NOEXCEPT
78689     {
78690       formatRgba10x6WithoutYCbCrSampler = formatRgba10x6WithoutYCbCrSampler_;
78691       return *this;
78692     }
78693 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
78694 
operator VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT78695     operator VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
78696     {
78697       return *reinterpret_cast<const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT *>( this );
78698     }
78699 
operator VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT78700     operator VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT &() VULKAN_HPP_NOEXCEPT
78701     {
78702       return *reinterpret_cast<VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT *>( this );
78703     }
78704 
78705 #if defined( VULKAN_HPP_USE_REFLECT )
78706 #  if 14 <= VULKAN_HPP_CPP_VERSION
78707     auto
78708 #  else
78709     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
78710 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT78711       reflect() const VULKAN_HPP_NOEXCEPT
78712     {
78713       return std::tie( sType, pNext, formatRgba10x6WithoutYCbCrSampler );
78714     }
78715 #endif
78716 
78717 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78718     auto operator<=>( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & ) const = default;
78719 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT78720     bool operator==( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
78721     {
78722 #  if defined( VULKAN_HPP_USE_REFLECT )
78723       return this->reflect() == rhs.reflect();
78724 #  else
78725       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( formatRgba10x6WithoutYCbCrSampler == rhs.formatRgba10x6WithoutYCbCrSampler );
78726 #  endif
78727     }
78728 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT78729     bool operator!=( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
78730     {
78731       return !operator==( rhs );
78732     }
78733 #endif
78734 
78735   public:
78736     VULKAN_HPP_NAMESPACE::StructureType sType                             = StructureType::ePhysicalDeviceRgba10X6FormatsFeaturesEXT;
78737     void *                              pNext                             = {};
78738     VULKAN_HPP_NAMESPACE::Bool32        formatRgba10x6WithoutYCbCrSampler = {};
78739   };
78740 
78741   template <>
78742   struct CppType<StructureType, StructureType::ePhysicalDeviceRgba10X6FormatsFeaturesEXT>
78743   {
78744     using Type = PhysicalDeviceRGBA10X6FormatsFeaturesEXT;
78745   };
78746 
78747   struct PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT
78748   {
78749     using NativeType = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
78750 
78751     static const bool                                  allowDuplicate = false;
78752     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
78753 
78754 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
78755     VULKAN_HPP_CONSTEXPR
PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT78756       PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderColorAttachmentAccess_   = {},
78757                                                                    VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderDepthAttachmentAccess_   = {},
78758                                                                    VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderStencilAttachmentAccess_ = {},
78759                                                                    void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
78760       : pNext{ pNext_ }
78761       , rasterizationOrderColorAttachmentAccess{ rasterizationOrderColorAttachmentAccess_ }
78762       , rasterizationOrderDepthAttachmentAccess{ rasterizationOrderDepthAttachmentAccess_ }
78763       , rasterizationOrderStencilAttachmentAccess{ rasterizationOrderStencilAttachmentAccess_ }
78764     {
78765     }
78766 
78767     VULKAN_HPP_CONSTEXPR PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT( PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & rhs )
78768       VULKAN_HPP_NOEXCEPT = default;
78769 
PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT78770     PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT( VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
78771       : PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT(
78772           *reinterpret_cast<PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const *>( &rhs ) )
78773     {
78774     }
78775 
78776     PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT &
78777       operator=( PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78778 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78779 
78780     PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT78781       operator=( VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
78782     {
78783       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const *>( &rhs );
78784       return *this;
78785     }
78786 
78787 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT78788     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
78789     {
78790       pNext = pNext_;
78791       return *this;
78792     }
78793 
78794     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT &
setRasterizationOrderColorAttachmentAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT78795       setRasterizationOrderColorAttachmentAccess( VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderColorAttachmentAccess_ ) VULKAN_HPP_NOEXCEPT
78796     {
78797       rasterizationOrderColorAttachmentAccess = rasterizationOrderColorAttachmentAccess_;
78798       return *this;
78799     }
78800 
78801     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT &
setRasterizationOrderDepthAttachmentAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT78802       setRasterizationOrderDepthAttachmentAccess( VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderDepthAttachmentAccess_ ) VULKAN_HPP_NOEXCEPT
78803     {
78804       rasterizationOrderDepthAttachmentAccess = rasterizationOrderDepthAttachmentAccess_;
78805       return *this;
78806     }
78807 
78808     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT &
setRasterizationOrderStencilAttachmentAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT78809       setRasterizationOrderStencilAttachmentAccess( VULKAN_HPP_NAMESPACE::Bool32 rasterizationOrderStencilAttachmentAccess_ ) VULKAN_HPP_NOEXCEPT
78810     {
78811       rasterizationOrderStencilAttachmentAccess = rasterizationOrderStencilAttachmentAccess_;
78812       return *this;
78813     }
78814 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
78815 
operator VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT78816     operator VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
78817     {
78818       return *reinterpret_cast<const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT *>( this );
78819     }
78820 
operator VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT78821     operator VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT &() VULKAN_HPP_NOEXCEPT
78822     {
78823       return *reinterpret_cast<VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT *>( this );
78824     }
78825 
78826 #if defined( VULKAN_HPP_USE_REFLECT )
78827 #  if 14 <= VULKAN_HPP_CPP_VERSION
78828     auto
78829 #  else
78830     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
78831                void * const &,
78832                VULKAN_HPP_NAMESPACE::Bool32 const &,
78833                VULKAN_HPP_NAMESPACE::Bool32 const &,
78834                VULKAN_HPP_NAMESPACE::Bool32 const &>
78835 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT78836       reflect() const VULKAN_HPP_NOEXCEPT
78837     {
78838       return std::tie(
78839         sType, pNext, rasterizationOrderColorAttachmentAccess, rasterizationOrderDepthAttachmentAccess, rasterizationOrderStencilAttachmentAccess );
78840     }
78841 #endif
78842 
78843 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78844     auto operator<=>( PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & ) const = default;
78845 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT78846     bool operator==( PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
78847     {
78848 #  if defined( VULKAN_HPP_USE_REFLECT )
78849       return this->reflect() == rhs.reflect();
78850 #  else
78851       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rasterizationOrderColorAttachmentAccess == rhs.rasterizationOrderColorAttachmentAccess ) &&
78852              ( rasterizationOrderDepthAttachmentAccess == rhs.rasterizationOrderDepthAttachmentAccess ) &&
78853              ( rasterizationOrderStencilAttachmentAccess == rhs.rasterizationOrderStencilAttachmentAccess );
78854 #  endif
78855     }
78856 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT78857     bool operator!=( PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
78858     {
78859       return !operator==( rhs );
78860     }
78861 #endif
78862 
78863   public:
78864     VULKAN_HPP_NAMESPACE::StructureType sType                                     = StructureType::ePhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
78865     void *                              pNext                                     = {};
78866     VULKAN_HPP_NAMESPACE::Bool32        rasterizationOrderColorAttachmentAccess   = {};
78867     VULKAN_HPP_NAMESPACE::Bool32        rasterizationOrderDepthAttachmentAccess   = {};
78868     VULKAN_HPP_NAMESPACE::Bool32        rasterizationOrderStencilAttachmentAccess = {};
78869   };
78870 
78871   template <>
78872   struct CppType<StructureType, StructureType::ePhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT>
78873   {
78874     using Type = PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
78875   };
78876 
78877   using PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
78878 
78879   struct PhysicalDeviceRawAccessChainsFeaturesNV
78880   {
78881     using NativeType = VkPhysicalDeviceRawAccessChainsFeaturesNV;
78882 
78883     static const bool                                  allowDuplicate = false;
78884     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRawAccessChainsFeaturesNV;
78885 
78886 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRawAccessChainsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV78887     VULKAN_HPP_CONSTEXPR PhysicalDeviceRawAccessChainsFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 shaderRawAccessChains_ = {},
78888                                                                   void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
78889       : pNext{ pNext_ }
78890       , shaderRawAccessChains{ shaderRawAccessChains_ }
78891     {
78892     }
78893 
78894     VULKAN_HPP_CONSTEXPR PhysicalDeviceRawAccessChainsFeaturesNV( PhysicalDeviceRawAccessChainsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78895 
PhysicalDeviceRawAccessChainsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV78896     PhysicalDeviceRawAccessChainsFeaturesNV( VkPhysicalDeviceRawAccessChainsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
78897       : PhysicalDeviceRawAccessChainsFeaturesNV( *reinterpret_cast<PhysicalDeviceRawAccessChainsFeaturesNV const *>( &rhs ) )
78898     {
78899     }
78900 
78901     PhysicalDeviceRawAccessChainsFeaturesNV & operator=( PhysicalDeviceRawAccessChainsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78902 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
78903 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV78904     PhysicalDeviceRawAccessChainsFeaturesNV & operator=( VkPhysicalDeviceRawAccessChainsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
78905     {
78906       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV const *>( &rhs );
78907       return *this;
78908     }
78909 
78910 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV78911     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRawAccessChainsFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
78912     {
78913       pNext = pNext_;
78914       return *this;
78915     }
78916 
78917     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRawAccessChainsFeaturesNV &
setShaderRawAccessChainsVULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV78918       setShaderRawAccessChains( VULKAN_HPP_NAMESPACE::Bool32 shaderRawAccessChains_ ) VULKAN_HPP_NOEXCEPT
78919     {
78920       shaderRawAccessChains = shaderRawAccessChains_;
78921       return *this;
78922     }
78923 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
78924 
operator VkPhysicalDeviceRawAccessChainsFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV78925     operator VkPhysicalDeviceRawAccessChainsFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
78926     {
78927       return *reinterpret_cast<const VkPhysicalDeviceRawAccessChainsFeaturesNV *>( this );
78928     }
78929 
operator VkPhysicalDeviceRawAccessChainsFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV78930     operator VkPhysicalDeviceRawAccessChainsFeaturesNV &() VULKAN_HPP_NOEXCEPT
78931     {
78932       return *reinterpret_cast<VkPhysicalDeviceRawAccessChainsFeaturesNV *>( this );
78933     }
78934 
78935 #if defined( VULKAN_HPP_USE_REFLECT )
78936 #  if 14 <= VULKAN_HPP_CPP_VERSION
78937     auto
78938 #  else
78939     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
78940 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV78941       reflect() const VULKAN_HPP_NOEXCEPT
78942     {
78943       return std::tie( sType, pNext, shaderRawAccessChains );
78944     }
78945 #endif
78946 
78947 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
78948     auto operator<=>( PhysicalDeviceRawAccessChainsFeaturesNV const & ) const = default;
78949 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV78950     bool operator==( PhysicalDeviceRawAccessChainsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
78951     {
78952 #  if defined( VULKAN_HPP_USE_REFLECT )
78953       return this->reflect() == rhs.reflect();
78954 #  else
78955       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderRawAccessChains == rhs.shaderRawAccessChains );
78956 #  endif
78957     }
78958 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV78959     bool operator!=( PhysicalDeviceRawAccessChainsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
78960     {
78961       return !operator==( rhs );
78962     }
78963 #endif
78964 
78965   public:
78966     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceRawAccessChainsFeaturesNV;
78967     void *                              pNext                 = {};
78968     VULKAN_HPP_NAMESPACE::Bool32        shaderRawAccessChains = {};
78969   };
78970 
78971   template <>
78972   struct CppType<StructureType, StructureType::ePhysicalDeviceRawAccessChainsFeaturesNV>
78973   {
78974     using Type = PhysicalDeviceRawAccessChainsFeaturesNV;
78975   };
78976 
78977   struct PhysicalDeviceRayQueryFeaturesKHR
78978   {
78979     using NativeType = VkPhysicalDeviceRayQueryFeaturesKHR;
78980 
78981     static const bool                                  allowDuplicate = false;
78982     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRayQueryFeaturesKHR;
78983 
78984 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayQueryFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR78985     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayQueryFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 rayQuery_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
78986       : pNext{ pNext_ }
78987       , rayQuery{ rayQuery_ }
78988     {
78989     }
78990 
78991     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayQueryFeaturesKHR( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78992 
PhysicalDeviceRayQueryFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR78993     PhysicalDeviceRayQueryFeaturesKHR( VkPhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
78994       : PhysicalDeviceRayQueryFeaturesKHR( *reinterpret_cast<PhysicalDeviceRayQueryFeaturesKHR const *>( &rhs ) )
78995     {
78996     }
78997 
78998     PhysicalDeviceRayQueryFeaturesKHR & operator=( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
78999 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79000 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR79001     PhysicalDeviceRayQueryFeaturesKHR & operator=( VkPhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
79002     {
79003       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR const *>( &rhs );
79004       return *this;
79005     }
79006 
79007 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR79008     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayQueryFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
79009     {
79010       pNext = pNext_;
79011       return *this;
79012     }
79013 
setRayQueryVULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR79014     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayQueryFeaturesKHR & setRayQuery( VULKAN_HPP_NAMESPACE::Bool32 rayQuery_ ) VULKAN_HPP_NOEXCEPT
79015     {
79016       rayQuery = rayQuery_;
79017       return *this;
79018     }
79019 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79020 
operator VkPhysicalDeviceRayQueryFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR79021     operator VkPhysicalDeviceRayQueryFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
79022     {
79023       return *reinterpret_cast<const VkPhysicalDeviceRayQueryFeaturesKHR *>( this );
79024     }
79025 
operator VkPhysicalDeviceRayQueryFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR79026     operator VkPhysicalDeviceRayQueryFeaturesKHR &() VULKAN_HPP_NOEXCEPT
79027     {
79028       return *reinterpret_cast<VkPhysicalDeviceRayQueryFeaturesKHR *>( this );
79029     }
79030 
79031 #if defined( VULKAN_HPP_USE_REFLECT )
79032 #  if 14 <= VULKAN_HPP_CPP_VERSION
79033     auto
79034 #  else
79035     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
79036 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR79037       reflect() const VULKAN_HPP_NOEXCEPT
79038     {
79039       return std::tie( sType, pNext, rayQuery );
79040     }
79041 #endif
79042 
79043 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79044     auto operator<=>( PhysicalDeviceRayQueryFeaturesKHR const & ) const = default;
79045 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR79046     bool operator==( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
79047     {
79048 #  if defined( VULKAN_HPP_USE_REFLECT )
79049       return this->reflect() == rhs.reflect();
79050 #  else
79051       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayQuery == rhs.rayQuery );
79052 #  endif
79053     }
79054 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR79055     bool operator!=( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
79056     {
79057       return !operator==( rhs );
79058     }
79059 #endif
79060 
79061   public:
79062     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::ePhysicalDeviceRayQueryFeaturesKHR;
79063     void *                              pNext    = {};
79064     VULKAN_HPP_NAMESPACE::Bool32        rayQuery = {};
79065   };
79066 
79067   template <>
79068   struct CppType<StructureType, StructureType::ePhysicalDeviceRayQueryFeaturesKHR>
79069   {
79070     using Type = PhysicalDeviceRayQueryFeaturesKHR;
79071   };
79072 
79073   struct PhysicalDeviceRayTracingInvocationReorderFeaturesNV
79074   {
79075     using NativeType = VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV;
79076 
79077     static const bool                                  allowDuplicate = false;
79078     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRayTracingInvocationReorderFeaturesNV;
79079 
79080 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayTracingInvocationReorderFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV79081     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingInvocationReorderFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 rayTracingInvocationReorder_ = {},
79082                                                                               void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
79083       : pNext{ pNext_ }
79084       , rayTracingInvocationReorder{ rayTracingInvocationReorder_ }
79085     {
79086     }
79087 
79088     VULKAN_HPP_CONSTEXPR
79089       PhysicalDeviceRayTracingInvocationReorderFeaturesNV( PhysicalDeviceRayTracingInvocationReorderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79090 
PhysicalDeviceRayTracingInvocationReorderFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV79091     PhysicalDeviceRayTracingInvocationReorderFeaturesNV( VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
79092       : PhysicalDeviceRayTracingInvocationReorderFeaturesNV( *reinterpret_cast<PhysicalDeviceRayTracingInvocationReorderFeaturesNV const *>( &rhs ) )
79093     {
79094     }
79095 
79096     PhysicalDeviceRayTracingInvocationReorderFeaturesNV &
79097       operator=( PhysicalDeviceRayTracingInvocationReorderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79098 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79099 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV79100     PhysicalDeviceRayTracingInvocationReorderFeaturesNV & operator=( VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
79101     {
79102       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV const *>( &rhs );
79103       return *this;
79104     }
79105 
79106 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV79107     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingInvocationReorderFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
79108     {
79109       pNext = pNext_;
79110       return *this;
79111     }
79112 
79113     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingInvocationReorderFeaturesNV &
setRayTracingInvocationReorderVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV79114       setRayTracingInvocationReorder( VULKAN_HPP_NAMESPACE::Bool32 rayTracingInvocationReorder_ ) VULKAN_HPP_NOEXCEPT
79115     {
79116       rayTracingInvocationReorder = rayTracingInvocationReorder_;
79117       return *this;
79118     }
79119 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79120 
operator VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV79121     operator VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
79122     {
79123       return *reinterpret_cast<const VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV *>( this );
79124     }
79125 
operator VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV79126     operator VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV &() VULKAN_HPP_NOEXCEPT
79127     {
79128       return *reinterpret_cast<VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV *>( this );
79129     }
79130 
79131 #if defined( VULKAN_HPP_USE_REFLECT )
79132 #  if 14 <= VULKAN_HPP_CPP_VERSION
79133     auto
79134 #  else
79135     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
79136 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV79137       reflect() const VULKAN_HPP_NOEXCEPT
79138     {
79139       return std::tie( sType, pNext, rayTracingInvocationReorder );
79140     }
79141 #endif
79142 
79143 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79144     auto operator<=>( PhysicalDeviceRayTracingInvocationReorderFeaturesNV const & ) const = default;
79145 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV79146     bool operator==( PhysicalDeviceRayTracingInvocationReorderFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
79147     {
79148 #  if defined( VULKAN_HPP_USE_REFLECT )
79149       return this->reflect() == rhs.reflect();
79150 #  else
79151       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingInvocationReorder == rhs.rayTracingInvocationReorder );
79152 #  endif
79153     }
79154 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV79155     bool operator!=( PhysicalDeviceRayTracingInvocationReorderFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
79156     {
79157       return !operator==( rhs );
79158     }
79159 #endif
79160 
79161   public:
79162     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceRayTracingInvocationReorderFeaturesNV;
79163     void *                              pNext                       = {};
79164     VULKAN_HPP_NAMESPACE::Bool32        rayTracingInvocationReorder = {};
79165   };
79166 
79167   template <>
79168   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingInvocationReorderFeaturesNV>
79169   {
79170     using Type = PhysicalDeviceRayTracingInvocationReorderFeaturesNV;
79171   };
79172 
79173   struct PhysicalDeviceRayTracingInvocationReorderPropertiesNV
79174   {
79175     using NativeType = VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV;
79176 
79177     static const bool                                  allowDuplicate = false;
79178     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRayTracingInvocationReorderPropertiesNV;
79179 
79180 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayTracingInvocationReorderPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV79181     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingInvocationReorderPropertiesNV(
79182       VULKAN_HPP_NAMESPACE::RayTracingInvocationReorderModeNV rayTracingInvocationReorderReorderingHint_ =
79183         VULKAN_HPP_NAMESPACE::RayTracingInvocationReorderModeNV::eNone,
79184       void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
79185       : pNext{ pNext_ }
79186       , rayTracingInvocationReorderReorderingHint{ rayTracingInvocationReorderReorderingHint_ }
79187     {
79188     }
79189 
79190     VULKAN_HPP_CONSTEXPR
79191       PhysicalDeviceRayTracingInvocationReorderPropertiesNV( PhysicalDeviceRayTracingInvocationReorderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79192 
PhysicalDeviceRayTracingInvocationReorderPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV79193     PhysicalDeviceRayTracingInvocationReorderPropertiesNV( VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
79194       : PhysicalDeviceRayTracingInvocationReorderPropertiesNV( *reinterpret_cast<PhysicalDeviceRayTracingInvocationReorderPropertiesNV const *>( &rhs ) )
79195     {
79196     }
79197 
79198     PhysicalDeviceRayTracingInvocationReorderPropertiesNV &
79199       operator=( PhysicalDeviceRayTracingInvocationReorderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79200 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79201 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV79202     PhysicalDeviceRayTracingInvocationReorderPropertiesNV & operator=( VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
79203     {
79204       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV const *>( &rhs );
79205       return *this;
79206     }
79207 
operator VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV79208     operator VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
79209     {
79210       return *reinterpret_cast<const VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV *>( this );
79211     }
79212 
operator VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV79213     operator VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV &() VULKAN_HPP_NOEXCEPT
79214     {
79215       return *reinterpret_cast<VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV *>( this );
79216     }
79217 
79218 #if defined( VULKAN_HPP_USE_REFLECT )
79219 #  if 14 <= VULKAN_HPP_CPP_VERSION
79220     auto
79221 #  else
79222     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::RayTracingInvocationReorderModeNV const &>
79223 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV79224       reflect() const VULKAN_HPP_NOEXCEPT
79225     {
79226       return std::tie( sType, pNext, rayTracingInvocationReorderReorderingHint );
79227     }
79228 #endif
79229 
79230 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79231     auto operator<=>( PhysicalDeviceRayTracingInvocationReorderPropertiesNV const & ) const = default;
79232 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV79233     bool operator==( PhysicalDeviceRayTracingInvocationReorderPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
79234     {
79235 #  if defined( VULKAN_HPP_USE_REFLECT )
79236       return this->reflect() == rhs.reflect();
79237 #  else
79238       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingInvocationReorderReorderingHint == rhs.rayTracingInvocationReorderReorderingHint );
79239 #  endif
79240     }
79241 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV79242     bool operator!=( PhysicalDeviceRayTracingInvocationReorderPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
79243     {
79244       return !operator==( rhs );
79245     }
79246 #endif
79247 
79248   public:
79249     VULKAN_HPP_NAMESPACE::StructureType                     sType = StructureType::ePhysicalDeviceRayTracingInvocationReorderPropertiesNV;
79250     void *                                                  pNext = {};
79251     VULKAN_HPP_NAMESPACE::RayTracingInvocationReorderModeNV rayTracingInvocationReorderReorderingHint =
79252       VULKAN_HPP_NAMESPACE::RayTracingInvocationReorderModeNV::eNone;
79253   };
79254 
79255   template <>
79256   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingInvocationReorderPropertiesNV>
79257   {
79258     using Type = PhysicalDeviceRayTracingInvocationReorderPropertiesNV;
79259   };
79260 
79261   struct PhysicalDeviceRayTracingMaintenance1FeaturesKHR
79262   {
79263     using NativeType = VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR;
79264 
79265     static const bool                                  allowDuplicate = false;
79266     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRayTracingMaintenance1FeaturesKHR;
79267 
79268 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayTracingMaintenance1FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR79269     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingMaintenance1FeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 rayTracingMaintenance1_               = {},
79270                                                                           VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineTraceRaysIndirect2_ = {},
79271                                                                           void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
79272       : pNext{ pNext_ }
79273       , rayTracingMaintenance1{ rayTracingMaintenance1_ }
79274       , rayTracingPipelineTraceRaysIndirect2{ rayTracingPipelineTraceRaysIndirect2_ }
79275     {
79276     }
79277 
79278     VULKAN_HPP_CONSTEXPR
79279       PhysicalDeviceRayTracingMaintenance1FeaturesKHR( PhysicalDeviceRayTracingMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79280 
PhysicalDeviceRayTracingMaintenance1FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR79281     PhysicalDeviceRayTracingMaintenance1FeaturesKHR( VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
79282       : PhysicalDeviceRayTracingMaintenance1FeaturesKHR( *reinterpret_cast<PhysicalDeviceRayTracingMaintenance1FeaturesKHR const *>( &rhs ) )
79283     {
79284     }
79285 
79286     PhysicalDeviceRayTracingMaintenance1FeaturesKHR & operator=( PhysicalDeviceRayTracingMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79287 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79288 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR79289     PhysicalDeviceRayTracingMaintenance1FeaturesKHR & operator=( VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
79290     {
79291       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR const *>( &rhs );
79292       return *this;
79293     }
79294 
79295 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR79296     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMaintenance1FeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
79297     {
79298       pNext = pNext_;
79299       return *this;
79300     }
79301 
79302     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMaintenance1FeaturesKHR &
setRayTracingMaintenance1VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR79303       setRayTracingMaintenance1( VULKAN_HPP_NAMESPACE::Bool32 rayTracingMaintenance1_ ) VULKAN_HPP_NOEXCEPT
79304     {
79305       rayTracingMaintenance1 = rayTracingMaintenance1_;
79306       return *this;
79307     }
79308 
79309     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMaintenance1FeaturesKHR &
setRayTracingPipelineTraceRaysIndirect2VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR79310       setRayTracingPipelineTraceRaysIndirect2( VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineTraceRaysIndirect2_ ) VULKAN_HPP_NOEXCEPT
79311     {
79312       rayTracingPipelineTraceRaysIndirect2 = rayTracingPipelineTraceRaysIndirect2_;
79313       return *this;
79314     }
79315 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79316 
operator VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR79317     operator VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
79318     {
79319       return *reinterpret_cast<const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR *>( this );
79320     }
79321 
operator VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR79322     operator VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR &() VULKAN_HPP_NOEXCEPT
79323     {
79324       return *reinterpret_cast<VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR *>( this );
79325     }
79326 
79327 #if defined( VULKAN_HPP_USE_REFLECT )
79328 #  if 14 <= VULKAN_HPP_CPP_VERSION
79329     auto
79330 #  else
79331     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
79332 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR79333       reflect() const VULKAN_HPP_NOEXCEPT
79334     {
79335       return std::tie( sType, pNext, rayTracingMaintenance1, rayTracingPipelineTraceRaysIndirect2 );
79336     }
79337 #endif
79338 
79339 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79340     auto operator<=>( PhysicalDeviceRayTracingMaintenance1FeaturesKHR const & ) const = default;
79341 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR79342     bool operator==( PhysicalDeviceRayTracingMaintenance1FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
79343     {
79344 #  if defined( VULKAN_HPP_USE_REFLECT )
79345       return this->reflect() == rhs.reflect();
79346 #  else
79347       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingMaintenance1 == rhs.rayTracingMaintenance1 ) &&
79348              ( rayTracingPipelineTraceRaysIndirect2 == rhs.rayTracingPipelineTraceRaysIndirect2 );
79349 #  endif
79350     }
79351 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR79352     bool operator!=( PhysicalDeviceRayTracingMaintenance1FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
79353     {
79354       return !operator==( rhs );
79355     }
79356 #endif
79357 
79358   public:
79359     VULKAN_HPP_NAMESPACE::StructureType sType                                = StructureType::ePhysicalDeviceRayTracingMaintenance1FeaturesKHR;
79360     void *                              pNext                                = {};
79361     VULKAN_HPP_NAMESPACE::Bool32        rayTracingMaintenance1               = {};
79362     VULKAN_HPP_NAMESPACE::Bool32        rayTracingPipelineTraceRaysIndirect2 = {};
79363   };
79364 
79365   template <>
79366   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingMaintenance1FeaturesKHR>
79367   {
79368     using Type = PhysicalDeviceRayTracingMaintenance1FeaturesKHR;
79369   };
79370 
79371   struct PhysicalDeviceRayTracingMotionBlurFeaturesNV
79372   {
79373     using NativeType = VkPhysicalDeviceRayTracingMotionBlurFeaturesNV;
79374 
79375     static const bool                                  allowDuplicate = false;
79376     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRayTracingMotionBlurFeaturesNV;
79377 
79378 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayTracingMotionBlurFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV79379     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingMotionBlurFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 rayTracingMotionBlur_                          = {},
79380                                                                        VULKAN_HPP_NAMESPACE::Bool32 rayTracingMotionBlurPipelineTraceRaysIndirect_ = {},
79381                                                                        void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
79382       : pNext{ pNext_ }
79383       , rayTracingMotionBlur{ rayTracingMotionBlur_ }
79384       , rayTracingMotionBlurPipelineTraceRaysIndirect{ rayTracingMotionBlurPipelineTraceRaysIndirect_ }
79385     {
79386     }
79387 
79388     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingMotionBlurFeaturesNV( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79389 
PhysicalDeviceRayTracingMotionBlurFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV79390     PhysicalDeviceRayTracingMotionBlurFeaturesNV( VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
79391       : PhysicalDeviceRayTracingMotionBlurFeaturesNV( *reinterpret_cast<PhysicalDeviceRayTracingMotionBlurFeaturesNV const *>( &rhs ) )
79392     {
79393     }
79394 
79395     PhysicalDeviceRayTracingMotionBlurFeaturesNV & operator=( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79396 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79397 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV79398     PhysicalDeviceRayTracingMotionBlurFeaturesNV & operator=( VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
79399     {
79400       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV const *>( &rhs );
79401       return *this;
79402     }
79403 
79404 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV79405     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMotionBlurFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
79406     {
79407       pNext = pNext_;
79408       return *this;
79409     }
79410 
79411     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMotionBlurFeaturesNV &
setRayTracingMotionBlurVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV79412       setRayTracingMotionBlur( VULKAN_HPP_NAMESPACE::Bool32 rayTracingMotionBlur_ ) VULKAN_HPP_NOEXCEPT
79413     {
79414       rayTracingMotionBlur = rayTracingMotionBlur_;
79415       return *this;
79416     }
79417 
79418     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMotionBlurFeaturesNV &
setRayTracingMotionBlurPipelineTraceRaysIndirectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV79419       setRayTracingMotionBlurPipelineTraceRaysIndirect( VULKAN_HPP_NAMESPACE::Bool32 rayTracingMotionBlurPipelineTraceRaysIndirect_ ) VULKAN_HPP_NOEXCEPT
79420     {
79421       rayTracingMotionBlurPipelineTraceRaysIndirect = rayTracingMotionBlurPipelineTraceRaysIndirect_;
79422       return *this;
79423     }
79424 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79425 
operator VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV79426     operator VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
79427     {
79428       return *reinterpret_cast<const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV *>( this );
79429     }
79430 
operator VkPhysicalDeviceRayTracingMotionBlurFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV79431     operator VkPhysicalDeviceRayTracingMotionBlurFeaturesNV &() VULKAN_HPP_NOEXCEPT
79432     {
79433       return *reinterpret_cast<VkPhysicalDeviceRayTracingMotionBlurFeaturesNV *>( this );
79434     }
79435 
79436 #if defined( VULKAN_HPP_USE_REFLECT )
79437 #  if 14 <= VULKAN_HPP_CPP_VERSION
79438     auto
79439 #  else
79440     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
79441 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV79442       reflect() const VULKAN_HPP_NOEXCEPT
79443     {
79444       return std::tie( sType, pNext, rayTracingMotionBlur, rayTracingMotionBlurPipelineTraceRaysIndirect );
79445     }
79446 #endif
79447 
79448 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79449     auto operator<=>( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & ) const = default;
79450 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV79451     bool operator==( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
79452     {
79453 #  if defined( VULKAN_HPP_USE_REFLECT )
79454       return this->reflect() == rhs.reflect();
79455 #  else
79456       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingMotionBlur == rhs.rayTracingMotionBlur ) &&
79457              ( rayTracingMotionBlurPipelineTraceRaysIndirect == rhs.rayTracingMotionBlurPipelineTraceRaysIndirect );
79458 #  endif
79459     }
79460 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV79461     bool operator!=( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
79462     {
79463       return !operator==( rhs );
79464     }
79465 #endif
79466 
79467   public:
79468     VULKAN_HPP_NAMESPACE::StructureType sType                                         = StructureType::ePhysicalDeviceRayTracingMotionBlurFeaturesNV;
79469     void *                              pNext                                         = {};
79470     VULKAN_HPP_NAMESPACE::Bool32        rayTracingMotionBlur                          = {};
79471     VULKAN_HPP_NAMESPACE::Bool32        rayTracingMotionBlurPipelineTraceRaysIndirect = {};
79472   };
79473 
79474   template <>
79475   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingMotionBlurFeaturesNV>
79476   {
79477     using Type = PhysicalDeviceRayTracingMotionBlurFeaturesNV;
79478   };
79479 
79480   struct PhysicalDeviceRayTracingPipelineFeaturesKHR
79481   {
79482     using NativeType = VkPhysicalDeviceRayTracingPipelineFeaturesKHR;
79483 
79484     static const bool                                  allowDuplicate = false;
79485     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRayTracingPipelineFeaturesKHR;
79486 
79487 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayTracingPipelineFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR79488     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPipelineFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipeline_                                    = {},
79489                                                                       VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplay_      = {},
79490                                                                       VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed_ = {},
79491                                                                       VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineTraceRaysIndirect_                   = {},
79492                                                                       VULKAN_HPP_NAMESPACE::Bool32 rayTraversalPrimitiveCulling_                          = {},
79493                                                                       void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
79494       : pNext{ pNext_ }
79495       , rayTracingPipeline{ rayTracingPipeline_ }
79496       , rayTracingPipelineShaderGroupHandleCaptureReplay{ rayTracingPipelineShaderGroupHandleCaptureReplay_ }
79497       , rayTracingPipelineShaderGroupHandleCaptureReplayMixed{ rayTracingPipelineShaderGroupHandleCaptureReplayMixed_ }
79498       , rayTracingPipelineTraceRaysIndirect{ rayTracingPipelineTraceRaysIndirect_ }
79499       , rayTraversalPrimitiveCulling{ rayTraversalPrimitiveCulling_ }
79500     {
79501     }
79502 
79503     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPipelineFeaturesKHR( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79504 
PhysicalDeviceRayTracingPipelineFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR79505     PhysicalDeviceRayTracingPipelineFeaturesKHR( VkPhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
79506       : PhysicalDeviceRayTracingPipelineFeaturesKHR( *reinterpret_cast<PhysicalDeviceRayTracingPipelineFeaturesKHR const *>( &rhs ) )
79507     {
79508     }
79509 
79510     PhysicalDeviceRayTracingPipelineFeaturesKHR & operator=( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79511 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79512 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR79513     PhysicalDeviceRayTracingPipelineFeaturesKHR & operator=( VkPhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
79514     {
79515       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR const *>( &rhs );
79516       return *this;
79517     }
79518 
79519 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR79520     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
79521     {
79522       pNext = pNext_;
79523       return *this;
79524     }
79525 
79526     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR &
setRayTracingPipelineVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR79527       setRayTracingPipeline( VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipeline_ ) VULKAN_HPP_NOEXCEPT
79528     {
79529       rayTracingPipeline = rayTracingPipeline_;
79530       return *this;
79531     }
79532 
79533     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR &
setRayTracingPipelineShaderGroupHandleCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR79534       setRayTracingPipelineShaderGroupHandleCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
79535     {
79536       rayTracingPipelineShaderGroupHandleCaptureReplay = rayTracingPipelineShaderGroupHandleCaptureReplay_;
79537       return *this;
79538     }
79539 
setRayTracingPipelineShaderGroupHandleCaptureReplayMixedVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR79540     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR & setRayTracingPipelineShaderGroupHandleCaptureReplayMixed(
79541       VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed_ ) VULKAN_HPP_NOEXCEPT
79542     {
79543       rayTracingPipelineShaderGroupHandleCaptureReplayMixed = rayTracingPipelineShaderGroupHandleCaptureReplayMixed_;
79544       return *this;
79545     }
79546 
79547     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR &
setRayTracingPipelineTraceRaysIndirectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR79548       setRayTracingPipelineTraceRaysIndirect( VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineTraceRaysIndirect_ ) VULKAN_HPP_NOEXCEPT
79549     {
79550       rayTracingPipelineTraceRaysIndirect = rayTracingPipelineTraceRaysIndirect_;
79551       return *this;
79552     }
79553 
79554     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR &
setRayTraversalPrimitiveCullingVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR79555       setRayTraversalPrimitiveCulling( VULKAN_HPP_NAMESPACE::Bool32 rayTraversalPrimitiveCulling_ ) VULKAN_HPP_NOEXCEPT
79556     {
79557       rayTraversalPrimitiveCulling = rayTraversalPrimitiveCulling_;
79558       return *this;
79559     }
79560 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79561 
operator VkPhysicalDeviceRayTracingPipelineFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR79562     operator VkPhysicalDeviceRayTracingPipelineFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
79563     {
79564       return *reinterpret_cast<const VkPhysicalDeviceRayTracingPipelineFeaturesKHR *>( this );
79565     }
79566 
operator VkPhysicalDeviceRayTracingPipelineFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR79567     operator VkPhysicalDeviceRayTracingPipelineFeaturesKHR &() VULKAN_HPP_NOEXCEPT
79568     {
79569       return *reinterpret_cast<VkPhysicalDeviceRayTracingPipelineFeaturesKHR *>( this );
79570     }
79571 
79572 #if defined( VULKAN_HPP_USE_REFLECT )
79573 #  if 14 <= VULKAN_HPP_CPP_VERSION
79574     auto
79575 #  else
79576     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
79577                void * const &,
79578                VULKAN_HPP_NAMESPACE::Bool32 const &,
79579                VULKAN_HPP_NAMESPACE::Bool32 const &,
79580                VULKAN_HPP_NAMESPACE::Bool32 const &,
79581                VULKAN_HPP_NAMESPACE::Bool32 const &,
79582                VULKAN_HPP_NAMESPACE::Bool32 const &>
79583 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR79584       reflect() const VULKAN_HPP_NOEXCEPT
79585     {
79586       return std::tie( sType,
79587                        pNext,
79588                        rayTracingPipeline,
79589                        rayTracingPipelineShaderGroupHandleCaptureReplay,
79590                        rayTracingPipelineShaderGroupHandleCaptureReplayMixed,
79591                        rayTracingPipelineTraceRaysIndirect,
79592                        rayTraversalPrimitiveCulling );
79593     }
79594 #endif
79595 
79596 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79597     auto operator<=>( PhysicalDeviceRayTracingPipelineFeaturesKHR const & ) const = default;
79598 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR79599     bool operator==( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
79600     {
79601 #  if defined( VULKAN_HPP_USE_REFLECT )
79602       return this->reflect() == rhs.reflect();
79603 #  else
79604       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingPipeline == rhs.rayTracingPipeline ) &&
79605              ( rayTracingPipelineShaderGroupHandleCaptureReplay == rhs.rayTracingPipelineShaderGroupHandleCaptureReplay ) &&
79606              ( rayTracingPipelineShaderGroupHandleCaptureReplayMixed == rhs.rayTracingPipelineShaderGroupHandleCaptureReplayMixed ) &&
79607              ( rayTracingPipelineTraceRaysIndirect == rhs.rayTracingPipelineTraceRaysIndirect ) &&
79608              ( rayTraversalPrimitiveCulling == rhs.rayTraversalPrimitiveCulling );
79609 #  endif
79610     }
79611 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR79612     bool operator!=( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
79613     {
79614       return !operator==( rhs );
79615     }
79616 #endif
79617 
79618   public:
79619     VULKAN_HPP_NAMESPACE::StructureType sType                                                 = StructureType::ePhysicalDeviceRayTracingPipelineFeaturesKHR;
79620     void *                              pNext                                                 = {};
79621     VULKAN_HPP_NAMESPACE::Bool32        rayTracingPipeline                                    = {};
79622     VULKAN_HPP_NAMESPACE::Bool32        rayTracingPipelineShaderGroupHandleCaptureReplay      = {};
79623     VULKAN_HPP_NAMESPACE::Bool32        rayTracingPipelineShaderGroupHandleCaptureReplayMixed = {};
79624     VULKAN_HPP_NAMESPACE::Bool32        rayTracingPipelineTraceRaysIndirect                   = {};
79625     VULKAN_HPP_NAMESPACE::Bool32        rayTraversalPrimitiveCulling                          = {};
79626   };
79627 
79628   template <>
79629   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingPipelineFeaturesKHR>
79630   {
79631     using Type = PhysicalDeviceRayTracingPipelineFeaturesKHR;
79632   };
79633 
79634   struct PhysicalDeviceRayTracingPipelinePropertiesKHR
79635   {
79636     using NativeType = VkPhysicalDeviceRayTracingPipelinePropertiesKHR;
79637 
79638     static const bool                                  allowDuplicate = false;
79639     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRayTracingPipelinePropertiesKHR;
79640 
79641 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayTracingPipelinePropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR79642     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPipelinePropertiesKHR( uint32_t shaderGroupHandleSize_              = {},
79643                                                                         uint32_t maxRayRecursionDepth_               = {},
79644                                                                         uint32_t maxShaderGroupStride_               = {},
79645                                                                         uint32_t shaderGroupBaseAlignment_           = {},
79646                                                                         uint32_t shaderGroupHandleCaptureReplaySize_ = {},
79647                                                                         uint32_t maxRayDispatchInvocationCount_      = {},
79648                                                                         uint32_t shaderGroupHandleAlignment_         = {},
79649                                                                         uint32_t maxRayHitAttributeSize_             = {},
79650                                                                         void *   pNext_                              = nullptr ) VULKAN_HPP_NOEXCEPT
79651       : pNext{ pNext_ }
79652       , shaderGroupHandleSize{ shaderGroupHandleSize_ }
79653       , maxRayRecursionDepth{ maxRayRecursionDepth_ }
79654       , maxShaderGroupStride{ maxShaderGroupStride_ }
79655       , shaderGroupBaseAlignment{ shaderGroupBaseAlignment_ }
79656       , shaderGroupHandleCaptureReplaySize{ shaderGroupHandleCaptureReplaySize_ }
79657       , maxRayDispatchInvocationCount{ maxRayDispatchInvocationCount_ }
79658       , shaderGroupHandleAlignment{ shaderGroupHandleAlignment_ }
79659       , maxRayHitAttributeSize{ maxRayHitAttributeSize_ }
79660     {
79661     }
79662 
79663     VULKAN_HPP_CONSTEXPR
79664       PhysicalDeviceRayTracingPipelinePropertiesKHR( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79665 
PhysicalDeviceRayTracingPipelinePropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR79666     PhysicalDeviceRayTracingPipelinePropertiesKHR( VkPhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
79667       : PhysicalDeviceRayTracingPipelinePropertiesKHR( *reinterpret_cast<PhysicalDeviceRayTracingPipelinePropertiesKHR const *>( &rhs ) )
79668     {
79669     }
79670 
79671     PhysicalDeviceRayTracingPipelinePropertiesKHR & operator=( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79672 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79673 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR79674     PhysicalDeviceRayTracingPipelinePropertiesKHR & operator=( VkPhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
79675     {
79676       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR const *>( &rhs );
79677       return *this;
79678     }
79679 
operator VkPhysicalDeviceRayTracingPipelinePropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR79680     operator VkPhysicalDeviceRayTracingPipelinePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
79681     {
79682       return *reinterpret_cast<const VkPhysicalDeviceRayTracingPipelinePropertiesKHR *>( this );
79683     }
79684 
operator VkPhysicalDeviceRayTracingPipelinePropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR79685     operator VkPhysicalDeviceRayTracingPipelinePropertiesKHR &() VULKAN_HPP_NOEXCEPT
79686     {
79687       return *reinterpret_cast<VkPhysicalDeviceRayTracingPipelinePropertiesKHR *>( this );
79688     }
79689 
79690 #if defined( VULKAN_HPP_USE_REFLECT )
79691 #  if 14 <= VULKAN_HPP_CPP_VERSION
79692     auto
79693 #  else
79694     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
79695                void * const &,
79696                uint32_t const &,
79697                uint32_t const &,
79698                uint32_t const &,
79699                uint32_t const &,
79700                uint32_t const &,
79701                uint32_t const &,
79702                uint32_t const &,
79703                uint32_t const &>
79704 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR79705       reflect() const VULKAN_HPP_NOEXCEPT
79706     {
79707       return std::tie( sType,
79708                        pNext,
79709                        shaderGroupHandleSize,
79710                        maxRayRecursionDepth,
79711                        maxShaderGroupStride,
79712                        shaderGroupBaseAlignment,
79713                        shaderGroupHandleCaptureReplaySize,
79714                        maxRayDispatchInvocationCount,
79715                        shaderGroupHandleAlignment,
79716                        maxRayHitAttributeSize );
79717     }
79718 #endif
79719 
79720 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79721     auto operator<=>( PhysicalDeviceRayTracingPipelinePropertiesKHR const & ) const = default;
79722 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR79723     bool operator==( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
79724     {
79725 #  if defined( VULKAN_HPP_USE_REFLECT )
79726       return this->reflect() == rhs.reflect();
79727 #  else
79728       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderGroupHandleSize == rhs.shaderGroupHandleSize ) &&
79729              ( maxRayRecursionDepth == rhs.maxRayRecursionDepth ) && ( maxShaderGroupStride == rhs.maxShaderGroupStride ) &&
79730              ( shaderGroupBaseAlignment == rhs.shaderGroupBaseAlignment ) && ( shaderGroupHandleCaptureReplaySize == rhs.shaderGroupHandleCaptureReplaySize ) &&
79731              ( maxRayDispatchInvocationCount == rhs.maxRayDispatchInvocationCount ) && ( shaderGroupHandleAlignment == rhs.shaderGroupHandleAlignment ) &&
79732              ( maxRayHitAttributeSize == rhs.maxRayHitAttributeSize );
79733 #  endif
79734     }
79735 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR79736     bool operator!=( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
79737     {
79738       return !operator==( rhs );
79739     }
79740 #endif
79741 
79742   public:
79743     VULKAN_HPP_NAMESPACE::StructureType sType                              = StructureType::ePhysicalDeviceRayTracingPipelinePropertiesKHR;
79744     void *                              pNext                              = {};
79745     uint32_t                            shaderGroupHandleSize              = {};
79746     uint32_t                            maxRayRecursionDepth               = {};
79747     uint32_t                            maxShaderGroupStride               = {};
79748     uint32_t                            shaderGroupBaseAlignment           = {};
79749     uint32_t                            shaderGroupHandleCaptureReplaySize = {};
79750     uint32_t                            maxRayDispatchInvocationCount      = {};
79751     uint32_t                            shaderGroupHandleAlignment         = {};
79752     uint32_t                            maxRayHitAttributeSize             = {};
79753   };
79754 
79755   template <>
79756   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingPipelinePropertiesKHR>
79757   {
79758     using Type = PhysicalDeviceRayTracingPipelinePropertiesKHR;
79759   };
79760 
79761   struct PhysicalDeviceRayTracingPositionFetchFeaturesKHR
79762   {
79763     using NativeType = VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR;
79764 
79765     static const bool                                  allowDuplicate = false;
79766     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRayTracingPositionFetchFeaturesKHR;
79767 
79768 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayTracingPositionFetchFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR79769     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPositionFetchFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 rayTracingPositionFetch_ = {},
79770                                                                            void *                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
79771       : pNext{ pNext_ }
79772       , rayTracingPositionFetch{ rayTracingPositionFetch_ }
79773     {
79774     }
79775 
79776     VULKAN_HPP_CONSTEXPR
79777       PhysicalDeviceRayTracingPositionFetchFeaturesKHR( PhysicalDeviceRayTracingPositionFetchFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79778 
PhysicalDeviceRayTracingPositionFetchFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR79779     PhysicalDeviceRayTracingPositionFetchFeaturesKHR( VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
79780       : PhysicalDeviceRayTracingPositionFetchFeaturesKHR( *reinterpret_cast<PhysicalDeviceRayTracingPositionFetchFeaturesKHR const *>( &rhs ) )
79781     {
79782     }
79783 
79784     PhysicalDeviceRayTracingPositionFetchFeaturesKHR & operator=( PhysicalDeviceRayTracingPositionFetchFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79785 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79786 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR79787     PhysicalDeviceRayTracingPositionFetchFeaturesKHR & operator=( VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
79788     {
79789       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR const *>( &rhs );
79790       return *this;
79791     }
79792 
79793 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR79794     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPositionFetchFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
79795     {
79796       pNext = pNext_;
79797       return *this;
79798     }
79799 
79800     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPositionFetchFeaturesKHR &
setRayTracingPositionFetchVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR79801       setRayTracingPositionFetch( VULKAN_HPP_NAMESPACE::Bool32 rayTracingPositionFetch_ ) VULKAN_HPP_NOEXCEPT
79802     {
79803       rayTracingPositionFetch = rayTracingPositionFetch_;
79804       return *this;
79805     }
79806 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
79807 
operator VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR79808     operator VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
79809     {
79810       return *reinterpret_cast<const VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR *>( this );
79811     }
79812 
operator VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR79813     operator VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR &() VULKAN_HPP_NOEXCEPT
79814     {
79815       return *reinterpret_cast<VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR *>( this );
79816     }
79817 
79818 #if defined( VULKAN_HPP_USE_REFLECT )
79819 #  if 14 <= VULKAN_HPP_CPP_VERSION
79820     auto
79821 #  else
79822     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
79823 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR79824       reflect() const VULKAN_HPP_NOEXCEPT
79825     {
79826       return std::tie( sType, pNext, rayTracingPositionFetch );
79827     }
79828 #endif
79829 
79830 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79831     auto operator<=>( PhysicalDeviceRayTracingPositionFetchFeaturesKHR const & ) const = default;
79832 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR79833     bool operator==( PhysicalDeviceRayTracingPositionFetchFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
79834     {
79835 #  if defined( VULKAN_HPP_USE_REFLECT )
79836       return this->reflect() == rhs.reflect();
79837 #  else
79838       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingPositionFetch == rhs.rayTracingPositionFetch );
79839 #  endif
79840     }
79841 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR79842     bool operator!=( PhysicalDeviceRayTracingPositionFetchFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
79843     {
79844       return !operator==( rhs );
79845     }
79846 #endif
79847 
79848   public:
79849     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDeviceRayTracingPositionFetchFeaturesKHR;
79850     void *                              pNext                   = {};
79851     VULKAN_HPP_NAMESPACE::Bool32        rayTracingPositionFetch = {};
79852   };
79853 
79854   template <>
79855   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingPositionFetchFeaturesKHR>
79856   {
79857     using Type = PhysicalDeviceRayTracingPositionFetchFeaturesKHR;
79858   };
79859 
79860   struct PhysicalDeviceRayTracingPropertiesNV
79861   {
79862     using NativeType = VkPhysicalDeviceRayTracingPropertiesNV;
79863 
79864     static const bool                                  allowDuplicate = false;
79865     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRayTracingPropertiesNV;
79866 
79867 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayTracingPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV79868     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPropertiesNV( uint32_t shaderGroupHandleSize_                  = {},
79869                                                                uint32_t maxRecursionDepth_                      = {},
79870                                                                uint32_t maxShaderGroupStride_                   = {},
79871                                                                uint32_t shaderGroupBaseAlignment_               = {},
79872                                                                uint64_t maxGeometryCount_                       = {},
79873                                                                uint64_t maxInstanceCount_                       = {},
79874                                                                uint64_t maxTriangleCount_                       = {},
79875                                                                uint32_t maxDescriptorSetAccelerationStructures_ = {},
79876                                                                void *   pNext_                                  = nullptr ) VULKAN_HPP_NOEXCEPT
79877       : pNext{ pNext_ }
79878       , shaderGroupHandleSize{ shaderGroupHandleSize_ }
79879       , maxRecursionDepth{ maxRecursionDepth_ }
79880       , maxShaderGroupStride{ maxShaderGroupStride_ }
79881       , shaderGroupBaseAlignment{ shaderGroupBaseAlignment_ }
79882       , maxGeometryCount{ maxGeometryCount_ }
79883       , maxInstanceCount{ maxInstanceCount_ }
79884       , maxTriangleCount{ maxTriangleCount_ }
79885       , maxDescriptorSetAccelerationStructures{ maxDescriptorSetAccelerationStructures_ }
79886     {
79887     }
79888 
79889     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPropertiesNV( PhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79890 
PhysicalDeviceRayTracingPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV79891     PhysicalDeviceRayTracingPropertiesNV( VkPhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
79892       : PhysicalDeviceRayTracingPropertiesNV( *reinterpret_cast<PhysicalDeviceRayTracingPropertiesNV const *>( &rhs ) )
79893     {
79894     }
79895 
79896     PhysicalDeviceRayTracingPropertiesNV & operator=( PhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
79897 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
79898 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV79899     PhysicalDeviceRayTracingPropertiesNV & operator=( VkPhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
79900     {
79901       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV const *>( &rhs );
79902       return *this;
79903     }
79904 
operator VkPhysicalDeviceRayTracingPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV79905     operator VkPhysicalDeviceRayTracingPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
79906     {
79907       return *reinterpret_cast<const VkPhysicalDeviceRayTracingPropertiesNV *>( this );
79908     }
79909 
operator VkPhysicalDeviceRayTracingPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV79910     operator VkPhysicalDeviceRayTracingPropertiesNV &() VULKAN_HPP_NOEXCEPT
79911     {
79912       return *reinterpret_cast<VkPhysicalDeviceRayTracingPropertiesNV *>( this );
79913     }
79914 
79915 #if defined( VULKAN_HPP_USE_REFLECT )
79916 #  if 14 <= VULKAN_HPP_CPP_VERSION
79917     auto
79918 #  else
79919     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
79920                void * const &,
79921                uint32_t const &,
79922                uint32_t const &,
79923                uint32_t const &,
79924                uint32_t const &,
79925                uint64_t const &,
79926                uint64_t const &,
79927                uint64_t const &,
79928                uint32_t const &>
79929 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV79930       reflect() const VULKAN_HPP_NOEXCEPT
79931     {
79932       return std::tie( sType,
79933                        pNext,
79934                        shaderGroupHandleSize,
79935                        maxRecursionDepth,
79936                        maxShaderGroupStride,
79937                        shaderGroupBaseAlignment,
79938                        maxGeometryCount,
79939                        maxInstanceCount,
79940                        maxTriangleCount,
79941                        maxDescriptorSetAccelerationStructures );
79942     }
79943 #endif
79944 
79945 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
79946     auto operator<=>( PhysicalDeviceRayTracingPropertiesNV const & ) const = default;
79947 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV79948     bool operator==( PhysicalDeviceRayTracingPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
79949     {
79950 #  if defined( VULKAN_HPP_USE_REFLECT )
79951       return this->reflect() == rhs.reflect();
79952 #  else
79953       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderGroupHandleSize == rhs.shaderGroupHandleSize ) &&
79954              ( maxRecursionDepth == rhs.maxRecursionDepth ) && ( maxShaderGroupStride == rhs.maxShaderGroupStride ) &&
79955              ( shaderGroupBaseAlignment == rhs.shaderGroupBaseAlignment ) && ( maxGeometryCount == rhs.maxGeometryCount ) &&
79956              ( maxInstanceCount == rhs.maxInstanceCount ) && ( maxTriangleCount == rhs.maxTriangleCount ) &&
79957              ( maxDescriptorSetAccelerationStructures == rhs.maxDescriptorSetAccelerationStructures );
79958 #  endif
79959     }
79960 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV79961     bool operator!=( PhysicalDeviceRayTracingPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
79962     {
79963       return !operator==( rhs );
79964     }
79965 #endif
79966 
79967   public:
79968     VULKAN_HPP_NAMESPACE::StructureType sType                                  = StructureType::ePhysicalDeviceRayTracingPropertiesNV;
79969     void *                              pNext                                  = {};
79970     uint32_t                            shaderGroupHandleSize                  = {};
79971     uint32_t                            maxRecursionDepth                      = {};
79972     uint32_t                            maxShaderGroupStride                   = {};
79973     uint32_t                            shaderGroupBaseAlignment               = {};
79974     uint64_t                            maxGeometryCount                       = {};
79975     uint64_t                            maxInstanceCount                       = {};
79976     uint64_t                            maxTriangleCount                       = {};
79977     uint32_t                            maxDescriptorSetAccelerationStructures = {};
79978   };
79979 
79980   template <>
79981   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingPropertiesNV>
79982   {
79983     using Type = PhysicalDeviceRayTracingPropertiesNV;
79984   };
79985 
79986   struct PhysicalDeviceRayTracingValidationFeaturesNV
79987   {
79988     using NativeType = VkPhysicalDeviceRayTracingValidationFeaturesNV;
79989 
79990     static const bool                                  allowDuplicate = false;
79991     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRayTracingValidationFeaturesNV;
79992 
79993 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRayTracingValidationFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV79994     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingValidationFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 rayTracingValidation_ = {},
79995                                                                        void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
79996       : pNext{ pNext_ }
79997       , rayTracingValidation{ rayTracingValidation_ }
79998     {
79999     }
80000 
80001     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingValidationFeaturesNV( PhysicalDeviceRayTracingValidationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80002 
PhysicalDeviceRayTracingValidationFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV80003     PhysicalDeviceRayTracingValidationFeaturesNV( VkPhysicalDeviceRayTracingValidationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
80004       : PhysicalDeviceRayTracingValidationFeaturesNV( *reinterpret_cast<PhysicalDeviceRayTracingValidationFeaturesNV const *>( &rhs ) )
80005     {
80006     }
80007 
80008     PhysicalDeviceRayTracingValidationFeaturesNV & operator=( PhysicalDeviceRayTracingValidationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80009 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80010 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV80011     PhysicalDeviceRayTracingValidationFeaturesNV & operator=( VkPhysicalDeviceRayTracingValidationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
80012     {
80013       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV const *>( &rhs );
80014       return *this;
80015     }
80016 
80017 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV80018     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingValidationFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
80019     {
80020       pNext = pNext_;
80021       return *this;
80022     }
80023 
80024     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingValidationFeaturesNV &
setRayTracingValidationVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV80025       setRayTracingValidation( VULKAN_HPP_NAMESPACE::Bool32 rayTracingValidation_ ) VULKAN_HPP_NOEXCEPT
80026     {
80027       rayTracingValidation = rayTracingValidation_;
80028       return *this;
80029     }
80030 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
80031 
operator VkPhysicalDeviceRayTracingValidationFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV80032     operator VkPhysicalDeviceRayTracingValidationFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
80033     {
80034       return *reinterpret_cast<const VkPhysicalDeviceRayTracingValidationFeaturesNV *>( this );
80035     }
80036 
operator VkPhysicalDeviceRayTracingValidationFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV80037     operator VkPhysicalDeviceRayTracingValidationFeaturesNV &() VULKAN_HPP_NOEXCEPT
80038     {
80039       return *reinterpret_cast<VkPhysicalDeviceRayTracingValidationFeaturesNV *>( this );
80040     }
80041 
80042 #if defined( VULKAN_HPP_USE_REFLECT )
80043 #  if 14 <= VULKAN_HPP_CPP_VERSION
80044     auto
80045 #  else
80046     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
80047 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV80048       reflect() const VULKAN_HPP_NOEXCEPT
80049     {
80050       return std::tie( sType, pNext, rayTracingValidation );
80051     }
80052 #endif
80053 
80054 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80055     auto operator<=>( PhysicalDeviceRayTracingValidationFeaturesNV const & ) const = default;
80056 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV80057     bool operator==( PhysicalDeviceRayTracingValidationFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
80058     {
80059 #  if defined( VULKAN_HPP_USE_REFLECT )
80060       return this->reflect() == rhs.reflect();
80061 #  else
80062       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingValidation == rhs.rayTracingValidation );
80063 #  endif
80064     }
80065 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV80066     bool operator!=( PhysicalDeviceRayTracingValidationFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
80067     {
80068       return !operator==( rhs );
80069     }
80070 #endif
80071 
80072   public:
80073     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceRayTracingValidationFeaturesNV;
80074     void *                              pNext                = {};
80075     VULKAN_HPP_NAMESPACE::Bool32        rayTracingValidation = {};
80076   };
80077 
80078   template <>
80079   struct CppType<StructureType, StructureType::ePhysicalDeviceRayTracingValidationFeaturesNV>
80080   {
80081     using Type = PhysicalDeviceRayTracingValidationFeaturesNV;
80082   };
80083 
80084   struct PhysicalDeviceRelaxedLineRasterizationFeaturesIMG
80085   {
80086     using NativeType = VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG;
80087 
80088     static const bool                                  allowDuplicate = false;
80089     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRelaxedLineRasterizationFeaturesIMG;
80090 
80091 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRelaxedLineRasterizationFeaturesIMGVULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG80092     VULKAN_HPP_CONSTEXPR PhysicalDeviceRelaxedLineRasterizationFeaturesIMG( VULKAN_HPP_NAMESPACE::Bool32 relaxedLineRasterization_ = {},
80093                                                                             void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
80094       : pNext{ pNext_ }
80095       , relaxedLineRasterization{ relaxedLineRasterization_ }
80096     {
80097     }
80098 
80099     VULKAN_HPP_CONSTEXPR
80100       PhysicalDeviceRelaxedLineRasterizationFeaturesIMG( PhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80101 
PhysicalDeviceRelaxedLineRasterizationFeaturesIMGVULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG80102     PhysicalDeviceRelaxedLineRasterizationFeaturesIMG( VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & rhs ) VULKAN_HPP_NOEXCEPT
80103       : PhysicalDeviceRelaxedLineRasterizationFeaturesIMG( *reinterpret_cast<PhysicalDeviceRelaxedLineRasterizationFeaturesIMG const *>( &rhs ) )
80104     {
80105     }
80106 
80107     PhysicalDeviceRelaxedLineRasterizationFeaturesIMG &
80108       operator=( PhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80109 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80110 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG80111     PhysicalDeviceRelaxedLineRasterizationFeaturesIMG & operator=( VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & rhs ) VULKAN_HPP_NOEXCEPT
80112     {
80113       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG const *>( &rhs );
80114       return *this;
80115     }
80116 
80117 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG80118     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRelaxedLineRasterizationFeaturesIMG & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
80119     {
80120       pNext = pNext_;
80121       return *this;
80122     }
80123 
80124     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRelaxedLineRasterizationFeaturesIMG &
setRelaxedLineRasterizationVULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG80125       setRelaxedLineRasterization( VULKAN_HPP_NAMESPACE::Bool32 relaxedLineRasterization_ ) VULKAN_HPP_NOEXCEPT
80126     {
80127       relaxedLineRasterization = relaxedLineRasterization_;
80128       return *this;
80129     }
80130 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
80131 
operator VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG80132     operator VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG const &() const VULKAN_HPP_NOEXCEPT
80133     {
80134       return *reinterpret_cast<const VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG *>( this );
80135     }
80136 
operator VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG&VULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG80137     operator VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG &() VULKAN_HPP_NOEXCEPT
80138     {
80139       return *reinterpret_cast<VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG *>( this );
80140     }
80141 
80142 #if defined( VULKAN_HPP_USE_REFLECT )
80143 #  if 14 <= VULKAN_HPP_CPP_VERSION
80144     auto
80145 #  else
80146     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
80147 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG80148       reflect() const VULKAN_HPP_NOEXCEPT
80149     {
80150       return std::tie( sType, pNext, relaxedLineRasterization );
80151     }
80152 #endif
80153 
80154 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80155     auto operator<=>( PhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & ) const = default;
80156 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG80157     bool operator==( PhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & rhs ) const VULKAN_HPP_NOEXCEPT
80158     {
80159 #  if defined( VULKAN_HPP_USE_REFLECT )
80160       return this->reflect() == rhs.reflect();
80161 #  else
80162       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( relaxedLineRasterization == rhs.relaxedLineRasterization );
80163 #  endif
80164     }
80165 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG80166     bool operator!=( PhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & rhs ) const VULKAN_HPP_NOEXCEPT
80167     {
80168       return !operator==( rhs );
80169     }
80170 #endif
80171 
80172   public:
80173     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDeviceRelaxedLineRasterizationFeaturesIMG;
80174     void *                              pNext                    = {};
80175     VULKAN_HPP_NAMESPACE::Bool32        relaxedLineRasterization = {};
80176   };
80177 
80178   template <>
80179   struct CppType<StructureType, StructureType::ePhysicalDeviceRelaxedLineRasterizationFeaturesIMG>
80180   {
80181     using Type = PhysicalDeviceRelaxedLineRasterizationFeaturesIMG;
80182   };
80183 
80184   struct PhysicalDeviceRenderPassStripedFeaturesARM
80185   {
80186     using NativeType = VkPhysicalDeviceRenderPassStripedFeaturesARM;
80187 
80188     static const bool                                  allowDuplicate = false;
80189     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRenderPassStripedFeaturesARM;
80190 
80191 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRenderPassStripedFeaturesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM80192     VULKAN_HPP_CONSTEXPR PhysicalDeviceRenderPassStripedFeaturesARM( VULKAN_HPP_NAMESPACE::Bool32 renderPassStriped_ = {},
80193                                                                      void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
80194       : pNext{ pNext_ }
80195       , renderPassStriped{ renderPassStriped_ }
80196     {
80197     }
80198 
80199     VULKAN_HPP_CONSTEXPR PhysicalDeviceRenderPassStripedFeaturesARM( PhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80200 
PhysicalDeviceRenderPassStripedFeaturesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM80201     PhysicalDeviceRenderPassStripedFeaturesARM( VkPhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT
80202       : PhysicalDeviceRenderPassStripedFeaturesARM( *reinterpret_cast<PhysicalDeviceRenderPassStripedFeaturesARM const *>( &rhs ) )
80203     {
80204     }
80205 
80206     PhysicalDeviceRenderPassStripedFeaturesARM & operator=( PhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80207 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80208 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM80209     PhysicalDeviceRenderPassStripedFeaturesARM & operator=( VkPhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT
80210     {
80211       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM const *>( &rhs );
80212       return *this;
80213     }
80214 
80215 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM80216     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRenderPassStripedFeaturesARM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
80217     {
80218       pNext = pNext_;
80219       return *this;
80220     }
80221 
80222     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRenderPassStripedFeaturesARM &
setRenderPassStripedVULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM80223       setRenderPassStriped( VULKAN_HPP_NAMESPACE::Bool32 renderPassStriped_ ) VULKAN_HPP_NOEXCEPT
80224     {
80225       renderPassStriped = renderPassStriped_;
80226       return *this;
80227     }
80228 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
80229 
operator VkPhysicalDeviceRenderPassStripedFeaturesARM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM80230     operator VkPhysicalDeviceRenderPassStripedFeaturesARM const &() const VULKAN_HPP_NOEXCEPT
80231     {
80232       return *reinterpret_cast<const VkPhysicalDeviceRenderPassStripedFeaturesARM *>( this );
80233     }
80234 
operator VkPhysicalDeviceRenderPassStripedFeaturesARM&VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM80235     operator VkPhysicalDeviceRenderPassStripedFeaturesARM &() VULKAN_HPP_NOEXCEPT
80236     {
80237       return *reinterpret_cast<VkPhysicalDeviceRenderPassStripedFeaturesARM *>( this );
80238     }
80239 
80240 #if defined( VULKAN_HPP_USE_REFLECT )
80241 #  if 14 <= VULKAN_HPP_CPP_VERSION
80242     auto
80243 #  else
80244     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
80245 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM80246       reflect() const VULKAN_HPP_NOEXCEPT
80247     {
80248       return std::tie( sType, pNext, renderPassStriped );
80249     }
80250 #endif
80251 
80252 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80253     auto operator<=>( PhysicalDeviceRenderPassStripedFeaturesARM const & ) const = default;
80254 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM80255     bool operator==( PhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
80256     {
80257 #  if defined( VULKAN_HPP_USE_REFLECT )
80258       return this->reflect() == rhs.reflect();
80259 #  else
80260       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( renderPassStriped == rhs.renderPassStriped );
80261 #  endif
80262     }
80263 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM80264     bool operator!=( PhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
80265     {
80266       return !operator==( rhs );
80267     }
80268 #endif
80269 
80270   public:
80271     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceRenderPassStripedFeaturesARM;
80272     void *                              pNext             = {};
80273     VULKAN_HPP_NAMESPACE::Bool32        renderPassStriped = {};
80274   };
80275 
80276   template <>
80277   struct CppType<StructureType, StructureType::ePhysicalDeviceRenderPassStripedFeaturesARM>
80278   {
80279     using Type = PhysicalDeviceRenderPassStripedFeaturesARM;
80280   };
80281 
80282   struct PhysicalDeviceRenderPassStripedPropertiesARM
80283   {
80284     using NativeType = VkPhysicalDeviceRenderPassStripedPropertiesARM;
80285 
80286     static const bool                                  allowDuplicate = false;
80287     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRenderPassStripedPropertiesARM;
80288 
80289 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRenderPassStripedPropertiesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM80290     VULKAN_HPP_CONSTEXPR PhysicalDeviceRenderPassStripedPropertiesARM( VULKAN_HPP_NAMESPACE::Extent2D renderPassStripeGranularity_ = {},
80291                                                                        uint32_t                       maxRenderPassStripes_        = {},
80292                                                                        void *                         pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
80293       : pNext{ pNext_ }
80294       , renderPassStripeGranularity{ renderPassStripeGranularity_ }
80295       , maxRenderPassStripes{ maxRenderPassStripes_ }
80296     {
80297     }
80298 
80299     VULKAN_HPP_CONSTEXPR PhysicalDeviceRenderPassStripedPropertiesARM( PhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80300 
PhysicalDeviceRenderPassStripedPropertiesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM80301     PhysicalDeviceRenderPassStripedPropertiesARM( VkPhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT
80302       : PhysicalDeviceRenderPassStripedPropertiesARM( *reinterpret_cast<PhysicalDeviceRenderPassStripedPropertiesARM const *>( &rhs ) )
80303     {
80304     }
80305 
80306     PhysicalDeviceRenderPassStripedPropertiesARM & operator=( PhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80307 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80308 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM80309     PhysicalDeviceRenderPassStripedPropertiesARM & operator=( VkPhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT
80310     {
80311       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM const *>( &rhs );
80312       return *this;
80313     }
80314 
operator VkPhysicalDeviceRenderPassStripedPropertiesARM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM80315     operator VkPhysicalDeviceRenderPassStripedPropertiesARM const &() const VULKAN_HPP_NOEXCEPT
80316     {
80317       return *reinterpret_cast<const VkPhysicalDeviceRenderPassStripedPropertiesARM *>( this );
80318     }
80319 
operator VkPhysicalDeviceRenderPassStripedPropertiesARM&VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM80320     operator VkPhysicalDeviceRenderPassStripedPropertiesARM &() VULKAN_HPP_NOEXCEPT
80321     {
80322       return *reinterpret_cast<VkPhysicalDeviceRenderPassStripedPropertiesARM *>( this );
80323     }
80324 
80325 #if defined( VULKAN_HPP_USE_REFLECT )
80326 #  if 14 <= VULKAN_HPP_CPP_VERSION
80327     auto
80328 #  else
80329     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Extent2D const &, uint32_t const &>
80330 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM80331       reflect() const VULKAN_HPP_NOEXCEPT
80332     {
80333       return std::tie( sType, pNext, renderPassStripeGranularity, maxRenderPassStripes );
80334     }
80335 #endif
80336 
80337 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80338     auto operator<=>( PhysicalDeviceRenderPassStripedPropertiesARM const & ) const = default;
80339 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM80340     bool operator==( PhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
80341     {
80342 #  if defined( VULKAN_HPP_USE_REFLECT )
80343       return this->reflect() == rhs.reflect();
80344 #  else
80345       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( renderPassStripeGranularity == rhs.renderPassStripeGranularity ) &&
80346              ( maxRenderPassStripes == rhs.maxRenderPassStripes );
80347 #  endif
80348     }
80349 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM80350     bool operator!=( PhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
80351     {
80352       return !operator==( rhs );
80353     }
80354 #endif
80355 
80356   public:
80357     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceRenderPassStripedPropertiesARM;
80358     void *                              pNext                       = {};
80359     VULKAN_HPP_NAMESPACE::Extent2D      renderPassStripeGranularity = {};
80360     uint32_t                            maxRenderPassStripes        = {};
80361   };
80362 
80363   template <>
80364   struct CppType<StructureType, StructureType::ePhysicalDeviceRenderPassStripedPropertiesARM>
80365   {
80366     using Type = PhysicalDeviceRenderPassStripedPropertiesARM;
80367   };
80368 
80369   struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV
80370   {
80371     using NativeType = VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV;
80372 
80373     static const bool                                  allowDuplicate = false;
80374     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV;
80375 
80376 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRepresentativeFragmentTestFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV80377     VULKAN_HPP_CONSTEXPR PhysicalDeviceRepresentativeFragmentTestFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTest_ = {},
80378                                                                              void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
80379       : pNext{ pNext_ }
80380       , representativeFragmentTest{ representativeFragmentTest_ }
80381     {
80382     }
80383 
80384     VULKAN_HPP_CONSTEXPR
80385       PhysicalDeviceRepresentativeFragmentTestFeaturesNV( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80386 
PhysicalDeviceRepresentativeFragmentTestFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV80387     PhysicalDeviceRepresentativeFragmentTestFeaturesNV( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
80388       : PhysicalDeviceRepresentativeFragmentTestFeaturesNV( *reinterpret_cast<PhysicalDeviceRepresentativeFragmentTestFeaturesNV const *>( &rhs ) )
80389     {
80390     }
80391 
80392     PhysicalDeviceRepresentativeFragmentTestFeaturesNV &
80393       operator=( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80394 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80395 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV80396     PhysicalDeviceRepresentativeFragmentTestFeaturesNV & operator=( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
80397     {
80398       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV const *>( &rhs );
80399       return *this;
80400     }
80401 
80402 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV80403     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRepresentativeFragmentTestFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
80404     {
80405       pNext = pNext_;
80406       return *this;
80407     }
80408 
80409     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRepresentativeFragmentTestFeaturesNV &
setRepresentativeFragmentTestVULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV80410       setRepresentativeFragmentTest( VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTest_ ) VULKAN_HPP_NOEXCEPT
80411     {
80412       representativeFragmentTest = representativeFragmentTest_;
80413       return *this;
80414     }
80415 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
80416 
operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV80417     operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
80418     {
80419       return *reinterpret_cast<const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *>( this );
80420     }
80421 
operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV80422     operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV &() VULKAN_HPP_NOEXCEPT
80423     {
80424       return *reinterpret_cast<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *>( this );
80425     }
80426 
80427 #if defined( VULKAN_HPP_USE_REFLECT )
80428 #  if 14 <= VULKAN_HPP_CPP_VERSION
80429     auto
80430 #  else
80431     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
80432 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV80433       reflect() const VULKAN_HPP_NOEXCEPT
80434     {
80435       return std::tie( sType, pNext, representativeFragmentTest );
80436     }
80437 #endif
80438 
80439 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80440     auto operator<=>( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & ) const = default;
80441 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV80442     bool operator==( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
80443     {
80444 #  if defined( VULKAN_HPP_USE_REFLECT )
80445       return this->reflect() == rhs.reflect();
80446 #  else
80447       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( representativeFragmentTest == rhs.representativeFragmentTest );
80448 #  endif
80449     }
80450 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV80451     bool operator!=( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
80452     {
80453       return !operator==( rhs );
80454     }
80455 #endif
80456 
80457   public:
80458     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV;
80459     void *                              pNext                      = {};
80460     VULKAN_HPP_NAMESPACE::Bool32        representativeFragmentTest = {};
80461   };
80462 
80463   template <>
80464   struct CppType<StructureType, StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV>
80465   {
80466     using Type = PhysicalDeviceRepresentativeFragmentTestFeaturesNV;
80467   };
80468 
80469   struct PhysicalDeviceRobustness2FeaturesEXT
80470   {
80471     using NativeType = VkPhysicalDeviceRobustness2FeaturesEXT;
80472 
80473     static const bool                                  allowDuplicate = false;
80474     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRobustness2FeaturesEXT;
80475 
80476 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRobustness2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT80477     VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2FeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess2_ = {},
80478                                                                VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess2_  = {},
80479                                                                VULKAN_HPP_NAMESPACE::Bool32 nullDescriptor_      = {},
80480                                                                void *                       pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
80481       : pNext{ pNext_ }
80482       , robustBufferAccess2{ robustBufferAccess2_ }
80483       , robustImageAccess2{ robustImageAccess2_ }
80484       , nullDescriptor{ nullDescriptor_ }
80485     {
80486     }
80487 
80488     VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2FeaturesEXT( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80489 
PhysicalDeviceRobustness2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT80490     PhysicalDeviceRobustness2FeaturesEXT( VkPhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
80491       : PhysicalDeviceRobustness2FeaturesEXT( *reinterpret_cast<PhysicalDeviceRobustness2FeaturesEXT const *>( &rhs ) )
80492     {
80493     }
80494 
80495     PhysicalDeviceRobustness2FeaturesEXT & operator=( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80496 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80497 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT80498     PhysicalDeviceRobustness2FeaturesEXT & operator=( VkPhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
80499     {
80500       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT const *>( &rhs );
80501       return *this;
80502     }
80503 
80504 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT80505     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
80506     {
80507       pNext = pNext_;
80508       return *this;
80509     }
80510 
80511     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT &
setRobustBufferAccess2VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT80512       setRobustBufferAccess2( VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess2_ ) VULKAN_HPP_NOEXCEPT
80513     {
80514       robustBufferAccess2 = robustBufferAccess2_;
80515       return *this;
80516     }
80517 
setRobustImageAccess2VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT80518     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT & setRobustImageAccess2( VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess2_ ) VULKAN_HPP_NOEXCEPT
80519     {
80520       robustImageAccess2 = robustImageAccess2_;
80521       return *this;
80522     }
80523 
setNullDescriptorVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT80524     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT & setNullDescriptor( VULKAN_HPP_NAMESPACE::Bool32 nullDescriptor_ ) VULKAN_HPP_NOEXCEPT
80525     {
80526       nullDescriptor = nullDescriptor_;
80527       return *this;
80528     }
80529 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
80530 
operator VkPhysicalDeviceRobustness2FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT80531     operator VkPhysicalDeviceRobustness2FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
80532     {
80533       return *reinterpret_cast<const VkPhysicalDeviceRobustness2FeaturesEXT *>( this );
80534     }
80535 
operator VkPhysicalDeviceRobustness2FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT80536     operator VkPhysicalDeviceRobustness2FeaturesEXT &() VULKAN_HPP_NOEXCEPT
80537     {
80538       return *reinterpret_cast<VkPhysicalDeviceRobustness2FeaturesEXT *>( this );
80539     }
80540 
80541 #if defined( VULKAN_HPP_USE_REFLECT )
80542 #  if 14 <= VULKAN_HPP_CPP_VERSION
80543     auto
80544 #  else
80545     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
80546                void * const &,
80547                VULKAN_HPP_NAMESPACE::Bool32 const &,
80548                VULKAN_HPP_NAMESPACE::Bool32 const &,
80549                VULKAN_HPP_NAMESPACE::Bool32 const &>
80550 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT80551       reflect() const VULKAN_HPP_NOEXCEPT
80552     {
80553       return std::tie( sType, pNext, robustBufferAccess2, robustImageAccess2, nullDescriptor );
80554     }
80555 #endif
80556 
80557 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80558     auto operator<=>( PhysicalDeviceRobustness2FeaturesEXT const & ) const = default;
80559 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT80560     bool operator==( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
80561     {
80562 #  if defined( VULKAN_HPP_USE_REFLECT )
80563       return this->reflect() == rhs.reflect();
80564 #  else
80565       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( robustBufferAccess2 == rhs.robustBufferAccess2 ) &&
80566              ( robustImageAccess2 == rhs.robustImageAccess2 ) && ( nullDescriptor == rhs.nullDescriptor );
80567 #  endif
80568     }
80569 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT80570     bool operator!=( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
80571     {
80572       return !operator==( rhs );
80573     }
80574 #endif
80575 
80576   public:
80577     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::ePhysicalDeviceRobustness2FeaturesEXT;
80578     void *                              pNext               = {};
80579     VULKAN_HPP_NAMESPACE::Bool32        robustBufferAccess2 = {};
80580     VULKAN_HPP_NAMESPACE::Bool32        robustImageAccess2  = {};
80581     VULKAN_HPP_NAMESPACE::Bool32        nullDescriptor      = {};
80582   };
80583 
80584   template <>
80585   struct CppType<StructureType, StructureType::ePhysicalDeviceRobustness2FeaturesEXT>
80586   {
80587     using Type = PhysicalDeviceRobustness2FeaturesEXT;
80588   };
80589 
80590   struct PhysicalDeviceRobustness2PropertiesEXT
80591   {
80592     using NativeType = VkPhysicalDeviceRobustness2PropertiesEXT;
80593 
80594     static const bool                                  allowDuplicate = false;
80595     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceRobustness2PropertiesEXT;
80596 
80597 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRobustness2PropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT80598     VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2PropertiesEXT( VULKAN_HPP_NAMESPACE::DeviceSize robustStorageBufferAccessSizeAlignment_ = {},
80599                                                                  VULKAN_HPP_NAMESPACE::DeviceSize robustUniformBufferAccessSizeAlignment_ = {},
80600                                                                  void *                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
80601       : pNext{ pNext_ }
80602       , robustStorageBufferAccessSizeAlignment{ robustStorageBufferAccessSizeAlignment_ }
80603       , robustUniformBufferAccessSizeAlignment{ robustUniformBufferAccessSizeAlignment_ }
80604     {
80605     }
80606 
80607     VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2PropertiesEXT( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80608 
PhysicalDeviceRobustness2PropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT80609     PhysicalDeviceRobustness2PropertiesEXT( VkPhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
80610       : PhysicalDeviceRobustness2PropertiesEXT( *reinterpret_cast<PhysicalDeviceRobustness2PropertiesEXT const *>( &rhs ) )
80611     {
80612     }
80613 
80614     PhysicalDeviceRobustness2PropertiesEXT & operator=( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80615 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80616 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT80617     PhysicalDeviceRobustness2PropertiesEXT & operator=( VkPhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
80618     {
80619       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT const *>( &rhs );
80620       return *this;
80621     }
80622 
operator VkPhysicalDeviceRobustness2PropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT80623     operator VkPhysicalDeviceRobustness2PropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
80624     {
80625       return *reinterpret_cast<const VkPhysicalDeviceRobustness2PropertiesEXT *>( this );
80626     }
80627 
operator VkPhysicalDeviceRobustness2PropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT80628     operator VkPhysicalDeviceRobustness2PropertiesEXT &() VULKAN_HPP_NOEXCEPT
80629     {
80630       return *reinterpret_cast<VkPhysicalDeviceRobustness2PropertiesEXT *>( this );
80631     }
80632 
80633 #if defined( VULKAN_HPP_USE_REFLECT )
80634 #  if 14 <= VULKAN_HPP_CPP_VERSION
80635     auto
80636 #  else
80637     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
80638 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT80639       reflect() const VULKAN_HPP_NOEXCEPT
80640     {
80641       return std::tie( sType, pNext, robustStorageBufferAccessSizeAlignment, robustUniformBufferAccessSizeAlignment );
80642     }
80643 #endif
80644 
80645 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80646     auto operator<=>( PhysicalDeviceRobustness2PropertiesEXT const & ) const = default;
80647 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT80648     bool operator==( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
80649     {
80650 #  if defined( VULKAN_HPP_USE_REFLECT )
80651       return this->reflect() == rhs.reflect();
80652 #  else
80653       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( robustStorageBufferAccessSizeAlignment == rhs.robustStorageBufferAccessSizeAlignment ) &&
80654              ( robustUniformBufferAccessSizeAlignment == rhs.robustUniformBufferAccessSizeAlignment );
80655 #  endif
80656     }
80657 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT80658     bool operator!=( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
80659     {
80660       return !operator==( rhs );
80661     }
80662 #endif
80663 
80664   public:
80665     VULKAN_HPP_NAMESPACE::StructureType sType                                  = StructureType::ePhysicalDeviceRobustness2PropertiesEXT;
80666     void *                              pNext                                  = {};
80667     VULKAN_HPP_NAMESPACE::DeviceSize    robustStorageBufferAccessSizeAlignment = {};
80668     VULKAN_HPP_NAMESPACE::DeviceSize    robustUniformBufferAccessSizeAlignment = {};
80669   };
80670 
80671   template <>
80672   struct CppType<StructureType, StructureType::ePhysicalDeviceRobustness2PropertiesEXT>
80673   {
80674     using Type = PhysicalDeviceRobustness2PropertiesEXT;
80675   };
80676 
80677   struct PhysicalDeviceSampleLocationsPropertiesEXT
80678   {
80679     using NativeType = VkPhysicalDeviceSampleLocationsPropertiesEXT;
80680 
80681     static const bool                                  allowDuplicate = false;
80682     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT;
80683 
80684 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSampleLocationsPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT80685     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSampleLocationsPropertiesEXT( VULKAN_HPP_NAMESPACE::SampleCountFlags sampleLocationSampleCounts_    = {},
80686                                                                         VULKAN_HPP_NAMESPACE::Extent2D         maxSampleLocationGridSize_     = {},
80687                                                                         std::array<float, 2> const &           sampleLocationCoordinateRange_ = {},
80688                                                                         uint32_t                               sampleLocationSubPixelBits_    = {},
80689                                                                         VULKAN_HPP_NAMESPACE::Bool32           variableSampleLocations_       = {},
80690                                                                         void *                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
80691       : pNext{ pNext_ }
80692       , sampleLocationSampleCounts{ sampleLocationSampleCounts_ }
80693       , maxSampleLocationGridSize{ maxSampleLocationGridSize_ }
80694       , sampleLocationCoordinateRange{ sampleLocationCoordinateRange_ }
80695       , sampleLocationSubPixelBits{ sampleLocationSubPixelBits_ }
80696       , variableSampleLocations{ variableSampleLocations_ }
80697     {
80698     }
80699 
80700     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSampleLocationsPropertiesEXT( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80701 
PhysicalDeviceSampleLocationsPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT80702     PhysicalDeviceSampleLocationsPropertiesEXT( VkPhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
80703       : PhysicalDeviceSampleLocationsPropertiesEXT( *reinterpret_cast<PhysicalDeviceSampleLocationsPropertiesEXT const *>( &rhs ) )
80704     {
80705     }
80706 
80707     PhysicalDeviceSampleLocationsPropertiesEXT & operator=( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80708 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80709 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT80710     PhysicalDeviceSampleLocationsPropertiesEXT & operator=( VkPhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
80711     {
80712       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT const *>( &rhs );
80713       return *this;
80714     }
80715 
operator VkPhysicalDeviceSampleLocationsPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT80716     operator VkPhysicalDeviceSampleLocationsPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
80717     {
80718       return *reinterpret_cast<const VkPhysicalDeviceSampleLocationsPropertiesEXT *>( this );
80719     }
80720 
operator VkPhysicalDeviceSampleLocationsPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT80721     operator VkPhysicalDeviceSampleLocationsPropertiesEXT &() VULKAN_HPP_NOEXCEPT
80722     {
80723       return *reinterpret_cast<VkPhysicalDeviceSampleLocationsPropertiesEXT *>( this );
80724     }
80725 
80726 #if defined( VULKAN_HPP_USE_REFLECT )
80727 #  if 14 <= VULKAN_HPP_CPP_VERSION
80728     auto
80729 #  else
80730     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
80731                void * const &,
80732                VULKAN_HPP_NAMESPACE::SampleCountFlags const &,
80733                VULKAN_HPP_NAMESPACE::Extent2D const &,
80734                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> const &,
80735                uint32_t const &,
80736                VULKAN_HPP_NAMESPACE::Bool32 const &>
80737 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT80738       reflect() const VULKAN_HPP_NOEXCEPT
80739     {
80740       return std::tie( sType,
80741                        pNext,
80742                        sampleLocationSampleCounts,
80743                        maxSampleLocationGridSize,
80744                        sampleLocationCoordinateRange,
80745                        sampleLocationSubPixelBits,
80746                        variableSampleLocations );
80747     }
80748 #endif
80749 
80750 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80751     auto operator<=>( PhysicalDeviceSampleLocationsPropertiesEXT const & ) const = default;
80752 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT80753     bool operator==( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
80754     {
80755 #  if defined( VULKAN_HPP_USE_REFLECT )
80756       return this->reflect() == rhs.reflect();
80757 #  else
80758       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sampleLocationSampleCounts == rhs.sampleLocationSampleCounts ) &&
80759              ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize ) && ( sampleLocationCoordinateRange == rhs.sampleLocationCoordinateRange ) &&
80760              ( sampleLocationSubPixelBits == rhs.sampleLocationSubPixelBits ) && ( variableSampleLocations == rhs.variableSampleLocations );
80761 #  endif
80762     }
80763 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT80764     bool operator!=( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
80765     {
80766       return !operator==( rhs );
80767     }
80768 #endif
80769 
80770   public:
80771     VULKAN_HPP_NAMESPACE::StructureType            sType                         = StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT;
80772     void *                                         pNext                         = {};
80773     VULKAN_HPP_NAMESPACE::SampleCountFlags         sampleLocationSampleCounts    = {};
80774     VULKAN_HPP_NAMESPACE::Extent2D                 maxSampleLocationGridSize     = {};
80775     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> sampleLocationCoordinateRange = {};
80776     uint32_t                                       sampleLocationSubPixelBits    = {};
80777     VULKAN_HPP_NAMESPACE::Bool32                   variableSampleLocations       = {};
80778   };
80779 
80780   template <>
80781   struct CppType<StructureType, StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT>
80782   {
80783     using Type = PhysicalDeviceSampleLocationsPropertiesEXT;
80784   };
80785 
80786   struct PhysicalDeviceSamplerFilterMinmaxProperties
80787   {
80788     using NativeType = VkPhysicalDeviceSamplerFilterMinmaxProperties;
80789 
80790     static const bool                                  allowDuplicate = false;
80791     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties;
80792 
80793 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSamplerFilterMinmaxPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties80794     VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerFilterMinmaxProperties( VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxSingleComponentFormats_ = {},
80795                                                                       VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxImageComponentMapping_  = {},
80796                                                                       void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
80797       : pNext{ pNext_ }
80798       , filterMinmaxSingleComponentFormats{ filterMinmaxSingleComponentFormats_ }
80799       , filterMinmaxImageComponentMapping{ filterMinmaxImageComponentMapping_ }
80800     {
80801     }
80802 
80803     VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerFilterMinmaxProperties( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80804 
PhysicalDeviceSamplerFilterMinmaxPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties80805     PhysicalDeviceSamplerFilterMinmaxProperties( VkPhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT
80806       : PhysicalDeviceSamplerFilterMinmaxProperties( *reinterpret_cast<PhysicalDeviceSamplerFilterMinmaxProperties const *>( &rhs ) )
80807     {
80808     }
80809 
80810     PhysicalDeviceSamplerFilterMinmaxProperties & operator=( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80811 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80812 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties80813     PhysicalDeviceSamplerFilterMinmaxProperties & operator=( VkPhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT
80814     {
80815       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties const *>( &rhs );
80816       return *this;
80817     }
80818 
operator VkPhysicalDeviceSamplerFilterMinmaxProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties80819     operator VkPhysicalDeviceSamplerFilterMinmaxProperties const &() const VULKAN_HPP_NOEXCEPT
80820     {
80821       return *reinterpret_cast<const VkPhysicalDeviceSamplerFilterMinmaxProperties *>( this );
80822     }
80823 
operator VkPhysicalDeviceSamplerFilterMinmaxProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties80824     operator VkPhysicalDeviceSamplerFilterMinmaxProperties &() VULKAN_HPP_NOEXCEPT
80825     {
80826       return *reinterpret_cast<VkPhysicalDeviceSamplerFilterMinmaxProperties *>( this );
80827     }
80828 
80829 #if defined( VULKAN_HPP_USE_REFLECT )
80830 #  if 14 <= VULKAN_HPP_CPP_VERSION
80831     auto
80832 #  else
80833     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
80834 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties80835       reflect() const VULKAN_HPP_NOEXCEPT
80836     {
80837       return std::tie( sType, pNext, filterMinmaxSingleComponentFormats, filterMinmaxImageComponentMapping );
80838     }
80839 #endif
80840 
80841 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80842     auto operator<=>( PhysicalDeviceSamplerFilterMinmaxProperties const & ) const = default;
80843 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties80844     bool operator==( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
80845     {
80846 #  if defined( VULKAN_HPP_USE_REFLECT )
80847       return this->reflect() == rhs.reflect();
80848 #  else
80849       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats ) &&
80850              ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping );
80851 #  endif
80852     }
80853 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties80854     bool operator!=( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
80855     {
80856       return !operator==( rhs );
80857     }
80858 #endif
80859 
80860   public:
80861     VULKAN_HPP_NAMESPACE::StructureType sType                              = StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties;
80862     void *                              pNext                              = {};
80863     VULKAN_HPP_NAMESPACE::Bool32        filterMinmaxSingleComponentFormats = {};
80864     VULKAN_HPP_NAMESPACE::Bool32        filterMinmaxImageComponentMapping  = {};
80865   };
80866 
80867   template <>
80868   struct CppType<StructureType, StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties>
80869   {
80870     using Type = PhysicalDeviceSamplerFilterMinmaxProperties;
80871   };
80872 
80873   using PhysicalDeviceSamplerFilterMinmaxPropertiesEXT = PhysicalDeviceSamplerFilterMinmaxProperties;
80874 
80875   struct PhysicalDeviceSamplerYcbcrConversionFeatures
80876   {
80877     using NativeType = VkPhysicalDeviceSamplerYcbcrConversionFeatures;
80878 
80879     static const bool                                  allowDuplicate = false;
80880     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures;
80881 
80882 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSamplerYcbcrConversionFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures80883     VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerYcbcrConversionFeatures( VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_ = {},
80884                                                                        void *                       pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
80885       : pNext{ pNext_ }
80886       , samplerYcbcrConversion{ samplerYcbcrConversion_ }
80887     {
80888     }
80889 
80890     VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerYcbcrConversionFeatures( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80891 
PhysicalDeviceSamplerYcbcrConversionFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures80892     PhysicalDeviceSamplerYcbcrConversionFeatures( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
80893       : PhysicalDeviceSamplerYcbcrConversionFeatures( *reinterpret_cast<PhysicalDeviceSamplerYcbcrConversionFeatures const *>( &rhs ) )
80894     {
80895     }
80896 
80897     PhysicalDeviceSamplerYcbcrConversionFeatures & operator=( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80898 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80899 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures80900     PhysicalDeviceSamplerYcbcrConversionFeatures & operator=( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
80901     {
80902       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures const *>( &rhs );
80903       return *this;
80904     }
80905 
80906 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures80907     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSamplerYcbcrConversionFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
80908     {
80909       pNext = pNext_;
80910       return *this;
80911     }
80912 
80913     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSamplerYcbcrConversionFeatures &
setSamplerYcbcrConversionVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures80914       setSamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_ ) VULKAN_HPP_NOEXCEPT
80915     {
80916       samplerYcbcrConversion = samplerYcbcrConversion_;
80917       return *this;
80918     }
80919 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
80920 
operator VkPhysicalDeviceSamplerYcbcrConversionFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures80921     operator VkPhysicalDeviceSamplerYcbcrConversionFeatures const &() const VULKAN_HPP_NOEXCEPT
80922     {
80923       return *reinterpret_cast<const VkPhysicalDeviceSamplerYcbcrConversionFeatures *>( this );
80924     }
80925 
operator VkPhysicalDeviceSamplerYcbcrConversionFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures80926     operator VkPhysicalDeviceSamplerYcbcrConversionFeatures &() VULKAN_HPP_NOEXCEPT
80927     {
80928       return *reinterpret_cast<VkPhysicalDeviceSamplerYcbcrConversionFeatures *>( this );
80929     }
80930 
80931 #if defined( VULKAN_HPP_USE_REFLECT )
80932 #  if 14 <= VULKAN_HPP_CPP_VERSION
80933     auto
80934 #  else
80935     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
80936 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures80937       reflect() const VULKAN_HPP_NOEXCEPT
80938     {
80939       return std::tie( sType, pNext, samplerYcbcrConversion );
80940     }
80941 #endif
80942 
80943 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
80944     auto operator<=>( PhysicalDeviceSamplerYcbcrConversionFeatures const & ) const = default;
80945 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures80946     bool operator==( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
80947     {
80948 #  if defined( VULKAN_HPP_USE_REFLECT )
80949       return this->reflect() == rhs.reflect();
80950 #  else
80951       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( samplerYcbcrConversion == rhs.samplerYcbcrConversion );
80952 #  endif
80953     }
80954 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures80955     bool operator!=( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
80956     {
80957       return !operator==( rhs );
80958     }
80959 #endif
80960 
80961   public:
80962     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures;
80963     void *                              pNext                  = {};
80964     VULKAN_HPP_NAMESPACE::Bool32        samplerYcbcrConversion = {};
80965   };
80966 
80967   template <>
80968   struct CppType<StructureType, StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures>
80969   {
80970     using Type = PhysicalDeviceSamplerYcbcrConversionFeatures;
80971   };
80972 
80973   using PhysicalDeviceSamplerYcbcrConversionFeaturesKHR = PhysicalDeviceSamplerYcbcrConversionFeatures;
80974 
80975   struct PhysicalDeviceScalarBlockLayoutFeatures
80976   {
80977     using NativeType = VkPhysicalDeviceScalarBlockLayoutFeatures;
80978 
80979     static const bool                                  allowDuplicate = false;
80980     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceScalarBlockLayoutFeatures;
80981 
80982 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceScalarBlockLayoutFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures80983     VULKAN_HPP_CONSTEXPR PhysicalDeviceScalarBlockLayoutFeatures( VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_ = {},
80984                                                                   void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
80985       : pNext{ pNext_ }
80986       , scalarBlockLayout{ scalarBlockLayout_ }
80987     {
80988     }
80989 
80990     VULKAN_HPP_CONSTEXPR PhysicalDeviceScalarBlockLayoutFeatures( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80991 
PhysicalDeviceScalarBlockLayoutFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures80992     PhysicalDeviceScalarBlockLayoutFeatures( VkPhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
80993       : PhysicalDeviceScalarBlockLayoutFeatures( *reinterpret_cast<PhysicalDeviceScalarBlockLayoutFeatures const *>( &rhs ) )
80994     {
80995     }
80996 
80997     PhysicalDeviceScalarBlockLayoutFeatures & operator=( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
80998 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
80999 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures81000     PhysicalDeviceScalarBlockLayoutFeatures & operator=( VkPhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
81001     {
81002       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures const *>( &rhs );
81003       return *this;
81004     }
81005 
81006 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures81007     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceScalarBlockLayoutFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
81008     {
81009       pNext = pNext_;
81010       return *this;
81011     }
81012 
81013     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceScalarBlockLayoutFeatures &
setScalarBlockLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures81014       setScalarBlockLayout( VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_ ) VULKAN_HPP_NOEXCEPT
81015     {
81016       scalarBlockLayout = scalarBlockLayout_;
81017       return *this;
81018     }
81019 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
81020 
operator VkPhysicalDeviceScalarBlockLayoutFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures81021     operator VkPhysicalDeviceScalarBlockLayoutFeatures const &() const VULKAN_HPP_NOEXCEPT
81022     {
81023       return *reinterpret_cast<const VkPhysicalDeviceScalarBlockLayoutFeatures *>( this );
81024     }
81025 
operator VkPhysicalDeviceScalarBlockLayoutFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures81026     operator VkPhysicalDeviceScalarBlockLayoutFeatures &() VULKAN_HPP_NOEXCEPT
81027     {
81028       return *reinterpret_cast<VkPhysicalDeviceScalarBlockLayoutFeatures *>( this );
81029     }
81030 
81031 #if defined( VULKAN_HPP_USE_REFLECT )
81032 #  if 14 <= VULKAN_HPP_CPP_VERSION
81033     auto
81034 #  else
81035     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
81036 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures81037       reflect() const VULKAN_HPP_NOEXCEPT
81038     {
81039       return std::tie( sType, pNext, scalarBlockLayout );
81040     }
81041 #endif
81042 
81043 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81044     auto operator<=>( PhysicalDeviceScalarBlockLayoutFeatures const & ) const = default;
81045 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures81046     bool operator==( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
81047     {
81048 #  if defined( VULKAN_HPP_USE_REFLECT )
81049       return this->reflect() == rhs.reflect();
81050 #  else
81051       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( scalarBlockLayout == rhs.scalarBlockLayout );
81052 #  endif
81053     }
81054 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures81055     bool operator!=( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
81056     {
81057       return !operator==( rhs );
81058     }
81059 #endif
81060 
81061   public:
81062     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceScalarBlockLayoutFeatures;
81063     void *                              pNext             = {};
81064     VULKAN_HPP_NAMESPACE::Bool32        scalarBlockLayout = {};
81065   };
81066 
81067   template <>
81068   struct CppType<StructureType, StructureType::ePhysicalDeviceScalarBlockLayoutFeatures>
81069   {
81070     using Type = PhysicalDeviceScalarBlockLayoutFeatures;
81071   };
81072 
81073   using PhysicalDeviceScalarBlockLayoutFeaturesEXT = PhysicalDeviceScalarBlockLayoutFeatures;
81074 
81075   struct PhysicalDeviceSchedulingControlsFeaturesARM
81076   {
81077     using NativeType = VkPhysicalDeviceSchedulingControlsFeaturesARM;
81078 
81079     static const bool                                  allowDuplicate = false;
81080     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSchedulingControlsFeaturesARM;
81081 
81082 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSchedulingControlsFeaturesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM81083     VULKAN_HPP_CONSTEXPR PhysicalDeviceSchedulingControlsFeaturesARM( VULKAN_HPP_NAMESPACE::Bool32 schedulingControls_ = {},
81084                                                                       void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
81085       : pNext{ pNext_ }
81086       , schedulingControls{ schedulingControls_ }
81087     {
81088     }
81089 
81090     VULKAN_HPP_CONSTEXPR PhysicalDeviceSchedulingControlsFeaturesARM( PhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81091 
PhysicalDeviceSchedulingControlsFeaturesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM81092     PhysicalDeviceSchedulingControlsFeaturesARM( VkPhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT
81093       : PhysicalDeviceSchedulingControlsFeaturesARM( *reinterpret_cast<PhysicalDeviceSchedulingControlsFeaturesARM const *>( &rhs ) )
81094     {
81095     }
81096 
81097     PhysicalDeviceSchedulingControlsFeaturesARM & operator=( PhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81098 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81099 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM81100     PhysicalDeviceSchedulingControlsFeaturesARM & operator=( VkPhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT
81101     {
81102       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM const *>( &rhs );
81103       return *this;
81104     }
81105 
81106 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM81107     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSchedulingControlsFeaturesARM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
81108     {
81109       pNext = pNext_;
81110       return *this;
81111     }
81112 
81113     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSchedulingControlsFeaturesARM &
setSchedulingControlsVULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM81114       setSchedulingControls( VULKAN_HPP_NAMESPACE::Bool32 schedulingControls_ ) VULKAN_HPP_NOEXCEPT
81115     {
81116       schedulingControls = schedulingControls_;
81117       return *this;
81118     }
81119 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
81120 
operator VkPhysicalDeviceSchedulingControlsFeaturesARM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM81121     operator VkPhysicalDeviceSchedulingControlsFeaturesARM const &() const VULKAN_HPP_NOEXCEPT
81122     {
81123       return *reinterpret_cast<const VkPhysicalDeviceSchedulingControlsFeaturesARM *>( this );
81124     }
81125 
operator VkPhysicalDeviceSchedulingControlsFeaturesARM&VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM81126     operator VkPhysicalDeviceSchedulingControlsFeaturesARM &() VULKAN_HPP_NOEXCEPT
81127     {
81128       return *reinterpret_cast<VkPhysicalDeviceSchedulingControlsFeaturesARM *>( this );
81129     }
81130 
81131 #if defined( VULKAN_HPP_USE_REFLECT )
81132 #  if 14 <= VULKAN_HPP_CPP_VERSION
81133     auto
81134 #  else
81135     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
81136 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM81137       reflect() const VULKAN_HPP_NOEXCEPT
81138     {
81139       return std::tie( sType, pNext, schedulingControls );
81140     }
81141 #endif
81142 
81143 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81144     auto operator<=>( PhysicalDeviceSchedulingControlsFeaturesARM const & ) const = default;
81145 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM81146     bool operator==( PhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
81147     {
81148 #  if defined( VULKAN_HPP_USE_REFLECT )
81149       return this->reflect() == rhs.reflect();
81150 #  else
81151       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( schedulingControls == rhs.schedulingControls );
81152 #  endif
81153     }
81154 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM81155     bool operator!=( PhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
81156     {
81157       return !operator==( rhs );
81158     }
81159 #endif
81160 
81161   public:
81162     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceSchedulingControlsFeaturesARM;
81163     void *                              pNext              = {};
81164     VULKAN_HPP_NAMESPACE::Bool32        schedulingControls = {};
81165   };
81166 
81167   template <>
81168   struct CppType<StructureType, StructureType::ePhysicalDeviceSchedulingControlsFeaturesARM>
81169   {
81170     using Type = PhysicalDeviceSchedulingControlsFeaturesARM;
81171   };
81172 
81173   struct PhysicalDeviceSchedulingControlsPropertiesARM
81174   {
81175     using NativeType = VkPhysicalDeviceSchedulingControlsPropertiesARM;
81176 
81177     static const bool                                  allowDuplicate = false;
81178     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSchedulingControlsPropertiesARM;
81179 
81180 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
81181     VULKAN_HPP_CONSTEXPR
PhysicalDeviceSchedulingControlsPropertiesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM81182       PhysicalDeviceSchedulingControlsPropertiesARM( VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFlagsARM schedulingControlsFlags_ = {},
81183                                                      void *                                                         pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
81184       : pNext{ pNext_ }
81185       , schedulingControlsFlags{ schedulingControlsFlags_ }
81186     {
81187     }
81188 
81189     VULKAN_HPP_CONSTEXPR
81190       PhysicalDeviceSchedulingControlsPropertiesARM( PhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81191 
PhysicalDeviceSchedulingControlsPropertiesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM81192     PhysicalDeviceSchedulingControlsPropertiesARM( VkPhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT
81193       : PhysicalDeviceSchedulingControlsPropertiesARM( *reinterpret_cast<PhysicalDeviceSchedulingControlsPropertiesARM const *>( &rhs ) )
81194     {
81195     }
81196 
81197     PhysicalDeviceSchedulingControlsPropertiesARM & operator=( PhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81198 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81199 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM81200     PhysicalDeviceSchedulingControlsPropertiesARM & operator=( VkPhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT
81201     {
81202       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM const *>( &rhs );
81203       return *this;
81204     }
81205 
81206 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM81207     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSchedulingControlsPropertiesARM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
81208     {
81209       pNext = pNext_;
81210       return *this;
81211     }
81212 
81213     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSchedulingControlsPropertiesARM &
setSchedulingControlsFlagsVULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM81214       setSchedulingControlsFlags( VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFlagsARM schedulingControlsFlags_ ) VULKAN_HPP_NOEXCEPT
81215     {
81216       schedulingControlsFlags = schedulingControlsFlags_;
81217       return *this;
81218     }
81219 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
81220 
operator VkPhysicalDeviceSchedulingControlsPropertiesARM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM81221     operator VkPhysicalDeviceSchedulingControlsPropertiesARM const &() const VULKAN_HPP_NOEXCEPT
81222     {
81223       return *reinterpret_cast<const VkPhysicalDeviceSchedulingControlsPropertiesARM *>( this );
81224     }
81225 
operator VkPhysicalDeviceSchedulingControlsPropertiesARM&VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM81226     operator VkPhysicalDeviceSchedulingControlsPropertiesARM &() VULKAN_HPP_NOEXCEPT
81227     {
81228       return *reinterpret_cast<VkPhysicalDeviceSchedulingControlsPropertiesARM *>( this );
81229     }
81230 
81231 #if defined( VULKAN_HPP_USE_REFLECT )
81232 #  if 14 <= VULKAN_HPP_CPP_VERSION
81233     auto
81234 #  else
81235     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFlagsARM const &>
81236 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM81237       reflect() const VULKAN_HPP_NOEXCEPT
81238     {
81239       return std::tie( sType, pNext, schedulingControlsFlags );
81240     }
81241 #endif
81242 
81243 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81244     auto operator<=>( PhysicalDeviceSchedulingControlsPropertiesARM const & ) const = default;
81245 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM81246     bool operator==( PhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
81247     {
81248 #  if defined( VULKAN_HPP_USE_REFLECT )
81249       return this->reflect() == rhs.reflect();
81250 #  else
81251       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( schedulingControlsFlags == rhs.schedulingControlsFlags );
81252 #  endif
81253     }
81254 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM81255     bool operator!=( PhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
81256     {
81257       return !operator==( rhs );
81258     }
81259 #endif
81260 
81261   public:
81262     VULKAN_HPP_NAMESPACE::StructureType                            sType                   = StructureType::ePhysicalDeviceSchedulingControlsPropertiesARM;
81263     void *                                                         pNext                   = {};
81264     VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFlagsARM schedulingControlsFlags = {};
81265   };
81266 
81267   template <>
81268   struct CppType<StructureType, StructureType::ePhysicalDeviceSchedulingControlsPropertiesARM>
81269   {
81270     using Type = PhysicalDeviceSchedulingControlsPropertiesARM;
81271   };
81272 
81273   struct PhysicalDeviceSeparateDepthStencilLayoutsFeatures
81274   {
81275     using NativeType = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures;
81276 
81277     static const bool                                  allowDuplicate = false;
81278     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures;
81279 
81280 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSeparateDepthStencilLayoutsFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures81281     VULKAN_HPP_CONSTEXPR PhysicalDeviceSeparateDepthStencilLayoutsFeatures( VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_ = {},
81282                                                                             void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
81283       : pNext{ pNext_ }
81284       , separateDepthStencilLayouts{ separateDepthStencilLayouts_ }
81285     {
81286     }
81287 
81288     VULKAN_HPP_CONSTEXPR
81289       PhysicalDeviceSeparateDepthStencilLayoutsFeatures( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81290 
PhysicalDeviceSeparateDepthStencilLayoutsFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures81291     PhysicalDeviceSeparateDepthStencilLayoutsFeatures( VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
81292       : PhysicalDeviceSeparateDepthStencilLayoutsFeatures( *reinterpret_cast<PhysicalDeviceSeparateDepthStencilLayoutsFeatures const *>( &rhs ) )
81293     {
81294     }
81295 
81296     PhysicalDeviceSeparateDepthStencilLayoutsFeatures &
81297       operator=( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81298 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81299 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures81300     PhysicalDeviceSeparateDepthStencilLayoutsFeatures & operator=( VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
81301     {
81302       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures const *>( &rhs );
81303       return *this;
81304     }
81305 
81306 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures81307     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSeparateDepthStencilLayoutsFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
81308     {
81309       pNext = pNext_;
81310       return *this;
81311     }
81312 
81313     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSeparateDepthStencilLayoutsFeatures &
setSeparateDepthStencilLayoutsVULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures81314       setSeparateDepthStencilLayouts( VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_ ) VULKAN_HPP_NOEXCEPT
81315     {
81316       separateDepthStencilLayouts = separateDepthStencilLayouts_;
81317       return *this;
81318     }
81319 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
81320 
operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures81321     operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const &() const VULKAN_HPP_NOEXCEPT
81322     {
81323       return *reinterpret_cast<const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures *>( this );
81324     }
81325 
operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures81326     operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures &() VULKAN_HPP_NOEXCEPT
81327     {
81328       return *reinterpret_cast<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures *>( this );
81329     }
81330 
81331 #if defined( VULKAN_HPP_USE_REFLECT )
81332 #  if 14 <= VULKAN_HPP_CPP_VERSION
81333     auto
81334 #  else
81335     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
81336 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures81337       reflect() const VULKAN_HPP_NOEXCEPT
81338     {
81339       return std::tie( sType, pNext, separateDepthStencilLayouts );
81340     }
81341 #endif
81342 
81343 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81344     auto operator<=>( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & ) const = default;
81345 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures81346     bool operator==( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
81347     {
81348 #  if defined( VULKAN_HPP_USE_REFLECT )
81349       return this->reflect() == rhs.reflect();
81350 #  else
81351       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( separateDepthStencilLayouts == rhs.separateDepthStencilLayouts );
81352 #  endif
81353     }
81354 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures81355     bool operator!=( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
81356     {
81357       return !operator==( rhs );
81358     }
81359 #endif
81360 
81361   public:
81362     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures;
81363     void *                              pNext                       = {};
81364     VULKAN_HPP_NAMESPACE::Bool32        separateDepthStencilLayouts = {};
81365   };
81366 
81367   template <>
81368   struct CppType<StructureType, StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures>
81369   {
81370     using Type = PhysicalDeviceSeparateDepthStencilLayoutsFeatures;
81371   };
81372 
81373   using PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = PhysicalDeviceSeparateDepthStencilLayoutsFeatures;
81374 
81375   struct PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV
81376   {
81377     using NativeType = VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV;
81378 
81379     static const bool                                  allowDuplicate = false;
81380     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderAtomicFloat16VectorFeaturesNV;
81381 
81382 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderAtomicFloat16VectorFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV81383     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16VectorAtomics_ = {},
81384                                                                             void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
81385       : pNext{ pNext_ }
81386       , shaderFloat16VectorAtomics{ shaderFloat16VectorAtomics_ }
81387     {
81388     }
81389 
81390     VULKAN_HPP_CONSTEXPR
81391       PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV( PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81392 
PhysicalDeviceShaderAtomicFloat16VectorFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV81393     PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV( VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
81394       : PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV( *reinterpret_cast<PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const *>( &rhs ) )
81395     {
81396     }
81397 
81398     PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV &
81399       operator=( PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81400 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81401 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV81402     PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV & operator=( VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
81403     {
81404       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const *>( &rhs );
81405       return *this;
81406     }
81407 
81408 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV81409     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
81410     {
81411       pNext = pNext_;
81412       return *this;
81413     }
81414 
81415     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV &
setShaderFloat16VectorAtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV81416       setShaderFloat16VectorAtomics( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16VectorAtomics_ ) VULKAN_HPP_NOEXCEPT
81417     {
81418       shaderFloat16VectorAtomics = shaderFloat16VectorAtomics_;
81419       return *this;
81420     }
81421 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
81422 
operator VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV81423     operator VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
81424     {
81425       return *reinterpret_cast<const VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV *>( this );
81426     }
81427 
operator VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV81428     operator VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV &() VULKAN_HPP_NOEXCEPT
81429     {
81430       return *reinterpret_cast<VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV *>( this );
81431     }
81432 
81433 #if defined( VULKAN_HPP_USE_REFLECT )
81434 #  if 14 <= VULKAN_HPP_CPP_VERSION
81435     auto
81436 #  else
81437     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
81438 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV81439       reflect() const VULKAN_HPP_NOEXCEPT
81440     {
81441       return std::tie( sType, pNext, shaderFloat16VectorAtomics );
81442     }
81443 #endif
81444 
81445 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81446     auto operator<=>( PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & ) const = default;
81447 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV81448     bool operator==( PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
81449     {
81450 #  if defined( VULKAN_HPP_USE_REFLECT )
81451       return this->reflect() == rhs.reflect();
81452 #  else
81453       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderFloat16VectorAtomics == rhs.shaderFloat16VectorAtomics );
81454 #  endif
81455     }
81456 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV81457     bool operator!=( PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
81458     {
81459       return !operator==( rhs );
81460     }
81461 #endif
81462 
81463   public:
81464     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::ePhysicalDeviceShaderAtomicFloat16VectorFeaturesNV;
81465     void *                              pNext                      = {};
81466     VULKAN_HPP_NAMESPACE::Bool32        shaderFloat16VectorAtomics = {};
81467   };
81468 
81469   template <>
81470   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderAtomicFloat16VectorFeaturesNV>
81471   {
81472     using Type = PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV;
81473   };
81474 
81475   struct PhysicalDeviceShaderAtomicFloat2FeaturesEXT
81476   {
81477     using NativeType = VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT;
81478 
81479     static const bool                                  allowDuplicate = false;
81480     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderAtomicFloat2FeaturesEXT;
81481 
81482 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderAtomicFloat2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT81483     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloat2FeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16Atomics_      = {},
81484                                                                       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16AtomicAdd_    = {},
81485                                                                       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16AtomicMinMax_ = {},
81486                                                                       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicMinMax_ = {},
81487                                                                       VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicMinMax_ = {},
81488                                                                       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16Atomics_      = {},
81489                                                                       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16AtomicAdd_    = {},
81490                                                                       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16AtomicMinMax_ = {},
81491                                                                       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicMinMax_ = {},
81492                                                                       VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicMinMax_ = {},
81493                                                                       VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicMinMax_  = {},
81494                                                                       VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicMinMax_  = {},
81495                                                                       void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
81496       : pNext{ pNext_ }
81497       , shaderBufferFloat16Atomics{ shaderBufferFloat16Atomics_ }
81498       , shaderBufferFloat16AtomicAdd{ shaderBufferFloat16AtomicAdd_ }
81499       , shaderBufferFloat16AtomicMinMax{ shaderBufferFloat16AtomicMinMax_ }
81500       , shaderBufferFloat32AtomicMinMax{ shaderBufferFloat32AtomicMinMax_ }
81501       , shaderBufferFloat64AtomicMinMax{ shaderBufferFloat64AtomicMinMax_ }
81502       , shaderSharedFloat16Atomics{ shaderSharedFloat16Atomics_ }
81503       , shaderSharedFloat16AtomicAdd{ shaderSharedFloat16AtomicAdd_ }
81504       , shaderSharedFloat16AtomicMinMax{ shaderSharedFloat16AtomicMinMax_ }
81505       , shaderSharedFloat32AtomicMinMax{ shaderSharedFloat32AtomicMinMax_ }
81506       , shaderSharedFloat64AtomicMinMax{ shaderSharedFloat64AtomicMinMax_ }
81507       , shaderImageFloat32AtomicMinMax{ shaderImageFloat32AtomicMinMax_ }
81508       , sparseImageFloat32AtomicMinMax{ sparseImageFloat32AtomicMinMax_ }
81509     {
81510     }
81511 
81512     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloat2FeaturesEXT( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81513 
PhysicalDeviceShaderAtomicFloat2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT81514     PhysicalDeviceShaderAtomicFloat2FeaturesEXT( VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
81515       : PhysicalDeviceShaderAtomicFloat2FeaturesEXT( *reinterpret_cast<PhysicalDeviceShaderAtomicFloat2FeaturesEXT const *>( &rhs ) )
81516     {
81517     }
81518 
81519     PhysicalDeviceShaderAtomicFloat2FeaturesEXT & operator=( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81520 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81521 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT81522     PhysicalDeviceShaderAtomicFloat2FeaturesEXT & operator=( VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
81523     {
81524       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT const *>( &rhs );
81525       return *this;
81526     }
81527 
81528 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT81529     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
81530     {
81531       pNext = pNext_;
81532       return *this;
81533     }
81534 
81535     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderBufferFloat16AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT81536       setShaderBufferFloat16Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16Atomics_ ) VULKAN_HPP_NOEXCEPT
81537     {
81538       shaderBufferFloat16Atomics = shaderBufferFloat16Atomics_;
81539       return *this;
81540     }
81541 
81542     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderBufferFloat16AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT81543       setShaderBufferFloat16AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
81544     {
81545       shaderBufferFloat16AtomicAdd = shaderBufferFloat16AtomicAdd_;
81546       return *this;
81547     }
81548 
81549     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderBufferFloat16AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT81550       setShaderBufferFloat16AtomicMinMax( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat16AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
81551     {
81552       shaderBufferFloat16AtomicMinMax = shaderBufferFloat16AtomicMinMax_;
81553       return *this;
81554     }
81555 
81556     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderBufferFloat32AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT81557       setShaderBufferFloat32AtomicMinMax( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
81558     {
81559       shaderBufferFloat32AtomicMinMax = shaderBufferFloat32AtomicMinMax_;
81560       return *this;
81561     }
81562 
81563     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderBufferFloat64AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT81564       setShaderBufferFloat64AtomicMinMax( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
81565     {
81566       shaderBufferFloat64AtomicMinMax = shaderBufferFloat64AtomicMinMax_;
81567       return *this;
81568     }
81569 
81570     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderSharedFloat16AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT81571       setShaderSharedFloat16Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16Atomics_ ) VULKAN_HPP_NOEXCEPT
81572     {
81573       shaderSharedFloat16Atomics = shaderSharedFloat16Atomics_;
81574       return *this;
81575     }
81576 
81577     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderSharedFloat16AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT81578       setShaderSharedFloat16AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
81579     {
81580       shaderSharedFloat16AtomicAdd = shaderSharedFloat16AtomicAdd_;
81581       return *this;
81582     }
81583 
81584     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderSharedFloat16AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT81585       setShaderSharedFloat16AtomicMinMax( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat16AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
81586     {
81587       shaderSharedFloat16AtomicMinMax = shaderSharedFloat16AtomicMinMax_;
81588       return *this;
81589     }
81590 
81591     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderSharedFloat32AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT81592       setShaderSharedFloat32AtomicMinMax( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
81593     {
81594       shaderSharedFloat32AtomicMinMax = shaderSharedFloat32AtomicMinMax_;
81595       return *this;
81596     }
81597 
81598     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderSharedFloat64AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT81599       setShaderSharedFloat64AtomicMinMax( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
81600     {
81601       shaderSharedFloat64AtomicMinMax = shaderSharedFloat64AtomicMinMax_;
81602       return *this;
81603     }
81604 
81605     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setShaderImageFloat32AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT81606       setShaderImageFloat32AtomicMinMax( VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
81607     {
81608       shaderImageFloat32AtomicMinMax = shaderImageFloat32AtomicMinMax_;
81609       return *this;
81610     }
81611 
81612     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT &
setSparseImageFloat32AtomicMinMaxVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT81613       setSparseImageFloat32AtomicMinMax( VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicMinMax_ ) VULKAN_HPP_NOEXCEPT
81614     {
81615       sparseImageFloat32AtomicMinMax = sparseImageFloat32AtomicMinMax_;
81616       return *this;
81617     }
81618 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
81619 
operator VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT81620     operator VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
81621     {
81622       return *reinterpret_cast<const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT *>( this );
81623     }
81624 
operator VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT81625     operator VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT &() VULKAN_HPP_NOEXCEPT
81626     {
81627       return *reinterpret_cast<VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT *>( this );
81628     }
81629 
81630 #if defined( VULKAN_HPP_USE_REFLECT )
81631 #  if 14 <= VULKAN_HPP_CPP_VERSION
81632     auto
81633 #  else
81634     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
81635                void * const &,
81636                VULKAN_HPP_NAMESPACE::Bool32 const &,
81637                VULKAN_HPP_NAMESPACE::Bool32 const &,
81638                VULKAN_HPP_NAMESPACE::Bool32 const &,
81639                VULKAN_HPP_NAMESPACE::Bool32 const &,
81640                VULKAN_HPP_NAMESPACE::Bool32 const &,
81641                VULKAN_HPP_NAMESPACE::Bool32 const &,
81642                VULKAN_HPP_NAMESPACE::Bool32 const &,
81643                VULKAN_HPP_NAMESPACE::Bool32 const &,
81644                VULKAN_HPP_NAMESPACE::Bool32 const &,
81645                VULKAN_HPP_NAMESPACE::Bool32 const &,
81646                VULKAN_HPP_NAMESPACE::Bool32 const &,
81647                VULKAN_HPP_NAMESPACE::Bool32 const &>
81648 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT81649       reflect() const VULKAN_HPP_NOEXCEPT
81650     {
81651       return std::tie( sType,
81652                        pNext,
81653                        shaderBufferFloat16Atomics,
81654                        shaderBufferFloat16AtomicAdd,
81655                        shaderBufferFloat16AtomicMinMax,
81656                        shaderBufferFloat32AtomicMinMax,
81657                        shaderBufferFloat64AtomicMinMax,
81658                        shaderSharedFloat16Atomics,
81659                        shaderSharedFloat16AtomicAdd,
81660                        shaderSharedFloat16AtomicMinMax,
81661                        shaderSharedFloat32AtomicMinMax,
81662                        shaderSharedFloat64AtomicMinMax,
81663                        shaderImageFloat32AtomicMinMax,
81664                        sparseImageFloat32AtomicMinMax );
81665     }
81666 #endif
81667 
81668 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81669     auto operator<=>( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & ) const = default;
81670 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT81671     bool operator==( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
81672     {
81673 #  if defined( VULKAN_HPP_USE_REFLECT )
81674       return this->reflect() == rhs.reflect();
81675 #  else
81676       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderBufferFloat16Atomics == rhs.shaderBufferFloat16Atomics ) &&
81677              ( shaderBufferFloat16AtomicAdd == rhs.shaderBufferFloat16AtomicAdd ) &&
81678              ( shaderBufferFloat16AtomicMinMax == rhs.shaderBufferFloat16AtomicMinMax ) &&
81679              ( shaderBufferFloat32AtomicMinMax == rhs.shaderBufferFloat32AtomicMinMax ) &&
81680              ( shaderBufferFloat64AtomicMinMax == rhs.shaderBufferFloat64AtomicMinMax ) && ( shaderSharedFloat16Atomics == rhs.shaderSharedFloat16Atomics ) &&
81681              ( shaderSharedFloat16AtomicAdd == rhs.shaderSharedFloat16AtomicAdd ) &&
81682              ( shaderSharedFloat16AtomicMinMax == rhs.shaderSharedFloat16AtomicMinMax ) &&
81683              ( shaderSharedFloat32AtomicMinMax == rhs.shaderSharedFloat32AtomicMinMax ) &&
81684              ( shaderSharedFloat64AtomicMinMax == rhs.shaderSharedFloat64AtomicMinMax ) &&
81685              ( shaderImageFloat32AtomicMinMax == rhs.shaderImageFloat32AtomicMinMax ) &&
81686              ( sparseImageFloat32AtomicMinMax == rhs.sparseImageFloat32AtomicMinMax );
81687 #  endif
81688     }
81689 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT81690     bool operator!=( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
81691     {
81692       return !operator==( rhs );
81693     }
81694 #endif
81695 
81696   public:
81697     VULKAN_HPP_NAMESPACE::StructureType sType                           = StructureType::ePhysicalDeviceShaderAtomicFloat2FeaturesEXT;
81698     void *                              pNext                           = {};
81699     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat16Atomics      = {};
81700     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat16AtomicAdd    = {};
81701     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat16AtomicMinMax = {};
81702     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat32AtomicMinMax = {};
81703     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat64AtomicMinMax = {};
81704     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat16Atomics      = {};
81705     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat16AtomicAdd    = {};
81706     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat16AtomicMinMax = {};
81707     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat32AtomicMinMax = {};
81708     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat64AtomicMinMax = {};
81709     VULKAN_HPP_NAMESPACE::Bool32        shaderImageFloat32AtomicMinMax  = {};
81710     VULKAN_HPP_NAMESPACE::Bool32        sparseImageFloat32AtomicMinMax  = {};
81711   };
81712 
81713   template <>
81714   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderAtomicFloat2FeaturesEXT>
81715   {
81716     using Type = PhysicalDeviceShaderAtomicFloat2FeaturesEXT;
81717   };
81718 
81719   struct PhysicalDeviceShaderAtomicFloatFeaturesEXT
81720   {
81721     using NativeType = VkPhysicalDeviceShaderAtomicFloatFeaturesEXT;
81722 
81723     static const bool                                  allowDuplicate = false;
81724     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT;
81725 
81726 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderAtomicFloatFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT81727     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloatFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32Atomics_   = {},
81728                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicAdd_ = {},
81729                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64Atomics_   = {},
81730                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicAdd_ = {},
81731                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32Atomics_   = {},
81732                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicAdd_ = {},
81733                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64Atomics_   = {},
81734                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicAdd_ = {},
81735                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32Atomics_    = {},
81736                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicAdd_  = {},
81737                                                                      VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32Atomics_    = {},
81738                                                                      VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicAdd_  = {},
81739                                                                      void *                       pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
81740       : pNext{ pNext_ }
81741       , shaderBufferFloat32Atomics{ shaderBufferFloat32Atomics_ }
81742       , shaderBufferFloat32AtomicAdd{ shaderBufferFloat32AtomicAdd_ }
81743       , shaderBufferFloat64Atomics{ shaderBufferFloat64Atomics_ }
81744       , shaderBufferFloat64AtomicAdd{ shaderBufferFloat64AtomicAdd_ }
81745       , shaderSharedFloat32Atomics{ shaderSharedFloat32Atomics_ }
81746       , shaderSharedFloat32AtomicAdd{ shaderSharedFloat32AtomicAdd_ }
81747       , shaderSharedFloat64Atomics{ shaderSharedFloat64Atomics_ }
81748       , shaderSharedFloat64AtomicAdd{ shaderSharedFloat64AtomicAdd_ }
81749       , shaderImageFloat32Atomics{ shaderImageFloat32Atomics_ }
81750       , shaderImageFloat32AtomicAdd{ shaderImageFloat32AtomicAdd_ }
81751       , sparseImageFloat32Atomics{ sparseImageFloat32Atomics_ }
81752       , sparseImageFloat32AtomicAdd{ sparseImageFloat32AtomicAdd_ }
81753     {
81754     }
81755 
81756     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloatFeaturesEXT( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81757 
PhysicalDeviceShaderAtomicFloatFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT81758     PhysicalDeviceShaderAtomicFloatFeaturesEXT( VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
81759       : PhysicalDeviceShaderAtomicFloatFeaturesEXT( *reinterpret_cast<PhysicalDeviceShaderAtomicFloatFeaturesEXT const *>( &rhs ) )
81760     {
81761     }
81762 
81763     PhysicalDeviceShaderAtomicFloatFeaturesEXT & operator=( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81764 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81765 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT81766     PhysicalDeviceShaderAtomicFloatFeaturesEXT & operator=( VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
81767     {
81768       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT const *>( &rhs );
81769       return *this;
81770     }
81771 
81772 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT81773     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
81774     {
81775       pNext = pNext_;
81776       return *this;
81777     }
81778 
81779     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderBufferFloat32AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT81780       setShaderBufferFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT
81781     {
81782       shaderBufferFloat32Atomics = shaderBufferFloat32Atomics_;
81783       return *this;
81784     }
81785 
81786     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderBufferFloat32AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT81787       setShaderBufferFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
81788     {
81789       shaderBufferFloat32AtomicAdd = shaderBufferFloat32AtomicAdd_;
81790       return *this;
81791     }
81792 
81793     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderBufferFloat64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT81794       setShaderBufferFloat64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64Atomics_ ) VULKAN_HPP_NOEXCEPT
81795     {
81796       shaderBufferFloat64Atomics = shaderBufferFloat64Atomics_;
81797       return *this;
81798     }
81799 
81800     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderBufferFloat64AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT81801       setShaderBufferFloat64AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
81802     {
81803       shaderBufferFloat64AtomicAdd = shaderBufferFloat64AtomicAdd_;
81804       return *this;
81805     }
81806 
81807     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderSharedFloat32AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT81808       setShaderSharedFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT
81809     {
81810       shaderSharedFloat32Atomics = shaderSharedFloat32Atomics_;
81811       return *this;
81812     }
81813 
81814     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderSharedFloat32AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT81815       setShaderSharedFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
81816     {
81817       shaderSharedFloat32AtomicAdd = shaderSharedFloat32AtomicAdd_;
81818       return *this;
81819     }
81820 
81821     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderSharedFloat64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT81822       setShaderSharedFloat64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64Atomics_ ) VULKAN_HPP_NOEXCEPT
81823     {
81824       shaderSharedFloat64Atomics = shaderSharedFloat64Atomics_;
81825       return *this;
81826     }
81827 
81828     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderSharedFloat64AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT81829       setShaderSharedFloat64AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
81830     {
81831       shaderSharedFloat64AtomicAdd = shaderSharedFloat64AtomicAdd_;
81832       return *this;
81833     }
81834 
81835     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderImageFloat32AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT81836       setShaderImageFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT
81837     {
81838       shaderImageFloat32Atomics = shaderImageFloat32Atomics_;
81839       return *this;
81840     }
81841 
81842     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setShaderImageFloat32AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT81843       setShaderImageFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
81844     {
81845       shaderImageFloat32AtomicAdd = shaderImageFloat32AtomicAdd_;
81846       return *this;
81847     }
81848 
81849     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setSparseImageFloat32AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT81850       setSparseImageFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT
81851     {
81852       sparseImageFloat32Atomics = sparseImageFloat32Atomics_;
81853       return *this;
81854     }
81855 
81856     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT &
setSparseImageFloat32AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT81857       setSparseImageFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
81858     {
81859       sparseImageFloat32AtomicAdd = sparseImageFloat32AtomicAdd_;
81860       return *this;
81861     }
81862 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
81863 
operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT81864     operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
81865     {
81866       return *reinterpret_cast<const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *>( this );
81867     }
81868 
operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT81869     operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT &() VULKAN_HPP_NOEXCEPT
81870     {
81871       return *reinterpret_cast<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *>( this );
81872     }
81873 
81874 #if defined( VULKAN_HPP_USE_REFLECT )
81875 #  if 14 <= VULKAN_HPP_CPP_VERSION
81876     auto
81877 #  else
81878     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
81879                void * const &,
81880                VULKAN_HPP_NAMESPACE::Bool32 const &,
81881                VULKAN_HPP_NAMESPACE::Bool32 const &,
81882                VULKAN_HPP_NAMESPACE::Bool32 const &,
81883                VULKAN_HPP_NAMESPACE::Bool32 const &,
81884                VULKAN_HPP_NAMESPACE::Bool32 const &,
81885                VULKAN_HPP_NAMESPACE::Bool32 const &,
81886                VULKAN_HPP_NAMESPACE::Bool32 const &,
81887                VULKAN_HPP_NAMESPACE::Bool32 const &,
81888                VULKAN_HPP_NAMESPACE::Bool32 const &,
81889                VULKAN_HPP_NAMESPACE::Bool32 const &,
81890                VULKAN_HPP_NAMESPACE::Bool32 const &,
81891                VULKAN_HPP_NAMESPACE::Bool32 const &>
81892 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT81893       reflect() const VULKAN_HPP_NOEXCEPT
81894     {
81895       return std::tie( sType,
81896                        pNext,
81897                        shaderBufferFloat32Atomics,
81898                        shaderBufferFloat32AtomicAdd,
81899                        shaderBufferFloat64Atomics,
81900                        shaderBufferFloat64AtomicAdd,
81901                        shaderSharedFloat32Atomics,
81902                        shaderSharedFloat32AtomicAdd,
81903                        shaderSharedFloat64Atomics,
81904                        shaderSharedFloat64AtomicAdd,
81905                        shaderImageFloat32Atomics,
81906                        shaderImageFloat32AtomicAdd,
81907                        sparseImageFloat32Atomics,
81908                        sparseImageFloat32AtomicAdd );
81909     }
81910 #endif
81911 
81912 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
81913     auto operator<=>( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & ) const = default;
81914 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT81915     bool operator==( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
81916     {
81917 #  if defined( VULKAN_HPP_USE_REFLECT )
81918       return this->reflect() == rhs.reflect();
81919 #  else
81920       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderBufferFloat32Atomics == rhs.shaderBufferFloat32Atomics ) &&
81921              ( shaderBufferFloat32AtomicAdd == rhs.shaderBufferFloat32AtomicAdd ) && ( shaderBufferFloat64Atomics == rhs.shaderBufferFloat64Atomics ) &&
81922              ( shaderBufferFloat64AtomicAdd == rhs.shaderBufferFloat64AtomicAdd ) && ( shaderSharedFloat32Atomics == rhs.shaderSharedFloat32Atomics ) &&
81923              ( shaderSharedFloat32AtomicAdd == rhs.shaderSharedFloat32AtomicAdd ) && ( shaderSharedFloat64Atomics == rhs.shaderSharedFloat64Atomics ) &&
81924              ( shaderSharedFloat64AtomicAdd == rhs.shaderSharedFloat64AtomicAdd ) && ( shaderImageFloat32Atomics == rhs.shaderImageFloat32Atomics ) &&
81925              ( shaderImageFloat32AtomicAdd == rhs.shaderImageFloat32AtomicAdd ) && ( sparseImageFloat32Atomics == rhs.sparseImageFloat32Atomics ) &&
81926              ( sparseImageFloat32AtomicAdd == rhs.sparseImageFloat32AtomicAdd );
81927 #  endif
81928     }
81929 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT81930     bool operator!=( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
81931     {
81932       return !operator==( rhs );
81933     }
81934 #endif
81935 
81936   public:
81937     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT;
81938     void *                              pNext                        = {};
81939     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat32Atomics   = {};
81940     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat32AtomicAdd = {};
81941     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat64Atomics   = {};
81942     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferFloat64AtomicAdd = {};
81943     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat32Atomics   = {};
81944     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat32AtomicAdd = {};
81945     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat64Atomics   = {};
81946     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedFloat64AtomicAdd = {};
81947     VULKAN_HPP_NAMESPACE::Bool32        shaderImageFloat32Atomics    = {};
81948     VULKAN_HPP_NAMESPACE::Bool32        shaderImageFloat32AtomicAdd  = {};
81949     VULKAN_HPP_NAMESPACE::Bool32        sparseImageFloat32Atomics    = {};
81950     VULKAN_HPP_NAMESPACE::Bool32        sparseImageFloat32AtomicAdd  = {};
81951   };
81952 
81953   template <>
81954   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT>
81955   {
81956     using Type = PhysicalDeviceShaderAtomicFloatFeaturesEXT;
81957   };
81958 
81959   struct PhysicalDeviceShaderAtomicInt64Features
81960   {
81961     using NativeType = VkPhysicalDeviceShaderAtomicInt64Features;
81962 
81963     static const bool                                  allowDuplicate = false;
81964     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderAtomicInt64Features;
81965 
81966 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderAtomicInt64FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features81967     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicInt64Features( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_ = {},
81968                                                                   VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_ = {},
81969                                                                   void *                       pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
81970       : pNext{ pNext_ }
81971       , shaderBufferInt64Atomics{ shaderBufferInt64Atomics_ }
81972       , shaderSharedInt64Atomics{ shaderSharedInt64Atomics_ }
81973     {
81974     }
81975 
81976     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicInt64Features( PhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81977 
PhysicalDeviceShaderAtomicInt64FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features81978     PhysicalDeviceShaderAtomicInt64Features( VkPhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT
81979       : PhysicalDeviceShaderAtomicInt64Features( *reinterpret_cast<PhysicalDeviceShaderAtomicInt64Features const *>( &rhs ) )
81980     {
81981     }
81982 
81983     PhysicalDeviceShaderAtomicInt64Features & operator=( PhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
81984 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
81985 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features81986     PhysicalDeviceShaderAtomicInt64Features & operator=( VkPhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT
81987     {
81988       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features const *>( &rhs );
81989       return *this;
81990     }
81991 
81992 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features81993     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
81994     {
81995       pNext = pNext_;
81996       return *this;
81997     }
81998 
81999     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features &
setShaderBufferInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features82000       setShaderBufferInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
82001     {
82002       shaderBufferInt64Atomics = shaderBufferInt64Atomics_;
82003       return *this;
82004     }
82005 
82006     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features &
setShaderSharedInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features82007       setShaderSharedInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
82008     {
82009       shaderSharedInt64Atomics = shaderSharedInt64Atomics_;
82010       return *this;
82011     }
82012 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
82013 
operator VkPhysicalDeviceShaderAtomicInt64Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features82014     operator VkPhysicalDeviceShaderAtomicInt64Features const &() const VULKAN_HPP_NOEXCEPT
82015     {
82016       return *reinterpret_cast<const VkPhysicalDeviceShaderAtomicInt64Features *>( this );
82017     }
82018 
operator VkPhysicalDeviceShaderAtomicInt64Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features82019     operator VkPhysicalDeviceShaderAtomicInt64Features &() VULKAN_HPP_NOEXCEPT
82020     {
82021       return *reinterpret_cast<VkPhysicalDeviceShaderAtomicInt64Features *>( this );
82022     }
82023 
82024 #if defined( VULKAN_HPP_USE_REFLECT )
82025 #  if 14 <= VULKAN_HPP_CPP_VERSION
82026     auto
82027 #  else
82028     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
82029 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features82030       reflect() const VULKAN_HPP_NOEXCEPT
82031     {
82032       return std::tie( sType, pNext, shaderBufferInt64Atomics, shaderSharedInt64Atomics );
82033     }
82034 #endif
82035 
82036 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82037     auto operator<=>( PhysicalDeviceShaderAtomicInt64Features const & ) const = default;
82038 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features82039     bool operator==( PhysicalDeviceShaderAtomicInt64Features const & rhs ) const VULKAN_HPP_NOEXCEPT
82040     {
82041 #  if defined( VULKAN_HPP_USE_REFLECT )
82042       return this->reflect() == rhs.reflect();
82043 #  else
82044       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderBufferInt64Atomics == rhs.shaderBufferInt64Atomics ) &&
82045              ( shaderSharedInt64Atomics == rhs.shaderSharedInt64Atomics );
82046 #  endif
82047     }
82048 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features82049     bool operator!=( PhysicalDeviceShaderAtomicInt64Features const & rhs ) const VULKAN_HPP_NOEXCEPT
82050     {
82051       return !operator==( rhs );
82052     }
82053 #endif
82054 
82055   public:
82056     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::ePhysicalDeviceShaderAtomicInt64Features;
82057     void *                              pNext                    = {};
82058     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferInt64Atomics = {};
82059     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedInt64Atomics = {};
82060   };
82061 
82062   template <>
82063   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderAtomicInt64Features>
82064   {
82065     using Type = PhysicalDeviceShaderAtomicInt64Features;
82066   };
82067 
82068   using PhysicalDeviceShaderAtomicInt64FeaturesKHR = PhysicalDeviceShaderAtomicInt64Features;
82069 
82070   struct PhysicalDeviceShaderClockFeaturesKHR
82071   {
82072     using NativeType = VkPhysicalDeviceShaderClockFeaturesKHR;
82073 
82074     static const bool                                  allowDuplicate = false;
82075     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderClockFeaturesKHR;
82076 
82077 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderClockFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR82078     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderClockFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupClock_ = {},
82079                                                                VULKAN_HPP_NAMESPACE::Bool32 shaderDeviceClock_   = {},
82080                                                                void *                       pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
82081       : pNext{ pNext_ }
82082       , shaderSubgroupClock{ shaderSubgroupClock_ }
82083       , shaderDeviceClock{ shaderDeviceClock_ }
82084     {
82085     }
82086 
82087     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderClockFeaturesKHR( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82088 
PhysicalDeviceShaderClockFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR82089     PhysicalDeviceShaderClockFeaturesKHR( VkPhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
82090       : PhysicalDeviceShaderClockFeaturesKHR( *reinterpret_cast<PhysicalDeviceShaderClockFeaturesKHR const *>( &rhs ) )
82091     {
82092     }
82093 
82094     PhysicalDeviceShaderClockFeaturesKHR & operator=( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82095 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82096 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR82097     PhysicalDeviceShaderClockFeaturesKHR & operator=( VkPhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
82098     {
82099       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR const *>( &rhs );
82100       return *this;
82101     }
82102 
82103 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR82104     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
82105     {
82106       pNext = pNext_;
82107       return *this;
82108     }
82109 
82110     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR &
setShaderSubgroupClockVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR82111       setShaderSubgroupClock( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupClock_ ) VULKAN_HPP_NOEXCEPT
82112     {
82113       shaderSubgroupClock = shaderSubgroupClock_;
82114       return *this;
82115     }
82116 
setShaderDeviceClockVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR82117     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR & setShaderDeviceClock( VULKAN_HPP_NAMESPACE::Bool32 shaderDeviceClock_ ) VULKAN_HPP_NOEXCEPT
82118     {
82119       shaderDeviceClock = shaderDeviceClock_;
82120       return *this;
82121     }
82122 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
82123 
operator VkPhysicalDeviceShaderClockFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR82124     operator VkPhysicalDeviceShaderClockFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
82125     {
82126       return *reinterpret_cast<const VkPhysicalDeviceShaderClockFeaturesKHR *>( this );
82127     }
82128 
operator VkPhysicalDeviceShaderClockFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR82129     operator VkPhysicalDeviceShaderClockFeaturesKHR &() VULKAN_HPP_NOEXCEPT
82130     {
82131       return *reinterpret_cast<VkPhysicalDeviceShaderClockFeaturesKHR *>( this );
82132     }
82133 
82134 #if defined( VULKAN_HPP_USE_REFLECT )
82135 #  if 14 <= VULKAN_HPP_CPP_VERSION
82136     auto
82137 #  else
82138     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
82139 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR82140       reflect() const VULKAN_HPP_NOEXCEPT
82141     {
82142       return std::tie( sType, pNext, shaderSubgroupClock, shaderDeviceClock );
82143     }
82144 #endif
82145 
82146 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82147     auto operator<=>( PhysicalDeviceShaderClockFeaturesKHR const & ) const = default;
82148 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR82149     bool operator==( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
82150     {
82151 #  if defined( VULKAN_HPP_USE_REFLECT )
82152       return this->reflect() == rhs.reflect();
82153 #  else
82154       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSubgroupClock == rhs.shaderSubgroupClock ) &&
82155              ( shaderDeviceClock == rhs.shaderDeviceClock );
82156 #  endif
82157     }
82158 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR82159     bool operator!=( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
82160     {
82161       return !operator==( rhs );
82162     }
82163 #endif
82164 
82165   public:
82166     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::ePhysicalDeviceShaderClockFeaturesKHR;
82167     void *                              pNext               = {};
82168     VULKAN_HPP_NAMESPACE::Bool32        shaderSubgroupClock = {};
82169     VULKAN_HPP_NAMESPACE::Bool32        shaderDeviceClock   = {};
82170   };
82171 
82172   template <>
82173   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderClockFeaturesKHR>
82174   {
82175     using Type = PhysicalDeviceShaderClockFeaturesKHR;
82176   };
82177 
82178   struct PhysicalDeviceShaderCoreBuiltinsFeaturesARM
82179   {
82180     using NativeType = VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM;
82181 
82182     static const bool                                  allowDuplicate = false;
82183     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderCoreBuiltinsFeaturesARM;
82184 
82185 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderCoreBuiltinsFeaturesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM82186     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCoreBuiltinsFeaturesARM( VULKAN_HPP_NAMESPACE::Bool32 shaderCoreBuiltins_ = {},
82187                                                                       void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
82188       : pNext{ pNext_ }
82189       , shaderCoreBuiltins{ shaderCoreBuiltins_ }
82190     {
82191     }
82192 
82193     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCoreBuiltinsFeaturesARM( PhysicalDeviceShaderCoreBuiltinsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82194 
PhysicalDeviceShaderCoreBuiltinsFeaturesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM82195     PhysicalDeviceShaderCoreBuiltinsFeaturesARM( VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT
82196       : PhysicalDeviceShaderCoreBuiltinsFeaturesARM( *reinterpret_cast<PhysicalDeviceShaderCoreBuiltinsFeaturesARM const *>( &rhs ) )
82197     {
82198     }
82199 
82200     PhysicalDeviceShaderCoreBuiltinsFeaturesARM & operator=( PhysicalDeviceShaderCoreBuiltinsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82201 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82202 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM82203     PhysicalDeviceShaderCoreBuiltinsFeaturesARM & operator=( VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT
82204     {
82205       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM const *>( &rhs );
82206       return *this;
82207     }
82208 
82209 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM82210     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderCoreBuiltinsFeaturesARM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
82211     {
82212       pNext = pNext_;
82213       return *this;
82214     }
82215 
82216     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderCoreBuiltinsFeaturesARM &
setShaderCoreBuiltinsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM82217       setShaderCoreBuiltins( VULKAN_HPP_NAMESPACE::Bool32 shaderCoreBuiltins_ ) VULKAN_HPP_NOEXCEPT
82218     {
82219       shaderCoreBuiltins = shaderCoreBuiltins_;
82220       return *this;
82221     }
82222 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
82223 
operator VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM82224     operator VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM const &() const VULKAN_HPP_NOEXCEPT
82225     {
82226       return *reinterpret_cast<const VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM *>( this );
82227     }
82228 
operator VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM82229     operator VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM &() VULKAN_HPP_NOEXCEPT
82230     {
82231       return *reinterpret_cast<VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM *>( this );
82232     }
82233 
82234 #if defined( VULKAN_HPP_USE_REFLECT )
82235 #  if 14 <= VULKAN_HPP_CPP_VERSION
82236     auto
82237 #  else
82238     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
82239 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM82240       reflect() const VULKAN_HPP_NOEXCEPT
82241     {
82242       return std::tie( sType, pNext, shaderCoreBuiltins );
82243     }
82244 #endif
82245 
82246 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82247     auto operator<=>( PhysicalDeviceShaderCoreBuiltinsFeaturesARM const & ) const = default;
82248 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM82249     bool operator==( PhysicalDeviceShaderCoreBuiltinsFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
82250     {
82251 #  if defined( VULKAN_HPP_USE_REFLECT )
82252       return this->reflect() == rhs.reflect();
82253 #  else
82254       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderCoreBuiltins == rhs.shaderCoreBuiltins );
82255 #  endif
82256     }
82257 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM82258     bool operator!=( PhysicalDeviceShaderCoreBuiltinsFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
82259     {
82260       return !operator==( rhs );
82261     }
82262 #endif
82263 
82264   public:
82265     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceShaderCoreBuiltinsFeaturesARM;
82266     void *                              pNext              = {};
82267     VULKAN_HPP_NAMESPACE::Bool32        shaderCoreBuiltins = {};
82268   };
82269 
82270   template <>
82271   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderCoreBuiltinsFeaturesARM>
82272   {
82273     using Type = PhysicalDeviceShaderCoreBuiltinsFeaturesARM;
82274   };
82275 
82276   struct PhysicalDeviceShaderCoreBuiltinsPropertiesARM
82277   {
82278     using NativeType = VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM;
82279 
82280     static const bool                                  allowDuplicate = false;
82281     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderCoreBuiltinsPropertiesARM;
82282 
82283 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderCoreBuiltinsPropertiesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM82284     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCoreBuiltinsPropertiesARM( uint64_t shaderCoreMask_     = {},
82285                                                                         uint32_t shaderCoreCount_    = {},
82286                                                                         uint32_t shaderWarpsPerCore_ = {},
82287                                                                         void *   pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
82288       : pNext{ pNext_ }
82289       , shaderCoreMask{ shaderCoreMask_ }
82290       , shaderCoreCount{ shaderCoreCount_ }
82291       , shaderWarpsPerCore{ shaderWarpsPerCore_ }
82292     {
82293     }
82294 
82295     VULKAN_HPP_CONSTEXPR
82296       PhysicalDeviceShaderCoreBuiltinsPropertiesARM( PhysicalDeviceShaderCoreBuiltinsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82297 
PhysicalDeviceShaderCoreBuiltinsPropertiesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM82298     PhysicalDeviceShaderCoreBuiltinsPropertiesARM( VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT
82299       : PhysicalDeviceShaderCoreBuiltinsPropertiesARM( *reinterpret_cast<PhysicalDeviceShaderCoreBuiltinsPropertiesARM const *>( &rhs ) )
82300     {
82301     }
82302 
82303     PhysicalDeviceShaderCoreBuiltinsPropertiesARM & operator=( PhysicalDeviceShaderCoreBuiltinsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82304 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82305 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM82306     PhysicalDeviceShaderCoreBuiltinsPropertiesARM & operator=( VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT
82307     {
82308       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM const *>( &rhs );
82309       return *this;
82310     }
82311 
operator VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM82312     operator VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM const &() const VULKAN_HPP_NOEXCEPT
82313     {
82314       return *reinterpret_cast<const VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM *>( this );
82315     }
82316 
operator VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM82317     operator VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM &() VULKAN_HPP_NOEXCEPT
82318     {
82319       return *reinterpret_cast<VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM *>( this );
82320     }
82321 
82322 #if defined( VULKAN_HPP_USE_REFLECT )
82323 #  if 14 <= VULKAN_HPP_CPP_VERSION
82324     auto
82325 #  else
82326     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint64_t const &, uint32_t const &, uint32_t const &>
82327 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM82328       reflect() const VULKAN_HPP_NOEXCEPT
82329     {
82330       return std::tie( sType, pNext, shaderCoreMask, shaderCoreCount, shaderWarpsPerCore );
82331     }
82332 #endif
82333 
82334 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82335     auto operator<=>( PhysicalDeviceShaderCoreBuiltinsPropertiesARM const & ) const = default;
82336 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM82337     bool operator==( PhysicalDeviceShaderCoreBuiltinsPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
82338     {
82339 #  if defined( VULKAN_HPP_USE_REFLECT )
82340       return this->reflect() == rhs.reflect();
82341 #  else
82342       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderCoreMask == rhs.shaderCoreMask ) && ( shaderCoreCount == rhs.shaderCoreCount ) &&
82343              ( shaderWarpsPerCore == rhs.shaderWarpsPerCore );
82344 #  endif
82345     }
82346 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM82347     bool operator!=( PhysicalDeviceShaderCoreBuiltinsPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
82348     {
82349       return !operator==( rhs );
82350     }
82351 #endif
82352 
82353   public:
82354     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceShaderCoreBuiltinsPropertiesARM;
82355     void *                              pNext              = {};
82356     uint64_t                            shaderCoreMask     = {};
82357     uint32_t                            shaderCoreCount    = {};
82358     uint32_t                            shaderWarpsPerCore = {};
82359   };
82360 
82361   template <>
82362   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderCoreBuiltinsPropertiesARM>
82363   {
82364     using Type = PhysicalDeviceShaderCoreBuiltinsPropertiesARM;
82365   };
82366 
82367   struct PhysicalDeviceShaderCoreProperties2AMD
82368   {
82369     using NativeType = VkPhysicalDeviceShaderCoreProperties2AMD;
82370 
82371     static const bool                                  allowDuplicate = false;
82372     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderCoreProperties2AMD;
82373 
82374 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderCoreProperties2AMDVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD82375     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCoreProperties2AMD( VULKAN_HPP_NAMESPACE::ShaderCorePropertiesFlagsAMD shaderCoreFeatures_     = {},
82376                                                                  uint32_t                                           activeComputeUnitCount_ = {},
82377                                                                  void *                                             pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
82378       : pNext{ pNext_ }
82379       , shaderCoreFeatures{ shaderCoreFeatures_ }
82380       , activeComputeUnitCount{ activeComputeUnitCount_ }
82381     {
82382     }
82383 
82384     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCoreProperties2AMD( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82385 
PhysicalDeviceShaderCoreProperties2AMDVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD82386     PhysicalDeviceShaderCoreProperties2AMD( VkPhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT
82387       : PhysicalDeviceShaderCoreProperties2AMD( *reinterpret_cast<PhysicalDeviceShaderCoreProperties2AMD const *>( &rhs ) )
82388     {
82389     }
82390 
82391     PhysicalDeviceShaderCoreProperties2AMD & operator=( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82392 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82393 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD82394     PhysicalDeviceShaderCoreProperties2AMD & operator=( VkPhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT
82395     {
82396       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD const *>( &rhs );
82397       return *this;
82398     }
82399 
operator VkPhysicalDeviceShaderCoreProperties2AMD const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD82400     operator VkPhysicalDeviceShaderCoreProperties2AMD const &() const VULKAN_HPP_NOEXCEPT
82401     {
82402       return *reinterpret_cast<const VkPhysicalDeviceShaderCoreProperties2AMD *>( this );
82403     }
82404 
operator VkPhysicalDeviceShaderCoreProperties2AMD&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD82405     operator VkPhysicalDeviceShaderCoreProperties2AMD &() VULKAN_HPP_NOEXCEPT
82406     {
82407       return *reinterpret_cast<VkPhysicalDeviceShaderCoreProperties2AMD *>( this );
82408     }
82409 
82410 #if defined( VULKAN_HPP_USE_REFLECT )
82411 #  if 14 <= VULKAN_HPP_CPP_VERSION
82412     auto
82413 #  else
82414     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ShaderCorePropertiesFlagsAMD const &, uint32_t const &>
82415 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD82416       reflect() const VULKAN_HPP_NOEXCEPT
82417     {
82418       return std::tie( sType, pNext, shaderCoreFeatures, activeComputeUnitCount );
82419     }
82420 #endif
82421 
82422 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82423     auto operator<=>( PhysicalDeviceShaderCoreProperties2AMD const & ) const = default;
82424 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD82425     bool operator==( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) const VULKAN_HPP_NOEXCEPT
82426     {
82427 #  if defined( VULKAN_HPP_USE_REFLECT )
82428       return this->reflect() == rhs.reflect();
82429 #  else
82430       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderCoreFeatures == rhs.shaderCoreFeatures ) &&
82431              ( activeComputeUnitCount == rhs.activeComputeUnitCount );
82432 #  endif
82433     }
82434 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD82435     bool operator!=( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) const VULKAN_HPP_NOEXCEPT
82436     {
82437       return !operator==( rhs );
82438     }
82439 #endif
82440 
82441   public:
82442     VULKAN_HPP_NAMESPACE::StructureType                sType                  = StructureType::ePhysicalDeviceShaderCoreProperties2AMD;
82443     void *                                             pNext                  = {};
82444     VULKAN_HPP_NAMESPACE::ShaderCorePropertiesFlagsAMD shaderCoreFeatures     = {};
82445     uint32_t                                           activeComputeUnitCount = {};
82446   };
82447 
82448   template <>
82449   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderCoreProperties2AMD>
82450   {
82451     using Type = PhysicalDeviceShaderCoreProperties2AMD;
82452   };
82453 
82454   struct PhysicalDeviceShaderCorePropertiesAMD
82455   {
82456     using NativeType = VkPhysicalDeviceShaderCorePropertiesAMD;
82457 
82458     static const bool                                  allowDuplicate = false;
82459     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderCorePropertiesAMD;
82460 
82461 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderCorePropertiesAMDVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD82462     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCorePropertiesAMD( uint32_t shaderEngineCount_          = {},
82463                                                                 uint32_t shaderArraysPerEngineCount_ = {},
82464                                                                 uint32_t computeUnitsPerShaderArray_ = {},
82465                                                                 uint32_t simdPerComputeUnit_         = {},
82466                                                                 uint32_t wavefrontsPerSimd_          = {},
82467                                                                 uint32_t wavefrontSize_              = {},
82468                                                                 uint32_t sgprsPerSimd_               = {},
82469                                                                 uint32_t minSgprAllocation_          = {},
82470                                                                 uint32_t maxSgprAllocation_          = {},
82471                                                                 uint32_t sgprAllocationGranularity_  = {},
82472                                                                 uint32_t vgprsPerSimd_               = {},
82473                                                                 uint32_t minVgprAllocation_          = {},
82474                                                                 uint32_t maxVgprAllocation_          = {},
82475                                                                 uint32_t vgprAllocationGranularity_  = {},
82476                                                                 void *   pNext_                      = nullptr ) VULKAN_HPP_NOEXCEPT
82477       : pNext{ pNext_ }
82478       , shaderEngineCount{ shaderEngineCount_ }
82479       , shaderArraysPerEngineCount{ shaderArraysPerEngineCount_ }
82480       , computeUnitsPerShaderArray{ computeUnitsPerShaderArray_ }
82481       , simdPerComputeUnit{ simdPerComputeUnit_ }
82482       , wavefrontsPerSimd{ wavefrontsPerSimd_ }
82483       , wavefrontSize{ wavefrontSize_ }
82484       , sgprsPerSimd{ sgprsPerSimd_ }
82485       , minSgprAllocation{ minSgprAllocation_ }
82486       , maxSgprAllocation{ maxSgprAllocation_ }
82487       , sgprAllocationGranularity{ sgprAllocationGranularity_ }
82488       , vgprsPerSimd{ vgprsPerSimd_ }
82489       , minVgprAllocation{ minVgprAllocation_ }
82490       , maxVgprAllocation{ maxVgprAllocation_ }
82491       , vgprAllocationGranularity{ vgprAllocationGranularity_ }
82492     {
82493     }
82494 
82495     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCorePropertiesAMD( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82496 
PhysicalDeviceShaderCorePropertiesAMDVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD82497     PhysicalDeviceShaderCorePropertiesAMD( VkPhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
82498       : PhysicalDeviceShaderCorePropertiesAMD( *reinterpret_cast<PhysicalDeviceShaderCorePropertiesAMD const *>( &rhs ) )
82499     {
82500     }
82501 
82502     PhysicalDeviceShaderCorePropertiesAMD & operator=( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82503 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82504 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD82505     PhysicalDeviceShaderCorePropertiesAMD & operator=( VkPhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
82506     {
82507       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD const *>( &rhs );
82508       return *this;
82509     }
82510 
operator VkPhysicalDeviceShaderCorePropertiesAMD const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD82511     operator VkPhysicalDeviceShaderCorePropertiesAMD const &() const VULKAN_HPP_NOEXCEPT
82512     {
82513       return *reinterpret_cast<const VkPhysicalDeviceShaderCorePropertiesAMD *>( this );
82514     }
82515 
operator VkPhysicalDeviceShaderCorePropertiesAMD&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD82516     operator VkPhysicalDeviceShaderCorePropertiesAMD &() VULKAN_HPP_NOEXCEPT
82517     {
82518       return *reinterpret_cast<VkPhysicalDeviceShaderCorePropertiesAMD *>( this );
82519     }
82520 
82521 #if defined( VULKAN_HPP_USE_REFLECT )
82522 #  if 14 <= VULKAN_HPP_CPP_VERSION
82523     auto
82524 #  else
82525     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
82526                void * const &,
82527                uint32_t const &,
82528                uint32_t const &,
82529                uint32_t const &,
82530                uint32_t const &,
82531                uint32_t const &,
82532                uint32_t const &,
82533                uint32_t const &,
82534                uint32_t const &,
82535                uint32_t const &,
82536                uint32_t const &,
82537                uint32_t const &,
82538                uint32_t const &,
82539                uint32_t const &,
82540                uint32_t const &>
82541 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD82542       reflect() const VULKAN_HPP_NOEXCEPT
82543     {
82544       return std::tie( sType,
82545                        pNext,
82546                        shaderEngineCount,
82547                        shaderArraysPerEngineCount,
82548                        computeUnitsPerShaderArray,
82549                        simdPerComputeUnit,
82550                        wavefrontsPerSimd,
82551                        wavefrontSize,
82552                        sgprsPerSimd,
82553                        minSgprAllocation,
82554                        maxSgprAllocation,
82555                        sgprAllocationGranularity,
82556                        vgprsPerSimd,
82557                        minVgprAllocation,
82558                        maxVgprAllocation,
82559                        vgprAllocationGranularity );
82560     }
82561 #endif
82562 
82563 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82564     auto operator<=>( PhysicalDeviceShaderCorePropertiesAMD const & ) const = default;
82565 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD82566     bool operator==( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
82567     {
82568 #  if defined( VULKAN_HPP_USE_REFLECT )
82569       return this->reflect() == rhs.reflect();
82570 #  else
82571       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderEngineCount == rhs.shaderEngineCount ) &&
82572              ( shaderArraysPerEngineCount == rhs.shaderArraysPerEngineCount ) && ( computeUnitsPerShaderArray == rhs.computeUnitsPerShaderArray ) &&
82573              ( simdPerComputeUnit == rhs.simdPerComputeUnit ) && ( wavefrontsPerSimd == rhs.wavefrontsPerSimd ) && ( wavefrontSize == rhs.wavefrontSize ) &&
82574              ( sgprsPerSimd == rhs.sgprsPerSimd ) && ( minSgprAllocation == rhs.minSgprAllocation ) && ( maxSgprAllocation == rhs.maxSgprAllocation ) &&
82575              ( sgprAllocationGranularity == rhs.sgprAllocationGranularity ) && ( vgprsPerSimd == rhs.vgprsPerSimd ) &&
82576              ( minVgprAllocation == rhs.minVgprAllocation ) && ( maxVgprAllocation == rhs.maxVgprAllocation ) &&
82577              ( vgprAllocationGranularity == rhs.vgprAllocationGranularity );
82578 #  endif
82579     }
82580 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD82581     bool operator!=( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
82582     {
82583       return !operator==( rhs );
82584     }
82585 #endif
82586 
82587   public:
82588     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::ePhysicalDeviceShaderCorePropertiesAMD;
82589     void *                              pNext                      = {};
82590     uint32_t                            shaderEngineCount          = {};
82591     uint32_t                            shaderArraysPerEngineCount = {};
82592     uint32_t                            computeUnitsPerShaderArray = {};
82593     uint32_t                            simdPerComputeUnit         = {};
82594     uint32_t                            wavefrontsPerSimd          = {};
82595     uint32_t                            wavefrontSize              = {};
82596     uint32_t                            sgprsPerSimd               = {};
82597     uint32_t                            minSgprAllocation          = {};
82598     uint32_t                            maxSgprAllocation          = {};
82599     uint32_t                            sgprAllocationGranularity  = {};
82600     uint32_t                            vgprsPerSimd               = {};
82601     uint32_t                            minVgprAllocation          = {};
82602     uint32_t                            maxVgprAllocation          = {};
82603     uint32_t                            vgprAllocationGranularity  = {};
82604   };
82605 
82606   template <>
82607   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderCorePropertiesAMD>
82608   {
82609     using Type = PhysicalDeviceShaderCorePropertiesAMD;
82610   };
82611 
82612   struct PhysicalDeviceShaderCorePropertiesARM
82613   {
82614     using NativeType = VkPhysicalDeviceShaderCorePropertiesARM;
82615 
82616     static const bool                                  allowDuplicate = false;
82617     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderCorePropertiesARM;
82618 
82619 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderCorePropertiesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesARM82620     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCorePropertiesARM( uint32_t pixelRate_ = {},
82621                                                                 uint32_t texelRate_ = {},
82622                                                                 uint32_t fmaRate_   = {},
82623                                                                 void *   pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
82624       : pNext{ pNext_ }
82625       , pixelRate{ pixelRate_ }
82626       , texelRate{ texelRate_ }
82627       , fmaRate{ fmaRate_ }
82628     {
82629     }
82630 
82631     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCorePropertiesARM( PhysicalDeviceShaderCorePropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82632 
PhysicalDeviceShaderCorePropertiesARMVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesARM82633     PhysicalDeviceShaderCorePropertiesARM( VkPhysicalDeviceShaderCorePropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT
82634       : PhysicalDeviceShaderCorePropertiesARM( *reinterpret_cast<PhysicalDeviceShaderCorePropertiesARM const *>( &rhs ) )
82635     {
82636     }
82637 
82638     PhysicalDeviceShaderCorePropertiesARM & operator=( PhysicalDeviceShaderCorePropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82639 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82640 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesARM82641     PhysicalDeviceShaderCorePropertiesARM & operator=( VkPhysicalDeviceShaderCorePropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT
82642     {
82643       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesARM const *>( &rhs );
82644       return *this;
82645     }
82646 
operator VkPhysicalDeviceShaderCorePropertiesARM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesARM82647     operator VkPhysicalDeviceShaderCorePropertiesARM const &() const VULKAN_HPP_NOEXCEPT
82648     {
82649       return *reinterpret_cast<const VkPhysicalDeviceShaderCorePropertiesARM *>( this );
82650     }
82651 
operator VkPhysicalDeviceShaderCorePropertiesARM&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesARM82652     operator VkPhysicalDeviceShaderCorePropertiesARM &() VULKAN_HPP_NOEXCEPT
82653     {
82654       return *reinterpret_cast<VkPhysicalDeviceShaderCorePropertiesARM *>( this );
82655     }
82656 
82657 #if defined( VULKAN_HPP_USE_REFLECT )
82658 #  if 14 <= VULKAN_HPP_CPP_VERSION
82659     auto
82660 #  else
82661     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &, uint32_t const &>
82662 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesARM82663       reflect() const VULKAN_HPP_NOEXCEPT
82664     {
82665       return std::tie( sType, pNext, pixelRate, texelRate, fmaRate );
82666     }
82667 #endif
82668 
82669 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82670     auto operator<=>( PhysicalDeviceShaderCorePropertiesARM const & ) const = default;
82671 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesARM82672     bool operator==( PhysicalDeviceShaderCorePropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
82673     {
82674 #  if defined( VULKAN_HPP_USE_REFLECT )
82675       return this->reflect() == rhs.reflect();
82676 #  else
82677       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pixelRate == rhs.pixelRate ) && ( texelRate == rhs.texelRate ) && ( fmaRate == rhs.fmaRate );
82678 #  endif
82679     }
82680 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesARM82681     bool operator!=( PhysicalDeviceShaderCorePropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT
82682     {
82683       return !operator==( rhs );
82684     }
82685 #endif
82686 
82687   public:
82688     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::ePhysicalDeviceShaderCorePropertiesARM;
82689     void *                              pNext     = {};
82690     uint32_t                            pixelRate = {};
82691     uint32_t                            texelRate = {};
82692     uint32_t                            fmaRate   = {};
82693   };
82694 
82695   template <>
82696   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderCorePropertiesARM>
82697   {
82698     using Type = PhysicalDeviceShaderCorePropertiesARM;
82699   };
82700 
82701   struct PhysicalDeviceShaderDemoteToHelperInvocationFeatures
82702   {
82703     using NativeType = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures;
82704 
82705     static const bool                                  allowDuplicate = false;
82706     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeatures;
82707 
82708 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderDemoteToHelperInvocationFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures82709     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDemoteToHelperInvocationFeatures( VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation_ = {},
82710                                                                                void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
82711       : pNext{ pNext_ }
82712       , shaderDemoteToHelperInvocation{ shaderDemoteToHelperInvocation_ }
82713     {
82714     }
82715 
82716     VULKAN_HPP_CONSTEXPR
82717       PhysicalDeviceShaderDemoteToHelperInvocationFeatures( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82718 
PhysicalDeviceShaderDemoteToHelperInvocationFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures82719     PhysicalDeviceShaderDemoteToHelperInvocationFeatures( VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
82720       : PhysicalDeviceShaderDemoteToHelperInvocationFeatures( *reinterpret_cast<PhysicalDeviceShaderDemoteToHelperInvocationFeatures const *>( &rhs ) )
82721     {
82722     }
82723 
82724     PhysicalDeviceShaderDemoteToHelperInvocationFeatures &
82725       operator=( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82726 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82727 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures82728     PhysicalDeviceShaderDemoteToHelperInvocationFeatures & operator=( VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
82729     {
82730       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures const *>( &rhs );
82731       return *this;
82732     }
82733 
82734 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures82735     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDemoteToHelperInvocationFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
82736     {
82737       pNext = pNext_;
82738       return *this;
82739     }
82740 
82741     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDemoteToHelperInvocationFeatures &
setShaderDemoteToHelperInvocationVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures82742       setShaderDemoteToHelperInvocation( VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation_ ) VULKAN_HPP_NOEXCEPT
82743     {
82744       shaderDemoteToHelperInvocation = shaderDemoteToHelperInvocation_;
82745       return *this;
82746     }
82747 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
82748 
operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures82749     operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures const &() const VULKAN_HPP_NOEXCEPT
82750     {
82751       return *reinterpret_cast<const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures *>( this );
82752     }
82753 
operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures82754     operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures &() VULKAN_HPP_NOEXCEPT
82755     {
82756       return *reinterpret_cast<VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures *>( this );
82757     }
82758 
82759 #if defined( VULKAN_HPP_USE_REFLECT )
82760 #  if 14 <= VULKAN_HPP_CPP_VERSION
82761     auto
82762 #  else
82763     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
82764 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures82765       reflect() const VULKAN_HPP_NOEXCEPT
82766     {
82767       return std::tie( sType, pNext, shaderDemoteToHelperInvocation );
82768     }
82769 #endif
82770 
82771 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82772     auto operator<=>( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & ) const = default;
82773 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures82774     bool operator==( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
82775     {
82776 #  if defined( VULKAN_HPP_USE_REFLECT )
82777       return this->reflect() == rhs.reflect();
82778 #  else
82779       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderDemoteToHelperInvocation == rhs.shaderDemoteToHelperInvocation );
82780 #  endif
82781     }
82782 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures82783     bool operator!=( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
82784     {
82785       return !operator==( rhs );
82786     }
82787 #endif
82788 
82789   public:
82790     VULKAN_HPP_NAMESPACE::StructureType sType                          = StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeatures;
82791     void *                              pNext                          = {};
82792     VULKAN_HPP_NAMESPACE::Bool32        shaderDemoteToHelperInvocation = {};
82793   };
82794 
82795   template <>
82796   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeatures>
82797   {
82798     using Type = PhysicalDeviceShaderDemoteToHelperInvocationFeatures;
82799   };
82800 
82801   using PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = PhysicalDeviceShaderDemoteToHelperInvocationFeatures;
82802 
82803   struct PhysicalDeviceShaderDrawParametersFeatures
82804   {
82805     using NativeType = VkPhysicalDeviceShaderDrawParametersFeatures;
82806 
82807     static const bool                                  allowDuplicate = false;
82808     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderDrawParametersFeatures;
82809 
82810 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderDrawParametersFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures82811     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDrawParametersFeatures( VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ = {},
82812                                                                      void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
82813       : pNext{ pNext_ }
82814       , shaderDrawParameters{ shaderDrawParameters_ }
82815     {
82816     }
82817 
82818     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDrawParametersFeatures( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82819 
PhysicalDeviceShaderDrawParametersFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures82820     PhysicalDeviceShaderDrawParametersFeatures( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
82821       : PhysicalDeviceShaderDrawParametersFeatures( *reinterpret_cast<PhysicalDeviceShaderDrawParametersFeatures const *>( &rhs ) )
82822     {
82823     }
82824 
82825     PhysicalDeviceShaderDrawParametersFeatures & operator=( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82826 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82827 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures82828     PhysicalDeviceShaderDrawParametersFeatures & operator=( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
82829     {
82830       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures const *>( &rhs );
82831       return *this;
82832     }
82833 
82834 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures82835     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDrawParametersFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
82836     {
82837       pNext = pNext_;
82838       return *this;
82839     }
82840 
82841     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDrawParametersFeatures &
setShaderDrawParametersVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures82842       setShaderDrawParameters( VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ ) VULKAN_HPP_NOEXCEPT
82843     {
82844       shaderDrawParameters = shaderDrawParameters_;
82845       return *this;
82846     }
82847 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
82848 
operator VkPhysicalDeviceShaderDrawParametersFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures82849     operator VkPhysicalDeviceShaderDrawParametersFeatures const &() const VULKAN_HPP_NOEXCEPT
82850     {
82851       return *reinterpret_cast<const VkPhysicalDeviceShaderDrawParametersFeatures *>( this );
82852     }
82853 
operator VkPhysicalDeviceShaderDrawParametersFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures82854     operator VkPhysicalDeviceShaderDrawParametersFeatures &() VULKAN_HPP_NOEXCEPT
82855     {
82856       return *reinterpret_cast<VkPhysicalDeviceShaderDrawParametersFeatures *>( this );
82857     }
82858 
82859 #if defined( VULKAN_HPP_USE_REFLECT )
82860 #  if 14 <= VULKAN_HPP_CPP_VERSION
82861     auto
82862 #  else
82863     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
82864 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures82865       reflect() const VULKAN_HPP_NOEXCEPT
82866     {
82867       return std::tie( sType, pNext, shaderDrawParameters );
82868     }
82869 #endif
82870 
82871 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82872     auto operator<=>( PhysicalDeviceShaderDrawParametersFeatures const & ) const = default;
82873 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures82874     bool operator==( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
82875     {
82876 #  if defined( VULKAN_HPP_USE_REFLECT )
82877       return this->reflect() == rhs.reflect();
82878 #  else
82879       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderDrawParameters == rhs.shaderDrawParameters );
82880 #  endif
82881     }
82882 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures82883     bool operator!=( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
82884     {
82885       return !operator==( rhs );
82886     }
82887 #endif
82888 
82889   public:
82890     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceShaderDrawParametersFeatures;
82891     void *                              pNext                = {};
82892     VULKAN_HPP_NAMESPACE::Bool32        shaderDrawParameters = {};
82893   };
82894 
82895   template <>
82896   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderDrawParametersFeatures>
82897   {
82898     using Type = PhysicalDeviceShaderDrawParametersFeatures;
82899   };
82900 
82901   using PhysicalDeviceShaderDrawParameterFeatures = PhysicalDeviceShaderDrawParametersFeatures;
82902 
82903   struct PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
82904   {
82905     using NativeType = VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD;
82906 
82907     static const bool                                  allowDuplicate = false;
82908     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD;
82909 
82910 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMDVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD82911     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD( VULKAN_HPP_NAMESPACE::Bool32 shaderEarlyAndLateFragmentTests_ = {},
82912                                                                                    void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
82913       : pNext{ pNext_ }
82914       , shaderEarlyAndLateFragmentTests{ shaderEarlyAndLateFragmentTests_ }
82915     {
82916     }
82917 
82918     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD( PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & rhs )
82919       VULKAN_HPP_NOEXCEPT = default;
82920 
PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMDVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD82921     PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD( VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
82922       : PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD( *reinterpret_cast<PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const *>( &rhs ) )
82923     {
82924     }
82925 
82926     PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD &
82927       operator=( PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
82928 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
82929 
82930     PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD82931       operator=( VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
82932     {
82933       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const *>( &rhs );
82934       return *this;
82935     }
82936 
82937 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD82938     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
82939     {
82940       pNext = pNext_;
82941       return *this;
82942     }
82943 
82944     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD &
setShaderEarlyAndLateFragmentTestsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD82945       setShaderEarlyAndLateFragmentTests( VULKAN_HPP_NAMESPACE::Bool32 shaderEarlyAndLateFragmentTests_ ) VULKAN_HPP_NOEXCEPT
82946     {
82947       shaderEarlyAndLateFragmentTests = shaderEarlyAndLateFragmentTests_;
82948       return *this;
82949     }
82950 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
82951 
operator VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD82952     operator VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const &() const VULKAN_HPP_NOEXCEPT
82953     {
82954       return *reinterpret_cast<const VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD *>( this );
82955     }
82956 
operator VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD82957     operator VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD &() VULKAN_HPP_NOEXCEPT
82958     {
82959       return *reinterpret_cast<VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD *>( this );
82960     }
82961 
82962 #if defined( VULKAN_HPP_USE_REFLECT )
82963 #  if 14 <= VULKAN_HPP_CPP_VERSION
82964     auto
82965 #  else
82966     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
82967 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD82968       reflect() const VULKAN_HPP_NOEXCEPT
82969     {
82970       return std::tie( sType, pNext, shaderEarlyAndLateFragmentTests );
82971     }
82972 #endif
82973 
82974 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
82975     auto operator<=>( PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & ) const = default;
82976 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD82977     bool operator==( PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
82978     {
82979 #  if defined( VULKAN_HPP_USE_REFLECT )
82980       return this->reflect() == rhs.reflect();
82981 #  else
82982       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderEarlyAndLateFragmentTests == rhs.shaderEarlyAndLateFragmentTests );
82983 #  endif
82984     }
82985 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD82986     bool operator!=( PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
82987     {
82988       return !operator==( rhs );
82989     }
82990 #endif
82991 
82992   public:
82993     VULKAN_HPP_NAMESPACE::StructureType sType                           = StructureType::ePhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD;
82994     void *                              pNext                           = {};
82995     VULKAN_HPP_NAMESPACE::Bool32        shaderEarlyAndLateFragmentTests = {};
82996   };
82997 
82998   template <>
82999   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD>
83000   {
83001     using Type = PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD;
83002   };
83003 
83004 #if defined( VK_ENABLE_BETA_EXTENSIONS )
83005   struct PhysicalDeviceShaderEnqueueFeaturesAMDX
83006   {
83007     using NativeType = VkPhysicalDeviceShaderEnqueueFeaturesAMDX;
83008 
83009     static const bool                                  allowDuplicate = false;
83010     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderEnqueueFeaturesAMDX;
83011 
83012 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderEnqueueFeaturesAMDXVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX83013     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderEnqueueFeaturesAMDX( VULKAN_HPP_NAMESPACE::Bool32 shaderEnqueue_ = {},
83014                                                                   void *                       pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
83015       : pNext{ pNext_ }
83016       , shaderEnqueue{ shaderEnqueue_ }
83017     {
83018     }
83019 
83020     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderEnqueueFeaturesAMDX( PhysicalDeviceShaderEnqueueFeaturesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83021 
PhysicalDeviceShaderEnqueueFeaturesAMDXVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX83022     PhysicalDeviceShaderEnqueueFeaturesAMDX( VkPhysicalDeviceShaderEnqueueFeaturesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
83023       : PhysicalDeviceShaderEnqueueFeaturesAMDX( *reinterpret_cast<PhysicalDeviceShaderEnqueueFeaturesAMDX const *>( &rhs ) )
83024     {
83025     }
83026 
83027     PhysicalDeviceShaderEnqueueFeaturesAMDX & operator=( PhysicalDeviceShaderEnqueueFeaturesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83028 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83029 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX83030     PhysicalDeviceShaderEnqueueFeaturesAMDX & operator=( VkPhysicalDeviceShaderEnqueueFeaturesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
83031     {
83032       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX const *>( &rhs );
83033       return *this;
83034     }
83035 
83036 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX83037     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueueFeaturesAMDX & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
83038     {
83039       pNext = pNext_;
83040       return *this;
83041     }
83042 
setShaderEnqueueVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX83043     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueueFeaturesAMDX & setShaderEnqueue( VULKAN_HPP_NAMESPACE::Bool32 shaderEnqueue_ ) VULKAN_HPP_NOEXCEPT
83044     {
83045       shaderEnqueue = shaderEnqueue_;
83046       return *this;
83047     }
83048 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
83049 
operator VkPhysicalDeviceShaderEnqueueFeaturesAMDX const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX83050     operator VkPhysicalDeviceShaderEnqueueFeaturesAMDX const &() const VULKAN_HPP_NOEXCEPT
83051     {
83052       return *reinterpret_cast<const VkPhysicalDeviceShaderEnqueueFeaturesAMDX *>( this );
83053     }
83054 
operator VkPhysicalDeviceShaderEnqueueFeaturesAMDX&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX83055     operator VkPhysicalDeviceShaderEnqueueFeaturesAMDX &() VULKAN_HPP_NOEXCEPT
83056     {
83057       return *reinterpret_cast<VkPhysicalDeviceShaderEnqueueFeaturesAMDX *>( this );
83058     }
83059 
83060 #  if defined( VULKAN_HPP_USE_REFLECT )
83061 #    if 14 <= VULKAN_HPP_CPP_VERSION
83062     auto
83063 #    else
83064     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
83065 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX83066       reflect() const VULKAN_HPP_NOEXCEPT
83067     {
83068       return std::tie( sType, pNext, shaderEnqueue );
83069     }
83070 #  endif
83071 
83072 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83073     auto operator<=>( PhysicalDeviceShaderEnqueueFeaturesAMDX const & ) const = default;
83074 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX83075     bool operator==( PhysicalDeviceShaderEnqueueFeaturesAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
83076     {
83077 #    if defined( VULKAN_HPP_USE_REFLECT )
83078       return this->reflect() == rhs.reflect();
83079 #    else
83080       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderEnqueue == rhs.shaderEnqueue );
83081 #    endif
83082     }
83083 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX83084     bool operator!=( PhysicalDeviceShaderEnqueueFeaturesAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
83085     {
83086       return !operator==( rhs );
83087     }
83088 #  endif
83089 
83090   public:
83091     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::ePhysicalDeviceShaderEnqueueFeaturesAMDX;
83092     void *                              pNext         = {};
83093     VULKAN_HPP_NAMESPACE::Bool32        shaderEnqueue = {};
83094   };
83095 
83096   template <>
83097   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderEnqueueFeaturesAMDX>
83098   {
83099     using Type = PhysicalDeviceShaderEnqueueFeaturesAMDX;
83100   };
83101 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
83102 
83103 #if defined( VK_ENABLE_BETA_EXTENSIONS )
83104   struct PhysicalDeviceShaderEnqueuePropertiesAMDX
83105   {
83106     using NativeType = VkPhysicalDeviceShaderEnqueuePropertiesAMDX;
83107 
83108     static const bool                                  allowDuplicate = false;
83109     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderEnqueuePropertiesAMDX;
83110 
83111 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderEnqueuePropertiesAMDXVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX83112     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderEnqueuePropertiesAMDX( uint32_t maxExecutionGraphDepth_                 = {},
83113                                                                     uint32_t maxExecutionGraphShaderOutputNodes_     = {},
83114                                                                     uint32_t maxExecutionGraphShaderPayloadSize_     = {},
83115                                                                     uint32_t maxExecutionGraphShaderPayloadCount_    = {},
83116                                                                     uint32_t executionGraphDispatchAddressAlignment_ = {},
83117                                                                     void *   pNext_                                  = nullptr ) VULKAN_HPP_NOEXCEPT
83118       : pNext{ pNext_ }
83119       , maxExecutionGraphDepth{ maxExecutionGraphDepth_ }
83120       , maxExecutionGraphShaderOutputNodes{ maxExecutionGraphShaderOutputNodes_ }
83121       , maxExecutionGraphShaderPayloadSize{ maxExecutionGraphShaderPayloadSize_ }
83122       , maxExecutionGraphShaderPayloadCount{ maxExecutionGraphShaderPayloadCount_ }
83123       , executionGraphDispatchAddressAlignment{ executionGraphDispatchAddressAlignment_ }
83124     {
83125     }
83126 
83127     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderEnqueuePropertiesAMDX( PhysicalDeviceShaderEnqueuePropertiesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83128 
PhysicalDeviceShaderEnqueuePropertiesAMDXVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX83129     PhysicalDeviceShaderEnqueuePropertiesAMDX( VkPhysicalDeviceShaderEnqueuePropertiesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
83130       : PhysicalDeviceShaderEnqueuePropertiesAMDX( *reinterpret_cast<PhysicalDeviceShaderEnqueuePropertiesAMDX const *>( &rhs ) )
83131     {
83132     }
83133 
83134     PhysicalDeviceShaderEnqueuePropertiesAMDX & operator=( PhysicalDeviceShaderEnqueuePropertiesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83135 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83136 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX83137     PhysicalDeviceShaderEnqueuePropertiesAMDX & operator=( VkPhysicalDeviceShaderEnqueuePropertiesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
83138     {
83139       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX const *>( &rhs );
83140       return *this;
83141     }
83142 
83143 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX83144     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueuePropertiesAMDX & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
83145     {
83146       pNext = pNext_;
83147       return *this;
83148     }
83149 
setMaxExecutionGraphDepthVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX83150     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueuePropertiesAMDX & setMaxExecutionGraphDepth( uint32_t maxExecutionGraphDepth_ ) VULKAN_HPP_NOEXCEPT
83151     {
83152       maxExecutionGraphDepth = maxExecutionGraphDepth_;
83153       return *this;
83154     }
83155 
83156     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueuePropertiesAMDX &
setMaxExecutionGraphShaderOutputNodesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX83157       setMaxExecutionGraphShaderOutputNodes( uint32_t maxExecutionGraphShaderOutputNodes_ ) VULKAN_HPP_NOEXCEPT
83158     {
83159       maxExecutionGraphShaderOutputNodes = maxExecutionGraphShaderOutputNodes_;
83160       return *this;
83161     }
83162 
83163     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueuePropertiesAMDX &
setMaxExecutionGraphShaderPayloadSizeVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX83164       setMaxExecutionGraphShaderPayloadSize( uint32_t maxExecutionGraphShaderPayloadSize_ ) VULKAN_HPP_NOEXCEPT
83165     {
83166       maxExecutionGraphShaderPayloadSize = maxExecutionGraphShaderPayloadSize_;
83167       return *this;
83168     }
83169 
83170     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueuePropertiesAMDX &
setMaxExecutionGraphShaderPayloadCountVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX83171       setMaxExecutionGraphShaderPayloadCount( uint32_t maxExecutionGraphShaderPayloadCount_ ) VULKAN_HPP_NOEXCEPT
83172     {
83173       maxExecutionGraphShaderPayloadCount = maxExecutionGraphShaderPayloadCount_;
83174       return *this;
83175     }
83176 
83177     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueuePropertiesAMDX &
setExecutionGraphDispatchAddressAlignmentVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX83178       setExecutionGraphDispatchAddressAlignment( uint32_t executionGraphDispatchAddressAlignment_ ) VULKAN_HPP_NOEXCEPT
83179     {
83180       executionGraphDispatchAddressAlignment = executionGraphDispatchAddressAlignment_;
83181       return *this;
83182     }
83183 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
83184 
operator VkPhysicalDeviceShaderEnqueuePropertiesAMDX const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX83185     operator VkPhysicalDeviceShaderEnqueuePropertiesAMDX const &() const VULKAN_HPP_NOEXCEPT
83186     {
83187       return *reinterpret_cast<const VkPhysicalDeviceShaderEnqueuePropertiesAMDX *>( this );
83188     }
83189 
operator VkPhysicalDeviceShaderEnqueuePropertiesAMDX&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX83190     operator VkPhysicalDeviceShaderEnqueuePropertiesAMDX &() VULKAN_HPP_NOEXCEPT
83191     {
83192       return *reinterpret_cast<VkPhysicalDeviceShaderEnqueuePropertiesAMDX *>( this );
83193     }
83194 
83195 #  if defined( VULKAN_HPP_USE_REFLECT )
83196 #    if 14 <= VULKAN_HPP_CPP_VERSION
83197     auto
83198 #    else
83199     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
83200                void * const &,
83201                uint32_t const &,
83202                uint32_t const &,
83203                uint32_t const &,
83204                uint32_t const &,
83205                uint32_t const &>
83206 #    endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX83207       reflect() const VULKAN_HPP_NOEXCEPT
83208     {
83209       return std::tie( sType,
83210                        pNext,
83211                        maxExecutionGraphDepth,
83212                        maxExecutionGraphShaderOutputNodes,
83213                        maxExecutionGraphShaderPayloadSize,
83214                        maxExecutionGraphShaderPayloadCount,
83215                        executionGraphDispatchAddressAlignment );
83216     }
83217 #  endif
83218 
83219 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83220     auto operator<=>( PhysicalDeviceShaderEnqueuePropertiesAMDX const & ) const = default;
83221 #  else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX83222     bool operator==( PhysicalDeviceShaderEnqueuePropertiesAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
83223     {
83224 #    if defined( VULKAN_HPP_USE_REFLECT )
83225       return this->reflect() == rhs.reflect();
83226 #    else
83227       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxExecutionGraphDepth == rhs.maxExecutionGraphDepth ) &&
83228              ( maxExecutionGraphShaderOutputNodes == rhs.maxExecutionGraphShaderOutputNodes ) &&
83229              ( maxExecutionGraphShaderPayloadSize == rhs.maxExecutionGraphShaderPayloadSize ) &&
83230              ( maxExecutionGraphShaderPayloadCount == rhs.maxExecutionGraphShaderPayloadCount ) &&
83231              ( executionGraphDispatchAddressAlignment == rhs.executionGraphDispatchAddressAlignment );
83232 #    endif
83233     }
83234 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX83235     bool operator!=( PhysicalDeviceShaderEnqueuePropertiesAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
83236     {
83237       return !operator==( rhs );
83238     }
83239 #  endif
83240 
83241   public:
83242     VULKAN_HPP_NAMESPACE::StructureType sType                                  = StructureType::ePhysicalDeviceShaderEnqueuePropertiesAMDX;
83243     void *                              pNext                                  = {};
83244     uint32_t                            maxExecutionGraphDepth                 = {};
83245     uint32_t                            maxExecutionGraphShaderOutputNodes     = {};
83246     uint32_t                            maxExecutionGraphShaderPayloadSize     = {};
83247     uint32_t                            maxExecutionGraphShaderPayloadCount    = {};
83248     uint32_t                            executionGraphDispatchAddressAlignment = {};
83249   };
83250 
83251   template <>
83252   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderEnqueuePropertiesAMDX>
83253   {
83254     using Type = PhysicalDeviceShaderEnqueuePropertiesAMDX;
83255   };
83256 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
83257 
83258   struct PhysicalDeviceShaderExpectAssumeFeaturesKHR
83259   {
83260     using NativeType = VkPhysicalDeviceShaderExpectAssumeFeaturesKHR;
83261 
83262     static const bool                                  allowDuplicate = false;
83263     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderExpectAssumeFeaturesKHR;
83264 
83265 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderExpectAssumeFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeaturesKHR83266     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderExpectAssumeFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 shaderExpectAssume_ = {},
83267                                                                       void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
83268       : pNext{ pNext_ }
83269       , shaderExpectAssume{ shaderExpectAssume_ }
83270     {
83271     }
83272 
83273     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderExpectAssumeFeaturesKHR( PhysicalDeviceShaderExpectAssumeFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83274 
PhysicalDeviceShaderExpectAssumeFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeaturesKHR83275     PhysicalDeviceShaderExpectAssumeFeaturesKHR( VkPhysicalDeviceShaderExpectAssumeFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
83276       : PhysicalDeviceShaderExpectAssumeFeaturesKHR( *reinterpret_cast<PhysicalDeviceShaderExpectAssumeFeaturesKHR const *>( &rhs ) )
83277     {
83278     }
83279 
83280     PhysicalDeviceShaderExpectAssumeFeaturesKHR & operator=( PhysicalDeviceShaderExpectAssumeFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83281 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83282 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeaturesKHR83283     PhysicalDeviceShaderExpectAssumeFeaturesKHR & operator=( VkPhysicalDeviceShaderExpectAssumeFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
83284     {
83285       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeaturesKHR const *>( &rhs );
83286       return *this;
83287     }
83288 
83289 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeaturesKHR83290     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderExpectAssumeFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
83291     {
83292       pNext = pNext_;
83293       return *this;
83294     }
83295 
83296     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderExpectAssumeFeaturesKHR &
setShaderExpectAssumeVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeaturesKHR83297       setShaderExpectAssume( VULKAN_HPP_NAMESPACE::Bool32 shaderExpectAssume_ ) VULKAN_HPP_NOEXCEPT
83298     {
83299       shaderExpectAssume = shaderExpectAssume_;
83300       return *this;
83301     }
83302 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
83303 
operator VkPhysicalDeviceShaderExpectAssumeFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeaturesKHR83304     operator VkPhysicalDeviceShaderExpectAssumeFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
83305     {
83306       return *reinterpret_cast<const VkPhysicalDeviceShaderExpectAssumeFeaturesKHR *>( this );
83307     }
83308 
operator VkPhysicalDeviceShaderExpectAssumeFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeaturesKHR83309     operator VkPhysicalDeviceShaderExpectAssumeFeaturesKHR &() VULKAN_HPP_NOEXCEPT
83310     {
83311       return *reinterpret_cast<VkPhysicalDeviceShaderExpectAssumeFeaturesKHR *>( this );
83312     }
83313 
83314 #if defined( VULKAN_HPP_USE_REFLECT )
83315 #  if 14 <= VULKAN_HPP_CPP_VERSION
83316     auto
83317 #  else
83318     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
83319 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeaturesKHR83320       reflect() const VULKAN_HPP_NOEXCEPT
83321     {
83322       return std::tie( sType, pNext, shaderExpectAssume );
83323     }
83324 #endif
83325 
83326 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83327     auto operator<=>( PhysicalDeviceShaderExpectAssumeFeaturesKHR const & ) const = default;
83328 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeaturesKHR83329     bool operator==( PhysicalDeviceShaderExpectAssumeFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
83330     {
83331 #  if defined( VULKAN_HPP_USE_REFLECT )
83332       return this->reflect() == rhs.reflect();
83333 #  else
83334       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderExpectAssume == rhs.shaderExpectAssume );
83335 #  endif
83336     }
83337 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeaturesKHR83338     bool operator!=( PhysicalDeviceShaderExpectAssumeFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
83339     {
83340       return !operator==( rhs );
83341     }
83342 #endif
83343 
83344   public:
83345     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::ePhysicalDeviceShaderExpectAssumeFeaturesKHR;
83346     void *                              pNext              = {};
83347     VULKAN_HPP_NAMESPACE::Bool32        shaderExpectAssume = {};
83348   };
83349 
83350   template <>
83351   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderExpectAssumeFeaturesKHR>
83352   {
83353     using Type = PhysicalDeviceShaderExpectAssumeFeaturesKHR;
83354   };
83355 
83356   struct PhysicalDeviceShaderFloat16Int8Features
83357   {
83358     using NativeType = VkPhysicalDeviceShaderFloat16Int8Features;
83359 
83360     static const bool                                  allowDuplicate = false;
83361     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderFloat16Int8Features;
83362 
83363 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderFloat16Int8FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features83364     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderFloat16Int8Features( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_ = {},
83365                                                                   VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_    = {},
83366                                                                   void *                       pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
83367       : pNext{ pNext_ }
83368       , shaderFloat16{ shaderFloat16_ }
83369       , shaderInt8{ shaderInt8_ }
83370     {
83371     }
83372 
83373     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderFloat16Int8Features( PhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83374 
PhysicalDeviceShaderFloat16Int8FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features83375     PhysicalDeviceShaderFloat16Int8Features( VkPhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT
83376       : PhysicalDeviceShaderFloat16Int8Features( *reinterpret_cast<PhysicalDeviceShaderFloat16Int8Features const *>( &rhs ) )
83377     {
83378     }
83379 
83380     PhysicalDeviceShaderFloat16Int8Features & operator=( PhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83381 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83382 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features83383     PhysicalDeviceShaderFloat16Int8Features & operator=( VkPhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT
83384     {
83385       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features const *>( &rhs );
83386       return *this;
83387     }
83388 
83389 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features83390     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
83391     {
83392       pNext = pNext_;
83393       return *this;
83394     }
83395 
setShaderFloat16VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features83396     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features & setShaderFloat16( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_ ) VULKAN_HPP_NOEXCEPT
83397     {
83398       shaderFloat16 = shaderFloat16_;
83399       return *this;
83400     }
83401 
setShaderInt8VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features83402     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features & setShaderInt8( VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_ ) VULKAN_HPP_NOEXCEPT
83403     {
83404       shaderInt8 = shaderInt8_;
83405       return *this;
83406     }
83407 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
83408 
operator VkPhysicalDeviceShaderFloat16Int8Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features83409     operator VkPhysicalDeviceShaderFloat16Int8Features const &() const VULKAN_HPP_NOEXCEPT
83410     {
83411       return *reinterpret_cast<const VkPhysicalDeviceShaderFloat16Int8Features *>( this );
83412     }
83413 
operator VkPhysicalDeviceShaderFloat16Int8Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features83414     operator VkPhysicalDeviceShaderFloat16Int8Features &() VULKAN_HPP_NOEXCEPT
83415     {
83416       return *reinterpret_cast<VkPhysicalDeviceShaderFloat16Int8Features *>( this );
83417     }
83418 
83419 #if defined( VULKAN_HPP_USE_REFLECT )
83420 #  if 14 <= VULKAN_HPP_CPP_VERSION
83421     auto
83422 #  else
83423     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
83424 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features83425       reflect() const VULKAN_HPP_NOEXCEPT
83426     {
83427       return std::tie( sType, pNext, shaderFloat16, shaderInt8 );
83428     }
83429 #endif
83430 
83431 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83432     auto operator<=>( PhysicalDeviceShaderFloat16Int8Features const & ) const = default;
83433 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features83434     bool operator==( PhysicalDeviceShaderFloat16Int8Features const & rhs ) const VULKAN_HPP_NOEXCEPT
83435     {
83436 #  if defined( VULKAN_HPP_USE_REFLECT )
83437       return this->reflect() == rhs.reflect();
83438 #  else
83439       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderFloat16 == rhs.shaderFloat16 ) && ( shaderInt8 == rhs.shaderInt8 );
83440 #  endif
83441     }
83442 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features83443     bool operator!=( PhysicalDeviceShaderFloat16Int8Features const & rhs ) const VULKAN_HPP_NOEXCEPT
83444     {
83445       return !operator==( rhs );
83446     }
83447 #endif
83448 
83449   public:
83450     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::ePhysicalDeviceShaderFloat16Int8Features;
83451     void *                              pNext         = {};
83452     VULKAN_HPP_NAMESPACE::Bool32        shaderFloat16 = {};
83453     VULKAN_HPP_NAMESPACE::Bool32        shaderInt8    = {};
83454   };
83455 
83456   template <>
83457   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderFloat16Int8Features>
83458   {
83459     using Type = PhysicalDeviceShaderFloat16Int8Features;
83460   };
83461 
83462   using PhysicalDeviceFloat16Int8FeaturesKHR       = PhysicalDeviceShaderFloat16Int8Features;
83463   using PhysicalDeviceShaderFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features;
83464 
83465   struct PhysicalDeviceShaderFloatControls2FeaturesKHR
83466   {
83467     using NativeType = VkPhysicalDeviceShaderFloatControls2FeaturesKHR;
83468 
83469     static const bool                                  allowDuplicate = false;
83470     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderFloatControls2FeaturesKHR;
83471 
83472 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderFloatControls2FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2FeaturesKHR83473     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderFloatControls2FeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 shaderFloatControls2_ = {},
83474                                                                         void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
83475       : pNext{ pNext_ }
83476       , shaderFloatControls2{ shaderFloatControls2_ }
83477     {
83478     }
83479 
83480     VULKAN_HPP_CONSTEXPR
83481       PhysicalDeviceShaderFloatControls2FeaturesKHR( PhysicalDeviceShaderFloatControls2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83482 
PhysicalDeviceShaderFloatControls2FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2FeaturesKHR83483     PhysicalDeviceShaderFloatControls2FeaturesKHR( VkPhysicalDeviceShaderFloatControls2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
83484       : PhysicalDeviceShaderFloatControls2FeaturesKHR( *reinterpret_cast<PhysicalDeviceShaderFloatControls2FeaturesKHR const *>( &rhs ) )
83485     {
83486     }
83487 
83488     PhysicalDeviceShaderFloatControls2FeaturesKHR & operator=( PhysicalDeviceShaderFloatControls2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83489 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83490 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2FeaturesKHR83491     PhysicalDeviceShaderFloatControls2FeaturesKHR & operator=( VkPhysicalDeviceShaderFloatControls2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
83492     {
83493       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2FeaturesKHR const *>( &rhs );
83494       return *this;
83495     }
83496 
83497 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2FeaturesKHR83498     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloatControls2FeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
83499     {
83500       pNext = pNext_;
83501       return *this;
83502     }
83503 
83504     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloatControls2FeaturesKHR &
setShaderFloatControls2VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2FeaturesKHR83505       setShaderFloatControls2( VULKAN_HPP_NAMESPACE::Bool32 shaderFloatControls2_ ) VULKAN_HPP_NOEXCEPT
83506     {
83507       shaderFloatControls2 = shaderFloatControls2_;
83508       return *this;
83509     }
83510 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
83511 
operator VkPhysicalDeviceShaderFloatControls2FeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2FeaturesKHR83512     operator VkPhysicalDeviceShaderFloatControls2FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
83513     {
83514       return *reinterpret_cast<const VkPhysicalDeviceShaderFloatControls2FeaturesKHR *>( this );
83515     }
83516 
operator VkPhysicalDeviceShaderFloatControls2FeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2FeaturesKHR83517     operator VkPhysicalDeviceShaderFloatControls2FeaturesKHR &() VULKAN_HPP_NOEXCEPT
83518     {
83519       return *reinterpret_cast<VkPhysicalDeviceShaderFloatControls2FeaturesKHR *>( this );
83520     }
83521 
83522 #if defined( VULKAN_HPP_USE_REFLECT )
83523 #  if 14 <= VULKAN_HPP_CPP_VERSION
83524     auto
83525 #  else
83526     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
83527 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2FeaturesKHR83528       reflect() const VULKAN_HPP_NOEXCEPT
83529     {
83530       return std::tie( sType, pNext, shaderFloatControls2 );
83531     }
83532 #endif
83533 
83534 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83535     auto operator<=>( PhysicalDeviceShaderFloatControls2FeaturesKHR const & ) const = default;
83536 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2FeaturesKHR83537     bool operator==( PhysicalDeviceShaderFloatControls2FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
83538     {
83539 #  if defined( VULKAN_HPP_USE_REFLECT )
83540       return this->reflect() == rhs.reflect();
83541 #  else
83542       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderFloatControls2 == rhs.shaderFloatControls2 );
83543 #  endif
83544     }
83545 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2FeaturesKHR83546     bool operator!=( PhysicalDeviceShaderFloatControls2FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
83547     {
83548       return !operator==( rhs );
83549     }
83550 #endif
83551 
83552   public:
83553     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceShaderFloatControls2FeaturesKHR;
83554     void *                              pNext                = {};
83555     VULKAN_HPP_NAMESPACE::Bool32        shaderFloatControls2 = {};
83556   };
83557 
83558   template <>
83559   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderFloatControls2FeaturesKHR>
83560   {
83561     using Type = PhysicalDeviceShaderFloatControls2FeaturesKHR;
83562   };
83563 
83564   struct PhysicalDeviceShaderImageAtomicInt64FeaturesEXT
83565   {
83566     using NativeType = VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
83567 
83568     static const bool                                  allowDuplicate = false;
83569     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
83570 
83571 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderImageAtomicInt64FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT83572     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 shaderImageInt64Atomics_ = {},
83573                                                                           VULKAN_HPP_NAMESPACE::Bool32 sparseImageInt64Atomics_ = {},
83574                                                                           void *                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
83575       : pNext{ pNext_ }
83576       , shaderImageInt64Atomics{ shaderImageInt64Atomics_ }
83577       , sparseImageInt64Atomics{ sparseImageInt64Atomics_ }
83578     {
83579     }
83580 
83581     VULKAN_HPP_CONSTEXPR
83582       PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83583 
PhysicalDeviceShaderImageAtomicInt64FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT83584     PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
83585       : PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( *reinterpret_cast<PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const *>( &rhs ) )
83586     {
83587     }
83588 
83589     PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & operator=( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83590 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83591 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT83592     PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & operator=( VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
83593     {
83594       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const *>( &rhs );
83595       return *this;
83596     }
83597 
83598 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT83599     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
83600     {
83601       pNext = pNext_;
83602       return *this;
83603     }
83604 
83605     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT &
setShaderImageInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT83606       setShaderImageInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderImageInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
83607     {
83608       shaderImageInt64Atomics = shaderImageInt64Atomics_;
83609       return *this;
83610     }
83611 
83612     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT &
setSparseImageInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT83613       setSparseImageInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 sparseImageInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
83614     {
83615       sparseImageInt64Atomics = sparseImageInt64Atomics_;
83616       return *this;
83617     }
83618 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
83619 
operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT83620     operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
83621     {
83622       return *reinterpret_cast<const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT *>( this );
83623     }
83624 
operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT83625     operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT &() VULKAN_HPP_NOEXCEPT
83626     {
83627       return *reinterpret_cast<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT *>( this );
83628     }
83629 
83630 #if defined( VULKAN_HPP_USE_REFLECT )
83631 #  if 14 <= VULKAN_HPP_CPP_VERSION
83632     auto
83633 #  else
83634     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
83635 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT83636       reflect() const VULKAN_HPP_NOEXCEPT
83637     {
83638       return std::tie( sType, pNext, shaderImageInt64Atomics, sparseImageInt64Atomics );
83639     }
83640 #endif
83641 
83642 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83643     auto operator<=>( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & ) const = default;
83644 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT83645     bool operator==( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
83646     {
83647 #  if defined( VULKAN_HPP_USE_REFLECT )
83648       return this->reflect() == rhs.reflect();
83649 #  else
83650       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderImageInt64Atomics == rhs.shaderImageInt64Atomics ) &&
83651              ( sparseImageInt64Atomics == rhs.sparseImageInt64Atomics );
83652 #  endif
83653     }
83654 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT83655     bool operator!=( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
83656     {
83657       return !operator==( rhs );
83658     }
83659 #endif
83660 
83661   public:
83662     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
83663     void *                              pNext                   = {};
83664     VULKAN_HPP_NAMESPACE::Bool32        shaderImageInt64Atomics = {};
83665     VULKAN_HPP_NAMESPACE::Bool32        sparseImageInt64Atomics = {};
83666   };
83667 
83668   template <>
83669   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT>
83670   {
83671     using Type = PhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
83672   };
83673 
83674   struct PhysicalDeviceShaderImageFootprintFeaturesNV
83675   {
83676     using NativeType = VkPhysicalDeviceShaderImageFootprintFeaturesNV;
83677 
83678     static const bool                                  allowDuplicate = false;
83679     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV;
83680 
83681 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderImageFootprintFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV83682     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageFootprintFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 imageFootprint_ = {},
83683                                                                        void *                       pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
83684       : pNext{ pNext_ }
83685       , imageFootprint{ imageFootprint_ }
83686     {
83687     }
83688 
83689     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageFootprintFeaturesNV( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83690 
PhysicalDeviceShaderImageFootprintFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV83691     PhysicalDeviceShaderImageFootprintFeaturesNV( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
83692       : PhysicalDeviceShaderImageFootprintFeaturesNV( *reinterpret_cast<PhysicalDeviceShaderImageFootprintFeaturesNV const *>( &rhs ) )
83693     {
83694     }
83695 
83696     PhysicalDeviceShaderImageFootprintFeaturesNV & operator=( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83697 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83698 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV83699     PhysicalDeviceShaderImageFootprintFeaturesNV & operator=( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
83700     {
83701       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV const *>( &rhs );
83702       return *this;
83703     }
83704 
83705 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV83706     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageFootprintFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
83707     {
83708       pNext = pNext_;
83709       return *this;
83710     }
83711 
setImageFootprintVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV83712     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageFootprintFeaturesNV & setImageFootprint( VULKAN_HPP_NAMESPACE::Bool32 imageFootprint_ ) VULKAN_HPP_NOEXCEPT
83713     {
83714       imageFootprint = imageFootprint_;
83715       return *this;
83716     }
83717 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
83718 
operator VkPhysicalDeviceShaderImageFootprintFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV83719     operator VkPhysicalDeviceShaderImageFootprintFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
83720     {
83721       return *reinterpret_cast<const VkPhysicalDeviceShaderImageFootprintFeaturesNV *>( this );
83722     }
83723 
operator VkPhysicalDeviceShaderImageFootprintFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV83724     operator VkPhysicalDeviceShaderImageFootprintFeaturesNV &() VULKAN_HPP_NOEXCEPT
83725     {
83726       return *reinterpret_cast<VkPhysicalDeviceShaderImageFootprintFeaturesNV *>( this );
83727     }
83728 
83729 #if defined( VULKAN_HPP_USE_REFLECT )
83730 #  if 14 <= VULKAN_HPP_CPP_VERSION
83731     auto
83732 #  else
83733     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
83734 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV83735       reflect() const VULKAN_HPP_NOEXCEPT
83736     {
83737       return std::tie( sType, pNext, imageFootprint );
83738     }
83739 #endif
83740 
83741 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83742     auto operator<=>( PhysicalDeviceShaderImageFootprintFeaturesNV const & ) const = default;
83743 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV83744     bool operator==( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
83745     {
83746 #  if defined( VULKAN_HPP_USE_REFLECT )
83747       return this->reflect() == rhs.reflect();
83748 #  else
83749       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageFootprint == rhs.imageFootprint );
83750 #  endif
83751     }
83752 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV83753     bool operator!=( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
83754     {
83755       return !operator==( rhs );
83756     }
83757 #endif
83758 
83759   public:
83760     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV;
83761     void *                              pNext          = {};
83762     VULKAN_HPP_NAMESPACE::Bool32        imageFootprint = {};
83763   };
83764 
83765   template <>
83766   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV>
83767   {
83768     using Type = PhysicalDeviceShaderImageFootprintFeaturesNV;
83769   };
83770 
83771   struct PhysicalDeviceShaderIntegerDotProductFeatures
83772   {
83773     using NativeType = VkPhysicalDeviceShaderIntegerDotProductFeatures;
83774 
83775     static const bool                                  allowDuplicate = false;
83776     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderIntegerDotProductFeatures;
83777 
83778 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderIntegerDotProductFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures83779     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerDotProductFeatures( VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct_ = {},
83780                                                                         void *                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
83781       : pNext{ pNext_ }
83782       , shaderIntegerDotProduct{ shaderIntegerDotProduct_ }
83783     {
83784     }
83785 
83786     VULKAN_HPP_CONSTEXPR
83787       PhysicalDeviceShaderIntegerDotProductFeatures( PhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83788 
PhysicalDeviceShaderIntegerDotProductFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures83789     PhysicalDeviceShaderIntegerDotProductFeatures( VkPhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
83790       : PhysicalDeviceShaderIntegerDotProductFeatures( *reinterpret_cast<PhysicalDeviceShaderIntegerDotProductFeatures const *>( &rhs ) )
83791     {
83792     }
83793 
83794     PhysicalDeviceShaderIntegerDotProductFeatures & operator=( PhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83795 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83796 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures83797     PhysicalDeviceShaderIntegerDotProductFeatures & operator=( VkPhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
83798     {
83799       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures const *>( &rhs );
83800       return *this;
83801     }
83802 
83803 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures83804     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
83805     {
83806       pNext = pNext_;
83807       return *this;
83808     }
83809 
83810     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductFeatures &
setShaderIntegerDotProductVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures83811       setShaderIntegerDotProduct( VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct_ ) VULKAN_HPP_NOEXCEPT
83812     {
83813       shaderIntegerDotProduct = shaderIntegerDotProduct_;
83814       return *this;
83815     }
83816 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
83817 
operator VkPhysicalDeviceShaderIntegerDotProductFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures83818     operator VkPhysicalDeviceShaderIntegerDotProductFeatures const &() const VULKAN_HPP_NOEXCEPT
83819     {
83820       return *reinterpret_cast<const VkPhysicalDeviceShaderIntegerDotProductFeatures *>( this );
83821     }
83822 
operator VkPhysicalDeviceShaderIntegerDotProductFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures83823     operator VkPhysicalDeviceShaderIntegerDotProductFeatures &() VULKAN_HPP_NOEXCEPT
83824     {
83825       return *reinterpret_cast<VkPhysicalDeviceShaderIntegerDotProductFeatures *>( this );
83826     }
83827 
83828 #if defined( VULKAN_HPP_USE_REFLECT )
83829 #  if 14 <= VULKAN_HPP_CPP_VERSION
83830     auto
83831 #  else
83832     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
83833 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures83834       reflect() const VULKAN_HPP_NOEXCEPT
83835     {
83836       return std::tie( sType, pNext, shaderIntegerDotProduct );
83837     }
83838 #endif
83839 
83840 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
83841     auto operator<=>( PhysicalDeviceShaderIntegerDotProductFeatures const & ) const = default;
83842 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures83843     bool operator==( PhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
83844     {
83845 #  if defined( VULKAN_HPP_USE_REFLECT )
83846       return this->reflect() == rhs.reflect();
83847 #  else
83848       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderIntegerDotProduct == rhs.shaderIntegerDotProduct );
83849 #  endif
83850     }
83851 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures83852     bool operator!=( PhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
83853     {
83854       return !operator==( rhs );
83855     }
83856 #endif
83857 
83858   public:
83859     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDeviceShaderIntegerDotProductFeatures;
83860     void *                              pNext                   = {};
83861     VULKAN_HPP_NAMESPACE::Bool32        shaderIntegerDotProduct = {};
83862   };
83863 
83864   template <>
83865   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderIntegerDotProductFeatures>
83866   {
83867     using Type = PhysicalDeviceShaderIntegerDotProductFeatures;
83868   };
83869 
83870   using PhysicalDeviceShaderIntegerDotProductFeaturesKHR = PhysicalDeviceShaderIntegerDotProductFeatures;
83871 
83872   struct PhysicalDeviceShaderIntegerDotProductProperties
83873   {
83874     using NativeType = VkPhysicalDeviceShaderIntegerDotProductProperties;
83875 
83876     static const bool                                  allowDuplicate = false;
83877     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderIntegerDotProductProperties;
83878 
83879 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderIntegerDotProductPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties83880     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerDotProductProperties(
83881       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitUnsignedAccelerated_                                      = {},
83882       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitSignedAccelerated_                                        = {},
83883       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitMixedSignednessAccelerated_                               = {},
83884       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedUnsignedAccelerated_                              = {},
83885       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedSignedAccelerated_                                = {},
83886       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated_                       = {},
83887       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitUnsignedAccelerated_                                     = {},
83888       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitSignedAccelerated_                                       = {},
83889       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitMixedSignednessAccelerated_                              = {},
83890       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitUnsignedAccelerated_                                     = {},
83891       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitSignedAccelerated_                                       = {},
83892       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitMixedSignednessAccelerated_                              = {},
83893       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitUnsignedAccelerated_                                     = {},
83894       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitSignedAccelerated_                                       = {},
83895       VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitMixedSignednessAccelerated_                              = {},
83896       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_                = {},
83897       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated_                  = {},
83898       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_         = {},
83899       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_        = {},
83900       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_          = {},
83901       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ = {},
83902       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_               = {},
83903       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated_                 = {},
83904       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_        = {},
83905       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_               = {},
83906       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated_                 = {},
83907       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_        = {},
83908       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_               = {},
83909       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated_                 = {},
83910       VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_        = {},
83911       void *                       pNext_                                                                         = nullptr ) VULKAN_HPP_NOEXCEPT
83912       : pNext{ pNext_ }
83913       , integerDotProduct8BitUnsignedAccelerated{ integerDotProduct8BitUnsignedAccelerated_ }
83914       , integerDotProduct8BitSignedAccelerated{ integerDotProduct8BitSignedAccelerated_ }
83915       , integerDotProduct8BitMixedSignednessAccelerated{ integerDotProduct8BitMixedSignednessAccelerated_ }
83916       , integerDotProduct4x8BitPackedUnsignedAccelerated{ integerDotProduct4x8BitPackedUnsignedAccelerated_ }
83917       , integerDotProduct4x8BitPackedSignedAccelerated{ integerDotProduct4x8BitPackedSignedAccelerated_ }
83918       , integerDotProduct4x8BitPackedMixedSignednessAccelerated{ integerDotProduct4x8BitPackedMixedSignednessAccelerated_ }
83919       , integerDotProduct16BitUnsignedAccelerated{ integerDotProduct16BitUnsignedAccelerated_ }
83920       , integerDotProduct16BitSignedAccelerated{ integerDotProduct16BitSignedAccelerated_ }
83921       , integerDotProduct16BitMixedSignednessAccelerated{ integerDotProduct16BitMixedSignednessAccelerated_ }
83922       , integerDotProduct32BitUnsignedAccelerated{ integerDotProduct32BitUnsignedAccelerated_ }
83923       , integerDotProduct32BitSignedAccelerated{ integerDotProduct32BitSignedAccelerated_ }
83924       , integerDotProduct32BitMixedSignednessAccelerated{ integerDotProduct32BitMixedSignednessAccelerated_ }
83925       , integerDotProduct64BitUnsignedAccelerated{ integerDotProduct64BitUnsignedAccelerated_ }
83926       , integerDotProduct64BitSignedAccelerated{ integerDotProduct64BitSignedAccelerated_ }
83927       , integerDotProduct64BitMixedSignednessAccelerated{ integerDotProduct64BitMixedSignednessAccelerated_ }
83928       , integerDotProductAccumulatingSaturating8BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_ }
83929       , integerDotProductAccumulatingSaturating8BitSignedAccelerated{ integerDotProductAccumulatingSaturating8BitSignedAccelerated_ }
83930       , integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_ }
83931       , integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated{ integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_ }
83932       , integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated{ integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_ }
83933       , integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ }
83934       , integerDotProductAccumulatingSaturating16BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_ }
83935       , integerDotProductAccumulatingSaturating16BitSignedAccelerated{ integerDotProductAccumulatingSaturating16BitSignedAccelerated_ }
83936       , integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_ }
83937       , integerDotProductAccumulatingSaturating32BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_ }
83938       , integerDotProductAccumulatingSaturating32BitSignedAccelerated{ integerDotProductAccumulatingSaturating32BitSignedAccelerated_ }
83939       , integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_ }
83940       , integerDotProductAccumulatingSaturating64BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_ }
83941       , integerDotProductAccumulatingSaturating64BitSignedAccelerated{ integerDotProductAccumulatingSaturating64BitSignedAccelerated_ }
83942       , integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_ }
83943     {
83944     }
83945 
83946     VULKAN_HPP_CONSTEXPR
83947       PhysicalDeviceShaderIntegerDotProductProperties( PhysicalDeviceShaderIntegerDotProductProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83948 
PhysicalDeviceShaderIntegerDotProductPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties83949     PhysicalDeviceShaderIntegerDotProductProperties( VkPhysicalDeviceShaderIntegerDotProductProperties const & rhs ) VULKAN_HPP_NOEXCEPT
83950       : PhysicalDeviceShaderIntegerDotProductProperties( *reinterpret_cast<PhysicalDeviceShaderIntegerDotProductProperties const *>( &rhs ) )
83951     {
83952     }
83953 
83954     PhysicalDeviceShaderIntegerDotProductProperties & operator=( PhysicalDeviceShaderIntegerDotProductProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
83955 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
83956 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties83957     PhysicalDeviceShaderIntegerDotProductProperties & operator=( VkPhysicalDeviceShaderIntegerDotProductProperties const & rhs ) VULKAN_HPP_NOEXCEPT
83958     {
83959       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties const *>( &rhs );
83960       return *this;
83961     }
83962 
operator VkPhysicalDeviceShaderIntegerDotProductProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties83963     operator VkPhysicalDeviceShaderIntegerDotProductProperties const &() const VULKAN_HPP_NOEXCEPT
83964     {
83965       return *reinterpret_cast<const VkPhysicalDeviceShaderIntegerDotProductProperties *>( this );
83966     }
83967 
operator VkPhysicalDeviceShaderIntegerDotProductProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties83968     operator VkPhysicalDeviceShaderIntegerDotProductProperties &() VULKAN_HPP_NOEXCEPT
83969     {
83970       return *reinterpret_cast<VkPhysicalDeviceShaderIntegerDotProductProperties *>( this );
83971     }
83972 
83973 #if defined( VULKAN_HPP_USE_REFLECT )
83974 #  if 14 <= VULKAN_HPP_CPP_VERSION
83975     auto
83976 #  else
83977     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
83978                void * const &,
83979                VULKAN_HPP_NAMESPACE::Bool32 const &,
83980                VULKAN_HPP_NAMESPACE::Bool32 const &,
83981                VULKAN_HPP_NAMESPACE::Bool32 const &,
83982                VULKAN_HPP_NAMESPACE::Bool32 const &,
83983                VULKAN_HPP_NAMESPACE::Bool32 const &,
83984                VULKAN_HPP_NAMESPACE::Bool32 const &,
83985                VULKAN_HPP_NAMESPACE::Bool32 const &,
83986                VULKAN_HPP_NAMESPACE::Bool32 const &,
83987                VULKAN_HPP_NAMESPACE::Bool32 const &,
83988                VULKAN_HPP_NAMESPACE::Bool32 const &,
83989                VULKAN_HPP_NAMESPACE::Bool32 const &,
83990                VULKAN_HPP_NAMESPACE::Bool32 const &,
83991                VULKAN_HPP_NAMESPACE::Bool32 const &,
83992                VULKAN_HPP_NAMESPACE::Bool32 const &,
83993                VULKAN_HPP_NAMESPACE::Bool32 const &,
83994                VULKAN_HPP_NAMESPACE::Bool32 const &,
83995                VULKAN_HPP_NAMESPACE::Bool32 const &,
83996                VULKAN_HPP_NAMESPACE::Bool32 const &,
83997                VULKAN_HPP_NAMESPACE::Bool32 const &,
83998                VULKAN_HPP_NAMESPACE::Bool32 const &,
83999                VULKAN_HPP_NAMESPACE::Bool32 const &,
84000                VULKAN_HPP_NAMESPACE::Bool32 const &,
84001                VULKAN_HPP_NAMESPACE::Bool32 const &,
84002                VULKAN_HPP_NAMESPACE::Bool32 const &,
84003                VULKAN_HPP_NAMESPACE::Bool32 const &,
84004                VULKAN_HPP_NAMESPACE::Bool32 const &,
84005                VULKAN_HPP_NAMESPACE::Bool32 const &,
84006                VULKAN_HPP_NAMESPACE::Bool32 const &,
84007                VULKAN_HPP_NAMESPACE::Bool32 const &,
84008                VULKAN_HPP_NAMESPACE::Bool32 const &>
84009 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties84010       reflect() const VULKAN_HPP_NOEXCEPT
84011     {
84012       return std::tie( sType,
84013                        pNext,
84014                        integerDotProduct8BitUnsignedAccelerated,
84015                        integerDotProduct8BitSignedAccelerated,
84016                        integerDotProduct8BitMixedSignednessAccelerated,
84017                        integerDotProduct4x8BitPackedUnsignedAccelerated,
84018                        integerDotProduct4x8BitPackedSignedAccelerated,
84019                        integerDotProduct4x8BitPackedMixedSignednessAccelerated,
84020                        integerDotProduct16BitUnsignedAccelerated,
84021                        integerDotProduct16BitSignedAccelerated,
84022                        integerDotProduct16BitMixedSignednessAccelerated,
84023                        integerDotProduct32BitUnsignedAccelerated,
84024                        integerDotProduct32BitSignedAccelerated,
84025                        integerDotProduct32BitMixedSignednessAccelerated,
84026                        integerDotProduct64BitUnsignedAccelerated,
84027                        integerDotProduct64BitSignedAccelerated,
84028                        integerDotProduct64BitMixedSignednessAccelerated,
84029                        integerDotProductAccumulatingSaturating8BitUnsignedAccelerated,
84030                        integerDotProductAccumulatingSaturating8BitSignedAccelerated,
84031                        integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated,
84032                        integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated,
84033                        integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated,
84034                        integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated,
84035                        integerDotProductAccumulatingSaturating16BitUnsignedAccelerated,
84036                        integerDotProductAccumulatingSaturating16BitSignedAccelerated,
84037                        integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated,
84038                        integerDotProductAccumulatingSaturating32BitUnsignedAccelerated,
84039                        integerDotProductAccumulatingSaturating32BitSignedAccelerated,
84040                        integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated,
84041                        integerDotProductAccumulatingSaturating64BitUnsignedAccelerated,
84042                        integerDotProductAccumulatingSaturating64BitSignedAccelerated,
84043                        integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated );
84044     }
84045 #endif
84046 
84047 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84048     auto operator<=>( PhysicalDeviceShaderIntegerDotProductProperties const & ) const = default;
84049 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties84050     bool operator==( PhysicalDeviceShaderIntegerDotProductProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
84051     {
84052 #  if defined( VULKAN_HPP_USE_REFLECT )
84053       return this->reflect() == rhs.reflect();
84054 #  else
84055       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( integerDotProduct8BitUnsignedAccelerated == rhs.integerDotProduct8BitUnsignedAccelerated ) &&
84056              ( integerDotProduct8BitSignedAccelerated == rhs.integerDotProduct8BitSignedAccelerated ) &&
84057              ( integerDotProduct8BitMixedSignednessAccelerated == rhs.integerDotProduct8BitMixedSignednessAccelerated ) &&
84058              ( integerDotProduct4x8BitPackedUnsignedAccelerated == rhs.integerDotProduct4x8BitPackedUnsignedAccelerated ) &&
84059              ( integerDotProduct4x8BitPackedSignedAccelerated == rhs.integerDotProduct4x8BitPackedSignedAccelerated ) &&
84060              ( integerDotProduct4x8BitPackedMixedSignednessAccelerated == rhs.integerDotProduct4x8BitPackedMixedSignednessAccelerated ) &&
84061              ( integerDotProduct16BitUnsignedAccelerated == rhs.integerDotProduct16BitUnsignedAccelerated ) &&
84062              ( integerDotProduct16BitSignedAccelerated == rhs.integerDotProduct16BitSignedAccelerated ) &&
84063              ( integerDotProduct16BitMixedSignednessAccelerated == rhs.integerDotProduct16BitMixedSignednessAccelerated ) &&
84064              ( integerDotProduct32BitUnsignedAccelerated == rhs.integerDotProduct32BitUnsignedAccelerated ) &&
84065              ( integerDotProduct32BitSignedAccelerated == rhs.integerDotProduct32BitSignedAccelerated ) &&
84066              ( integerDotProduct32BitMixedSignednessAccelerated == rhs.integerDotProduct32BitMixedSignednessAccelerated ) &&
84067              ( integerDotProduct64BitUnsignedAccelerated == rhs.integerDotProduct64BitUnsignedAccelerated ) &&
84068              ( integerDotProduct64BitSignedAccelerated == rhs.integerDotProduct64BitSignedAccelerated ) &&
84069              ( integerDotProduct64BitMixedSignednessAccelerated == rhs.integerDotProduct64BitMixedSignednessAccelerated ) &&
84070              ( integerDotProductAccumulatingSaturating8BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated ) &&
84071              ( integerDotProductAccumulatingSaturating8BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating8BitSignedAccelerated ) &&
84072              ( integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated ==
84073                rhs.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated ) &&
84074              ( integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated ==
84075                rhs.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated ) &&
84076              ( integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated ==
84077                rhs.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated ) &&
84078              ( integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated ==
84079                rhs.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated ) &&
84080              ( integerDotProductAccumulatingSaturating16BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated ) &&
84081              ( integerDotProductAccumulatingSaturating16BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating16BitSignedAccelerated ) &&
84082              ( integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated ==
84083                rhs.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated ) &&
84084              ( integerDotProductAccumulatingSaturating32BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated ) &&
84085              ( integerDotProductAccumulatingSaturating32BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating32BitSignedAccelerated ) &&
84086              ( integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated ==
84087                rhs.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated ) &&
84088              ( integerDotProductAccumulatingSaturating64BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated ) &&
84089              ( integerDotProductAccumulatingSaturating64BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating64BitSignedAccelerated ) &&
84090              ( integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated ==
84091                rhs.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated );
84092 #  endif
84093     }
84094 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties84095     bool operator!=( PhysicalDeviceShaderIntegerDotProductProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
84096     {
84097       return !operator==( rhs );
84098     }
84099 #endif
84100 
84101   public:
84102     VULKAN_HPP_NAMESPACE::StructureType sType                                            = StructureType::ePhysicalDeviceShaderIntegerDotProductProperties;
84103     void *                              pNext                                            = {};
84104     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct8BitUnsignedAccelerated         = {};
84105     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct8BitSignedAccelerated           = {};
84106     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct8BitMixedSignednessAccelerated  = {};
84107     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct4x8BitPackedUnsignedAccelerated = {};
84108     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct4x8BitPackedSignedAccelerated   = {};
84109     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct4x8BitPackedMixedSignednessAccelerated                       = {};
84110     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct16BitUnsignedAccelerated                                     = {};
84111     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct16BitSignedAccelerated                                       = {};
84112     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct16BitMixedSignednessAccelerated                              = {};
84113     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct32BitUnsignedAccelerated                                     = {};
84114     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct32BitSignedAccelerated                                       = {};
84115     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct32BitMixedSignednessAccelerated                              = {};
84116     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct64BitUnsignedAccelerated                                     = {};
84117     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct64BitSignedAccelerated                                       = {};
84118     VULKAN_HPP_NAMESPACE::Bool32        integerDotProduct64BitMixedSignednessAccelerated                              = {};
84119     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating8BitUnsignedAccelerated                = {};
84120     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating8BitSignedAccelerated                  = {};
84121     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated         = {};
84122     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated        = {};
84123     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated          = {};
84124     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = {};
84125     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating16BitUnsignedAccelerated               = {};
84126     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating16BitSignedAccelerated                 = {};
84127     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated        = {};
84128     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating32BitUnsignedAccelerated               = {};
84129     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating32BitSignedAccelerated                 = {};
84130     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated        = {};
84131     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating64BitUnsignedAccelerated               = {};
84132     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating64BitSignedAccelerated                 = {};
84133     VULKAN_HPP_NAMESPACE::Bool32        integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated        = {};
84134   };
84135 
84136   template <>
84137   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderIntegerDotProductProperties>
84138   {
84139     using Type = PhysicalDeviceShaderIntegerDotProductProperties;
84140   };
84141 
84142   using PhysicalDeviceShaderIntegerDotProductPropertiesKHR = PhysicalDeviceShaderIntegerDotProductProperties;
84143 
84144   struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL
84145   {
84146     using NativeType = VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
84147 
84148     static const bool                                  allowDuplicate = false;
84149     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
84150 
84151 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderIntegerFunctions2FeaturesINTELVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL84152     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerFunctions2_ = {},
84153                                                                              void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
84154       : pNext{ pNext_ }
84155       , shaderIntegerFunctions2{ shaderIntegerFunctions2_ }
84156     {
84157     }
84158 
84159     VULKAN_HPP_CONSTEXPR
84160       PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84161 
PhysicalDeviceShaderIntegerFunctions2FeaturesINTELVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL84162     PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
84163       : PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( *reinterpret_cast<PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const *>( &rhs ) )
84164     {
84165     }
84166 
84167     PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL &
84168       operator=( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84169 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84170 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL84171     PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & operator=( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
84172     {
84173       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const *>( &rhs );
84174       return *this;
84175     }
84176 
84177 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL84178     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
84179     {
84180       pNext = pNext_;
84181       return *this;
84182     }
84183 
84184     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL &
setShaderIntegerFunctions2VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL84185       setShaderIntegerFunctions2( VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerFunctions2_ ) VULKAN_HPP_NOEXCEPT
84186     {
84187       shaderIntegerFunctions2 = shaderIntegerFunctions2_;
84188       return *this;
84189     }
84190 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84191 
operator VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL84192     operator VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const &() const VULKAN_HPP_NOEXCEPT
84193     {
84194       return *reinterpret_cast<const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL *>( this );
84195     }
84196 
operator VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL84197     operator VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL &() VULKAN_HPP_NOEXCEPT
84198     {
84199       return *reinterpret_cast<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL *>( this );
84200     }
84201 
84202 #if defined( VULKAN_HPP_USE_REFLECT )
84203 #  if 14 <= VULKAN_HPP_CPP_VERSION
84204     auto
84205 #  else
84206     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
84207 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL84208       reflect() const VULKAN_HPP_NOEXCEPT
84209     {
84210       return std::tie( sType, pNext, shaderIntegerFunctions2 );
84211     }
84212 #endif
84213 
84214 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84215     auto operator<=>( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & ) const = default;
84216 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL84217     bool operator==( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
84218     {
84219 #  if defined( VULKAN_HPP_USE_REFLECT )
84220       return this->reflect() == rhs.reflect();
84221 #  else
84222       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderIntegerFunctions2 == rhs.shaderIntegerFunctions2 );
84223 #  endif
84224     }
84225 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL84226     bool operator!=( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
84227     {
84228       return !operator==( rhs );
84229     }
84230 #endif
84231 
84232   public:
84233     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
84234     void *                              pNext                   = {};
84235     VULKAN_HPP_NAMESPACE::Bool32        shaderIntegerFunctions2 = {};
84236   };
84237 
84238   template <>
84239   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>
84240   {
84241     using Type = PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
84242   };
84243 
84244   struct PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR
84245   {
84246     using NativeType = VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR;
84247 
84248     static const bool                                  allowDuplicate = false;
84249     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderMaximalReconvergenceFeaturesKHR;
84250 
84251 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderMaximalReconvergenceFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR84252     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 shaderMaximalReconvergence_ = {},
84253                                                                               void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
84254       : pNext{ pNext_ }
84255       , shaderMaximalReconvergence{ shaderMaximalReconvergence_ }
84256     {
84257     }
84258 
84259     VULKAN_HPP_CONSTEXPR
84260       PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR( PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84261 
PhysicalDeviceShaderMaximalReconvergenceFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR84262     PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR( VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
84263       : PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR( *reinterpret_cast<PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const *>( &rhs ) )
84264     {
84265     }
84266 
84267     PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR &
84268       operator=( PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84269 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84270 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR84271     PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR & operator=( VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
84272     {
84273       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const *>( &rhs );
84274       return *this;
84275     }
84276 
84277 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR84278     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
84279     {
84280       pNext = pNext_;
84281       return *this;
84282     }
84283 
84284     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR &
setShaderMaximalReconvergenceVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR84285       setShaderMaximalReconvergence( VULKAN_HPP_NAMESPACE::Bool32 shaderMaximalReconvergence_ ) VULKAN_HPP_NOEXCEPT
84286     {
84287       shaderMaximalReconvergence = shaderMaximalReconvergence_;
84288       return *this;
84289     }
84290 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84291 
operator VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR84292     operator VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
84293     {
84294       return *reinterpret_cast<const VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR *>( this );
84295     }
84296 
operator VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR84297     operator VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR &() VULKAN_HPP_NOEXCEPT
84298     {
84299       return *reinterpret_cast<VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR *>( this );
84300     }
84301 
84302 #if defined( VULKAN_HPP_USE_REFLECT )
84303 #  if 14 <= VULKAN_HPP_CPP_VERSION
84304     auto
84305 #  else
84306     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
84307 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR84308       reflect() const VULKAN_HPP_NOEXCEPT
84309     {
84310       return std::tie( sType, pNext, shaderMaximalReconvergence );
84311     }
84312 #endif
84313 
84314 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84315     auto operator<=>( PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & ) const = default;
84316 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR84317     bool operator==( PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
84318     {
84319 #  if defined( VULKAN_HPP_USE_REFLECT )
84320       return this->reflect() == rhs.reflect();
84321 #  else
84322       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderMaximalReconvergence == rhs.shaderMaximalReconvergence );
84323 #  endif
84324     }
84325 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR84326     bool operator!=( PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
84327     {
84328       return !operator==( rhs );
84329     }
84330 #endif
84331 
84332   public:
84333     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::ePhysicalDeviceShaderMaximalReconvergenceFeaturesKHR;
84334     void *                              pNext                      = {};
84335     VULKAN_HPP_NAMESPACE::Bool32        shaderMaximalReconvergence = {};
84336   };
84337 
84338   template <>
84339   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderMaximalReconvergenceFeaturesKHR>
84340   {
84341     using Type = PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR;
84342   };
84343 
84344   struct PhysicalDeviceShaderModuleIdentifierFeaturesEXT
84345   {
84346     using NativeType = VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT;
84347 
84348     static const bool                                  allowDuplicate = false;
84349     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderModuleIdentifierFeaturesEXT;
84350 
84351 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderModuleIdentifierFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT84352     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderModuleIdentifierFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 shaderModuleIdentifier_ = {},
84353                                                                           void *                       pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
84354       : pNext{ pNext_ }
84355       , shaderModuleIdentifier{ shaderModuleIdentifier_ }
84356     {
84357     }
84358 
84359     VULKAN_HPP_CONSTEXPR
84360       PhysicalDeviceShaderModuleIdentifierFeaturesEXT( PhysicalDeviceShaderModuleIdentifierFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84361 
PhysicalDeviceShaderModuleIdentifierFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT84362     PhysicalDeviceShaderModuleIdentifierFeaturesEXT( VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
84363       : PhysicalDeviceShaderModuleIdentifierFeaturesEXT( *reinterpret_cast<PhysicalDeviceShaderModuleIdentifierFeaturesEXT const *>( &rhs ) )
84364     {
84365     }
84366 
84367     PhysicalDeviceShaderModuleIdentifierFeaturesEXT & operator=( PhysicalDeviceShaderModuleIdentifierFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84368 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84369 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT84370     PhysicalDeviceShaderModuleIdentifierFeaturesEXT & operator=( VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
84371     {
84372       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT const *>( &rhs );
84373       return *this;
84374     }
84375 
84376 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT84377     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderModuleIdentifierFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
84378     {
84379       pNext = pNext_;
84380       return *this;
84381     }
84382 
84383     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderModuleIdentifierFeaturesEXT &
setShaderModuleIdentifierVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT84384       setShaderModuleIdentifier( VULKAN_HPP_NAMESPACE::Bool32 shaderModuleIdentifier_ ) VULKAN_HPP_NOEXCEPT
84385     {
84386       shaderModuleIdentifier = shaderModuleIdentifier_;
84387       return *this;
84388     }
84389 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84390 
operator VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT84391     operator VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
84392     {
84393       return *reinterpret_cast<const VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT *>( this );
84394     }
84395 
operator VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT84396     operator VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT &() VULKAN_HPP_NOEXCEPT
84397     {
84398       return *reinterpret_cast<VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT *>( this );
84399     }
84400 
84401 #if defined( VULKAN_HPP_USE_REFLECT )
84402 #  if 14 <= VULKAN_HPP_CPP_VERSION
84403     auto
84404 #  else
84405     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
84406 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT84407       reflect() const VULKAN_HPP_NOEXCEPT
84408     {
84409       return std::tie( sType, pNext, shaderModuleIdentifier );
84410     }
84411 #endif
84412 
84413 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84414     auto operator<=>( PhysicalDeviceShaderModuleIdentifierFeaturesEXT const & ) const = default;
84415 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT84416     bool operator==( PhysicalDeviceShaderModuleIdentifierFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
84417     {
84418 #  if defined( VULKAN_HPP_USE_REFLECT )
84419       return this->reflect() == rhs.reflect();
84420 #  else
84421       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderModuleIdentifier == rhs.shaderModuleIdentifier );
84422 #  endif
84423     }
84424 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT84425     bool operator!=( PhysicalDeviceShaderModuleIdentifierFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
84426     {
84427       return !operator==( rhs );
84428     }
84429 #endif
84430 
84431   public:
84432     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::ePhysicalDeviceShaderModuleIdentifierFeaturesEXT;
84433     void *                              pNext                  = {};
84434     VULKAN_HPP_NAMESPACE::Bool32        shaderModuleIdentifier = {};
84435   };
84436 
84437   template <>
84438   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderModuleIdentifierFeaturesEXT>
84439   {
84440     using Type = PhysicalDeviceShaderModuleIdentifierFeaturesEXT;
84441   };
84442 
84443   struct PhysicalDeviceShaderModuleIdentifierPropertiesEXT
84444   {
84445     using NativeType = VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT;
84446 
84447     static const bool                                  allowDuplicate = false;
84448     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderModuleIdentifierPropertiesEXT;
84449 
84450 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
84451     VULKAN_HPP_CONSTEXPR_14
PhysicalDeviceShaderModuleIdentifierPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT84452       PhysicalDeviceShaderModuleIdentifierPropertiesEXT( std::array<uint8_t, VK_UUID_SIZE> const & shaderModuleIdentifierAlgorithmUUID_ = {},
84453                                                          void *                                    pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
84454       : pNext{ pNext_ }
84455       , shaderModuleIdentifierAlgorithmUUID{ shaderModuleIdentifierAlgorithmUUID_ }
84456     {
84457     }
84458 
84459     VULKAN_HPP_CONSTEXPR_14
84460       PhysicalDeviceShaderModuleIdentifierPropertiesEXT( PhysicalDeviceShaderModuleIdentifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84461 
PhysicalDeviceShaderModuleIdentifierPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT84462     PhysicalDeviceShaderModuleIdentifierPropertiesEXT( VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
84463       : PhysicalDeviceShaderModuleIdentifierPropertiesEXT( *reinterpret_cast<PhysicalDeviceShaderModuleIdentifierPropertiesEXT const *>( &rhs ) )
84464     {
84465     }
84466 
84467     PhysicalDeviceShaderModuleIdentifierPropertiesEXT &
84468       operator=( PhysicalDeviceShaderModuleIdentifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84469 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84470 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT84471     PhysicalDeviceShaderModuleIdentifierPropertiesEXT & operator=( VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
84472     {
84473       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT const *>( &rhs );
84474       return *this;
84475     }
84476 
operator VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT84477     operator VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
84478     {
84479       return *reinterpret_cast<const VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT *>( this );
84480     }
84481 
operator VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT84482     operator VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT &() VULKAN_HPP_NOEXCEPT
84483     {
84484       return *reinterpret_cast<VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT *>( this );
84485     }
84486 
84487 #if defined( VULKAN_HPP_USE_REFLECT )
84488 #  if 14 <= VULKAN_HPP_CPP_VERSION
84489     auto
84490 #  else
84491     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &>
84492 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT84493       reflect() const VULKAN_HPP_NOEXCEPT
84494     {
84495       return std::tie( sType, pNext, shaderModuleIdentifierAlgorithmUUID );
84496     }
84497 #endif
84498 
84499 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84500     auto operator<=>( PhysicalDeviceShaderModuleIdentifierPropertiesEXT const & ) const = default;
84501 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT84502     bool operator==( PhysicalDeviceShaderModuleIdentifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
84503     {
84504 #  if defined( VULKAN_HPP_USE_REFLECT )
84505       return this->reflect() == rhs.reflect();
84506 #  else
84507       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderModuleIdentifierAlgorithmUUID == rhs.shaderModuleIdentifierAlgorithmUUID );
84508 #  endif
84509     }
84510 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT84511     bool operator!=( PhysicalDeviceShaderModuleIdentifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
84512     {
84513       return !operator==( rhs );
84514     }
84515 #endif
84516 
84517   public:
84518     VULKAN_HPP_NAMESPACE::StructureType                         sType = StructureType::ePhysicalDeviceShaderModuleIdentifierPropertiesEXT;
84519     void *                                                      pNext = {};
84520     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> shaderModuleIdentifierAlgorithmUUID = {};
84521   };
84522 
84523   template <>
84524   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderModuleIdentifierPropertiesEXT>
84525   {
84526     using Type = PhysicalDeviceShaderModuleIdentifierPropertiesEXT;
84527   };
84528 
84529   struct PhysicalDeviceShaderObjectFeaturesEXT
84530   {
84531     using NativeType = VkPhysicalDeviceShaderObjectFeaturesEXT;
84532 
84533     static const bool                                  allowDuplicate = false;
84534     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderObjectFeaturesEXT;
84535 
84536 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderObjectFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT84537     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderObjectFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 shaderObject_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
84538       : pNext{ pNext_ }
84539       , shaderObject{ shaderObject_ }
84540     {
84541     }
84542 
84543     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderObjectFeaturesEXT( PhysicalDeviceShaderObjectFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84544 
PhysicalDeviceShaderObjectFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT84545     PhysicalDeviceShaderObjectFeaturesEXT( VkPhysicalDeviceShaderObjectFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
84546       : PhysicalDeviceShaderObjectFeaturesEXT( *reinterpret_cast<PhysicalDeviceShaderObjectFeaturesEXT const *>( &rhs ) )
84547     {
84548     }
84549 
84550     PhysicalDeviceShaderObjectFeaturesEXT & operator=( PhysicalDeviceShaderObjectFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84551 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84552 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT84553     PhysicalDeviceShaderObjectFeaturesEXT & operator=( VkPhysicalDeviceShaderObjectFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
84554     {
84555       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT const *>( &rhs );
84556       return *this;
84557     }
84558 
84559 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT84560     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderObjectFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
84561     {
84562       pNext = pNext_;
84563       return *this;
84564     }
84565 
setShaderObjectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT84566     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderObjectFeaturesEXT & setShaderObject( VULKAN_HPP_NAMESPACE::Bool32 shaderObject_ ) VULKAN_HPP_NOEXCEPT
84567     {
84568       shaderObject = shaderObject_;
84569       return *this;
84570     }
84571 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84572 
operator VkPhysicalDeviceShaderObjectFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT84573     operator VkPhysicalDeviceShaderObjectFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
84574     {
84575       return *reinterpret_cast<const VkPhysicalDeviceShaderObjectFeaturesEXT *>( this );
84576     }
84577 
operator VkPhysicalDeviceShaderObjectFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT84578     operator VkPhysicalDeviceShaderObjectFeaturesEXT &() VULKAN_HPP_NOEXCEPT
84579     {
84580       return *reinterpret_cast<VkPhysicalDeviceShaderObjectFeaturesEXT *>( this );
84581     }
84582 
84583 #if defined( VULKAN_HPP_USE_REFLECT )
84584 #  if 14 <= VULKAN_HPP_CPP_VERSION
84585     auto
84586 #  else
84587     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
84588 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT84589       reflect() const VULKAN_HPP_NOEXCEPT
84590     {
84591       return std::tie( sType, pNext, shaderObject );
84592     }
84593 #endif
84594 
84595 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84596     auto operator<=>( PhysicalDeviceShaderObjectFeaturesEXT const & ) const = default;
84597 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT84598     bool operator==( PhysicalDeviceShaderObjectFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
84599     {
84600 #  if defined( VULKAN_HPP_USE_REFLECT )
84601       return this->reflect() == rhs.reflect();
84602 #  else
84603       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderObject == rhs.shaderObject );
84604 #  endif
84605     }
84606 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT84607     bool operator!=( PhysicalDeviceShaderObjectFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
84608     {
84609       return !operator==( rhs );
84610     }
84611 #endif
84612 
84613   public:
84614     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::ePhysicalDeviceShaderObjectFeaturesEXT;
84615     void *                              pNext        = {};
84616     VULKAN_HPP_NAMESPACE::Bool32        shaderObject = {};
84617   };
84618 
84619   template <>
84620   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderObjectFeaturesEXT>
84621   {
84622     using Type = PhysicalDeviceShaderObjectFeaturesEXT;
84623   };
84624 
84625   struct PhysicalDeviceShaderObjectPropertiesEXT
84626   {
84627     using NativeType = VkPhysicalDeviceShaderObjectPropertiesEXT;
84628 
84629     static const bool                                  allowDuplicate = false;
84630     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderObjectPropertiesEXT;
84631 
84632 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderObjectPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectPropertiesEXT84633     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderObjectPropertiesEXT( std::array<uint8_t, VK_UUID_SIZE> const & shaderBinaryUUID_    = {},
84634                                                                      uint32_t                                  shaderBinaryVersion_ = {},
84635                                                                      void *                                    pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
84636       : pNext{ pNext_ }
84637       , shaderBinaryUUID{ shaderBinaryUUID_ }
84638       , shaderBinaryVersion{ shaderBinaryVersion_ }
84639     {
84640     }
84641 
84642     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderObjectPropertiesEXT( PhysicalDeviceShaderObjectPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84643 
PhysicalDeviceShaderObjectPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectPropertiesEXT84644     PhysicalDeviceShaderObjectPropertiesEXT( VkPhysicalDeviceShaderObjectPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
84645       : PhysicalDeviceShaderObjectPropertiesEXT( *reinterpret_cast<PhysicalDeviceShaderObjectPropertiesEXT const *>( &rhs ) )
84646     {
84647     }
84648 
84649     PhysicalDeviceShaderObjectPropertiesEXT & operator=( PhysicalDeviceShaderObjectPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84650 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84651 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectPropertiesEXT84652     PhysicalDeviceShaderObjectPropertiesEXT & operator=( VkPhysicalDeviceShaderObjectPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
84653     {
84654       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectPropertiesEXT const *>( &rhs );
84655       return *this;
84656     }
84657 
operator VkPhysicalDeviceShaderObjectPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectPropertiesEXT84658     operator VkPhysicalDeviceShaderObjectPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
84659     {
84660       return *reinterpret_cast<const VkPhysicalDeviceShaderObjectPropertiesEXT *>( this );
84661     }
84662 
operator VkPhysicalDeviceShaderObjectPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectPropertiesEXT84663     operator VkPhysicalDeviceShaderObjectPropertiesEXT &() VULKAN_HPP_NOEXCEPT
84664     {
84665       return *reinterpret_cast<VkPhysicalDeviceShaderObjectPropertiesEXT *>( this );
84666     }
84667 
84668 #if defined( VULKAN_HPP_USE_REFLECT )
84669 #  if 14 <= VULKAN_HPP_CPP_VERSION
84670     auto
84671 #  else
84672     std::
84673       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &, uint32_t const &>
84674 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectPropertiesEXT84675       reflect() const VULKAN_HPP_NOEXCEPT
84676     {
84677       return std::tie( sType, pNext, shaderBinaryUUID, shaderBinaryVersion );
84678     }
84679 #endif
84680 
84681 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84682     auto operator<=>( PhysicalDeviceShaderObjectPropertiesEXT const & ) const = default;
84683 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectPropertiesEXT84684     bool operator==( PhysicalDeviceShaderObjectPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
84685     {
84686 #  if defined( VULKAN_HPP_USE_REFLECT )
84687       return this->reflect() == rhs.reflect();
84688 #  else
84689       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderBinaryUUID == rhs.shaderBinaryUUID ) &&
84690              ( shaderBinaryVersion == rhs.shaderBinaryVersion );
84691 #  endif
84692     }
84693 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectPropertiesEXT84694     bool operator!=( PhysicalDeviceShaderObjectPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
84695     {
84696       return !operator==( rhs );
84697     }
84698 #endif
84699 
84700   public:
84701     VULKAN_HPP_NAMESPACE::StructureType                         sType               = StructureType::ePhysicalDeviceShaderObjectPropertiesEXT;
84702     void *                                                      pNext               = {};
84703     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> shaderBinaryUUID    = {};
84704     uint32_t                                                    shaderBinaryVersion = {};
84705   };
84706 
84707   template <>
84708   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderObjectPropertiesEXT>
84709   {
84710     using Type = PhysicalDeviceShaderObjectPropertiesEXT;
84711   };
84712 
84713   struct PhysicalDeviceShaderQuadControlFeaturesKHR
84714   {
84715     using NativeType = VkPhysicalDeviceShaderQuadControlFeaturesKHR;
84716 
84717     static const bool                                  allowDuplicate = false;
84718     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderQuadControlFeaturesKHR;
84719 
84720 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderQuadControlFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR84721     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderQuadControlFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 shaderQuadControl_ = {},
84722                                                                      void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
84723       : pNext{ pNext_ }
84724       , shaderQuadControl{ shaderQuadControl_ }
84725     {
84726     }
84727 
84728     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderQuadControlFeaturesKHR( PhysicalDeviceShaderQuadControlFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84729 
PhysicalDeviceShaderQuadControlFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR84730     PhysicalDeviceShaderQuadControlFeaturesKHR( VkPhysicalDeviceShaderQuadControlFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
84731       : PhysicalDeviceShaderQuadControlFeaturesKHR( *reinterpret_cast<PhysicalDeviceShaderQuadControlFeaturesKHR const *>( &rhs ) )
84732     {
84733     }
84734 
84735     PhysicalDeviceShaderQuadControlFeaturesKHR & operator=( PhysicalDeviceShaderQuadControlFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84736 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84737 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR84738     PhysicalDeviceShaderQuadControlFeaturesKHR & operator=( VkPhysicalDeviceShaderQuadControlFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
84739     {
84740       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR const *>( &rhs );
84741       return *this;
84742     }
84743 
84744 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR84745     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderQuadControlFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
84746     {
84747       pNext = pNext_;
84748       return *this;
84749     }
84750 
84751     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderQuadControlFeaturesKHR &
setShaderQuadControlVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR84752       setShaderQuadControl( VULKAN_HPP_NAMESPACE::Bool32 shaderQuadControl_ ) VULKAN_HPP_NOEXCEPT
84753     {
84754       shaderQuadControl = shaderQuadControl_;
84755       return *this;
84756     }
84757 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84758 
operator VkPhysicalDeviceShaderQuadControlFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR84759     operator VkPhysicalDeviceShaderQuadControlFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
84760     {
84761       return *reinterpret_cast<const VkPhysicalDeviceShaderQuadControlFeaturesKHR *>( this );
84762     }
84763 
operator VkPhysicalDeviceShaderQuadControlFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR84764     operator VkPhysicalDeviceShaderQuadControlFeaturesKHR &() VULKAN_HPP_NOEXCEPT
84765     {
84766       return *reinterpret_cast<VkPhysicalDeviceShaderQuadControlFeaturesKHR *>( this );
84767     }
84768 
84769 #if defined( VULKAN_HPP_USE_REFLECT )
84770 #  if 14 <= VULKAN_HPP_CPP_VERSION
84771     auto
84772 #  else
84773     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
84774 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR84775       reflect() const VULKAN_HPP_NOEXCEPT
84776     {
84777       return std::tie( sType, pNext, shaderQuadControl );
84778     }
84779 #endif
84780 
84781 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84782     auto operator<=>( PhysicalDeviceShaderQuadControlFeaturesKHR const & ) const = default;
84783 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR84784     bool operator==( PhysicalDeviceShaderQuadControlFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
84785     {
84786 #  if defined( VULKAN_HPP_USE_REFLECT )
84787       return this->reflect() == rhs.reflect();
84788 #  else
84789       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderQuadControl == rhs.shaderQuadControl );
84790 #  endif
84791     }
84792 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR84793     bool operator!=( PhysicalDeviceShaderQuadControlFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
84794     {
84795       return !operator==( rhs );
84796     }
84797 #endif
84798 
84799   public:
84800     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceShaderQuadControlFeaturesKHR;
84801     void *                              pNext             = {};
84802     VULKAN_HPP_NAMESPACE::Bool32        shaderQuadControl = {};
84803   };
84804 
84805   template <>
84806   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderQuadControlFeaturesKHR>
84807   {
84808     using Type = PhysicalDeviceShaderQuadControlFeaturesKHR;
84809   };
84810 
84811   struct PhysicalDeviceShaderReplicatedCompositesFeaturesEXT
84812   {
84813     using NativeType = VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT;
84814 
84815     static const bool                                  allowDuplicate = false;
84816     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderReplicatedCompositesFeaturesEXT;
84817 
84818 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderReplicatedCompositesFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT84819     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderReplicatedCompositesFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 shaderReplicatedComposites_ = {},
84820                                                                               void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
84821       : pNext{ pNext_ }
84822       , shaderReplicatedComposites{ shaderReplicatedComposites_ }
84823     {
84824     }
84825 
84826     VULKAN_HPP_CONSTEXPR
84827       PhysicalDeviceShaderReplicatedCompositesFeaturesEXT( PhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84828 
PhysicalDeviceShaderReplicatedCompositesFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT84829     PhysicalDeviceShaderReplicatedCompositesFeaturesEXT( VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
84830       : PhysicalDeviceShaderReplicatedCompositesFeaturesEXT( *reinterpret_cast<PhysicalDeviceShaderReplicatedCompositesFeaturesEXT const *>( &rhs ) )
84831     {
84832     }
84833 
84834     PhysicalDeviceShaderReplicatedCompositesFeaturesEXT &
84835       operator=( PhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84836 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84837 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT84838     PhysicalDeviceShaderReplicatedCompositesFeaturesEXT & operator=( VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
84839     {
84840       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT const *>( &rhs );
84841       return *this;
84842     }
84843 
84844 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT84845     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderReplicatedCompositesFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
84846     {
84847       pNext = pNext_;
84848       return *this;
84849     }
84850 
84851     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderReplicatedCompositesFeaturesEXT &
setShaderReplicatedCompositesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT84852       setShaderReplicatedComposites( VULKAN_HPP_NAMESPACE::Bool32 shaderReplicatedComposites_ ) VULKAN_HPP_NOEXCEPT
84853     {
84854       shaderReplicatedComposites = shaderReplicatedComposites_;
84855       return *this;
84856     }
84857 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84858 
operator VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT84859     operator VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
84860     {
84861       return *reinterpret_cast<const VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT *>( this );
84862     }
84863 
operator VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT84864     operator VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT &() VULKAN_HPP_NOEXCEPT
84865     {
84866       return *reinterpret_cast<VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT *>( this );
84867     }
84868 
84869 #if defined( VULKAN_HPP_USE_REFLECT )
84870 #  if 14 <= VULKAN_HPP_CPP_VERSION
84871     auto
84872 #  else
84873     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
84874 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT84875       reflect() const VULKAN_HPP_NOEXCEPT
84876     {
84877       return std::tie( sType, pNext, shaderReplicatedComposites );
84878     }
84879 #endif
84880 
84881 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84882     auto operator<=>( PhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & ) const = default;
84883 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT84884     bool operator==( PhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
84885     {
84886 #  if defined( VULKAN_HPP_USE_REFLECT )
84887       return this->reflect() == rhs.reflect();
84888 #  else
84889       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderReplicatedComposites == rhs.shaderReplicatedComposites );
84890 #  endif
84891     }
84892 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT84893     bool operator!=( PhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
84894     {
84895       return !operator==( rhs );
84896     }
84897 #endif
84898 
84899   public:
84900     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::ePhysicalDeviceShaderReplicatedCompositesFeaturesEXT;
84901     void *                              pNext                      = {};
84902     VULKAN_HPP_NAMESPACE::Bool32        shaderReplicatedComposites = {};
84903   };
84904 
84905   template <>
84906   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderReplicatedCompositesFeaturesEXT>
84907   {
84908     using Type = PhysicalDeviceShaderReplicatedCompositesFeaturesEXT;
84909   };
84910 
84911   struct PhysicalDeviceShaderSMBuiltinsFeaturesNV
84912   {
84913     using NativeType = VkPhysicalDeviceShaderSMBuiltinsFeaturesNV;
84914 
84915     static const bool                                  allowDuplicate = false;
84916     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderSmBuiltinsFeaturesNV;
84917 
84918 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderSMBuiltinsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV84919     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSMBuiltinsFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 shaderSMBuiltins_ = {},
84920                                                                    void *                       pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
84921       : pNext{ pNext_ }
84922       , shaderSMBuiltins{ shaderSMBuiltins_ }
84923     {
84924     }
84925 
84926     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSMBuiltinsFeaturesNV( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84927 
PhysicalDeviceShaderSMBuiltinsFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV84928     PhysicalDeviceShaderSMBuiltinsFeaturesNV( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
84929       : PhysicalDeviceShaderSMBuiltinsFeaturesNV( *reinterpret_cast<PhysicalDeviceShaderSMBuiltinsFeaturesNV const *>( &rhs ) )
84930     {
84931     }
84932 
84933     PhysicalDeviceShaderSMBuiltinsFeaturesNV & operator=( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
84934 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
84935 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV84936     PhysicalDeviceShaderSMBuiltinsFeaturesNV & operator=( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
84937     {
84938       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV const *>( &rhs );
84939       return *this;
84940     }
84941 
84942 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV84943     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSMBuiltinsFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
84944     {
84945       pNext = pNext_;
84946       return *this;
84947     }
84948 
setShaderSMBuiltinsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV84949     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSMBuiltinsFeaturesNV & setShaderSMBuiltins( VULKAN_HPP_NAMESPACE::Bool32 shaderSMBuiltins_ ) VULKAN_HPP_NOEXCEPT
84950     {
84951       shaderSMBuiltins = shaderSMBuiltins_;
84952       return *this;
84953     }
84954 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
84955 
operator VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV84956     operator VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
84957     {
84958       return *reinterpret_cast<const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *>( this );
84959     }
84960 
operator VkPhysicalDeviceShaderSMBuiltinsFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV84961     operator VkPhysicalDeviceShaderSMBuiltinsFeaturesNV &() VULKAN_HPP_NOEXCEPT
84962     {
84963       return *reinterpret_cast<VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *>( this );
84964     }
84965 
84966 #if defined( VULKAN_HPP_USE_REFLECT )
84967 #  if 14 <= VULKAN_HPP_CPP_VERSION
84968     auto
84969 #  else
84970     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
84971 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV84972       reflect() const VULKAN_HPP_NOEXCEPT
84973     {
84974       return std::tie( sType, pNext, shaderSMBuiltins );
84975     }
84976 #endif
84977 
84978 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
84979     auto operator<=>( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & ) const = default;
84980 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV84981     bool operator==( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
84982     {
84983 #  if defined( VULKAN_HPP_USE_REFLECT )
84984       return this->reflect() == rhs.reflect();
84985 #  else
84986       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSMBuiltins == rhs.shaderSMBuiltins );
84987 #  endif
84988     }
84989 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV84990     bool operator!=( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
84991     {
84992       return !operator==( rhs );
84993     }
84994 #endif
84995 
84996   public:
84997     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceShaderSmBuiltinsFeaturesNV;
84998     void *                              pNext            = {};
84999     VULKAN_HPP_NAMESPACE::Bool32        shaderSMBuiltins = {};
85000   };
85001 
85002   template <>
85003   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderSmBuiltinsFeaturesNV>
85004   {
85005     using Type = PhysicalDeviceShaderSMBuiltinsFeaturesNV;
85006   };
85007 
85008   struct PhysicalDeviceShaderSMBuiltinsPropertiesNV
85009   {
85010     using NativeType = VkPhysicalDeviceShaderSMBuiltinsPropertiesNV;
85011 
85012     static const bool                                  allowDuplicate = false;
85013     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderSmBuiltinsPropertiesNV;
85014 
85015 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
85016     VULKAN_HPP_CONSTEXPR
PhysicalDeviceShaderSMBuiltinsPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV85017       PhysicalDeviceShaderSMBuiltinsPropertiesNV( uint32_t shaderSMCount_ = {}, uint32_t shaderWarpsPerSM_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
85018       : pNext{ pNext_ }
85019       , shaderSMCount{ shaderSMCount_ }
85020       , shaderWarpsPerSM{ shaderWarpsPerSM_ }
85021     {
85022     }
85023 
85024     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSMBuiltinsPropertiesNV( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85025 
PhysicalDeviceShaderSMBuiltinsPropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV85026     PhysicalDeviceShaderSMBuiltinsPropertiesNV( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
85027       : PhysicalDeviceShaderSMBuiltinsPropertiesNV( *reinterpret_cast<PhysicalDeviceShaderSMBuiltinsPropertiesNV const *>( &rhs ) )
85028     {
85029     }
85030 
85031     PhysicalDeviceShaderSMBuiltinsPropertiesNV & operator=( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85032 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85033 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV85034     PhysicalDeviceShaderSMBuiltinsPropertiesNV & operator=( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
85035     {
85036       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV const *>( &rhs );
85037       return *this;
85038     }
85039 
operator VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV85040     operator VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
85041     {
85042       return *reinterpret_cast<const VkPhysicalDeviceShaderSMBuiltinsPropertiesNV *>( this );
85043     }
85044 
operator VkPhysicalDeviceShaderSMBuiltinsPropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV85045     operator VkPhysicalDeviceShaderSMBuiltinsPropertiesNV &() VULKAN_HPP_NOEXCEPT
85046     {
85047       return *reinterpret_cast<VkPhysicalDeviceShaderSMBuiltinsPropertiesNV *>( this );
85048     }
85049 
85050 #if defined( VULKAN_HPP_USE_REFLECT )
85051 #  if 14 <= VULKAN_HPP_CPP_VERSION
85052     auto
85053 #  else
85054     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &>
85055 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV85056       reflect() const VULKAN_HPP_NOEXCEPT
85057     {
85058       return std::tie( sType, pNext, shaderSMCount, shaderWarpsPerSM );
85059     }
85060 #endif
85061 
85062 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85063     auto operator<=>( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & ) const = default;
85064 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV85065     bool operator==( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
85066     {
85067 #  if defined( VULKAN_HPP_USE_REFLECT )
85068       return this->reflect() == rhs.reflect();
85069 #  else
85070       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSMCount == rhs.shaderSMCount ) && ( shaderWarpsPerSM == rhs.shaderWarpsPerSM );
85071 #  endif
85072     }
85073 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV85074     bool operator!=( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
85075     {
85076       return !operator==( rhs );
85077     }
85078 #endif
85079 
85080   public:
85081     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceShaderSmBuiltinsPropertiesNV;
85082     void *                              pNext            = {};
85083     uint32_t                            shaderSMCount    = {};
85084     uint32_t                            shaderWarpsPerSM = {};
85085   };
85086 
85087   template <>
85088   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderSmBuiltinsPropertiesNV>
85089   {
85090     using Type = PhysicalDeviceShaderSMBuiltinsPropertiesNV;
85091   };
85092 
85093   struct PhysicalDeviceShaderSubgroupExtendedTypesFeatures
85094   {
85095     using NativeType = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures;
85096 
85097     static const bool                                  allowDuplicate = false;
85098     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures;
85099 
85100 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderSubgroupExtendedTypesFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures85101     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupExtendedTypesFeatures( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_ = {},
85102                                                                             void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
85103       : pNext{ pNext_ }
85104       , shaderSubgroupExtendedTypes{ shaderSubgroupExtendedTypes_ }
85105     {
85106     }
85107 
85108     VULKAN_HPP_CONSTEXPR
85109       PhysicalDeviceShaderSubgroupExtendedTypesFeatures( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85110 
PhysicalDeviceShaderSubgroupExtendedTypesFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures85111     PhysicalDeviceShaderSubgroupExtendedTypesFeatures( VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
85112       : PhysicalDeviceShaderSubgroupExtendedTypesFeatures( *reinterpret_cast<PhysicalDeviceShaderSubgroupExtendedTypesFeatures const *>( &rhs ) )
85113     {
85114     }
85115 
85116     PhysicalDeviceShaderSubgroupExtendedTypesFeatures &
85117       operator=( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85118 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85119 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures85120     PhysicalDeviceShaderSubgroupExtendedTypesFeatures & operator=( VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
85121     {
85122       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures const *>( &rhs );
85123       return *this;
85124     }
85125 
85126 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures85127     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupExtendedTypesFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
85128     {
85129       pNext = pNext_;
85130       return *this;
85131     }
85132 
85133     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupExtendedTypesFeatures &
setShaderSubgroupExtendedTypesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures85134       setShaderSubgroupExtendedTypes( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_ ) VULKAN_HPP_NOEXCEPT
85135     {
85136       shaderSubgroupExtendedTypes = shaderSubgroupExtendedTypes_;
85137       return *this;
85138     }
85139 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
85140 
operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures85141     operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const &() const VULKAN_HPP_NOEXCEPT
85142     {
85143       return *reinterpret_cast<const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures *>( this );
85144     }
85145 
operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures85146     operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures &() VULKAN_HPP_NOEXCEPT
85147     {
85148       return *reinterpret_cast<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures *>( this );
85149     }
85150 
85151 #if defined( VULKAN_HPP_USE_REFLECT )
85152 #  if 14 <= VULKAN_HPP_CPP_VERSION
85153     auto
85154 #  else
85155     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
85156 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures85157       reflect() const VULKAN_HPP_NOEXCEPT
85158     {
85159       return std::tie( sType, pNext, shaderSubgroupExtendedTypes );
85160     }
85161 #endif
85162 
85163 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85164     auto operator<=>( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & ) const = default;
85165 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures85166     bool operator==( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
85167     {
85168 #  if defined( VULKAN_HPP_USE_REFLECT )
85169       return this->reflect() == rhs.reflect();
85170 #  else
85171       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSubgroupExtendedTypes == rhs.shaderSubgroupExtendedTypes );
85172 #  endif
85173     }
85174 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures85175     bool operator!=( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
85176     {
85177       return !operator==( rhs );
85178     }
85179 #endif
85180 
85181   public:
85182     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures;
85183     void *                              pNext                       = {};
85184     VULKAN_HPP_NAMESPACE::Bool32        shaderSubgroupExtendedTypes = {};
85185   };
85186 
85187   template <>
85188   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures>
85189   {
85190     using Type = PhysicalDeviceShaderSubgroupExtendedTypesFeatures;
85191   };
85192 
85193   using PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = PhysicalDeviceShaderSubgroupExtendedTypesFeatures;
85194 
85195   struct PhysicalDeviceShaderSubgroupRotateFeaturesKHR
85196   {
85197     using NativeType = VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR;
85198 
85199     static const bool                                  allowDuplicate = false;
85200     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderSubgroupRotateFeaturesKHR;
85201 
85202 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderSubgroupRotateFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeaturesKHR85203     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupRotateFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupRotate_          = {},
85204                                                                         VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupRotateClustered_ = {},
85205                                                                         void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
85206       : pNext{ pNext_ }
85207       , shaderSubgroupRotate{ shaderSubgroupRotate_ }
85208       , shaderSubgroupRotateClustered{ shaderSubgroupRotateClustered_ }
85209     {
85210     }
85211 
85212     VULKAN_HPP_CONSTEXPR
85213       PhysicalDeviceShaderSubgroupRotateFeaturesKHR( PhysicalDeviceShaderSubgroupRotateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85214 
PhysicalDeviceShaderSubgroupRotateFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeaturesKHR85215     PhysicalDeviceShaderSubgroupRotateFeaturesKHR( VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
85216       : PhysicalDeviceShaderSubgroupRotateFeaturesKHR( *reinterpret_cast<PhysicalDeviceShaderSubgroupRotateFeaturesKHR const *>( &rhs ) )
85217     {
85218     }
85219 
85220     PhysicalDeviceShaderSubgroupRotateFeaturesKHR & operator=( PhysicalDeviceShaderSubgroupRotateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85221 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85222 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeaturesKHR85223     PhysicalDeviceShaderSubgroupRotateFeaturesKHR & operator=( VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
85224     {
85225       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeaturesKHR const *>( &rhs );
85226       return *this;
85227     }
85228 
85229 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeaturesKHR85230     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupRotateFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
85231     {
85232       pNext = pNext_;
85233       return *this;
85234     }
85235 
85236     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupRotateFeaturesKHR &
setShaderSubgroupRotateVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeaturesKHR85237       setShaderSubgroupRotate( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupRotate_ ) VULKAN_HPP_NOEXCEPT
85238     {
85239       shaderSubgroupRotate = shaderSubgroupRotate_;
85240       return *this;
85241     }
85242 
85243     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupRotateFeaturesKHR &
setShaderSubgroupRotateClusteredVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeaturesKHR85244       setShaderSubgroupRotateClustered( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupRotateClustered_ ) VULKAN_HPP_NOEXCEPT
85245     {
85246       shaderSubgroupRotateClustered = shaderSubgroupRotateClustered_;
85247       return *this;
85248     }
85249 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
85250 
operator VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeaturesKHR85251     operator VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
85252     {
85253       return *reinterpret_cast<const VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR *>( this );
85254     }
85255 
operator VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeaturesKHR85256     operator VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR &() VULKAN_HPP_NOEXCEPT
85257     {
85258       return *reinterpret_cast<VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR *>( this );
85259     }
85260 
85261 #if defined( VULKAN_HPP_USE_REFLECT )
85262 #  if 14 <= VULKAN_HPP_CPP_VERSION
85263     auto
85264 #  else
85265     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
85266 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeaturesKHR85267       reflect() const VULKAN_HPP_NOEXCEPT
85268     {
85269       return std::tie( sType, pNext, shaderSubgroupRotate, shaderSubgroupRotateClustered );
85270     }
85271 #endif
85272 
85273 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85274     auto operator<=>( PhysicalDeviceShaderSubgroupRotateFeaturesKHR const & ) const = default;
85275 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeaturesKHR85276     bool operator==( PhysicalDeviceShaderSubgroupRotateFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
85277     {
85278 #  if defined( VULKAN_HPP_USE_REFLECT )
85279       return this->reflect() == rhs.reflect();
85280 #  else
85281       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSubgroupRotate == rhs.shaderSubgroupRotate ) &&
85282              ( shaderSubgroupRotateClustered == rhs.shaderSubgroupRotateClustered );
85283 #  endif
85284     }
85285 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeaturesKHR85286     bool operator!=( PhysicalDeviceShaderSubgroupRotateFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
85287     {
85288       return !operator==( rhs );
85289     }
85290 #endif
85291 
85292   public:
85293     VULKAN_HPP_NAMESPACE::StructureType sType                         = StructureType::ePhysicalDeviceShaderSubgroupRotateFeaturesKHR;
85294     void *                              pNext                         = {};
85295     VULKAN_HPP_NAMESPACE::Bool32        shaderSubgroupRotate          = {};
85296     VULKAN_HPP_NAMESPACE::Bool32        shaderSubgroupRotateClustered = {};
85297   };
85298 
85299   template <>
85300   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderSubgroupRotateFeaturesKHR>
85301   {
85302     using Type = PhysicalDeviceShaderSubgroupRotateFeaturesKHR;
85303   };
85304 
85305   struct PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR
85306   {
85307     using NativeType = VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
85308 
85309     static const bool                                  allowDuplicate = false;
85310     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
85311 
85312 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR85313     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupUniformControlFlow_ = {},
85314                                                                                     void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
85315       : pNext{ pNext_ }
85316       , shaderSubgroupUniformControlFlow{ shaderSubgroupUniformControlFlow_ }
85317     {
85318     }
85319 
85320     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs )
85321       VULKAN_HPP_NOEXCEPT = default;
85322 
PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR85323     PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR( VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
85324       : PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR(
85325           *reinterpret_cast<PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const *>( &rhs ) )
85326     {
85327     }
85328 
85329     PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR &
85330       operator=( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85331 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85332 
85333     PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR85334       operator=( VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
85335     {
85336       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const *>( &rhs );
85337       return *this;
85338     }
85339 
85340 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR85341     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
85342     {
85343       pNext = pNext_;
85344       return *this;
85345     }
85346 
85347     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR &
setShaderSubgroupUniformControlFlowVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR85348       setShaderSubgroupUniformControlFlow( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupUniformControlFlow_ ) VULKAN_HPP_NOEXCEPT
85349     {
85350       shaderSubgroupUniformControlFlow = shaderSubgroupUniformControlFlow_;
85351       return *this;
85352     }
85353 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
85354 
operator VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR85355     operator VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
85356     {
85357       return *reinterpret_cast<const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR *>( this );
85358     }
85359 
operator VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR85360     operator VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR &() VULKAN_HPP_NOEXCEPT
85361     {
85362       return *reinterpret_cast<VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR *>( this );
85363     }
85364 
85365 #if defined( VULKAN_HPP_USE_REFLECT )
85366 #  if 14 <= VULKAN_HPP_CPP_VERSION
85367     auto
85368 #  else
85369     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
85370 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR85371       reflect() const VULKAN_HPP_NOEXCEPT
85372     {
85373       return std::tie( sType, pNext, shaderSubgroupUniformControlFlow );
85374     }
85375 #endif
85376 
85377 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85378     auto operator<=>( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & ) const = default;
85379 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR85380     bool operator==( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
85381     {
85382 #  if defined( VULKAN_HPP_USE_REFLECT )
85383       return this->reflect() == rhs.reflect();
85384 #  else
85385       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSubgroupUniformControlFlow == rhs.shaderSubgroupUniformControlFlow );
85386 #  endif
85387     }
85388 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR85389     bool operator!=( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
85390     {
85391       return !operator==( rhs );
85392     }
85393 #endif
85394 
85395   public:
85396     VULKAN_HPP_NAMESPACE::StructureType sType                            = StructureType::ePhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
85397     void *                              pNext                            = {};
85398     VULKAN_HPP_NAMESPACE::Bool32        shaderSubgroupUniformControlFlow = {};
85399   };
85400 
85401   template <>
85402   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>
85403   {
85404     using Type = PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
85405   };
85406 
85407   struct PhysicalDeviceShaderTerminateInvocationFeatures
85408   {
85409     using NativeType = VkPhysicalDeviceShaderTerminateInvocationFeatures;
85410 
85411     static const bool                                  allowDuplicate = false;
85412     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderTerminateInvocationFeatures;
85413 
85414 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderTerminateInvocationFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures85415     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTerminateInvocationFeatures( VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation_ = {},
85416                                                                           void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
85417       : pNext{ pNext_ }
85418       , shaderTerminateInvocation{ shaderTerminateInvocation_ }
85419     {
85420     }
85421 
85422     VULKAN_HPP_CONSTEXPR
85423       PhysicalDeviceShaderTerminateInvocationFeatures( PhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85424 
PhysicalDeviceShaderTerminateInvocationFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures85425     PhysicalDeviceShaderTerminateInvocationFeatures( VkPhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
85426       : PhysicalDeviceShaderTerminateInvocationFeatures( *reinterpret_cast<PhysicalDeviceShaderTerminateInvocationFeatures const *>( &rhs ) )
85427     {
85428     }
85429 
85430     PhysicalDeviceShaderTerminateInvocationFeatures & operator=( PhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85431 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85432 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures85433     PhysicalDeviceShaderTerminateInvocationFeatures & operator=( VkPhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
85434     {
85435       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures const *>( &rhs );
85436       return *this;
85437     }
85438 
85439 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures85440     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTerminateInvocationFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
85441     {
85442       pNext = pNext_;
85443       return *this;
85444     }
85445 
85446     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTerminateInvocationFeatures &
setShaderTerminateInvocationVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures85447       setShaderTerminateInvocation( VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation_ ) VULKAN_HPP_NOEXCEPT
85448     {
85449       shaderTerminateInvocation = shaderTerminateInvocation_;
85450       return *this;
85451     }
85452 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
85453 
operator VkPhysicalDeviceShaderTerminateInvocationFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures85454     operator VkPhysicalDeviceShaderTerminateInvocationFeatures const &() const VULKAN_HPP_NOEXCEPT
85455     {
85456       return *reinterpret_cast<const VkPhysicalDeviceShaderTerminateInvocationFeatures *>( this );
85457     }
85458 
operator VkPhysicalDeviceShaderTerminateInvocationFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures85459     operator VkPhysicalDeviceShaderTerminateInvocationFeatures &() VULKAN_HPP_NOEXCEPT
85460     {
85461       return *reinterpret_cast<VkPhysicalDeviceShaderTerminateInvocationFeatures *>( this );
85462     }
85463 
85464 #if defined( VULKAN_HPP_USE_REFLECT )
85465 #  if 14 <= VULKAN_HPP_CPP_VERSION
85466     auto
85467 #  else
85468     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
85469 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures85470       reflect() const VULKAN_HPP_NOEXCEPT
85471     {
85472       return std::tie( sType, pNext, shaderTerminateInvocation );
85473     }
85474 #endif
85475 
85476 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85477     auto operator<=>( PhysicalDeviceShaderTerminateInvocationFeatures const & ) const = default;
85478 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures85479     bool operator==( PhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
85480     {
85481 #  if defined( VULKAN_HPP_USE_REFLECT )
85482       return this->reflect() == rhs.reflect();
85483 #  else
85484       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderTerminateInvocation == rhs.shaderTerminateInvocation );
85485 #  endif
85486     }
85487 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures85488     bool operator!=( PhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
85489     {
85490       return !operator==( rhs );
85491     }
85492 #endif
85493 
85494   public:
85495     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::ePhysicalDeviceShaderTerminateInvocationFeatures;
85496     void *                              pNext                     = {};
85497     VULKAN_HPP_NAMESPACE::Bool32        shaderTerminateInvocation = {};
85498   };
85499 
85500   template <>
85501   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderTerminateInvocationFeatures>
85502   {
85503     using Type = PhysicalDeviceShaderTerminateInvocationFeatures;
85504   };
85505 
85506   using PhysicalDeviceShaderTerminateInvocationFeaturesKHR = PhysicalDeviceShaderTerminateInvocationFeatures;
85507 
85508   struct PhysicalDeviceShaderTileImageFeaturesEXT
85509   {
85510     using NativeType = VkPhysicalDeviceShaderTileImageFeaturesEXT;
85511 
85512     static const bool                                  allowDuplicate = false;
85513     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderTileImageFeaturesEXT;
85514 
85515 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderTileImageFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT85516     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTileImageFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 shaderTileImageColorReadAccess_   = {},
85517                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderTileImageDepthReadAccess_   = {},
85518                                                                    VULKAN_HPP_NAMESPACE::Bool32 shaderTileImageStencilReadAccess_ = {},
85519                                                                    void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
85520       : pNext{ pNext_ }
85521       , shaderTileImageColorReadAccess{ shaderTileImageColorReadAccess_ }
85522       , shaderTileImageDepthReadAccess{ shaderTileImageDepthReadAccess_ }
85523       , shaderTileImageStencilReadAccess{ shaderTileImageStencilReadAccess_ }
85524     {
85525     }
85526 
85527     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTileImageFeaturesEXT( PhysicalDeviceShaderTileImageFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85528 
PhysicalDeviceShaderTileImageFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT85529     PhysicalDeviceShaderTileImageFeaturesEXT( VkPhysicalDeviceShaderTileImageFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
85530       : PhysicalDeviceShaderTileImageFeaturesEXT( *reinterpret_cast<PhysicalDeviceShaderTileImageFeaturesEXT const *>( &rhs ) )
85531     {
85532     }
85533 
85534     PhysicalDeviceShaderTileImageFeaturesEXT & operator=( PhysicalDeviceShaderTileImageFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85535 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85536 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT85537     PhysicalDeviceShaderTileImageFeaturesEXT & operator=( VkPhysicalDeviceShaderTileImageFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
85538     {
85539       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT const *>( &rhs );
85540       return *this;
85541     }
85542 
85543 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT85544     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTileImageFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
85545     {
85546       pNext = pNext_;
85547       return *this;
85548     }
85549 
85550     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTileImageFeaturesEXT &
setShaderTileImageColorReadAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT85551       setShaderTileImageColorReadAccess( VULKAN_HPP_NAMESPACE::Bool32 shaderTileImageColorReadAccess_ ) VULKAN_HPP_NOEXCEPT
85552     {
85553       shaderTileImageColorReadAccess = shaderTileImageColorReadAccess_;
85554       return *this;
85555     }
85556 
85557     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTileImageFeaturesEXT &
setShaderTileImageDepthReadAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT85558       setShaderTileImageDepthReadAccess( VULKAN_HPP_NAMESPACE::Bool32 shaderTileImageDepthReadAccess_ ) VULKAN_HPP_NOEXCEPT
85559     {
85560       shaderTileImageDepthReadAccess = shaderTileImageDepthReadAccess_;
85561       return *this;
85562     }
85563 
85564     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTileImageFeaturesEXT &
setShaderTileImageStencilReadAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT85565       setShaderTileImageStencilReadAccess( VULKAN_HPP_NAMESPACE::Bool32 shaderTileImageStencilReadAccess_ ) VULKAN_HPP_NOEXCEPT
85566     {
85567       shaderTileImageStencilReadAccess = shaderTileImageStencilReadAccess_;
85568       return *this;
85569     }
85570 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
85571 
operator VkPhysicalDeviceShaderTileImageFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT85572     operator VkPhysicalDeviceShaderTileImageFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
85573     {
85574       return *reinterpret_cast<const VkPhysicalDeviceShaderTileImageFeaturesEXT *>( this );
85575     }
85576 
operator VkPhysicalDeviceShaderTileImageFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT85577     operator VkPhysicalDeviceShaderTileImageFeaturesEXT &() VULKAN_HPP_NOEXCEPT
85578     {
85579       return *reinterpret_cast<VkPhysicalDeviceShaderTileImageFeaturesEXT *>( this );
85580     }
85581 
85582 #if defined( VULKAN_HPP_USE_REFLECT )
85583 #  if 14 <= VULKAN_HPP_CPP_VERSION
85584     auto
85585 #  else
85586     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
85587                void * const &,
85588                VULKAN_HPP_NAMESPACE::Bool32 const &,
85589                VULKAN_HPP_NAMESPACE::Bool32 const &,
85590                VULKAN_HPP_NAMESPACE::Bool32 const &>
85591 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT85592       reflect() const VULKAN_HPP_NOEXCEPT
85593     {
85594       return std::tie( sType, pNext, shaderTileImageColorReadAccess, shaderTileImageDepthReadAccess, shaderTileImageStencilReadAccess );
85595     }
85596 #endif
85597 
85598 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85599     auto operator<=>( PhysicalDeviceShaderTileImageFeaturesEXT const & ) const = default;
85600 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT85601     bool operator==( PhysicalDeviceShaderTileImageFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
85602     {
85603 #  if defined( VULKAN_HPP_USE_REFLECT )
85604       return this->reflect() == rhs.reflect();
85605 #  else
85606       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderTileImageColorReadAccess == rhs.shaderTileImageColorReadAccess ) &&
85607              ( shaderTileImageDepthReadAccess == rhs.shaderTileImageDepthReadAccess ) &&
85608              ( shaderTileImageStencilReadAccess == rhs.shaderTileImageStencilReadAccess );
85609 #  endif
85610     }
85611 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT85612     bool operator!=( PhysicalDeviceShaderTileImageFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
85613     {
85614       return !operator==( rhs );
85615     }
85616 #endif
85617 
85618   public:
85619     VULKAN_HPP_NAMESPACE::StructureType sType                            = StructureType::ePhysicalDeviceShaderTileImageFeaturesEXT;
85620     void *                              pNext                            = {};
85621     VULKAN_HPP_NAMESPACE::Bool32        shaderTileImageColorReadAccess   = {};
85622     VULKAN_HPP_NAMESPACE::Bool32        shaderTileImageDepthReadAccess   = {};
85623     VULKAN_HPP_NAMESPACE::Bool32        shaderTileImageStencilReadAccess = {};
85624   };
85625 
85626   template <>
85627   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderTileImageFeaturesEXT>
85628   {
85629     using Type = PhysicalDeviceShaderTileImageFeaturesEXT;
85630   };
85631 
85632   struct PhysicalDeviceShaderTileImagePropertiesEXT
85633   {
85634     using NativeType = VkPhysicalDeviceShaderTileImagePropertiesEXT;
85635 
85636     static const bool                                  allowDuplicate = false;
85637     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShaderTileImagePropertiesEXT;
85638 
85639 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderTileImagePropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImagePropertiesEXT85640     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTileImagePropertiesEXT( VULKAN_HPP_NAMESPACE::Bool32 shaderTileImageCoherentReadAccelerated_           = {},
85641                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderTileImageReadSampleFromPixelRateInvocation_ = {},
85642                                                                      VULKAN_HPP_NAMESPACE::Bool32 shaderTileImageReadFromHelperInvocation_          = {},
85643                                                                      void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
85644       : pNext{ pNext_ }
85645       , shaderTileImageCoherentReadAccelerated{ shaderTileImageCoherentReadAccelerated_ }
85646       , shaderTileImageReadSampleFromPixelRateInvocation{ shaderTileImageReadSampleFromPixelRateInvocation_ }
85647       , shaderTileImageReadFromHelperInvocation{ shaderTileImageReadFromHelperInvocation_ }
85648     {
85649     }
85650 
85651     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTileImagePropertiesEXT( PhysicalDeviceShaderTileImagePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85652 
PhysicalDeviceShaderTileImagePropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImagePropertiesEXT85653     PhysicalDeviceShaderTileImagePropertiesEXT( VkPhysicalDeviceShaderTileImagePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
85654       : PhysicalDeviceShaderTileImagePropertiesEXT( *reinterpret_cast<PhysicalDeviceShaderTileImagePropertiesEXT const *>( &rhs ) )
85655     {
85656     }
85657 
85658     PhysicalDeviceShaderTileImagePropertiesEXT & operator=( PhysicalDeviceShaderTileImagePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85659 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85660 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImagePropertiesEXT85661     PhysicalDeviceShaderTileImagePropertiesEXT & operator=( VkPhysicalDeviceShaderTileImagePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
85662     {
85663       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImagePropertiesEXT const *>( &rhs );
85664       return *this;
85665     }
85666 
operator VkPhysicalDeviceShaderTileImagePropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImagePropertiesEXT85667     operator VkPhysicalDeviceShaderTileImagePropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
85668     {
85669       return *reinterpret_cast<const VkPhysicalDeviceShaderTileImagePropertiesEXT *>( this );
85670     }
85671 
operator VkPhysicalDeviceShaderTileImagePropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImagePropertiesEXT85672     operator VkPhysicalDeviceShaderTileImagePropertiesEXT &() VULKAN_HPP_NOEXCEPT
85673     {
85674       return *reinterpret_cast<VkPhysicalDeviceShaderTileImagePropertiesEXT *>( this );
85675     }
85676 
85677 #if defined( VULKAN_HPP_USE_REFLECT )
85678 #  if 14 <= VULKAN_HPP_CPP_VERSION
85679     auto
85680 #  else
85681     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
85682                void * const &,
85683                VULKAN_HPP_NAMESPACE::Bool32 const &,
85684                VULKAN_HPP_NAMESPACE::Bool32 const &,
85685                VULKAN_HPP_NAMESPACE::Bool32 const &>
85686 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImagePropertiesEXT85687       reflect() const VULKAN_HPP_NOEXCEPT
85688     {
85689       return std::tie(
85690         sType, pNext, shaderTileImageCoherentReadAccelerated, shaderTileImageReadSampleFromPixelRateInvocation, shaderTileImageReadFromHelperInvocation );
85691     }
85692 #endif
85693 
85694 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85695     auto operator<=>( PhysicalDeviceShaderTileImagePropertiesEXT const & ) const = default;
85696 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImagePropertiesEXT85697     bool operator==( PhysicalDeviceShaderTileImagePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
85698     {
85699 #  if defined( VULKAN_HPP_USE_REFLECT )
85700       return this->reflect() == rhs.reflect();
85701 #  else
85702       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderTileImageCoherentReadAccelerated == rhs.shaderTileImageCoherentReadAccelerated ) &&
85703              ( shaderTileImageReadSampleFromPixelRateInvocation == rhs.shaderTileImageReadSampleFromPixelRateInvocation ) &&
85704              ( shaderTileImageReadFromHelperInvocation == rhs.shaderTileImageReadFromHelperInvocation );
85705 #  endif
85706     }
85707 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImagePropertiesEXT85708     bool operator!=( PhysicalDeviceShaderTileImagePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
85709     {
85710       return !operator==( rhs );
85711     }
85712 #endif
85713 
85714   public:
85715     VULKAN_HPP_NAMESPACE::StructureType sType                                            = StructureType::ePhysicalDeviceShaderTileImagePropertiesEXT;
85716     void *                              pNext                                            = {};
85717     VULKAN_HPP_NAMESPACE::Bool32        shaderTileImageCoherentReadAccelerated           = {};
85718     VULKAN_HPP_NAMESPACE::Bool32        shaderTileImageReadSampleFromPixelRateInvocation = {};
85719     VULKAN_HPP_NAMESPACE::Bool32        shaderTileImageReadFromHelperInvocation          = {};
85720   };
85721 
85722   template <>
85723   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderTileImagePropertiesEXT>
85724   {
85725     using Type = PhysicalDeviceShaderTileImagePropertiesEXT;
85726   };
85727 
85728   struct PhysicalDeviceShadingRateImageFeaturesNV
85729   {
85730     using NativeType = VkPhysicalDeviceShadingRateImageFeaturesNV;
85731 
85732     static const bool                                  allowDuplicate = false;
85733     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShadingRateImageFeaturesNV;
85734 
85735 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShadingRateImageFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV85736     VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImageFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 shadingRateImage_             = {},
85737                                                                    VULKAN_HPP_NAMESPACE::Bool32 shadingRateCoarseSampleOrder_ = {},
85738                                                                    void *                       pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
85739       : pNext{ pNext_ }
85740       , shadingRateImage{ shadingRateImage_ }
85741       , shadingRateCoarseSampleOrder{ shadingRateCoarseSampleOrder_ }
85742     {
85743     }
85744 
85745     VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImageFeaturesNV( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85746 
PhysicalDeviceShadingRateImageFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV85747     PhysicalDeviceShadingRateImageFeaturesNV( VkPhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
85748       : PhysicalDeviceShadingRateImageFeaturesNV( *reinterpret_cast<PhysicalDeviceShadingRateImageFeaturesNV const *>( &rhs ) )
85749     {
85750     }
85751 
85752     PhysicalDeviceShadingRateImageFeaturesNV & operator=( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85753 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85754 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV85755     PhysicalDeviceShadingRateImageFeaturesNV & operator=( VkPhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
85756     {
85757       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV const *>( &rhs );
85758       return *this;
85759     }
85760 
85761 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV85762     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImageFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
85763     {
85764       pNext = pNext_;
85765       return *this;
85766     }
85767 
setShadingRateImageVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV85768     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImageFeaturesNV & setShadingRateImage( VULKAN_HPP_NAMESPACE::Bool32 shadingRateImage_ ) VULKAN_HPP_NOEXCEPT
85769     {
85770       shadingRateImage = shadingRateImage_;
85771       return *this;
85772     }
85773 
85774     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImageFeaturesNV &
setShadingRateCoarseSampleOrderVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV85775       setShadingRateCoarseSampleOrder( VULKAN_HPP_NAMESPACE::Bool32 shadingRateCoarseSampleOrder_ ) VULKAN_HPP_NOEXCEPT
85776     {
85777       shadingRateCoarseSampleOrder = shadingRateCoarseSampleOrder_;
85778       return *this;
85779     }
85780 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
85781 
operator VkPhysicalDeviceShadingRateImageFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV85782     operator VkPhysicalDeviceShadingRateImageFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
85783     {
85784       return *reinterpret_cast<const VkPhysicalDeviceShadingRateImageFeaturesNV *>( this );
85785     }
85786 
operator VkPhysicalDeviceShadingRateImageFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV85787     operator VkPhysicalDeviceShadingRateImageFeaturesNV &() VULKAN_HPP_NOEXCEPT
85788     {
85789       return *reinterpret_cast<VkPhysicalDeviceShadingRateImageFeaturesNV *>( this );
85790     }
85791 
85792 #if defined( VULKAN_HPP_USE_REFLECT )
85793 #  if 14 <= VULKAN_HPP_CPP_VERSION
85794     auto
85795 #  else
85796     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
85797 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV85798       reflect() const VULKAN_HPP_NOEXCEPT
85799     {
85800       return std::tie( sType, pNext, shadingRateImage, shadingRateCoarseSampleOrder );
85801     }
85802 #endif
85803 
85804 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85805     auto operator<=>( PhysicalDeviceShadingRateImageFeaturesNV const & ) const = default;
85806 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV85807     bool operator==( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
85808     {
85809 #  if defined( VULKAN_HPP_USE_REFLECT )
85810       return this->reflect() == rhs.reflect();
85811 #  else
85812       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shadingRateImage == rhs.shadingRateImage ) &&
85813              ( shadingRateCoarseSampleOrder == rhs.shadingRateCoarseSampleOrder );
85814 #  endif
85815     }
85816 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV85817     bool operator!=( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
85818     {
85819       return !operator==( rhs );
85820     }
85821 #endif
85822 
85823   public:
85824     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDeviceShadingRateImageFeaturesNV;
85825     void *                              pNext                        = {};
85826     VULKAN_HPP_NAMESPACE::Bool32        shadingRateImage             = {};
85827     VULKAN_HPP_NAMESPACE::Bool32        shadingRateCoarseSampleOrder = {};
85828   };
85829 
85830   template <>
85831   struct CppType<StructureType, StructureType::ePhysicalDeviceShadingRateImageFeaturesNV>
85832   {
85833     using Type = PhysicalDeviceShadingRateImageFeaturesNV;
85834   };
85835 
85836   struct PhysicalDeviceShadingRateImagePropertiesNV
85837   {
85838     using NativeType = VkPhysicalDeviceShadingRateImagePropertiesNV;
85839 
85840     static const bool                                  allowDuplicate = false;
85841     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceShadingRateImagePropertiesNV;
85842 
85843 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShadingRateImagePropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV85844     VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImagePropertiesNV( VULKAN_HPP_NAMESPACE::Extent2D shadingRateTexelSize_        = {},
85845                                                                      uint32_t                       shadingRatePaletteSize_      = {},
85846                                                                      uint32_t                       shadingRateMaxCoarseSamples_ = {},
85847                                                                      void *                         pNext_                       = nullptr ) VULKAN_HPP_NOEXCEPT
85848       : pNext{ pNext_ }
85849       , shadingRateTexelSize{ shadingRateTexelSize_ }
85850       , shadingRatePaletteSize{ shadingRatePaletteSize_ }
85851       , shadingRateMaxCoarseSamples{ shadingRateMaxCoarseSamples_ }
85852     {
85853     }
85854 
85855     VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImagePropertiesNV( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85856 
PhysicalDeviceShadingRateImagePropertiesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV85857     PhysicalDeviceShadingRateImagePropertiesNV( VkPhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
85858       : PhysicalDeviceShadingRateImagePropertiesNV( *reinterpret_cast<PhysicalDeviceShadingRateImagePropertiesNV const *>( &rhs ) )
85859     {
85860     }
85861 
85862     PhysicalDeviceShadingRateImagePropertiesNV & operator=( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85863 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85864 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV85865     PhysicalDeviceShadingRateImagePropertiesNV & operator=( VkPhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
85866     {
85867       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV const *>( &rhs );
85868       return *this;
85869     }
85870 
operator VkPhysicalDeviceShadingRateImagePropertiesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV85871     operator VkPhysicalDeviceShadingRateImagePropertiesNV const &() const VULKAN_HPP_NOEXCEPT
85872     {
85873       return *reinterpret_cast<const VkPhysicalDeviceShadingRateImagePropertiesNV *>( this );
85874     }
85875 
operator VkPhysicalDeviceShadingRateImagePropertiesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV85876     operator VkPhysicalDeviceShadingRateImagePropertiesNV &() VULKAN_HPP_NOEXCEPT
85877     {
85878       return *reinterpret_cast<VkPhysicalDeviceShadingRateImagePropertiesNV *>( this );
85879     }
85880 
85881 #if defined( VULKAN_HPP_USE_REFLECT )
85882 #  if 14 <= VULKAN_HPP_CPP_VERSION
85883     auto
85884 #  else
85885     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Extent2D const &, uint32_t const &, uint32_t const &>
85886 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV85887       reflect() const VULKAN_HPP_NOEXCEPT
85888     {
85889       return std::tie( sType, pNext, shadingRateTexelSize, shadingRatePaletteSize, shadingRateMaxCoarseSamples );
85890     }
85891 #endif
85892 
85893 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
85894     auto operator<=>( PhysicalDeviceShadingRateImagePropertiesNV const & ) const = default;
85895 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV85896     bool operator==( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
85897     {
85898 #  if defined( VULKAN_HPP_USE_REFLECT )
85899       return this->reflect() == rhs.reflect();
85900 #  else
85901       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shadingRateTexelSize == rhs.shadingRateTexelSize ) &&
85902              ( shadingRatePaletteSize == rhs.shadingRatePaletteSize ) && ( shadingRateMaxCoarseSamples == rhs.shadingRateMaxCoarseSamples );
85903 #  endif
85904     }
85905 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV85906     bool operator!=( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
85907     {
85908       return !operator==( rhs );
85909     }
85910 #endif
85911 
85912   public:
85913     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceShadingRateImagePropertiesNV;
85914     void *                              pNext                       = {};
85915     VULKAN_HPP_NAMESPACE::Extent2D      shadingRateTexelSize        = {};
85916     uint32_t                            shadingRatePaletteSize      = {};
85917     uint32_t                            shadingRateMaxCoarseSamples = {};
85918   };
85919 
85920   template <>
85921   struct CppType<StructureType, StructureType::ePhysicalDeviceShadingRateImagePropertiesNV>
85922   {
85923     using Type = PhysicalDeviceShadingRateImagePropertiesNV;
85924   };
85925 
85926   struct PhysicalDeviceSparseImageFormatInfo2
85927   {
85928     using NativeType = VkPhysicalDeviceSparseImageFormatInfo2;
85929 
85930     static const bool                                  allowDuplicate = false;
85931     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSparseImageFormatInfo2;
85932 
85933 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
85934     VULKAN_HPP_CONSTEXPR
PhysicalDeviceSparseImageFormatInfo2VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo285935       PhysicalDeviceSparseImageFormatInfo2( VULKAN_HPP_NAMESPACE::Format              format_  = VULKAN_HPP_NAMESPACE::Format::eUndefined,
85936                                             VULKAN_HPP_NAMESPACE::ImageType           type_    = VULKAN_HPP_NAMESPACE::ImageType::e1D,
85937                                             VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1,
85938                                             VULKAN_HPP_NAMESPACE::ImageUsageFlags     usage_   = {},
85939                                             VULKAN_HPP_NAMESPACE::ImageTiling         tiling_  = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal,
85940                                             const void *                              pNext_   = nullptr ) VULKAN_HPP_NOEXCEPT
85941       : pNext{ pNext_ }
85942       , format{ format_ }
85943       , type{ type_ }
85944       , samples{ samples_ }
85945       , usage{ usage_ }
85946       , tiling{ tiling_ }
85947     {
85948     }
85949 
85950     VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseImageFormatInfo2( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85951 
PhysicalDeviceSparseImageFormatInfo2VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo285952     PhysicalDeviceSparseImageFormatInfo2( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
85953       : PhysicalDeviceSparseImageFormatInfo2( *reinterpret_cast<PhysicalDeviceSparseImageFormatInfo2 const *>( &rhs ) )
85954     {
85955     }
85956 
85957     PhysicalDeviceSparseImageFormatInfo2 & operator=( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
85958 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
85959 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo285960     PhysicalDeviceSparseImageFormatInfo2 & operator=( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
85961     {
85962       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 const *>( &rhs );
85963       return *this;
85964     }
85965 
85966 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo285967     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
85968     {
85969       pNext = pNext_;
85970       return *this;
85971     }
85972 
setFormatVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo285973     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
85974     {
85975       format = format_;
85976       return *this;
85977     }
85978 
setTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo285979     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & setType( VULKAN_HPP_NAMESPACE::ImageType type_ ) VULKAN_HPP_NOEXCEPT
85980     {
85981       type = type_;
85982       return *this;
85983     }
85984 
setSamplesVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo285985     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT
85986     {
85987       samples = samples_;
85988       return *this;
85989     }
85990 
setUsageVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo285991     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
85992     {
85993       usage = usage_;
85994       return *this;
85995     }
85996 
setTilingVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo285997     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & setTiling( VULKAN_HPP_NAMESPACE::ImageTiling tiling_ ) VULKAN_HPP_NOEXCEPT
85998     {
85999       tiling = tiling_;
86000       return *this;
86001     }
86002 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86003 
operator VkPhysicalDeviceSparseImageFormatInfo2 const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo286004     operator VkPhysicalDeviceSparseImageFormatInfo2 const &() const VULKAN_HPP_NOEXCEPT
86005     {
86006       return *reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2 *>( this );
86007     }
86008 
operator VkPhysicalDeviceSparseImageFormatInfo2&VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo286009     operator VkPhysicalDeviceSparseImageFormatInfo2 &() VULKAN_HPP_NOEXCEPT
86010     {
86011       return *reinterpret_cast<VkPhysicalDeviceSparseImageFormatInfo2 *>( this );
86012     }
86013 
86014 #if defined( VULKAN_HPP_USE_REFLECT )
86015 #  if 14 <= VULKAN_HPP_CPP_VERSION
86016     auto
86017 #  else
86018     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
86019                const void * const &,
86020                VULKAN_HPP_NAMESPACE::Format const &,
86021                VULKAN_HPP_NAMESPACE::ImageType const &,
86022                VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &,
86023                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &,
86024                VULKAN_HPP_NAMESPACE::ImageTiling const &>
86025 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo286026       reflect() const VULKAN_HPP_NOEXCEPT
86027     {
86028       return std::tie( sType, pNext, format, type, samples, usage, tiling );
86029     }
86030 #endif
86031 
86032 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86033     auto operator<=>( PhysicalDeviceSparseImageFormatInfo2 const & ) const = default;
86034 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo286035     bool operator==( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
86036     {
86037 #  if defined( VULKAN_HPP_USE_REFLECT )
86038       return this->reflect() == rhs.reflect();
86039 #  else
86040       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( type == rhs.type ) && ( samples == rhs.samples ) &&
86041              ( usage == rhs.usage ) && ( tiling == rhs.tiling );
86042 #  endif
86043     }
86044 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo286045     bool operator!=( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
86046     {
86047       return !operator==( rhs );
86048     }
86049 #endif
86050 
86051   public:
86052     VULKAN_HPP_NAMESPACE::StructureType       sType   = StructureType::ePhysicalDeviceSparseImageFormatInfo2;
86053     const void *                              pNext   = {};
86054     VULKAN_HPP_NAMESPACE::Format              format  = VULKAN_HPP_NAMESPACE::Format::eUndefined;
86055     VULKAN_HPP_NAMESPACE::ImageType           type    = VULKAN_HPP_NAMESPACE::ImageType::e1D;
86056     VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
86057     VULKAN_HPP_NAMESPACE::ImageUsageFlags     usage   = {};
86058     VULKAN_HPP_NAMESPACE::ImageTiling         tiling  = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal;
86059   };
86060 
86061   template <>
86062   struct CppType<StructureType, StructureType::ePhysicalDeviceSparseImageFormatInfo2>
86063   {
86064     using Type = PhysicalDeviceSparseImageFormatInfo2;
86065   };
86066 
86067   using PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2;
86068 
86069   struct PhysicalDeviceSubgroupProperties
86070   {
86071     using NativeType = VkPhysicalDeviceSubgroupProperties;
86072 
86073     static const bool                                  allowDuplicate = false;
86074     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSubgroupProperties;
86075 
86076 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSubgroupPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties86077     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupProperties( uint32_t                                   subgroupSize_              = {},
86078                                                            VULKAN_HPP_NAMESPACE::ShaderStageFlags     supportedStages_           = {},
86079                                                            VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags supportedOperations_       = {},
86080                                                            VULKAN_HPP_NAMESPACE::Bool32               quadOperationsInAllStages_ = {},
86081                                                            void *                                     pNext_                     = nullptr ) VULKAN_HPP_NOEXCEPT
86082       : pNext{ pNext_ }
86083       , subgroupSize{ subgroupSize_ }
86084       , supportedStages{ supportedStages_ }
86085       , supportedOperations{ supportedOperations_ }
86086       , quadOperationsInAllStages{ quadOperationsInAllStages_ }
86087     {
86088     }
86089 
86090     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupProperties( PhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86091 
PhysicalDeviceSubgroupPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties86092     PhysicalDeviceSubgroupProperties( VkPhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
86093       : PhysicalDeviceSubgroupProperties( *reinterpret_cast<PhysicalDeviceSubgroupProperties const *>( &rhs ) )
86094     {
86095     }
86096 
86097     PhysicalDeviceSubgroupProperties & operator=( PhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86098 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86099 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties86100     PhysicalDeviceSubgroupProperties & operator=( VkPhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
86101     {
86102       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties const *>( &rhs );
86103       return *this;
86104     }
86105 
operator VkPhysicalDeviceSubgroupProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties86106     operator VkPhysicalDeviceSubgroupProperties const &() const VULKAN_HPP_NOEXCEPT
86107     {
86108       return *reinterpret_cast<const VkPhysicalDeviceSubgroupProperties *>( this );
86109     }
86110 
operator VkPhysicalDeviceSubgroupProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties86111     operator VkPhysicalDeviceSubgroupProperties &() VULKAN_HPP_NOEXCEPT
86112     {
86113       return *reinterpret_cast<VkPhysicalDeviceSubgroupProperties *>( this );
86114     }
86115 
86116 #if defined( VULKAN_HPP_USE_REFLECT )
86117 #  if 14 <= VULKAN_HPP_CPP_VERSION
86118     auto
86119 #  else
86120     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
86121                void * const &,
86122                uint32_t const &,
86123                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
86124                VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags const &,
86125                VULKAN_HPP_NAMESPACE::Bool32 const &>
86126 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties86127       reflect() const VULKAN_HPP_NOEXCEPT
86128     {
86129       return std::tie( sType, pNext, subgroupSize, supportedStages, supportedOperations, quadOperationsInAllStages );
86130     }
86131 #endif
86132 
86133 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86134     auto operator<=>( PhysicalDeviceSubgroupProperties const & ) const = default;
86135 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties86136     bool operator==( PhysicalDeviceSubgroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
86137     {
86138 #  if defined( VULKAN_HPP_USE_REFLECT )
86139       return this->reflect() == rhs.reflect();
86140 #  else
86141       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subgroupSize == rhs.subgroupSize ) && ( supportedStages == rhs.supportedStages ) &&
86142              ( supportedOperations == rhs.supportedOperations ) && ( quadOperationsInAllStages == rhs.quadOperationsInAllStages );
86143 #  endif
86144     }
86145 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties86146     bool operator!=( PhysicalDeviceSubgroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
86147     {
86148       return !operator==( rhs );
86149     }
86150 #endif
86151 
86152   public:
86153     VULKAN_HPP_NAMESPACE::StructureType        sType                     = StructureType::ePhysicalDeviceSubgroupProperties;
86154     void *                                     pNext                     = {};
86155     uint32_t                                   subgroupSize              = {};
86156     VULKAN_HPP_NAMESPACE::ShaderStageFlags     supportedStages           = {};
86157     VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags supportedOperations       = {};
86158     VULKAN_HPP_NAMESPACE::Bool32               quadOperationsInAllStages = {};
86159   };
86160 
86161   template <>
86162   struct CppType<StructureType, StructureType::ePhysicalDeviceSubgroupProperties>
86163   {
86164     using Type = PhysicalDeviceSubgroupProperties;
86165   };
86166 
86167   struct PhysicalDeviceSubgroupSizeControlFeatures
86168   {
86169     using NativeType = VkPhysicalDeviceSubgroupSizeControlFeatures;
86170 
86171     static const bool                                  allowDuplicate = false;
86172     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSubgroupSizeControlFeatures;
86173 
86174 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSubgroupSizeControlFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures86175     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlFeatures( VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl_  = {},
86176                                                                     VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups_ = {},
86177                                                                     void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
86178       : pNext{ pNext_ }
86179       , subgroupSizeControl{ subgroupSizeControl_ }
86180       , computeFullSubgroups{ computeFullSubgroups_ }
86181     {
86182     }
86183 
86184     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlFeatures( PhysicalDeviceSubgroupSizeControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86185 
PhysicalDeviceSubgroupSizeControlFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures86186     PhysicalDeviceSubgroupSizeControlFeatures( VkPhysicalDeviceSubgroupSizeControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
86187       : PhysicalDeviceSubgroupSizeControlFeatures( *reinterpret_cast<PhysicalDeviceSubgroupSizeControlFeatures const *>( &rhs ) )
86188     {
86189     }
86190 
86191     PhysicalDeviceSubgroupSizeControlFeatures & operator=( PhysicalDeviceSubgroupSizeControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86192 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86193 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures86194     PhysicalDeviceSubgroupSizeControlFeatures & operator=( VkPhysicalDeviceSubgroupSizeControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
86195     {
86196       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures const *>( &rhs );
86197       return *this;
86198     }
86199 
86200 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures86201     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
86202     {
86203       pNext = pNext_;
86204       return *this;
86205     }
86206 
86207     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeatures &
setSubgroupSizeControlVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures86208       setSubgroupSizeControl( VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl_ ) VULKAN_HPP_NOEXCEPT
86209     {
86210       subgroupSizeControl = subgroupSizeControl_;
86211       return *this;
86212     }
86213 
86214     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeatures &
setComputeFullSubgroupsVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures86215       setComputeFullSubgroups( VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups_ ) VULKAN_HPP_NOEXCEPT
86216     {
86217       computeFullSubgroups = computeFullSubgroups_;
86218       return *this;
86219     }
86220 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86221 
operator VkPhysicalDeviceSubgroupSizeControlFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures86222     operator VkPhysicalDeviceSubgroupSizeControlFeatures const &() const VULKAN_HPP_NOEXCEPT
86223     {
86224       return *reinterpret_cast<const VkPhysicalDeviceSubgroupSizeControlFeatures *>( this );
86225     }
86226 
operator VkPhysicalDeviceSubgroupSizeControlFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures86227     operator VkPhysicalDeviceSubgroupSizeControlFeatures &() VULKAN_HPP_NOEXCEPT
86228     {
86229       return *reinterpret_cast<VkPhysicalDeviceSubgroupSizeControlFeatures *>( this );
86230     }
86231 
86232 #if defined( VULKAN_HPP_USE_REFLECT )
86233 #  if 14 <= VULKAN_HPP_CPP_VERSION
86234     auto
86235 #  else
86236     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
86237 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures86238       reflect() const VULKAN_HPP_NOEXCEPT
86239     {
86240       return std::tie( sType, pNext, subgroupSizeControl, computeFullSubgroups );
86241     }
86242 #endif
86243 
86244 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86245     auto operator<=>( PhysicalDeviceSubgroupSizeControlFeatures const & ) const = default;
86246 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures86247     bool operator==( PhysicalDeviceSubgroupSizeControlFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
86248     {
86249 #  if defined( VULKAN_HPP_USE_REFLECT )
86250       return this->reflect() == rhs.reflect();
86251 #  else
86252       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subgroupSizeControl == rhs.subgroupSizeControl ) &&
86253              ( computeFullSubgroups == rhs.computeFullSubgroups );
86254 #  endif
86255     }
86256 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures86257     bool operator!=( PhysicalDeviceSubgroupSizeControlFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
86258     {
86259       return !operator==( rhs );
86260     }
86261 #endif
86262 
86263   public:
86264     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceSubgroupSizeControlFeatures;
86265     void *                              pNext                = {};
86266     VULKAN_HPP_NAMESPACE::Bool32        subgroupSizeControl  = {};
86267     VULKAN_HPP_NAMESPACE::Bool32        computeFullSubgroups = {};
86268   };
86269 
86270   template <>
86271   struct CppType<StructureType, StructureType::ePhysicalDeviceSubgroupSizeControlFeatures>
86272   {
86273     using Type = PhysicalDeviceSubgroupSizeControlFeatures;
86274   };
86275 
86276   using PhysicalDeviceSubgroupSizeControlFeaturesEXT = PhysicalDeviceSubgroupSizeControlFeatures;
86277 
86278   struct PhysicalDeviceSubgroupSizeControlProperties
86279   {
86280     using NativeType = VkPhysicalDeviceSubgroupSizeControlProperties;
86281 
86282     static const bool                                  allowDuplicate = false;
86283     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSubgroupSizeControlProperties;
86284 
86285 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSubgroupSizeControlPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties86286     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlProperties( uint32_t                               minSubgroupSize_              = {},
86287                                                                       uint32_t                               maxSubgroupSize_              = {},
86288                                                                       uint32_t                               maxComputeWorkgroupSubgroups_ = {},
86289                                                                       VULKAN_HPP_NAMESPACE::ShaderStageFlags requiredSubgroupSizeStages_   = {},
86290                                                                       void *                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
86291       : pNext{ pNext_ }
86292       , minSubgroupSize{ minSubgroupSize_ }
86293       , maxSubgroupSize{ maxSubgroupSize_ }
86294       , maxComputeWorkgroupSubgroups{ maxComputeWorkgroupSubgroups_ }
86295       , requiredSubgroupSizeStages{ requiredSubgroupSizeStages_ }
86296     {
86297     }
86298 
86299     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlProperties( PhysicalDeviceSubgroupSizeControlProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86300 
PhysicalDeviceSubgroupSizeControlPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties86301     PhysicalDeviceSubgroupSizeControlProperties( VkPhysicalDeviceSubgroupSizeControlProperties const & rhs ) VULKAN_HPP_NOEXCEPT
86302       : PhysicalDeviceSubgroupSizeControlProperties( *reinterpret_cast<PhysicalDeviceSubgroupSizeControlProperties const *>( &rhs ) )
86303     {
86304     }
86305 
86306     PhysicalDeviceSubgroupSizeControlProperties & operator=( PhysicalDeviceSubgroupSizeControlProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86307 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86308 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties86309     PhysicalDeviceSubgroupSizeControlProperties & operator=( VkPhysicalDeviceSubgroupSizeControlProperties const & rhs ) VULKAN_HPP_NOEXCEPT
86310     {
86311       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties const *>( &rhs );
86312       return *this;
86313     }
86314 
operator VkPhysicalDeviceSubgroupSizeControlProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties86315     operator VkPhysicalDeviceSubgroupSizeControlProperties const &() const VULKAN_HPP_NOEXCEPT
86316     {
86317       return *reinterpret_cast<const VkPhysicalDeviceSubgroupSizeControlProperties *>( this );
86318     }
86319 
operator VkPhysicalDeviceSubgroupSizeControlProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties86320     operator VkPhysicalDeviceSubgroupSizeControlProperties &() VULKAN_HPP_NOEXCEPT
86321     {
86322       return *reinterpret_cast<VkPhysicalDeviceSubgroupSizeControlProperties *>( this );
86323     }
86324 
86325 #if defined( VULKAN_HPP_USE_REFLECT )
86326 #  if 14 <= VULKAN_HPP_CPP_VERSION
86327     auto
86328 #  else
86329     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
86330                void * const &,
86331                uint32_t const &,
86332                uint32_t const &,
86333                uint32_t const &,
86334                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &>
86335 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties86336       reflect() const VULKAN_HPP_NOEXCEPT
86337     {
86338       return std::tie( sType, pNext, minSubgroupSize, maxSubgroupSize, maxComputeWorkgroupSubgroups, requiredSubgroupSizeStages );
86339     }
86340 #endif
86341 
86342 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86343     auto operator<=>( PhysicalDeviceSubgroupSizeControlProperties const & ) const = default;
86344 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties86345     bool operator==( PhysicalDeviceSubgroupSizeControlProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
86346     {
86347 #  if defined( VULKAN_HPP_USE_REFLECT )
86348       return this->reflect() == rhs.reflect();
86349 #  else
86350       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minSubgroupSize == rhs.minSubgroupSize ) && ( maxSubgroupSize == rhs.maxSubgroupSize ) &&
86351              ( maxComputeWorkgroupSubgroups == rhs.maxComputeWorkgroupSubgroups ) && ( requiredSubgroupSizeStages == rhs.requiredSubgroupSizeStages );
86352 #  endif
86353     }
86354 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties86355     bool operator!=( PhysicalDeviceSubgroupSizeControlProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
86356     {
86357       return !operator==( rhs );
86358     }
86359 #endif
86360 
86361   public:
86362     VULKAN_HPP_NAMESPACE::StructureType    sType                        = StructureType::ePhysicalDeviceSubgroupSizeControlProperties;
86363     void *                                 pNext                        = {};
86364     uint32_t                               minSubgroupSize              = {};
86365     uint32_t                               maxSubgroupSize              = {};
86366     uint32_t                               maxComputeWorkgroupSubgroups = {};
86367     VULKAN_HPP_NAMESPACE::ShaderStageFlags requiredSubgroupSizeStages   = {};
86368   };
86369 
86370   template <>
86371   struct CppType<StructureType, StructureType::ePhysicalDeviceSubgroupSizeControlProperties>
86372   {
86373     using Type = PhysicalDeviceSubgroupSizeControlProperties;
86374   };
86375 
86376   using PhysicalDeviceSubgroupSizeControlPropertiesEXT = PhysicalDeviceSubgroupSizeControlProperties;
86377 
86378   struct PhysicalDeviceSubpassMergeFeedbackFeaturesEXT
86379   {
86380     using NativeType = VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT;
86381 
86382     static const bool                                  allowDuplicate = false;
86383     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSubpassMergeFeedbackFeaturesEXT;
86384 
86385 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSubpassMergeFeedbackFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT86386     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassMergeFeedbackFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 subpassMergeFeedback_ = {},
86387                                                                         void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
86388       : pNext{ pNext_ }
86389       , subpassMergeFeedback{ subpassMergeFeedback_ }
86390     {
86391     }
86392 
86393     VULKAN_HPP_CONSTEXPR
86394       PhysicalDeviceSubpassMergeFeedbackFeaturesEXT( PhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86395 
PhysicalDeviceSubpassMergeFeedbackFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT86396     PhysicalDeviceSubpassMergeFeedbackFeaturesEXT( VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86397       : PhysicalDeviceSubpassMergeFeedbackFeaturesEXT( *reinterpret_cast<PhysicalDeviceSubpassMergeFeedbackFeaturesEXT const *>( &rhs ) )
86398     {
86399     }
86400 
86401     PhysicalDeviceSubpassMergeFeedbackFeaturesEXT & operator=( PhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86402 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86403 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT86404     PhysicalDeviceSubpassMergeFeedbackFeaturesEXT & operator=( VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86405     {
86406       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT const *>( &rhs );
86407       return *this;
86408     }
86409 
86410 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT86411     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubpassMergeFeedbackFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
86412     {
86413       pNext = pNext_;
86414       return *this;
86415     }
86416 
86417     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubpassMergeFeedbackFeaturesEXT &
setSubpassMergeFeedbackVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT86418       setSubpassMergeFeedback( VULKAN_HPP_NAMESPACE::Bool32 subpassMergeFeedback_ ) VULKAN_HPP_NOEXCEPT
86419     {
86420       subpassMergeFeedback = subpassMergeFeedback_;
86421       return *this;
86422     }
86423 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86424 
operator VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT86425     operator VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
86426     {
86427       return *reinterpret_cast<const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT *>( this );
86428     }
86429 
operator VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT86430     operator VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT &() VULKAN_HPP_NOEXCEPT
86431     {
86432       return *reinterpret_cast<VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT *>( this );
86433     }
86434 
86435 #if defined( VULKAN_HPP_USE_REFLECT )
86436 #  if 14 <= VULKAN_HPP_CPP_VERSION
86437     auto
86438 #  else
86439     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
86440 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT86441       reflect() const VULKAN_HPP_NOEXCEPT
86442     {
86443       return std::tie( sType, pNext, subpassMergeFeedback );
86444     }
86445 #endif
86446 
86447 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86448     auto operator<=>( PhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & ) const = default;
86449 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT86450     bool operator==( PhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86451     {
86452 #  if defined( VULKAN_HPP_USE_REFLECT )
86453       return this->reflect() == rhs.reflect();
86454 #  else
86455       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subpassMergeFeedback == rhs.subpassMergeFeedback );
86456 #  endif
86457     }
86458 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT86459     bool operator!=( PhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86460     {
86461       return !operator==( rhs );
86462     }
86463 #endif
86464 
86465   public:
86466     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceSubpassMergeFeedbackFeaturesEXT;
86467     void *                              pNext                = {};
86468     VULKAN_HPP_NAMESPACE::Bool32        subpassMergeFeedback = {};
86469   };
86470 
86471   template <>
86472   struct CppType<StructureType, StructureType::ePhysicalDeviceSubpassMergeFeedbackFeaturesEXT>
86473   {
86474     using Type = PhysicalDeviceSubpassMergeFeedbackFeaturesEXT;
86475   };
86476 
86477   struct PhysicalDeviceSubpassShadingFeaturesHUAWEI
86478   {
86479     using NativeType = VkPhysicalDeviceSubpassShadingFeaturesHUAWEI;
86480 
86481     static const bool                                  allowDuplicate = false;
86482     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSubpassShadingFeaturesHUAWEI;
86483 
86484 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSubpassShadingFeaturesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI86485     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassShadingFeaturesHUAWEI( VULKAN_HPP_NAMESPACE::Bool32 subpassShading_ = {},
86486                                                                      void *                       pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
86487       : pNext{ pNext_ }
86488       , subpassShading{ subpassShading_ }
86489     {
86490     }
86491 
86492     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassShadingFeaturesHUAWEI( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86493 
PhysicalDeviceSubpassShadingFeaturesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI86494     PhysicalDeviceSubpassShadingFeaturesHUAWEI( VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
86495       : PhysicalDeviceSubpassShadingFeaturesHUAWEI( *reinterpret_cast<PhysicalDeviceSubpassShadingFeaturesHUAWEI const *>( &rhs ) )
86496     {
86497     }
86498 
86499     PhysicalDeviceSubpassShadingFeaturesHUAWEI & operator=( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86500 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86501 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI86502     PhysicalDeviceSubpassShadingFeaturesHUAWEI & operator=( VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
86503     {
86504       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI const *>( &rhs );
86505       return *this;
86506     }
86507 
86508 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI86509     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubpassShadingFeaturesHUAWEI & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
86510     {
86511       pNext = pNext_;
86512       return *this;
86513     }
86514 
setSubpassShadingVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI86515     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubpassShadingFeaturesHUAWEI & setSubpassShading( VULKAN_HPP_NAMESPACE::Bool32 subpassShading_ ) VULKAN_HPP_NOEXCEPT
86516     {
86517       subpassShading = subpassShading_;
86518       return *this;
86519     }
86520 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86521 
operator VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI86522     operator VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const &() const VULKAN_HPP_NOEXCEPT
86523     {
86524       return *reinterpret_cast<const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI *>( this );
86525     }
86526 
operator VkPhysicalDeviceSubpassShadingFeaturesHUAWEI&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI86527     operator VkPhysicalDeviceSubpassShadingFeaturesHUAWEI &() VULKAN_HPP_NOEXCEPT
86528     {
86529       return *reinterpret_cast<VkPhysicalDeviceSubpassShadingFeaturesHUAWEI *>( this );
86530     }
86531 
86532 #if defined( VULKAN_HPP_USE_REFLECT )
86533 #  if 14 <= VULKAN_HPP_CPP_VERSION
86534     auto
86535 #  else
86536     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
86537 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI86538       reflect() const VULKAN_HPP_NOEXCEPT
86539     {
86540       return std::tie( sType, pNext, subpassShading );
86541     }
86542 #endif
86543 
86544 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86545     auto operator<=>( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & ) const = default;
86546 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI86547     bool operator==( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
86548     {
86549 #  if defined( VULKAN_HPP_USE_REFLECT )
86550       return this->reflect() == rhs.reflect();
86551 #  else
86552       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subpassShading == rhs.subpassShading );
86553 #  endif
86554     }
86555 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI86556     bool operator!=( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
86557     {
86558       return !operator==( rhs );
86559     }
86560 #endif
86561 
86562   public:
86563     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceSubpassShadingFeaturesHUAWEI;
86564     void *                              pNext          = {};
86565     VULKAN_HPP_NAMESPACE::Bool32        subpassShading = {};
86566   };
86567 
86568   template <>
86569   struct CppType<StructureType, StructureType::ePhysicalDeviceSubpassShadingFeaturesHUAWEI>
86570   {
86571     using Type = PhysicalDeviceSubpassShadingFeaturesHUAWEI;
86572   };
86573 
86574   struct PhysicalDeviceSubpassShadingPropertiesHUAWEI
86575   {
86576     using NativeType = VkPhysicalDeviceSubpassShadingPropertiesHUAWEI;
86577 
86578     static const bool                                  allowDuplicate = false;
86579     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSubpassShadingPropertiesHUAWEI;
86580 
86581 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSubpassShadingPropertiesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI86582     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassShadingPropertiesHUAWEI( uint32_t maxSubpassShadingWorkgroupSizeAspectRatio_ = {},
86583                                                                        void *   pNext_                                     = nullptr ) VULKAN_HPP_NOEXCEPT
86584       : pNext{ pNext_ }
86585       , maxSubpassShadingWorkgroupSizeAspectRatio{ maxSubpassShadingWorkgroupSizeAspectRatio_ }
86586     {
86587     }
86588 
86589     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassShadingPropertiesHUAWEI( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86590 
PhysicalDeviceSubpassShadingPropertiesHUAWEIVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI86591     PhysicalDeviceSubpassShadingPropertiesHUAWEI( VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
86592       : PhysicalDeviceSubpassShadingPropertiesHUAWEI( *reinterpret_cast<PhysicalDeviceSubpassShadingPropertiesHUAWEI const *>( &rhs ) )
86593     {
86594     }
86595 
86596     PhysicalDeviceSubpassShadingPropertiesHUAWEI & operator=( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86597 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86598 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI86599     PhysicalDeviceSubpassShadingPropertiesHUAWEI & operator=( VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
86600     {
86601       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI const *>( &rhs );
86602       return *this;
86603     }
86604 
operator VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI86605     operator VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const &() const VULKAN_HPP_NOEXCEPT
86606     {
86607       return *reinterpret_cast<const VkPhysicalDeviceSubpassShadingPropertiesHUAWEI *>( this );
86608     }
86609 
operator VkPhysicalDeviceSubpassShadingPropertiesHUAWEI&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI86610     operator VkPhysicalDeviceSubpassShadingPropertiesHUAWEI &() VULKAN_HPP_NOEXCEPT
86611     {
86612       return *reinterpret_cast<VkPhysicalDeviceSubpassShadingPropertiesHUAWEI *>( this );
86613     }
86614 
86615 #if defined( VULKAN_HPP_USE_REFLECT )
86616 #  if 14 <= VULKAN_HPP_CPP_VERSION
86617     auto
86618 #  else
86619     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
86620 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI86621       reflect() const VULKAN_HPP_NOEXCEPT
86622     {
86623       return std::tie( sType, pNext, maxSubpassShadingWorkgroupSizeAspectRatio );
86624     }
86625 #endif
86626 
86627 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86628     auto operator<=>( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & ) const = default;
86629 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI86630     bool operator==( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
86631     {
86632 #  if defined( VULKAN_HPP_USE_REFLECT )
86633       return this->reflect() == rhs.reflect();
86634 #  else
86635       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxSubpassShadingWorkgroupSizeAspectRatio == rhs.maxSubpassShadingWorkgroupSizeAspectRatio );
86636 #  endif
86637     }
86638 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI86639     bool operator!=( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
86640     {
86641       return !operator==( rhs );
86642     }
86643 #endif
86644 
86645   public:
86646     VULKAN_HPP_NAMESPACE::StructureType sType                                     = StructureType::ePhysicalDeviceSubpassShadingPropertiesHUAWEI;
86647     void *                              pNext                                     = {};
86648     uint32_t                            maxSubpassShadingWorkgroupSizeAspectRatio = {};
86649   };
86650 
86651   template <>
86652   struct CppType<StructureType, StructureType::ePhysicalDeviceSubpassShadingPropertiesHUAWEI>
86653   {
86654     using Type = PhysicalDeviceSubpassShadingPropertiesHUAWEI;
86655   };
86656 
86657   struct PhysicalDeviceSurfaceInfo2KHR
86658   {
86659     using NativeType = VkPhysicalDeviceSurfaceInfo2KHR;
86660 
86661     static const bool                                  allowDuplicate = false;
86662     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSurfaceInfo2KHR;
86663 
86664 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSurfaceInfo2KHRVULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR86665     VULKAN_HPP_CONSTEXPR PhysicalDeviceSurfaceInfo2KHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
86666       : pNext{ pNext_ }
86667       , surface{ surface_ }
86668     {
86669     }
86670 
86671     VULKAN_HPP_CONSTEXPR PhysicalDeviceSurfaceInfo2KHR( PhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86672 
PhysicalDeviceSurfaceInfo2KHRVULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR86673     PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
86674       : PhysicalDeviceSurfaceInfo2KHR( *reinterpret_cast<PhysicalDeviceSurfaceInfo2KHR const *>( &rhs ) )
86675     {
86676     }
86677 
86678     PhysicalDeviceSurfaceInfo2KHR & operator=( PhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86679 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86680 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR86681     PhysicalDeviceSurfaceInfo2KHR & operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
86682     {
86683       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR const *>( &rhs );
86684       return *this;
86685     }
86686 
86687 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR86688     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSurfaceInfo2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
86689     {
86690       pNext = pNext_;
86691       return *this;
86692     }
86693 
setSurfaceVULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR86694     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSurfaceInfo2KHR & setSurface( VULKAN_HPP_NAMESPACE::SurfaceKHR surface_ ) VULKAN_HPP_NOEXCEPT
86695     {
86696       surface = surface_;
86697       return *this;
86698     }
86699 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86700 
operator VkPhysicalDeviceSurfaceInfo2KHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR86701     operator VkPhysicalDeviceSurfaceInfo2KHR const &() const VULKAN_HPP_NOEXCEPT
86702     {
86703       return *reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( this );
86704     }
86705 
operator VkPhysicalDeviceSurfaceInfo2KHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR86706     operator VkPhysicalDeviceSurfaceInfo2KHR &() VULKAN_HPP_NOEXCEPT
86707     {
86708       return *reinterpret_cast<VkPhysicalDeviceSurfaceInfo2KHR *>( this );
86709     }
86710 
86711 #if defined( VULKAN_HPP_USE_REFLECT )
86712 #  if 14 <= VULKAN_HPP_CPP_VERSION
86713     auto
86714 #  else
86715     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SurfaceKHR const &>
86716 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR86717       reflect() const VULKAN_HPP_NOEXCEPT
86718     {
86719       return std::tie( sType, pNext, surface );
86720     }
86721 #endif
86722 
86723 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86724     auto operator<=>( PhysicalDeviceSurfaceInfo2KHR const & ) const = default;
86725 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR86726     bool operator==( PhysicalDeviceSurfaceInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
86727     {
86728 #  if defined( VULKAN_HPP_USE_REFLECT )
86729       return this->reflect() == rhs.reflect();
86730 #  else
86731       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( surface == rhs.surface );
86732 #  endif
86733     }
86734 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR86735     bool operator!=( PhysicalDeviceSurfaceInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
86736     {
86737       return !operator==( rhs );
86738     }
86739 #endif
86740 
86741   public:
86742     VULKAN_HPP_NAMESPACE::StructureType sType   = StructureType::ePhysicalDeviceSurfaceInfo2KHR;
86743     const void *                        pNext   = {};
86744     VULKAN_HPP_NAMESPACE::SurfaceKHR    surface = {};
86745   };
86746 
86747   template <>
86748   struct CppType<StructureType, StructureType::ePhysicalDeviceSurfaceInfo2KHR>
86749   {
86750     using Type = PhysicalDeviceSurfaceInfo2KHR;
86751   };
86752 
86753   struct PhysicalDeviceSwapchainMaintenance1FeaturesEXT
86754   {
86755     using NativeType = VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT;
86756 
86757     static const bool                                  allowDuplicate = false;
86758     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSwapchainMaintenance1FeaturesEXT;
86759 
86760 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSwapchainMaintenance1FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT86761     VULKAN_HPP_CONSTEXPR PhysicalDeviceSwapchainMaintenance1FeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 swapchainMaintenance1_ = {},
86762                                                                          void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
86763       : pNext{ pNext_ }
86764       , swapchainMaintenance1{ swapchainMaintenance1_ }
86765     {
86766     }
86767 
86768     VULKAN_HPP_CONSTEXPR
86769       PhysicalDeviceSwapchainMaintenance1FeaturesEXT( PhysicalDeviceSwapchainMaintenance1FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86770 
PhysicalDeviceSwapchainMaintenance1FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT86771     PhysicalDeviceSwapchainMaintenance1FeaturesEXT( VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86772       : PhysicalDeviceSwapchainMaintenance1FeaturesEXT( *reinterpret_cast<PhysicalDeviceSwapchainMaintenance1FeaturesEXT const *>( &rhs ) )
86773     {
86774     }
86775 
86776     PhysicalDeviceSwapchainMaintenance1FeaturesEXT & operator=( PhysicalDeviceSwapchainMaintenance1FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86777 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86778 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT86779     PhysicalDeviceSwapchainMaintenance1FeaturesEXT & operator=( VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86780     {
86781       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT const *>( &rhs );
86782       return *this;
86783     }
86784 
86785 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT86786     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSwapchainMaintenance1FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
86787     {
86788       pNext = pNext_;
86789       return *this;
86790     }
86791 
86792     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSwapchainMaintenance1FeaturesEXT &
setSwapchainMaintenance1VULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT86793       setSwapchainMaintenance1( VULKAN_HPP_NAMESPACE::Bool32 swapchainMaintenance1_ ) VULKAN_HPP_NOEXCEPT
86794     {
86795       swapchainMaintenance1 = swapchainMaintenance1_;
86796       return *this;
86797     }
86798 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86799 
operator VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT86800     operator VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
86801     {
86802       return *reinterpret_cast<const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT *>( this );
86803     }
86804 
operator VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT86805     operator VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT &() VULKAN_HPP_NOEXCEPT
86806     {
86807       return *reinterpret_cast<VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT *>( this );
86808     }
86809 
86810 #if defined( VULKAN_HPP_USE_REFLECT )
86811 #  if 14 <= VULKAN_HPP_CPP_VERSION
86812     auto
86813 #  else
86814     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
86815 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT86816       reflect() const VULKAN_HPP_NOEXCEPT
86817     {
86818       return std::tie( sType, pNext, swapchainMaintenance1 );
86819     }
86820 #endif
86821 
86822 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86823     auto operator<=>( PhysicalDeviceSwapchainMaintenance1FeaturesEXT const & ) const = default;
86824 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT86825     bool operator==( PhysicalDeviceSwapchainMaintenance1FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86826     {
86827 #  if defined( VULKAN_HPP_USE_REFLECT )
86828       return this->reflect() == rhs.reflect();
86829 #  else
86830       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainMaintenance1 == rhs.swapchainMaintenance1 );
86831 #  endif
86832     }
86833 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT86834     bool operator!=( PhysicalDeviceSwapchainMaintenance1FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
86835     {
86836       return !operator==( rhs );
86837     }
86838 #endif
86839 
86840   public:
86841     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceSwapchainMaintenance1FeaturesEXT;
86842     void *                              pNext                 = {};
86843     VULKAN_HPP_NAMESPACE::Bool32        swapchainMaintenance1 = {};
86844   };
86845 
86846   template <>
86847   struct CppType<StructureType, StructureType::ePhysicalDeviceSwapchainMaintenance1FeaturesEXT>
86848   {
86849     using Type = PhysicalDeviceSwapchainMaintenance1FeaturesEXT;
86850   };
86851 
86852   struct PhysicalDeviceSynchronization2Features
86853   {
86854     using NativeType = VkPhysicalDeviceSynchronization2Features;
86855 
86856     static const bool                                  allowDuplicate = false;
86857     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceSynchronization2Features;
86858 
86859 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSynchronization2FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features86860     VULKAN_HPP_CONSTEXPR PhysicalDeviceSynchronization2Features( VULKAN_HPP_NAMESPACE::Bool32 synchronization2_ = {},
86861                                                                  void *                       pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
86862       : pNext{ pNext_ }
86863       , synchronization2{ synchronization2_ }
86864     {
86865     }
86866 
86867     VULKAN_HPP_CONSTEXPR PhysicalDeviceSynchronization2Features( PhysicalDeviceSynchronization2Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86868 
PhysicalDeviceSynchronization2FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features86869     PhysicalDeviceSynchronization2Features( VkPhysicalDeviceSynchronization2Features const & rhs ) VULKAN_HPP_NOEXCEPT
86870       : PhysicalDeviceSynchronization2Features( *reinterpret_cast<PhysicalDeviceSynchronization2Features const *>( &rhs ) )
86871     {
86872     }
86873 
86874     PhysicalDeviceSynchronization2Features & operator=( PhysicalDeviceSynchronization2Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86875 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86876 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features86877     PhysicalDeviceSynchronization2Features & operator=( VkPhysicalDeviceSynchronization2Features const & rhs ) VULKAN_HPP_NOEXCEPT
86878     {
86879       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features const *>( &rhs );
86880       return *this;
86881     }
86882 
86883 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features86884     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSynchronization2Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
86885     {
86886       pNext = pNext_;
86887       return *this;
86888     }
86889 
setSynchronization2VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features86890     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSynchronization2Features & setSynchronization2( VULKAN_HPP_NAMESPACE::Bool32 synchronization2_ ) VULKAN_HPP_NOEXCEPT
86891     {
86892       synchronization2 = synchronization2_;
86893       return *this;
86894     }
86895 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86896 
operator VkPhysicalDeviceSynchronization2Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features86897     operator VkPhysicalDeviceSynchronization2Features const &() const VULKAN_HPP_NOEXCEPT
86898     {
86899       return *reinterpret_cast<const VkPhysicalDeviceSynchronization2Features *>( this );
86900     }
86901 
operator VkPhysicalDeviceSynchronization2Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features86902     operator VkPhysicalDeviceSynchronization2Features &() VULKAN_HPP_NOEXCEPT
86903     {
86904       return *reinterpret_cast<VkPhysicalDeviceSynchronization2Features *>( this );
86905     }
86906 
86907 #if defined( VULKAN_HPP_USE_REFLECT )
86908 #  if 14 <= VULKAN_HPP_CPP_VERSION
86909     auto
86910 #  else
86911     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
86912 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features86913       reflect() const VULKAN_HPP_NOEXCEPT
86914     {
86915       return std::tie( sType, pNext, synchronization2 );
86916     }
86917 #endif
86918 
86919 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
86920     auto operator<=>( PhysicalDeviceSynchronization2Features const & ) const = default;
86921 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features86922     bool operator==( PhysicalDeviceSynchronization2Features const & rhs ) const VULKAN_HPP_NOEXCEPT
86923     {
86924 #  if defined( VULKAN_HPP_USE_REFLECT )
86925       return this->reflect() == rhs.reflect();
86926 #  else
86927       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( synchronization2 == rhs.synchronization2 );
86928 #  endif
86929     }
86930 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features86931     bool operator!=( PhysicalDeviceSynchronization2Features const & rhs ) const VULKAN_HPP_NOEXCEPT
86932     {
86933       return !operator==( rhs );
86934     }
86935 #endif
86936 
86937   public:
86938     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceSynchronization2Features;
86939     void *                              pNext            = {};
86940     VULKAN_HPP_NAMESPACE::Bool32        synchronization2 = {};
86941   };
86942 
86943   template <>
86944   struct CppType<StructureType, StructureType::ePhysicalDeviceSynchronization2Features>
86945   {
86946     using Type = PhysicalDeviceSynchronization2Features;
86947   };
86948 
86949   using PhysicalDeviceSynchronization2FeaturesKHR = PhysicalDeviceSynchronization2Features;
86950 
86951   struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT
86952   {
86953     using NativeType = VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT;
86954 
86955     static const bool                                  allowDuplicate = false;
86956     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT;
86957 
86958 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTexelBufferAlignmentFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT86959     VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 texelBufferAlignment_ = {},
86960                                                                         void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
86961       : pNext{ pNext_ }
86962       , texelBufferAlignment{ texelBufferAlignment_ }
86963     {
86964     }
86965 
86966     VULKAN_HPP_CONSTEXPR
86967       PhysicalDeviceTexelBufferAlignmentFeaturesEXT( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86968 
PhysicalDeviceTexelBufferAlignmentFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT86969     PhysicalDeviceTexelBufferAlignmentFeaturesEXT( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86970       : PhysicalDeviceTexelBufferAlignmentFeaturesEXT( *reinterpret_cast<PhysicalDeviceTexelBufferAlignmentFeaturesEXT const *>( &rhs ) )
86971     {
86972     }
86973 
86974     PhysicalDeviceTexelBufferAlignmentFeaturesEXT & operator=( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
86975 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
86976 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT86977     PhysicalDeviceTexelBufferAlignmentFeaturesEXT & operator=( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
86978     {
86979       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT const *>( &rhs );
86980       return *this;
86981     }
86982 
86983 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT86984     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTexelBufferAlignmentFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
86985     {
86986       pNext = pNext_;
86987       return *this;
86988     }
86989 
86990     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTexelBufferAlignmentFeaturesEXT &
setTexelBufferAlignmentVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT86991       setTexelBufferAlignment( VULKAN_HPP_NAMESPACE::Bool32 texelBufferAlignment_ ) VULKAN_HPP_NOEXCEPT
86992     {
86993       texelBufferAlignment = texelBufferAlignment_;
86994       return *this;
86995     }
86996 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
86997 
operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT86998     operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
86999     {
87000       return *reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *>( this );
87001     }
87002 
operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT87003     operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT &() VULKAN_HPP_NOEXCEPT
87004     {
87005       return *reinterpret_cast<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *>( this );
87006     }
87007 
87008 #if defined( VULKAN_HPP_USE_REFLECT )
87009 #  if 14 <= VULKAN_HPP_CPP_VERSION
87010     auto
87011 #  else
87012     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
87013 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT87014       reflect() const VULKAN_HPP_NOEXCEPT
87015     {
87016       return std::tie( sType, pNext, texelBufferAlignment );
87017     }
87018 #endif
87019 
87020 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87021     auto operator<=>( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & ) const = default;
87022 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT87023     bool operator==( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87024     {
87025 #  if defined( VULKAN_HPP_USE_REFLECT )
87026       return this->reflect() == rhs.reflect();
87027 #  else
87028       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( texelBufferAlignment == rhs.texelBufferAlignment );
87029 #  endif
87030     }
87031 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT87032     bool operator!=( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87033     {
87034       return !operator==( rhs );
87035     }
87036 #endif
87037 
87038   public:
87039     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT;
87040     void *                              pNext                = {};
87041     VULKAN_HPP_NAMESPACE::Bool32        texelBufferAlignment = {};
87042   };
87043 
87044   template <>
87045   struct CppType<StructureType, StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT>
87046   {
87047     using Type = PhysicalDeviceTexelBufferAlignmentFeaturesEXT;
87048   };
87049 
87050   struct PhysicalDeviceTexelBufferAlignmentProperties
87051   {
87052     using NativeType = VkPhysicalDeviceTexelBufferAlignmentProperties;
87053 
87054     static const bool                                  allowDuplicate = false;
87055     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceTexelBufferAlignmentProperties;
87056 
87057 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTexelBufferAlignmentPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties87058     VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentProperties( VULKAN_HPP_NAMESPACE::DeviceSize storageTexelBufferOffsetAlignmentBytes_       = {},
87059                                                                        VULKAN_HPP_NAMESPACE::Bool32     storageTexelBufferOffsetSingleTexelAlignment_ = {},
87060                                                                        VULKAN_HPP_NAMESPACE::DeviceSize uniformTexelBufferOffsetAlignmentBytes_       = {},
87061                                                                        VULKAN_HPP_NAMESPACE::Bool32     uniformTexelBufferOffsetSingleTexelAlignment_ = {},
87062                                                                        void *                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
87063       : pNext{ pNext_ }
87064       , storageTexelBufferOffsetAlignmentBytes{ storageTexelBufferOffsetAlignmentBytes_ }
87065       , storageTexelBufferOffsetSingleTexelAlignment{ storageTexelBufferOffsetSingleTexelAlignment_ }
87066       , uniformTexelBufferOffsetAlignmentBytes{ uniformTexelBufferOffsetAlignmentBytes_ }
87067       , uniformTexelBufferOffsetSingleTexelAlignment{ uniformTexelBufferOffsetSingleTexelAlignment_ }
87068     {
87069     }
87070 
87071     VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentProperties( PhysicalDeviceTexelBufferAlignmentProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87072 
PhysicalDeviceTexelBufferAlignmentPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties87073     PhysicalDeviceTexelBufferAlignmentProperties( VkPhysicalDeviceTexelBufferAlignmentProperties const & rhs ) VULKAN_HPP_NOEXCEPT
87074       : PhysicalDeviceTexelBufferAlignmentProperties( *reinterpret_cast<PhysicalDeviceTexelBufferAlignmentProperties const *>( &rhs ) )
87075     {
87076     }
87077 
87078     PhysicalDeviceTexelBufferAlignmentProperties & operator=( PhysicalDeviceTexelBufferAlignmentProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87079 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87080 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties87081     PhysicalDeviceTexelBufferAlignmentProperties & operator=( VkPhysicalDeviceTexelBufferAlignmentProperties const & rhs ) VULKAN_HPP_NOEXCEPT
87082     {
87083       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties const *>( &rhs );
87084       return *this;
87085     }
87086 
operator VkPhysicalDeviceTexelBufferAlignmentProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties87087     operator VkPhysicalDeviceTexelBufferAlignmentProperties const &() const VULKAN_HPP_NOEXCEPT
87088     {
87089       return *reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentProperties *>( this );
87090     }
87091 
operator VkPhysicalDeviceTexelBufferAlignmentProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties87092     operator VkPhysicalDeviceTexelBufferAlignmentProperties &() VULKAN_HPP_NOEXCEPT
87093     {
87094       return *reinterpret_cast<VkPhysicalDeviceTexelBufferAlignmentProperties *>( this );
87095     }
87096 
87097 #if defined( VULKAN_HPP_USE_REFLECT )
87098 #  if 14 <= VULKAN_HPP_CPP_VERSION
87099     auto
87100 #  else
87101     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
87102                void * const &,
87103                VULKAN_HPP_NAMESPACE::DeviceSize const &,
87104                VULKAN_HPP_NAMESPACE::Bool32 const &,
87105                VULKAN_HPP_NAMESPACE::DeviceSize const &,
87106                VULKAN_HPP_NAMESPACE::Bool32 const &>
87107 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties87108       reflect() const VULKAN_HPP_NOEXCEPT
87109     {
87110       return std::tie( sType,
87111                        pNext,
87112                        storageTexelBufferOffsetAlignmentBytes,
87113                        storageTexelBufferOffsetSingleTexelAlignment,
87114                        uniformTexelBufferOffsetAlignmentBytes,
87115                        uniformTexelBufferOffsetSingleTexelAlignment );
87116     }
87117 #endif
87118 
87119 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87120     auto operator<=>( PhysicalDeviceTexelBufferAlignmentProperties const & ) const = default;
87121 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties87122     bool operator==( PhysicalDeviceTexelBufferAlignmentProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
87123     {
87124 #  if defined( VULKAN_HPP_USE_REFLECT )
87125       return this->reflect() == rhs.reflect();
87126 #  else
87127       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( storageTexelBufferOffsetAlignmentBytes == rhs.storageTexelBufferOffsetAlignmentBytes ) &&
87128              ( storageTexelBufferOffsetSingleTexelAlignment == rhs.storageTexelBufferOffsetSingleTexelAlignment ) &&
87129              ( uniformTexelBufferOffsetAlignmentBytes == rhs.uniformTexelBufferOffsetAlignmentBytes ) &&
87130              ( uniformTexelBufferOffsetSingleTexelAlignment == rhs.uniformTexelBufferOffsetSingleTexelAlignment );
87131 #  endif
87132     }
87133 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties87134     bool operator!=( PhysicalDeviceTexelBufferAlignmentProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
87135     {
87136       return !operator==( rhs );
87137     }
87138 #endif
87139 
87140   public:
87141     VULKAN_HPP_NAMESPACE::StructureType sType                                        = StructureType::ePhysicalDeviceTexelBufferAlignmentProperties;
87142     void *                              pNext                                        = {};
87143     VULKAN_HPP_NAMESPACE::DeviceSize    storageTexelBufferOffsetAlignmentBytes       = {};
87144     VULKAN_HPP_NAMESPACE::Bool32        storageTexelBufferOffsetSingleTexelAlignment = {};
87145     VULKAN_HPP_NAMESPACE::DeviceSize    uniformTexelBufferOffsetAlignmentBytes       = {};
87146     VULKAN_HPP_NAMESPACE::Bool32        uniformTexelBufferOffsetSingleTexelAlignment = {};
87147   };
87148 
87149   template <>
87150   struct CppType<StructureType, StructureType::ePhysicalDeviceTexelBufferAlignmentProperties>
87151   {
87152     using Type = PhysicalDeviceTexelBufferAlignmentProperties;
87153   };
87154 
87155   using PhysicalDeviceTexelBufferAlignmentPropertiesEXT = PhysicalDeviceTexelBufferAlignmentProperties;
87156 
87157   struct PhysicalDeviceTextureCompressionASTCHDRFeatures
87158   {
87159     using NativeType = VkPhysicalDeviceTextureCompressionASTCHDRFeatures;
87160 
87161     static const bool                                  allowDuplicate = false;
87162     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeatures;
87163 
87164 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTextureCompressionASTCHDRFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures87165     VULKAN_HPP_CONSTEXPR PhysicalDeviceTextureCompressionASTCHDRFeatures( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR_ = {},
87166                                                                           void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
87167       : pNext{ pNext_ }
87168       , textureCompressionASTC_HDR{ textureCompressionASTC_HDR_ }
87169     {
87170     }
87171 
87172     VULKAN_HPP_CONSTEXPR
87173       PhysicalDeviceTextureCompressionASTCHDRFeatures( PhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87174 
PhysicalDeviceTextureCompressionASTCHDRFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures87175     PhysicalDeviceTextureCompressionASTCHDRFeatures( VkPhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
87176       : PhysicalDeviceTextureCompressionASTCHDRFeatures( *reinterpret_cast<PhysicalDeviceTextureCompressionASTCHDRFeatures const *>( &rhs ) )
87177     {
87178     }
87179 
87180     PhysicalDeviceTextureCompressionASTCHDRFeatures & operator=( PhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87181 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87182 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures87183     PhysicalDeviceTextureCompressionASTCHDRFeatures & operator=( VkPhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
87184     {
87185       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures const *>( &rhs );
87186       return *this;
87187     }
87188 
87189 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures87190     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTextureCompressionASTCHDRFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
87191     {
87192       pNext = pNext_;
87193       return *this;
87194     }
87195 
87196     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTextureCompressionASTCHDRFeatures &
setTextureCompressionASTC_HDRVULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures87197       setTextureCompressionASTC_HDR( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR_ ) VULKAN_HPP_NOEXCEPT
87198     {
87199       textureCompressionASTC_HDR = textureCompressionASTC_HDR_;
87200       return *this;
87201     }
87202 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
87203 
operator VkPhysicalDeviceTextureCompressionASTCHDRFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures87204     operator VkPhysicalDeviceTextureCompressionASTCHDRFeatures const &() const VULKAN_HPP_NOEXCEPT
87205     {
87206       return *reinterpret_cast<const VkPhysicalDeviceTextureCompressionASTCHDRFeatures *>( this );
87207     }
87208 
operator VkPhysicalDeviceTextureCompressionASTCHDRFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures87209     operator VkPhysicalDeviceTextureCompressionASTCHDRFeatures &() VULKAN_HPP_NOEXCEPT
87210     {
87211       return *reinterpret_cast<VkPhysicalDeviceTextureCompressionASTCHDRFeatures *>( this );
87212     }
87213 
87214 #if defined( VULKAN_HPP_USE_REFLECT )
87215 #  if 14 <= VULKAN_HPP_CPP_VERSION
87216     auto
87217 #  else
87218     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
87219 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures87220       reflect() const VULKAN_HPP_NOEXCEPT
87221     {
87222       return std::tie( sType, pNext, textureCompressionASTC_HDR );
87223     }
87224 #endif
87225 
87226 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87227     auto operator<=>( PhysicalDeviceTextureCompressionASTCHDRFeatures const & ) const = default;
87228 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures87229     bool operator==( PhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
87230     {
87231 #  if defined( VULKAN_HPP_USE_REFLECT )
87232       return this->reflect() == rhs.reflect();
87233 #  else
87234       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( textureCompressionASTC_HDR == rhs.textureCompressionASTC_HDR );
87235 #  endif
87236     }
87237 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures87238     bool operator!=( PhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
87239     {
87240       return !operator==( rhs );
87241     }
87242 #endif
87243 
87244   public:
87245     VULKAN_HPP_NAMESPACE::StructureType sType                      = StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeatures;
87246     void *                              pNext                      = {};
87247     VULKAN_HPP_NAMESPACE::Bool32        textureCompressionASTC_HDR = {};
87248   };
87249 
87250   template <>
87251   struct CppType<StructureType, StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeatures>
87252   {
87253     using Type = PhysicalDeviceTextureCompressionASTCHDRFeatures;
87254   };
87255 
87256   using PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = PhysicalDeviceTextureCompressionASTCHDRFeatures;
87257 
87258   struct PhysicalDeviceTilePropertiesFeaturesQCOM
87259   {
87260     using NativeType = VkPhysicalDeviceTilePropertiesFeaturesQCOM;
87261 
87262     static const bool                                  allowDuplicate = false;
87263     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceTilePropertiesFeaturesQCOM;
87264 
87265 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTilePropertiesFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM87266     VULKAN_HPP_CONSTEXPR PhysicalDeviceTilePropertiesFeaturesQCOM( VULKAN_HPP_NAMESPACE::Bool32 tileProperties_ = {},
87267                                                                    void *                       pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
87268       : pNext{ pNext_ }
87269       , tileProperties{ tileProperties_ }
87270     {
87271     }
87272 
87273     VULKAN_HPP_CONSTEXPR PhysicalDeviceTilePropertiesFeaturesQCOM( PhysicalDeviceTilePropertiesFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87274 
PhysicalDeviceTilePropertiesFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM87275     PhysicalDeviceTilePropertiesFeaturesQCOM( VkPhysicalDeviceTilePropertiesFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
87276       : PhysicalDeviceTilePropertiesFeaturesQCOM( *reinterpret_cast<PhysicalDeviceTilePropertiesFeaturesQCOM const *>( &rhs ) )
87277     {
87278     }
87279 
87280     PhysicalDeviceTilePropertiesFeaturesQCOM & operator=( PhysicalDeviceTilePropertiesFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87281 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87282 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM87283     PhysicalDeviceTilePropertiesFeaturesQCOM & operator=( VkPhysicalDeviceTilePropertiesFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
87284     {
87285       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM const *>( &rhs );
87286       return *this;
87287     }
87288 
87289 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM87290     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTilePropertiesFeaturesQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
87291     {
87292       pNext = pNext_;
87293       return *this;
87294     }
87295 
setTilePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM87296     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTilePropertiesFeaturesQCOM & setTileProperties( VULKAN_HPP_NAMESPACE::Bool32 tileProperties_ ) VULKAN_HPP_NOEXCEPT
87297     {
87298       tileProperties = tileProperties_;
87299       return *this;
87300     }
87301 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
87302 
operator VkPhysicalDeviceTilePropertiesFeaturesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM87303     operator VkPhysicalDeviceTilePropertiesFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT
87304     {
87305       return *reinterpret_cast<const VkPhysicalDeviceTilePropertiesFeaturesQCOM *>( this );
87306     }
87307 
operator VkPhysicalDeviceTilePropertiesFeaturesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM87308     operator VkPhysicalDeviceTilePropertiesFeaturesQCOM &() VULKAN_HPP_NOEXCEPT
87309     {
87310       return *reinterpret_cast<VkPhysicalDeviceTilePropertiesFeaturesQCOM *>( this );
87311     }
87312 
87313 #if defined( VULKAN_HPP_USE_REFLECT )
87314 #  if 14 <= VULKAN_HPP_CPP_VERSION
87315     auto
87316 #  else
87317     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
87318 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM87319       reflect() const VULKAN_HPP_NOEXCEPT
87320     {
87321       return std::tie( sType, pNext, tileProperties );
87322     }
87323 #endif
87324 
87325 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87326     auto operator<=>( PhysicalDeviceTilePropertiesFeaturesQCOM const & ) const = default;
87327 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM87328     bool operator==( PhysicalDeviceTilePropertiesFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
87329     {
87330 #  if defined( VULKAN_HPP_USE_REFLECT )
87331       return this->reflect() == rhs.reflect();
87332 #  else
87333       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tileProperties == rhs.tileProperties );
87334 #  endif
87335     }
87336 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM87337     bool operator!=( PhysicalDeviceTilePropertiesFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
87338     {
87339       return !operator==( rhs );
87340     }
87341 #endif
87342 
87343   public:
87344     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePhysicalDeviceTilePropertiesFeaturesQCOM;
87345     void *                              pNext          = {};
87346     VULKAN_HPP_NAMESPACE::Bool32        tileProperties = {};
87347   };
87348 
87349   template <>
87350   struct CppType<StructureType, StructureType::ePhysicalDeviceTilePropertiesFeaturesQCOM>
87351   {
87352     using Type = PhysicalDeviceTilePropertiesFeaturesQCOM;
87353   };
87354 
87355   struct PhysicalDeviceTimelineSemaphoreFeatures
87356   {
87357     using NativeType = VkPhysicalDeviceTimelineSemaphoreFeatures;
87358 
87359     static const bool                                  allowDuplicate = false;
87360     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceTimelineSemaphoreFeatures;
87361 
87362 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTimelineSemaphoreFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures87363     VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreFeatures( VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_ = {},
87364                                                                   void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
87365       : pNext{ pNext_ }
87366       , timelineSemaphore{ timelineSemaphore_ }
87367     {
87368     }
87369 
87370     VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreFeatures( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87371 
PhysicalDeviceTimelineSemaphoreFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures87372     PhysicalDeviceTimelineSemaphoreFeatures( VkPhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
87373       : PhysicalDeviceTimelineSemaphoreFeatures( *reinterpret_cast<PhysicalDeviceTimelineSemaphoreFeatures const *>( &rhs ) )
87374     {
87375     }
87376 
87377     PhysicalDeviceTimelineSemaphoreFeatures & operator=( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87378 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87379 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures87380     PhysicalDeviceTimelineSemaphoreFeatures & operator=( VkPhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
87381     {
87382       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures const *>( &rhs );
87383       return *this;
87384     }
87385 
87386 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures87387     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTimelineSemaphoreFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
87388     {
87389       pNext = pNext_;
87390       return *this;
87391     }
87392 
87393     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTimelineSemaphoreFeatures &
setTimelineSemaphoreVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures87394       setTimelineSemaphore( VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_ ) VULKAN_HPP_NOEXCEPT
87395     {
87396       timelineSemaphore = timelineSemaphore_;
87397       return *this;
87398     }
87399 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
87400 
operator VkPhysicalDeviceTimelineSemaphoreFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures87401     operator VkPhysicalDeviceTimelineSemaphoreFeatures const &() const VULKAN_HPP_NOEXCEPT
87402     {
87403       return *reinterpret_cast<const VkPhysicalDeviceTimelineSemaphoreFeatures *>( this );
87404     }
87405 
operator VkPhysicalDeviceTimelineSemaphoreFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures87406     operator VkPhysicalDeviceTimelineSemaphoreFeatures &() VULKAN_HPP_NOEXCEPT
87407     {
87408       return *reinterpret_cast<VkPhysicalDeviceTimelineSemaphoreFeatures *>( this );
87409     }
87410 
87411 #if defined( VULKAN_HPP_USE_REFLECT )
87412 #  if 14 <= VULKAN_HPP_CPP_VERSION
87413     auto
87414 #  else
87415     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
87416 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures87417       reflect() const VULKAN_HPP_NOEXCEPT
87418     {
87419       return std::tie( sType, pNext, timelineSemaphore );
87420     }
87421 #endif
87422 
87423 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87424     auto operator<=>( PhysicalDeviceTimelineSemaphoreFeatures const & ) const = default;
87425 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures87426     bool operator==( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
87427     {
87428 #  if defined( VULKAN_HPP_USE_REFLECT )
87429       return this->reflect() == rhs.reflect();
87430 #  else
87431       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( timelineSemaphore == rhs.timelineSemaphore );
87432 #  endif
87433     }
87434 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures87435     bool operator!=( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
87436     {
87437       return !operator==( rhs );
87438     }
87439 #endif
87440 
87441   public:
87442     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceTimelineSemaphoreFeatures;
87443     void *                              pNext             = {};
87444     VULKAN_HPP_NAMESPACE::Bool32        timelineSemaphore = {};
87445   };
87446 
87447   template <>
87448   struct CppType<StructureType, StructureType::ePhysicalDeviceTimelineSemaphoreFeatures>
87449   {
87450     using Type = PhysicalDeviceTimelineSemaphoreFeatures;
87451   };
87452 
87453   using PhysicalDeviceTimelineSemaphoreFeaturesKHR = PhysicalDeviceTimelineSemaphoreFeatures;
87454 
87455   struct PhysicalDeviceTimelineSemaphoreProperties
87456   {
87457     using NativeType = VkPhysicalDeviceTimelineSemaphoreProperties;
87458 
87459     static const bool                                  allowDuplicate = false;
87460     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceTimelineSemaphoreProperties;
87461 
87462 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTimelineSemaphorePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties87463     VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreProperties( uint64_t maxTimelineSemaphoreValueDifference_ = {},
87464                                                                     void *   pNext_                               = nullptr ) VULKAN_HPP_NOEXCEPT
87465       : pNext{ pNext_ }
87466       , maxTimelineSemaphoreValueDifference{ maxTimelineSemaphoreValueDifference_ }
87467     {
87468     }
87469 
87470     VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreProperties( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87471 
PhysicalDeviceTimelineSemaphorePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties87472     PhysicalDeviceTimelineSemaphoreProperties( VkPhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT
87473       : PhysicalDeviceTimelineSemaphoreProperties( *reinterpret_cast<PhysicalDeviceTimelineSemaphoreProperties const *>( &rhs ) )
87474     {
87475     }
87476 
87477     PhysicalDeviceTimelineSemaphoreProperties & operator=( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87478 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87479 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties87480     PhysicalDeviceTimelineSemaphoreProperties & operator=( VkPhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT
87481     {
87482       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties const *>( &rhs );
87483       return *this;
87484     }
87485 
operator VkPhysicalDeviceTimelineSemaphoreProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties87486     operator VkPhysicalDeviceTimelineSemaphoreProperties const &() const VULKAN_HPP_NOEXCEPT
87487     {
87488       return *reinterpret_cast<const VkPhysicalDeviceTimelineSemaphoreProperties *>( this );
87489     }
87490 
operator VkPhysicalDeviceTimelineSemaphoreProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties87491     operator VkPhysicalDeviceTimelineSemaphoreProperties &() VULKAN_HPP_NOEXCEPT
87492     {
87493       return *reinterpret_cast<VkPhysicalDeviceTimelineSemaphoreProperties *>( this );
87494     }
87495 
87496 #if defined( VULKAN_HPP_USE_REFLECT )
87497 #  if 14 <= VULKAN_HPP_CPP_VERSION
87498     auto
87499 #  else
87500     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint64_t const &>
87501 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties87502       reflect() const VULKAN_HPP_NOEXCEPT
87503     {
87504       return std::tie( sType, pNext, maxTimelineSemaphoreValueDifference );
87505     }
87506 #endif
87507 
87508 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87509     auto operator<=>( PhysicalDeviceTimelineSemaphoreProperties const & ) const = default;
87510 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties87511     bool operator==( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
87512     {
87513 #  if defined( VULKAN_HPP_USE_REFLECT )
87514       return this->reflect() == rhs.reflect();
87515 #  else
87516       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxTimelineSemaphoreValueDifference == rhs.maxTimelineSemaphoreValueDifference );
87517 #  endif
87518     }
87519 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties87520     bool operator!=( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
87521     {
87522       return !operator==( rhs );
87523     }
87524 #endif
87525 
87526   public:
87527     VULKAN_HPP_NAMESPACE::StructureType sType                               = StructureType::ePhysicalDeviceTimelineSemaphoreProperties;
87528     void *                              pNext                               = {};
87529     uint64_t                            maxTimelineSemaphoreValueDifference = {};
87530   };
87531 
87532   template <>
87533   struct CppType<StructureType, StructureType::ePhysicalDeviceTimelineSemaphoreProperties>
87534   {
87535     using Type = PhysicalDeviceTimelineSemaphoreProperties;
87536   };
87537 
87538   using PhysicalDeviceTimelineSemaphorePropertiesKHR = PhysicalDeviceTimelineSemaphoreProperties;
87539 
87540   struct PhysicalDeviceToolProperties
87541   {
87542     using NativeType = VkPhysicalDeviceToolProperties;
87543 
87544     static const bool                                  allowDuplicate = false;
87545     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceToolProperties;
87546 
87547 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceToolPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties87548     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceToolProperties( std::array<char, VK_MAX_EXTENSION_NAME_SIZE> const & name_        = {},
87549                                                           std::array<char, VK_MAX_EXTENSION_NAME_SIZE> const & version_     = {},
87550                                                           VULKAN_HPP_NAMESPACE::ToolPurposeFlags               purposes_    = {},
87551                                                           std::array<char, VK_MAX_DESCRIPTION_SIZE> const &    description_ = {},
87552                                                           std::array<char, VK_MAX_EXTENSION_NAME_SIZE> const & layer_       = {},
87553                                                           void *                                               pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
87554       : pNext{ pNext_ }
87555       , name{ name_ }
87556       , version{ version_ }
87557       , purposes{ purposes_ }
87558       , description{ description_ }
87559       , layer{ layer_ }
87560     {
87561     }
87562 
87563     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceToolProperties( PhysicalDeviceToolProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87564 
PhysicalDeviceToolPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties87565     PhysicalDeviceToolProperties( VkPhysicalDeviceToolProperties const & rhs ) VULKAN_HPP_NOEXCEPT
87566       : PhysicalDeviceToolProperties( *reinterpret_cast<PhysicalDeviceToolProperties const *>( &rhs ) )
87567     {
87568     }
87569 
87570 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PhysicalDeviceToolPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties87571     PhysicalDeviceToolProperties( std::string const &                    name_,
87572                                   std::string const &                    version_     = {},
87573                                   VULKAN_HPP_NAMESPACE::ToolPurposeFlags purposes_    = {},
87574                                   std::string const &                    description_ = {},
87575                                   std::string const &                    layer_       = {},
87576                                   void *                                 pNext_       = nullptr )
87577       : pNext( pNext_ ), purposes( purposes_ )
87578     {
87579       VULKAN_HPP_ASSERT( name_.size() < VK_MAX_EXTENSION_NAME_SIZE );
87580 #    if defined( WIN32 )
87581       strncpy_s( name, VK_MAX_EXTENSION_NAME_SIZE, name_.data(), name_.size() );
87582 #    else
87583       strncpy( name, name_.data(), std::min<size_t>( VK_MAX_EXTENSION_NAME_SIZE, name_.size() ) );
87584 #    endif
87585 
87586       VULKAN_HPP_ASSERT( version_.size() < VK_MAX_EXTENSION_NAME_SIZE );
87587 #    if defined( WIN32 )
87588       strncpy_s( version, VK_MAX_EXTENSION_NAME_SIZE, version_.data(), version_.size() );
87589 #    else
87590       strncpy( version, version_.data(), std::min<size_t>( VK_MAX_EXTENSION_NAME_SIZE, version_.size() ) );
87591 #    endif
87592 
87593       VULKAN_HPP_ASSERT( description_.size() < VK_MAX_DESCRIPTION_SIZE );
87594 #    if defined( WIN32 )
87595       strncpy_s( description, VK_MAX_DESCRIPTION_SIZE, description_.data(), description_.size() );
87596 #    else
87597       strncpy( description, description_.data(), std::min<size_t>( VK_MAX_DESCRIPTION_SIZE, description_.size() ) );
87598 #    endif
87599 
87600       VULKAN_HPP_ASSERT( layer_.size() < VK_MAX_EXTENSION_NAME_SIZE );
87601 #    if defined( WIN32 )
87602       strncpy_s( layer, VK_MAX_EXTENSION_NAME_SIZE, layer_.data(), layer_.size() );
87603 #    else
87604       strncpy( layer, layer_.data(), std::min<size_t>( VK_MAX_EXTENSION_NAME_SIZE, layer_.size() ) );
87605 #    endif
87606     }
87607 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
87608 
87609     PhysicalDeviceToolProperties & operator=( PhysicalDeviceToolProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87610 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87611 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties87612     PhysicalDeviceToolProperties & operator=( VkPhysicalDeviceToolProperties const & rhs ) VULKAN_HPP_NOEXCEPT
87613     {
87614       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties const *>( &rhs );
87615       return *this;
87616     }
87617 
operator VkPhysicalDeviceToolProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties87618     operator VkPhysicalDeviceToolProperties const &() const VULKAN_HPP_NOEXCEPT
87619     {
87620       return *reinterpret_cast<const VkPhysicalDeviceToolProperties *>( this );
87621     }
87622 
operator VkPhysicalDeviceToolProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties87623     operator VkPhysicalDeviceToolProperties &() VULKAN_HPP_NOEXCEPT
87624     {
87625       return *reinterpret_cast<VkPhysicalDeviceToolProperties *>( this );
87626     }
87627 
87628 #if defined( VULKAN_HPP_USE_REFLECT )
87629 #  if 14 <= VULKAN_HPP_CPP_VERSION
87630     auto
87631 #  else
87632     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
87633                void * const &,
87634                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> const &,
87635                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> const &,
87636                VULKAN_HPP_NAMESPACE::ToolPurposeFlags const &,
87637                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
87638                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> const &>
87639 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties87640       reflect() const VULKAN_HPP_NOEXCEPT
87641     {
87642       return std::tie( sType, pNext, name, version, purposes, description, layer );
87643     }
87644 #endif
87645 
87646 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties87647     std::strong_ordering operator<=>( PhysicalDeviceToolProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
87648     {
87649       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
87650         return cmp;
87651       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
87652         return cmp;
87653       if ( auto cmp = strcmp( name, rhs.name ); cmp != 0 )
87654         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
87655       if ( auto cmp = strcmp( version, rhs.version ); cmp != 0 )
87656         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
87657       if ( auto cmp = purposes <=> rhs.purposes; cmp != 0 )
87658         return cmp;
87659       if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 )
87660         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
87661       if ( auto cmp = strcmp( layer, rhs.layer ); cmp != 0 )
87662         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
87663 
87664       return std::strong_ordering::equivalent;
87665     }
87666 #endif
87667 
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties87668     bool operator==( PhysicalDeviceToolProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
87669     {
87670       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( strcmp( name, rhs.name ) == 0 ) && ( strcmp( version, rhs.version ) == 0 ) &&
87671              ( purposes == rhs.purposes ) && ( strcmp( description, rhs.description ) == 0 ) && ( strcmp( layer, rhs.layer ) == 0 );
87672     }
87673 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties87674     bool operator!=( PhysicalDeviceToolProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
87675     {
87676       return !operator==( rhs );
87677     }
87678 
87679   public:
87680     VULKAN_HPP_NAMESPACE::StructureType                                    sType       = StructureType::ePhysicalDeviceToolProperties;
87681     void *                                                                 pNext       = {};
87682     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> name        = {};
87683     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> version     = {};
87684     VULKAN_HPP_NAMESPACE::ToolPurposeFlags                                 purposes    = {};
87685     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE>    description = {};
87686     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> layer       = {};
87687   };
87688 
87689   template <>
87690   struct CppType<StructureType, StructureType::ePhysicalDeviceToolProperties>
87691   {
87692     using Type = PhysicalDeviceToolProperties;
87693   };
87694 
87695   using PhysicalDeviceToolPropertiesEXT = PhysicalDeviceToolProperties;
87696 
87697   struct PhysicalDeviceTransformFeedbackFeaturesEXT
87698   {
87699     using NativeType = VkPhysicalDeviceTransformFeedbackFeaturesEXT;
87700 
87701     static const bool                                  allowDuplicate = false;
87702     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT;
87703 
87704 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTransformFeedbackFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT87705     VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 transformFeedback_ = {},
87706                                                                      VULKAN_HPP_NAMESPACE::Bool32 geometryStreams_   = {},
87707                                                                      void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
87708       : pNext{ pNext_ }
87709       , transformFeedback{ transformFeedback_ }
87710       , geometryStreams{ geometryStreams_ }
87711     {
87712     }
87713 
87714     VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackFeaturesEXT( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87715 
PhysicalDeviceTransformFeedbackFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT87716     PhysicalDeviceTransformFeedbackFeaturesEXT( VkPhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
87717       : PhysicalDeviceTransformFeedbackFeaturesEXT( *reinterpret_cast<PhysicalDeviceTransformFeedbackFeaturesEXT const *>( &rhs ) )
87718     {
87719     }
87720 
87721     PhysicalDeviceTransformFeedbackFeaturesEXT & operator=( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87722 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87723 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT87724     PhysicalDeviceTransformFeedbackFeaturesEXT & operator=( VkPhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
87725     {
87726       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT const *>( &rhs );
87727       return *this;
87728     }
87729 
87730 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT87731     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
87732     {
87733       pNext = pNext_;
87734       return *this;
87735     }
87736 
87737     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackFeaturesEXT &
setTransformFeedbackVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT87738       setTransformFeedback( VULKAN_HPP_NAMESPACE::Bool32 transformFeedback_ ) VULKAN_HPP_NOEXCEPT
87739     {
87740       transformFeedback = transformFeedback_;
87741       return *this;
87742     }
87743 
setGeometryStreamsVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT87744     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackFeaturesEXT & setGeometryStreams( VULKAN_HPP_NAMESPACE::Bool32 geometryStreams_ ) VULKAN_HPP_NOEXCEPT
87745     {
87746       geometryStreams = geometryStreams_;
87747       return *this;
87748     }
87749 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
87750 
operator VkPhysicalDeviceTransformFeedbackFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT87751     operator VkPhysicalDeviceTransformFeedbackFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
87752     {
87753       return *reinterpret_cast<const VkPhysicalDeviceTransformFeedbackFeaturesEXT *>( this );
87754     }
87755 
operator VkPhysicalDeviceTransformFeedbackFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT87756     operator VkPhysicalDeviceTransformFeedbackFeaturesEXT &() VULKAN_HPP_NOEXCEPT
87757     {
87758       return *reinterpret_cast<VkPhysicalDeviceTransformFeedbackFeaturesEXT *>( this );
87759     }
87760 
87761 #if defined( VULKAN_HPP_USE_REFLECT )
87762 #  if 14 <= VULKAN_HPP_CPP_VERSION
87763     auto
87764 #  else
87765     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
87766 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT87767       reflect() const VULKAN_HPP_NOEXCEPT
87768     {
87769       return std::tie( sType, pNext, transformFeedback, geometryStreams );
87770     }
87771 #endif
87772 
87773 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87774     auto operator<=>( PhysicalDeviceTransformFeedbackFeaturesEXT const & ) const = default;
87775 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT87776     bool operator==( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87777     {
87778 #  if defined( VULKAN_HPP_USE_REFLECT )
87779       return this->reflect() == rhs.reflect();
87780 #  else
87781       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( transformFeedback == rhs.transformFeedback ) && ( geometryStreams == rhs.geometryStreams );
87782 #  endif
87783     }
87784 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT87785     bool operator!=( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87786     {
87787       return !operator==( rhs );
87788     }
87789 #endif
87790 
87791   public:
87792     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT;
87793     void *                              pNext             = {};
87794     VULKAN_HPP_NAMESPACE::Bool32        transformFeedback = {};
87795     VULKAN_HPP_NAMESPACE::Bool32        geometryStreams   = {};
87796   };
87797 
87798   template <>
87799   struct CppType<StructureType, StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT>
87800   {
87801     using Type = PhysicalDeviceTransformFeedbackFeaturesEXT;
87802   };
87803 
87804   struct PhysicalDeviceTransformFeedbackPropertiesEXT
87805   {
87806     using NativeType = VkPhysicalDeviceTransformFeedbackPropertiesEXT;
87807 
87808     static const bool                                  allowDuplicate = false;
87809     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT;
87810 
87811 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTransformFeedbackPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT87812     VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackPropertiesEXT( uint32_t                         maxTransformFeedbackStreams_                = {},
87813                                                                        uint32_t                         maxTransformFeedbackBuffers_                = {},
87814                                                                        VULKAN_HPP_NAMESPACE::DeviceSize maxTransformFeedbackBufferSize_             = {},
87815                                                                        uint32_t                         maxTransformFeedbackStreamDataSize_         = {},
87816                                                                        uint32_t                         maxTransformFeedbackBufferDataSize_         = {},
87817                                                                        uint32_t                         maxTransformFeedbackBufferDataStride_       = {},
87818                                                                        VULKAN_HPP_NAMESPACE::Bool32     transformFeedbackQueries_                   = {},
87819                                                                        VULKAN_HPP_NAMESPACE::Bool32     transformFeedbackStreamsLinesTriangles_     = {},
87820                                                                        VULKAN_HPP_NAMESPACE::Bool32     transformFeedbackRasterizationStreamSelect_ = {},
87821                                                                        VULKAN_HPP_NAMESPACE::Bool32     transformFeedbackDraw_                      = {},
87822                                                                        void *                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
87823       : pNext{ pNext_ }
87824       , maxTransformFeedbackStreams{ maxTransformFeedbackStreams_ }
87825       , maxTransformFeedbackBuffers{ maxTransformFeedbackBuffers_ }
87826       , maxTransformFeedbackBufferSize{ maxTransformFeedbackBufferSize_ }
87827       , maxTransformFeedbackStreamDataSize{ maxTransformFeedbackStreamDataSize_ }
87828       , maxTransformFeedbackBufferDataSize{ maxTransformFeedbackBufferDataSize_ }
87829       , maxTransformFeedbackBufferDataStride{ maxTransformFeedbackBufferDataStride_ }
87830       , transformFeedbackQueries{ transformFeedbackQueries_ }
87831       , transformFeedbackStreamsLinesTriangles{ transformFeedbackStreamsLinesTriangles_ }
87832       , transformFeedbackRasterizationStreamSelect{ transformFeedbackRasterizationStreamSelect_ }
87833       , transformFeedbackDraw{ transformFeedbackDraw_ }
87834     {
87835     }
87836 
87837     VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackPropertiesEXT( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87838 
PhysicalDeviceTransformFeedbackPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT87839     PhysicalDeviceTransformFeedbackPropertiesEXT( VkPhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
87840       : PhysicalDeviceTransformFeedbackPropertiesEXT( *reinterpret_cast<PhysicalDeviceTransformFeedbackPropertiesEXT const *>( &rhs ) )
87841     {
87842     }
87843 
87844     PhysicalDeviceTransformFeedbackPropertiesEXT & operator=( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87845 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87846 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT87847     PhysicalDeviceTransformFeedbackPropertiesEXT & operator=( VkPhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
87848     {
87849       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT const *>( &rhs );
87850       return *this;
87851     }
87852 
operator VkPhysicalDeviceTransformFeedbackPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT87853     operator VkPhysicalDeviceTransformFeedbackPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
87854     {
87855       return *reinterpret_cast<const VkPhysicalDeviceTransformFeedbackPropertiesEXT *>( this );
87856     }
87857 
operator VkPhysicalDeviceTransformFeedbackPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT87858     operator VkPhysicalDeviceTransformFeedbackPropertiesEXT &() VULKAN_HPP_NOEXCEPT
87859     {
87860       return *reinterpret_cast<VkPhysicalDeviceTransformFeedbackPropertiesEXT *>( this );
87861     }
87862 
87863 #if defined( VULKAN_HPP_USE_REFLECT )
87864 #  if 14 <= VULKAN_HPP_CPP_VERSION
87865     auto
87866 #  else
87867     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
87868                void * const &,
87869                uint32_t const &,
87870                uint32_t const &,
87871                VULKAN_HPP_NAMESPACE::DeviceSize const &,
87872                uint32_t const &,
87873                uint32_t const &,
87874                uint32_t const &,
87875                VULKAN_HPP_NAMESPACE::Bool32 const &,
87876                VULKAN_HPP_NAMESPACE::Bool32 const &,
87877                VULKAN_HPP_NAMESPACE::Bool32 const &,
87878                VULKAN_HPP_NAMESPACE::Bool32 const &>
87879 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT87880       reflect() const VULKAN_HPP_NOEXCEPT
87881     {
87882       return std::tie( sType,
87883                        pNext,
87884                        maxTransformFeedbackStreams,
87885                        maxTransformFeedbackBuffers,
87886                        maxTransformFeedbackBufferSize,
87887                        maxTransformFeedbackStreamDataSize,
87888                        maxTransformFeedbackBufferDataSize,
87889                        maxTransformFeedbackBufferDataStride,
87890                        transformFeedbackQueries,
87891                        transformFeedbackStreamsLinesTriangles,
87892                        transformFeedbackRasterizationStreamSelect,
87893                        transformFeedbackDraw );
87894     }
87895 #endif
87896 
87897 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
87898     auto operator<=>( PhysicalDeviceTransformFeedbackPropertiesEXT const & ) const = default;
87899 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT87900     bool operator==( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87901     {
87902 #  if defined( VULKAN_HPP_USE_REFLECT )
87903       return this->reflect() == rhs.reflect();
87904 #  else
87905       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxTransformFeedbackStreams == rhs.maxTransformFeedbackStreams ) &&
87906              ( maxTransformFeedbackBuffers == rhs.maxTransformFeedbackBuffers ) && ( maxTransformFeedbackBufferSize == rhs.maxTransformFeedbackBufferSize ) &&
87907              ( maxTransformFeedbackStreamDataSize == rhs.maxTransformFeedbackStreamDataSize ) &&
87908              ( maxTransformFeedbackBufferDataSize == rhs.maxTransformFeedbackBufferDataSize ) &&
87909              ( maxTransformFeedbackBufferDataStride == rhs.maxTransformFeedbackBufferDataStride ) &&
87910              ( transformFeedbackQueries == rhs.transformFeedbackQueries ) &&
87911              ( transformFeedbackStreamsLinesTriangles == rhs.transformFeedbackStreamsLinesTriangles ) &&
87912              ( transformFeedbackRasterizationStreamSelect == rhs.transformFeedbackRasterizationStreamSelect ) &&
87913              ( transformFeedbackDraw == rhs.transformFeedbackDraw );
87914 #  endif
87915     }
87916 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT87917     bool operator!=( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
87918     {
87919       return !operator==( rhs );
87920     }
87921 #endif
87922 
87923   public:
87924     VULKAN_HPP_NAMESPACE::StructureType sType                                      = StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT;
87925     void *                              pNext                                      = {};
87926     uint32_t                            maxTransformFeedbackStreams                = {};
87927     uint32_t                            maxTransformFeedbackBuffers                = {};
87928     VULKAN_HPP_NAMESPACE::DeviceSize    maxTransformFeedbackBufferSize             = {};
87929     uint32_t                            maxTransformFeedbackStreamDataSize         = {};
87930     uint32_t                            maxTransformFeedbackBufferDataSize         = {};
87931     uint32_t                            maxTransformFeedbackBufferDataStride       = {};
87932     VULKAN_HPP_NAMESPACE::Bool32        transformFeedbackQueries                   = {};
87933     VULKAN_HPP_NAMESPACE::Bool32        transformFeedbackStreamsLinesTriangles     = {};
87934     VULKAN_HPP_NAMESPACE::Bool32        transformFeedbackRasterizationStreamSelect = {};
87935     VULKAN_HPP_NAMESPACE::Bool32        transformFeedbackDraw                      = {};
87936   };
87937 
87938   template <>
87939   struct CppType<StructureType, StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT>
87940   {
87941     using Type = PhysicalDeviceTransformFeedbackPropertiesEXT;
87942   };
87943 
87944   struct PhysicalDeviceUniformBufferStandardLayoutFeatures
87945   {
87946     using NativeType = VkPhysicalDeviceUniformBufferStandardLayoutFeatures;
87947 
87948     static const bool                                  allowDuplicate = false;
87949     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures;
87950 
87951 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceUniformBufferStandardLayoutFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures87952     VULKAN_HPP_CONSTEXPR PhysicalDeviceUniformBufferStandardLayoutFeatures( VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_ = {},
87953                                                                             void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
87954       : pNext{ pNext_ }
87955       , uniformBufferStandardLayout{ uniformBufferStandardLayout_ }
87956     {
87957     }
87958 
87959     VULKAN_HPP_CONSTEXPR
87960       PhysicalDeviceUniformBufferStandardLayoutFeatures( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87961 
PhysicalDeviceUniformBufferStandardLayoutFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures87962     PhysicalDeviceUniformBufferStandardLayoutFeatures( VkPhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
87963       : PhysicalDeviceUniformBufferStandardLayoutFeatures( *reinterpret_cast<PhysicalDeviceUniformBufferStandardLayoutFeatures const *>( &rhs ) )
87964     {
87965     }
87966 
87967     PhysicalDeviceUniformBufferStandardLayoutFeatures &
87968       operator=( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
87969 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
87970 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures87971     PhysicalDeviceUniformBufferStandardLayoutFeatures & operator=( VkPhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
87972     {
87973       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures const *>( &rhs );
87974       return *this;
87975     }
87976 
87977 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures87978     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUniformBufferStandardLayoutFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
87979     {
87980       pNext = pNext_;
87981       return *this;
87982     }
87983 
87984     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUniformBufferStandardLayoutFeatures &
setUniformBufferStandardLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures87985       setUniformBufferStandardLayout( VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_ ) VULKAN_HPP_NOEXCEPT
87986     {
87987       uniformBufferStandardLayout = uniformBufferStandardLayout_;
87988       return *this;
87989     }
87990 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
87991 
operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures87992     operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures const &() const VULKAN_HPP_NOEXCEPT
87993     {
87994       return *reinterpret_cast<const VkPhysicalDeviceUniformBufferStandardLayoutFeatures *>( this );
87995     }
87996 
operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures87997     operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures &() VULKAN_HPP_NOEXCEPT
87998     {
87999       return *reinterpret_cast<VkPhysicalDeviceUniformBufferStandardLayoutFeatures *>( this );
88000     }
88001 
88002 #if defined( VULKAN_HPP_USE_REFLECT )
88003 #  if 14 <= VULKAN_HPP_CPP_VERSION
88004     auto
88005 #  else
88006     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
88007 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures88008       reflect() const VULKAN_HPP_NOEXCEPT
88009     {
88010       return std::tie( sType, pNext, uniformBufferStandardLayout );
88011     }
88012 #endif
88013 
88014 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88015     auto operator<=>( PhysicalDeviceUniformBufferStandardLayoutFeatures const & ) const = default;
88016 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures88017     bool operator==( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
88018     {
88019 #  if defined( VULKAN_HPP_USE_REFLECT )
88020       return this->reflect() == rhs.reflect();
88021 #  else
88022       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( uniformBufferStandardLayout == rhs.uniformBufferStandardLayout );
88023 #  endif
88024     }
88025 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures88026     bool operator!=( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
88027     {
88028       return !operator==( rhs );
88029     }
88030 #endif
88031 
88032   public:
88033     VULKAN_HPP_NAMESPACE::StructureType sType                       = StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures;
88034     void *                              pNext                       = {};
88035     VULKAN_HPP_NAMESPACE::Bool32        uniformBufferStandardLayout = {};
88036   };
88037 
88038   template <>
88039   struct CppType<StructureType, StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures>
88040   {
88041     using Type = PhysicalDeviceUniformBufferStandardLayoutFeatures;
88042   };
88043 
88044   using PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = PhysicalDeviceUniformBufferStandardLayoutFeatures;
88045 
88046   struct PhysicalDeviceVariablePointersFeatures
88047   {
88048     using NativeType = VkPhysicalDeviceVariablePointersFeatures;
88049 
88050     static const bool                                  allowDuplicate = false;
88051     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVariablePointersFeatures;
88052 
88053 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVariablePointersFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures88054     VULKAN_HPP_CONSTEXPR PhysicalDeviceVariablePointersFeatures( VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_ = {},
88055                                                                  VULKAN_HPP_NAMESPACE::Bool32 variablePointers_              = {},
88056                                                                  void *                       pNext_                         = nullptr ) VULKAN_HPP_NOEXCEPT
88057       : pNext{ pNext_ }
88058       , variablePointersStorageBuffer{ variablePointersStorageBuffer_ }
88059       , variablePointers{ variablePointers_ }
88060     {
88061     }
88062 
88063     VULKAN_HPP_CONSTEXPR PhysicalDeviceVariablePointersFeatures( PhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88064 
PhysicalDeviceVariablePointersFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures88065     PhysicalDeviceVariablePointersFeatures( VkPhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
88066       : PhysicalDeviceVariablePointersFeatures( *reinterpret_cast<PhysicalDeviceVariablePointersFeatures const *>( &rhs ) )
88067     {
88068     }
88069 
88070     PhysicalDeviceVariablePointersFeatures & operator=( PhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88071 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88072 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures88073     PhysicalDeviceVariablePointersFeatures & operator=( VkPhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
88074     {
88075       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures const *>( &rhs );
88076       return *this;
88077     }
88078 
88079 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures88080     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
88081     {
88082       pNext = pNext_;
88083       return *this;
88084     }
88085 
88086     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures &
setVariablePointersStorageBufferVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures88087       setVariablePointersStorageBuffer( VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_ ) VULKAN_HPP_NOEXCEPT
88088     {
88089       variablePointersStorageBuffer = variablePointersStorageBuffer_;
88090       return *this;
88091     }
88092 
setVariablePointersVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures88093     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures & setVariablePointers( VULKAN_HPP_NAMESPACE::Bool32 variablePointers_ ) VULKAN_HPP_NOEXCEPT
88094     {
88095       variablePointers = variablePointers_;
88096       return *this;
88097     }
88098 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
88099 
operator VkPhysicalDeviceVariablePointersFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures88100     operator VkPhysicalDeviceVariablePointersFeatures const &() const VULKAN_HPP_NOEXCEPT
88101     {
88102       return *reinterpret_cast<const VkPhysicalDeviceVariablePointersFeatures *>( this );
88103     }
88104 
operator VkPhysicalDeviceVariablePointersFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures88105     operator VkPhysicalDeviceVariablePointersFeatures &() VULKAN_HPP_NOEXCEPT
88106     {
88107       return *reinterpret_cast<VkPhysicalDeviceVariablePointersFeatures *>( this );
88108     }
88109 
88110 #if defined( VULKAN_HPP_USE_REFLECT )
88111 #  if 14 <= VULKAN_HPP_CPP_VERSION
88112     auto
88113 #  else
88114     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
88115 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures88116       reflect() const VULKAN_HPP_NOEXCEPT
88117     {
88118       return std::tie( sType, pNext, variablePointersStorageBuffer, variablePointers );
88119     }
88120 #endif
88121 
88122 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88123     auto operator<=>( PhysicalDeviceVariablePointersFeatures const & ) const = default;
88124 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures88125     bool operator==( PhysicalDeviceVariablePointersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
88126     {
88127 #  if defined( VULKAN_HPP_USE_REFLECT )
88128       return this->reflect() == rhs.reflect();
88129 #  else
88130       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer ) &&
88131              ( variablePointers == rhs.variablePointers );
88132 #  endif
88133     }
88134 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures88135     bool operator!=( PhysicalDeviceVariablePointersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
88136     {
88137       return !operator==( rhs );
88138     }
88139 #endif
88140 
88141   public:
88142     VULKAN_HPP_NAMESPACE::StructureType sType                         = StructureType::ePhysicalDeviceVariablePointersFeatures;
88143     void *                              pNext                         = {};
88144     VULKAN_HPP_NAMESPACE::Bool32        variablePointersStorageBuffer = {};
88145     VULKAN_HPP_NAMESPACE::Bool32        variablePointers              = {};
88146   };
88147 
88148   template <>
88149   struct CppType<StructureType, StructureType::ePhysicalDeviceVariablePointersFeatures>
88150   {
88151     using Type = PhysicalDeviceVariablePointersFeatures;
88152   };
88153 
88154   using PhysicalDeviceVariablePointerFeatures     = PhysicalDeviceVariablePointersFeatures;
88155   using PhysicalDeviceVariablePointerFeaturesKHR  = PhysicalDeviceVariablePointersFeatures;
88156   using PhysicalDeviceVariablePointersFeaturesKHR = PhysicalDeviceVariablePointersFeatures;
88157 
88158   struct PhysicalDeviceVertexAttributeDivisorFeaturesKHR
88159   {
88160     using NativeType = VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR;
88161 
88162     static const bool                                  allowDuplicate = false;
88163     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVertexAttributeDivisorFeaturesKHR;
88164 
88165 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVertexAttributeDivisorFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesKHR88166     VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateDivisor_     = {},
88167                                                                           VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateZeroDivisor_ = {},
88168                                                                           void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
88169       : pNext{ pNext_ }
88170       , vertexAttributeInstanceRateDivisor{ vertexAttributeInstanceRateDivisor_ }
88171       , vertexAttributeInstanceRateZeroDivisor{ vertexAttributeInstanceRateZeroDivisor_ }
88172     {
88173     }
88174 
88175     VULKAN_HPP_CONSTEXPR
88176       PhysicalDeviceVertexAttributeDivisorFeaturesKHR( PhysicalDeviceVertexAttributeDivisorFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88177 
PhysicalDeviceVertexAttributeDivisorFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesKHR88178     PhysicalDeviceVertexAttributeDivisorFeaturesKHR( VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
88179       : PhysicalDeviceVertexAttributeDivisorFeaturesKHR( *reinterpret_cast<PhysicalDeviceVertexAttributeDivisorFeaturesKHR const *>( &rhs ) )
88180     {
88181     }
88182 
88183     PhysicalDeviceVertexAttributeDivisorFeaturesKHR & operator=( PhysicalDeviceVertexAttributeDivisorFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88184 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88185 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesKHR88186     PhysicalDeviceVertexAttributeDivisorFeaturesKHR & operator=( VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
88187     {
88188       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesKHR const *>( &rhs );
88189       return *this;
88190     }
88191 
88192 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesKHR88193     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
88194     {
88195       pNext = pNext_;
88196       return *this;
88197     }
88198 
88199     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeaturesKHR &
setVertexAttributeInstanceRateDivisorVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesKHR88200       setVertexAttributeInstanceRateDivisor( VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateDivisor_ ) VULKAN_HPP_NOEXCEPT
88201     {
88202       vertexAttributeInstanceRateDivisor = vertexAttributeInstanceRateDivisor_;
88203       return *this;
88204     }
88205 
88206     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeaturesKHR &
setVertexAttributeInstanceRateZeroDivisorVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesKHR88207       setVertexAttributeInstanceRateZeroDivisor( VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateZeroDivisor_ ) VULKAN_HPP_NOEXCEPT
88208     {
88209       vertexAttributeInstanceRateZeroDivisor = vertexAttributeInstanceRateZeroDivisor_;
88210       return *this;
88211     }
88212 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
88213 
operator VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesKHR88214     operator VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
88215     {
88216       return *reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR *>( this );
88217     }
88218 
operator VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesKHR88219     operator VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR &() VULKAN_HPP_NOEXCEPT
88220     {
88221       return *reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR *>( this );
88222     }
88223 
88224 #if defined( VULKAN_HPP_USE_REFLECT )
88225 #  if 14 <= VULKAN_HPP_CPP_VERSION
88226     auto
88227 #  else
88228     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
88229 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesKHR88230       reflect() const VULKAN_HPP_NOEXCEPT
88231     {
88232       return std::tie( sType, pNext, vertexAttributeInstanceRateDivisor, vertexAttributeInstanceRateZeroDivisor );
88233     }
88234 #endif
88235 
88236 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88237     auto operator<=>( PhysicalDeviceVertexAttributeDivisorFeaturesKHR const & ) const = default;
88238 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesKHR88239     bool operator==( PhysicalDeviceVertexAttributeDivisorFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
88240     {
88241 #  if defined( VULKAN_HPP_USE_REFLECT )
88242       return this->reflect() == rhs.reflect();
88243 #  else
88244       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vertexAttributeInstanceRateDivisor == rhs.vertexAttributeInstanceRateDivisor ) &&
88245              ( vertexAttributeInstanceRateZeroDivisor == rhs.vertexAttributeInstanceRateZeroDivisor );
88246 #  endif
88247     }
88248 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesKHR88249     bool operator!=( PhysicalDeviceVertexAttributeDivisorFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
88250     {
88251       return !operator==( rhs );
88252     }
88253 #endif
88254 
88255   public:
88256     VULKAN_HPP_NAMESPACE::StructureType sType                                  = StructureType::ePhysicalDeviceVertexAttributeDivisorFeaturesKHR;
88257     void *                              pNext                                  = {};
88258     VULKAN_HPP_NAMESPACE::Bool32        vertexAttributeInstanceRateDivisor     = {};
88259     VULKAN_HPP_NAMESPACE::Bool32        vertexAttributeInstanceRateZeroDivisor = {};
88260   };
88261 
88262   template <>
88263   struct CppType<StructureType, StructureType::ePhysicalDeviceVertexAttributeDivisorFeaturesKHR>
88264   {
88265     using Type = PhysicalDeviceVertexAttributeDivisorFeaturesKHR;
88266   };
88267 
88268   using PhysicalDeviceVertexAttributeDivisorFeaturesEXT = PhysicalDeviceVertexAttributeDivisorFeaturesKHR;
88269 
88270   struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT
88271   {
88272     using NativeType = VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT;
88273 
88274     static const bool                                  allowDuplicate = false;
88275     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT;
88276 
88277 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVertexAttributeDivisorPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT88278     VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorPropertiesEXT( uint32_t maxVertexAttribDivisor_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
88279       : pNext{ pNext_ }
88280       , maxVertexAttribDivisor{ maxVertexAttribDivisor_ }
88281     {
88282     }
88283 
88284     VULKAN_HPP_CONSTEXPR
88285       PhysicalDeviceVertexAttributeDivisorPropertiesEXT( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88286 
PhysicalDeviceVertexAttributeDivisorPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT88287     PhysicalDeviceVertexAttributeDivisorPropertiesEXT( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88288       : PhysicalDeviceVertexAttributeDivisorPropertiesEXT( *reinterpret_cast<PhysicalDeviceVertexAttributeDivisorPropertiesEXT const *>( &rhs ) )
88289     {
88290     }
88291 
88292     PhysicalDeviceVertexAttributeDivisorPropertiesEXT &
88293       operator=( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88294 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88295 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT88296     PhysicalDeviceVertexAttributeDivisorPropertiesEXT & operator=( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88297     {
88298       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT const *>( &rhs );
88299       return *this;
88300     }
88301 
operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT88302     operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
88303     {
88304       return *reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *>( this );
88305     }
88306 
operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT88307     operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT &() VULKAN_HPP_NOEXCEPT
88308     {
88309       return *reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *>( this );
88310     }
88311 
88312 #if defined( VULKAN_HPP_USE_REFLECT )
88313 #  if 14 <= VULKAN_HPP_CPP_VERSION
88314     auto
88315 #  else
88316     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
88317 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT88318       reflect() const VULKAN_HPP_NOEXCEPT
88319     {
88320       return std::tie( sType, pNext, maxVertexAttribDivisor );
88321     }
88322 #endif
88323 
88324 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88325     auto operator<=>( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & ) const = default;
88326 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT88327     bool operator==( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
88328     {
88329 #  if defined( VULKAN_HPP_USE_REFLECT )
88330       return this->reflect() == rhs.reflect();
88331 #  else
88332       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxVertexAttribDivisor == rhs.maxVertexAttribDivisor );
88333 #  endif
88334     }
88335 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT88336     bool operator!=( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
88337     {
88338       return !operator==( rhs );
88339     }
88340 #endif
88341 
88342   public:
88343     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT;
88344     void *                              pNext                  = {};
88345     uint32_t                            maxVertexAttribDivisor = {};
88346   };
88347 
88348   template <>
88349   struct CppType<StructureType, StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT>
88350   {
88351     using Type = PhysicalDeviceVertexAttributeDivisorPropertiesEXT;
88352   };
88353 
88354   struct PhysicalDeviceVertexAttributeDivisorPropertiesKHR
88355   {
88356     using NativeType = VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR;
88357 
88358     static const bool                                  allowDuplicate = false;
88359     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesKHR;
88360 
88361 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVertexAttributeDivisorPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesKHR88362     VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorPropertiesKHR( uint32_t                     maxVertexAttribDivisor_       = {},
88363                                                                             VULKAN_HPP_NAMESPACE::Bool32 supportsNonZeroFirstInstance_ = {},
88364                                                                             void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
88365       : pNext{ pNext_ }
88366       , maxVertexAttribDivisor{ maxVertexAttribDivisor_ }
88367       , supportsNonZeroFirstInstance{ supportsNonZeroFirstInstance_ }
88368     {
88369     }
88370 
88371     VULKAN_HPP_CONSTEXPR
88372       PhysicalDeviceVertexAttributeDivisorPropertiesKHR( PhysicalDeviceVertexAttributeDivisorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88373 
PhysicalDeviceVertexAttributeDivisorPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesKHR88374     PhysicalDeviceVertexAttributeDivisorPropertiesKHR( VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
88375       : PhysicalDeviceVertexAttributeDivisorPropertiesKHR( *reinterpret_cast<PhysicalDeviceVertexAttributeDivisorPropertiesKHR const *>( &rhs ) )
88376     {
88377     }
88378 
88379     PhysicalDeviceVertexAttributeDivisorPropertiesKHR &
88380       operator=( PhysicalDeviceVertexAttributeDivisorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88381 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88382 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesKHR88383     PhysicalDeviceVertexAttributeDivisorPropertiesKHR & operator=( VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
88384     {
88385       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesKHR const *>( &rhs );
88386       return *this;
88387     }
88388 
operator VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesKHR88389     operator VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
88390     {
88391       return *reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR *>( this );
88392     }
88393 
operator VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesKHR88394     operator VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR &() VULKAN_HPP_NOEXCEPT
88395     {
88396       return *reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR *>( this );
88397     }
88398 
88399 #if defined( VULKAN_HPP_USE_REFLECT )
88400 #  if 14 <= VULKAN_HPP_CPP_VERSION
88401     auto
88402 #  else
88403     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
88404 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesKHR88405       reflect() const VULKAN_HPP_NOEXCEPT
88406     {
88407       return std::tie( sType, pNext, maxVertexAttribDivisor, supportsNonZeroFirstInstance );
88408     }
88409 #endif
88410 
88411 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88412     auto operator<=>( PhysicalDeviceVertexAttributeDivisorPropertiesKHR const & ) const = default;
88413 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesKHR88414     bool operator==( PhysicalDeviceVertexAttributeDivisorPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
88415     {
88416 #  if defined( VULKAN_HPP_USE_REFLECT )
88417       return this->reflect() == rhs.reflect();
88418 #  else
88419       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxVertexAttribDivisor == rhs.maxVertexAttribDivisor ) &&
88420              ( supportsNonZeroFirstInstance == rhs.supportsNonZeroFirstInstance );
88421 #  endif
88422     }
88423 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesKHR88424     bool operator!=( PhysicalDeviceVertexAttributeDivisorPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
88425     {
88426       return !operator==( rhs );
88427     }
88428 #endif
88429 
88430   public:
88431     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesKHR;
88432     void *                              pNext                        = {};
88433     uint32_t                            maxVertexAttribDivisor       = {};
88434     VULKAN_HPP_NAMESPACE::Bool32        supportsNonZeroFirstInstance = {};
88435   };
88436 
88437   template <>
88438   struct CppType<StructureType, StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesKHR>
88439   {
88440     using Type = PhysicalDeviceVertexAttributeDivisorPropertiesKHR;
88441   };
88442 
88443   struct PhysicalDeviceVertexInputDynamicStateFeaturesEXT
88444   {
88445     using NativeType = VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT;
88446 
88447     static const bool                                  allowDuplicate = false;
88448     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVertexInputDynamicStateFeaturesEXT;
88449 
88450 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVertexInputDynamicStateFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT88451     VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexInputDynamicStateFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 vertexInputDynamicState_ = {},
88452                                                                            void *                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
88453       : pNext{ pNext_ }
88454       , vertexInputDynamicState{ vertexInputDynamicState_ }
88455     {
88456     }
88457 
88458     VULKAN_HPP_CONSTEXPR
88459       PhysicalDeviceVertexInputDynamicStateFeaturesEXT( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88460 
PhysicalDeviceVertexInputDynamicStateFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT88461     PhysicalDeviceVertexInputDynamicStateFeaturesEXT( VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88462       : PhysicalDeviceVertexInputDynamicStateFeaturesEXT( *reinterpret_cast<PhysicalDeviceVertexInputDynamicStateFeaturesEXT const *>( &rhs ) )
88463     {
88464     }
88465 
88466     PhysicalDeviceVertexInputDynamicStateFeaturesEXT & operator=( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88467 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88468 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT88469     PhysicalDeviceVertexInputDynamicStateFeaturesEXT & operator=( VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
88470     {
88471       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT const *>( &rhs );
88472       return *this;
88473     }
88474 
88475 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT88476     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexInputDynamicStateFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
88477     {
88478       pNext = pNext_;
88479       return *this;
88480     }
88481 
88482     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexInputDynamicStateFeaturesEXT &
setVertexInputDynamicStateVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT88483       setVertexInputDynamicState( VULKAN_HPP_NAMESPACE::Bool32 vertexInputDynamicState_ ) VULKAN_HPP_NOEXCEPT
88484     {
88485       vertexInputDynamicState = vertexInputDynamicState_;
88486       return *this;
88487     }
88488 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
88489 
operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT88490     operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
88491     {
88492       return *reinterpret_cast<const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT *>( this );
88493     }
88494 
operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT88495     operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT &() VULKAN_HPP_NOEXCEPT
88496     {
88497       return *reinterpret_cast<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT *>( this );
88498     }
88499 
88500 #if defined( VULKAN_HPP_USE_REFLECT )
88501 #  if 14 <= VULKAN_HPP_CPP_VERSION
88502     auto
88503 #  else
88504     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
88505 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT88506       reflect() const VULKAN_HPP_NOEXCEPT
88507     {
88508       return std::tie( sType, pNext, vertexInputDynamicState );
88509     }
88510 #endif
88511 
88512 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88513     auto operator<=>( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & ) const = default;
88514 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT88515     bool operator==( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
88516     {
88517 #  if defined( VULKAN_HPP_USE_REFLECT )
88518       return this->reflect() == rhs.reflect();
88519 #  else
88520       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vertexInputDynamicState == rhs.vertexInputDynamicState );
88521 #  endif
88522     }
88523 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT88524     bool operator!=( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
88525     {
88526       return !operator==( rhs );
88527     }
88528 #endif
88529 
88530   public:
88531     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::ePhysicalDeviceVertexInputDynamicStateFeaturesEXT;
88532     void *                              pNext                   = {};
88533     VULKAN_HPP_NAMESPACE::Bool32        vertexInputDynamicState = {};
88534   };
88535 
88536   template <>
88537   struct CppType<StructureType, StructureType::ePhysicalDeviceVertexInputDynamicStateFeaturesEXT>
88538   {
88539     using Type = PhysicalDeviceVertexInputDynamicStateFeaturesEXT;
88540   };
88541 
88542   struct VideoProfileInfoKHR
88543   {
88544     using NativeType = VkVideoProfileInfoKHR;
88545 
88546     static const bool                                  allowDuplicate = false;
88547     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoProfileInfoKHR;
88548 
88549 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoProfileInfoKHR88550     VULKAN_HPP_CONSTEXPR VideoProfileInfoKHR(
88551       VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR videoCodecOperation_ = VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR::eNone,
88552       VULKAN_HPP_NAMESPACE::VideoChromaSubsamplingFlagsKHR chromaSubsampling_   = {},
88553       VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR lumaBitDepth_        = {},
88554       VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR chromaBitDepth_      = {},
88555       const void *                                         pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
88556       : pNext{ pNext_ }
88557       , videoCodecOperation{ videoCodecOperation_ }
88558       , chromaSubsampling{ chromaSubsampling_ }
88559       , lumaBitDepth{ lumaBitDepth_ }
88560       , chromaBitDepth{ chromaBitDepth_ }
88561     {
88562     }
88563 
88564     VULKAN_HPP_CONSTEXPR VideoProfileInfoKHR( VideoProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88565 
VideoProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoProfileInfoKHR88566     VideoProfileInfoKHR( VkVideoProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : VideoProfileInfoKHR( *reinterpret_cast<VideoProfileInfoKHR const *>( &rhs ) )
88567     {
88568     }
88569 
88570     VideoProfileInfoKHR & operator=( VideoProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88571 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88572 
operator =VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR88573     VideoProfileInfoKHR & operator=( VkVideoProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
88574     {
88575       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR const *>( &rhs );
88576       return *this;
88577     }
88578 
88579 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoProfileInfoKHR88580     VULKAN_HPP_CONSTEXPR_14 VideoProfileInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
88581     {
88582       pNext = pNext_;
88583       return *this;
88584     }
88585 
88586     VULKAN_HPP_CONSTEXPR_14 VideoProfileInfoKHR &
setVideoCodecOperationVULKAN_HPP_NAMESPACE::VideoProfileInfoKHR88587       setVideoCodecOperation( VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR videoCodecOperation_ ) VULKAN_HPP_NOEXCEPT
88588     {
88589       videoCodecOperation = videoCodecOperation_;
88590       return *this;
88591     }
88592 
88593     VULKAN_HPP_CONSTEXPR_14 VideoProfileInfoKHR &
setChromaSubsamplingVULKAN_HPP_NAMESPACE::VideoProfileInfoKHR88594       setChromaSubsampling( VULKAN_HPP_NAMESPACE::VideoChromaSubsamplingFlagsKHR chromaSubsampling_ ) VULKAN_HPP_NOEXCEPT
88595     {
88596       chromaSubsampling = chromaSubsampling_;
88597       return *this;
88598     }
88599 
setLumaBitDepthVULKAN_HPP_NAMESPACE::VideoProfileInfoKHR88600     VULKAN_HPP_CONSTEXPR_14 VideoProfileInfoKHR & setLumaBitDepth( VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR lumaBitDepth_ ) VULKAN_HPP_NOEXCEPT
88601     {
88602       lumaBitDepth = lumaBitDepth_;
88603       return *this;
88604     }
88605 
setChromaBitDepthVULKAN_HPP_NAMESPACE::VideoProfileInfoKHR88606     VULKAN_HPP_CONSTEXPR_14 VideoProfileInfoKHR & setChromaBitDepth( VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR chromaBitDepth_ ) VULKAN_HPP_NOEXCEPT
88607     {
88608       chromaBitDepth = chromaBitDepth_;
88609       return *this;
88610     }
88611 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
88612 
operator VkVideoProfileInfoKHR const&VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR88613     operator VkVideoProfileInfoKHR const &() const VULKAN_HPP_NOEXCEPT
88614     {
88615       return *reinterpret_cast<const VkVideoProfileInfoKHR *>( this );
88616     }
88617 
operator VkVideoProfileInfoKHR&VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR88618     operator VkVideoProfileInfoKHR &() VULKAN_HPP_NOEXCEPT
88619     {
88620       return *reinterpret_cast<VkVideoProfileInfoKHR *>( this );
88621     }
88622 
88623 #if defined( VULKAN_HPP_USE_REFLECT )
88624 #  if 14 <= VULKAN_HPP_CPP_VERSION
88625     auto
88626 #  else
88627     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
88628                const void * const &,
88629                VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR const &,
88630                VULKAN_HPP_NAMESPACE::VideoChromaSubsamplingFlagsKHR const &,
88631                VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR const &,
88632                VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR const &>
88633 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoProfileInfoKHR88634       reflect() const VULKAN_HPP_NOEXCEPT
88635     {
88636       return std::tie( sType, pNext, videoCodecOperation, chromaSubsampling, lumaBitDepth, chromaBitDepth );
88637     }
88638 #endif
88639 
88640 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88641     auto operator<=>( VideoProfileInfoKHR const & ) const = default;
88642 #else
operator ==VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR88643     bool operator==( VideoProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
88644     {
88645 #  if defined( VULKAN_HPP_USE_REFLECT )
88646       return this->reflect() == rhs.reflect();
88647 #  else
88648       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoCodecOperation == rhs.videoCodecOperation ) &&
88649              ( chromaSubsampling == rhs.chromaSubsampling ) && ( lumaBitDepth == rhs.lumaBitDepth ) && ( chromaBitDepth == rhs.chromaBitDepth );
88650 #  endif
88651     }
88652 
operator !=VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR88653     bool operator!=( VideoProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
88654     {
88655       return !operator==( rhs );
88656     }
88657 #endif
88658 
88659   public:
88660     VULKAN_HPP_NAMESPACE::StructureType                  sType               = StructureType::eVideoProfileInfoKHR;
88661     const void *                                         pNext               = {};
88662     VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR videoCodecOperation = VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagBitsKHR::eNone;
88663     VULKAN_HPP_NAMESPACE::VideoChromaSubsamplingFlagsKHR chromaSubsampling   = {};
88664     VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR lumaBitDepth        = {};
88665     VULKAN_HPP_NAMESPACE::VideoComponentBitDepthFlagsKHR chromaBitDepth      = {};
88666   };
88667 
88668   template <>
88669   struct CppType<StructureType, StructureType::eVideoProfileInfoKHR>
88670   {
88671     using Type = VideoProfileInfoKHR;
88672   };
88673 
88674   struct PhysicalDeviceVideoEncodeQualityLevelInfoKHR
88675   {
88676     using NativeType = VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR;
88677 
88678     static const bool                                  allowDuplicate = false;
88679     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVideoEncodeQualityLevelInfoKHR;
88680 
88681 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVideoEncodeQualityLevelInfoKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR88682     VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoEncodeQualityLevelInfoKHR( const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * pVideoProfile_ = {},
88683                                                                        uint32_t                                          qualityLevel_  = {},
88684                                                                        const void *                                      pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
88685       : pNext{ pNext_ }
88686       , pVideoProfile{ pVideoProfile_ }
88687       , qualityLevel{ qualityLevel_ }
88688     {
88689     }
88690 
88691     VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoEncodeQualityLevelInfoKHR( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88692 
PhysicalDeviceVideoEncodeQualityLevelInfoKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR88693     PhysicalDeviceVideoEncodeQualityLevelInfoKHR( VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
88694       : PhysicalDeviceVideoEncodeQualityLevelInfoKHR( *reinterpret_cast<PhysicalDeviceVideoEncodeQualityLevelInfoKHR const *>( &rhs ) )
88695     {
88696     }
88697 
88698     PhysicalDeviceVideoEncodeQualityLevelInfoKHR & operator=( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88699 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88700 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR88701     PhysicalDeviceVideoEncodeQualityLevelInfoKHR & operator=( VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
88702     {
88703       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR const *>( &rhs );
88704       return *this;
88705     }
88706 
88707 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR88708     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeQualityLevelInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
88709     {
88710       pNext = pNext_;
88711       return *this;
88712     }
88713 
88714     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeQualityLevelInfoKHR &
setPVideoProfileVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR88715       setPVideoProfile( const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * pVideoProfile_ ) VULKAN_HPP_NOEXCEPT
88716     {
88717       pVideoProfile = pVideoProfile_;
88718       return *this;
88719     }
88720 
setQualityLevelVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR88721     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeQualityLevelInfoKHR & setQualityLevel( uint32_t qualityLevel_ ) VULKAN_HPP_NOEXCEPT
88722     {
88723       qualityLevel = qualityLevel_;
88724       return *this;
88725     }
88726 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
88727 
operator VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR88728     operator VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR const &() const VULKAN_HPP_NOEXCEPT
88729     {
88730       return *reinterpret_cast<const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR *>( this );
88731     }
88732 
operator VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR88733     operator VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR &() VULKAN_HPP_NOEXCEPT
88734     {
88735       return *reinterpret_cast<VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR *>( this );
88736     }
88737 
88738 #if defined( VULKAN_HPP_USE_REFLECT )
88739 #  if 14 <= VULKAN_HPP_CPP_VERSION
88740     auto
88741 #  else
88742     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * const &, uint32_t const &>
88743 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR88744       reflect() const VULKAN_HPP_NOEXCEPT
88745     {
88746       return std::tie( sType, pNext, pVideoProfile, qualityLevel );
88747     }
88748 #endif
88749 
88750 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88751     auto operator<=>( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & ) const = default;
88752 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR88753     bool operator==( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
88754     {
88755 #  if defined( VULKAN_HPP_USE_REFLECT )
88756       return this->reflect() == rhs.reflect();
88757 #  else
88758       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pVideoProfile == rhs.pVideoProfile ) && ( qualityLevel == rhs.qualityLevel );
88759 #  endif
88760     }
88761 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR88762     bool operator!=( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
88763     {
88764       return !operator==( rhs );
88765     }
88766 #endif
88767 
88768   public:
88769     VULKAN_HPP_NAMESPACE::StructureType               sType         = StructureType::ePhysicalDeviceVideoEncodeQualityLevelInfoKHR;
88770     const void *                                      pNext         = {};
88771     const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * pVideoProfile = {};
88772     uint32_t                                          qualityLevel  = {};
88773   };
88774 
88775   template <>
88776   struct CppType<StructureType, StructureType::ePhysicalDeviceVideoEncodeQualityLevelInfoKHR>
88777   {
88778     using Type = PhysicalDeviceVideoEncodeQualityLevelInfoKHR;
88779   };
88780 
88781   struct PhysicalDeviceVideoFormatInfoKHR
88782   {
88783     using NativeType = VkPhysicalDeviceVideoFormatInfoKHR;
88784 
88785     static const bool                                  allowDuplicate = false;
88786     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVideoFormatInfoKHR;
88787 
88788 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVideoFormatInfoKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR88789     VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoFormatInfoKHR( VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage_ = {},
88790                                                            const void *                          pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
88791       : pNext{ pNext_ }
88792       , imageUsage{ imageUsage_ }
88793     {
88794     }
88795 
88796     VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoFormatInfoKHR( PhysicalDeviceVideoFormatInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88797 
PhysicalDeviceVideoFormatInfoKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR88798     PhysicalDeviceVideoFormatInfoKHR( VkPhysicalDeviceVideoFormatInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
88799       : PhysicalDeviceVideoFormatInfoKHR( *reinterpret_cast<PhysicalDeviceVideoFormatInfoKHR const *>( &rhs ) )
88800     {
88801     }
88802 
88803     PhysicalDeviceVideoFormatInfoKHR & operator=( PhysicalDeviceVideoFormatInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88804 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88805 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR88806     PhysicalDeviceVideoFormatInfoKHR & operator=( VkPhysicalDeviceVideoFormatInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
88807     {
88808       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR const *>( &rhs );
88809       return *this;
88810     }
88811 
88812 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR88813     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoFormatInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
88814     {
88815       pNext = pNext_;
88816       return *this;
88817     }
88818 
setImageUsageVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR88819     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoFormatInfoKHR & setImageUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage_ ) VULKAN_HPP_NOEXCEPT
88820     {
88821       imageUsage = imageUsage_;
88822       return *this;
88823     }
88824 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
88825 
operator VkPhysicalDeviceVideoFormatInfoKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR88826     operator VkPhysicalDeviceVideoFormatInfoKHR const &() const VULKAN_HPP_NOEXCEPT
88827     {
88828       return *reinterpret_cast<const VkPhysicalDeviceVideoFormatInfoKHR *>( this );
88829     }
88830 
operator VkPhysicalDeviceVideoFormatInfoKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR88831     operator VkPhysicalDeviceVideoFormatInfoKHR &() VULKAN_HPP_NOEXCEPT
88832     {
88833       return *reinterpret_cast<VkPhysicalDeviceVideoFormatInfoKHR *>( this );
88834     }
88835 
88836 #if defined( VULKAN_HPP_USE_REFLECT )
88837 #  if 14 <= VULKAN_HPP_CPP_VERSION
88838     auto
88839 #  else
88840     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageUsageFlags const &>
88841 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR88842       reflect() const VULKAN_HPP_NOEXCEPT
88843     {
88844       return std::tie( sType, pNext, imageUsage );
88845     }
88846 #endif
88847 
88848 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88849     auto operator<=>( PhysicalDeviceVideoFormatInfoKHR const & ) const = default;
88850 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR88851     bool operator==( PhysicalDeviceVideoFormatInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
88852     {
88853 #  if defined( VULKAN_HPP_USE_REFLECT )
88854       return this->reflect() == rhs.reflect();
88855 #  else
88856       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageUsage == rhs.imageUsage );
88857 #  endif
88858     }
88859 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR88860     bool operator!=( PhysicalDeviceVideoFormatInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
88861     {
88862       return !operator==( rhs );
88863     }
88864 #endif
88865 
88866   public:
88867     VULKAN_HPP_NAMESPACE::StructureType   sType      = StructureType::ePhysicalDeviceVideoFormatInfoKHR;
88868     const void *                          pNext      = {};
88869     VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage = {};
88870   };
88871 
88872   template <>
88873   struct CppType<StructureType, StructureType::ePhysicalDeviceVideoFormatInfoKHR>
88874   {
88875     using Type = PhysicalDeviceVideoFormatInfoKHR;
88876   };
88877 
88878   struct PhysicalDeviceVideoMaintenance1FeaturesKHR
88879   {
88880     using NativeType = VkPhysicalDeviceVideoMaintenance1FeaturesKHR;
88881 
88882     static const bool                                  allowDuplicate = false;
88883     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVideoMaintenance1FeaturesKHR;
88884 
88885 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVideoMaintenance1FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR88886     VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoMaintenance1FeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 videoMaintenance1_ = {},
88887                                                                      void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
88888       : pNext{ pNext_ }
88889       , videoMaintenance1{ videoMaintenance1_ }
88890     {
88891     }
88892 
88893     VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoMaintenance1FeaturesKHR( PhysicalDeviceVideoMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88894 
PhysicalDeviceVideoMaintenance1FeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR88895     PhysicalDeviceVideoMaintenance1FeaturesKHR( VkPhysicalDeviceVideoMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
88896       : PhysicalDeviceVideoMaintenance1FeaturesKHR( *reinterpret_cast<PhysicalDeviceVideoMaintenance1FeaturesKHR const *>( &rhs ) )
88897     {
88898     }
88899 
88900     PhysicalDeviceVideoMaintenance1FeaturesKHR & operator=( PhysicalDeviceVideoMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
88901 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
88902 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR88903     PhysicalDeviceVideoMaintenance1FeaturesKHR & operator=( VkPhysicalDeviceVideoMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
88904     {
88905       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR const *>( &rhs );
88906       return *this;
88907     }
88908 
88909 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR88910     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoMaintenance1FeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
88911     {
88912       pNext = pNext_;
88913       return *this;
88914     }
88915 
88916     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoMaintenance1FeaturesKHR &
setVideoMaintenance1VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR88917       setVideoMaintenance1( VULKAN_HPP_NAMESPACE::Bool32 videoMaintenance1_ ) VULKAN_HPP_NOEXCEPT
88918     {
88919       videoMaintenance1 = videoMaintenance1_;
88920       return *this;
88921     }
88922 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
88923 
operator VkPhysicalDeviceVideoMaintenance1FeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR88924     operator VkPhysicalDeviceVideoMaintenance1FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
88925     {
88926       return *reinterpret_cast<const VkPhysicalDeviceVideoMaintenance1FeaturesKHR *>( this );
88927     }
88928 
operator VkPhysicalDeviceVideoMaintenance1FeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR88929     operator VkPhysicalDeviceVideoMaintenance1FeaturesKHR &() VULKAN_HPP_NOEXCEPT
88930     {
88931       return *reinterpret_cast<VkPhysicalDeviceVideoMaintenance1FeaturesKHR *>( this );
88932     }
88933 
88934 #if defined( VULKAN_HPP_USE_REFLECT )
88935 #  if 14 <= VULKAN_HPP_CPP_VERSION
88936     auto
88937 #  else
88938     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
88939 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR88940       reflect() const VULKAN_HPP_NOEXCEPT
88941     {
88942       return std::tie( sType, pNext, videoMaintenance1 );
88943     }
88944 #endif
88945 
88946 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
88947     auto operator<=>( PhysicalDeviceVideoMaintenance1FeaturesKHR const & ) const = default;
88948 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR88949     bool operator==( PhysicalDeviceVideoMaintenance1FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
88950     {
88951 #  if defined( VULKAN_HPP_USE_REFLECT )
88952       return this->reflect() == rhs.reflect();
88953 #  else
88954       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoMaintenance1 == rhs.videoMaintenance1 );
88955 #  endif
88956     }
88957 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR88958     bool operator!=( PhysicalDeviceVideoMaintenance1FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
88959     {
88960       return !operator==( rhs );
88961     }
88962 #endif
88963 
88964   public:
88965     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::ePhysicalDeviceVideoMaintenance1FeaturesKHR;
88966     void *                              pNext             = {};
88967     VULKAN_HPP_NAMESPACE::Bool32        videoMaintenance1 = {};
88968   };
88969 
88970   template <>
88971   struct CppType<StructureType, StructureType::ePhysicalDeviceVideoMaintenance1FeaturesKHR>
88972   {
88973     using Type = PhysicalDeviceVideoMaintenance1FeaturesKHR;
88974   };
88975 
88976   struct PhysicalDeviceVulkan11Features
88977   {
88978     using NativeType = VkPhysicalDeviceVulkan11Features;
88979 
88980     static const bool                                  allowDuplicate = false;
88981     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVulkan11Features;
88982 
88983 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkan11FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features88984     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan11Features( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_           = {},
88985                                                          VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ = {},
88986                                                          VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_              = {},
88987                                                          VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_               = {},
88988                                                          VULKAN_HPP_NAMESPACE::Bool32 multiview_                          = {},
88989                                                          VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_            = {},
88990                                                          VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_        = {},
88991                                                          VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_      = {},
88992                                                          VULKAN_HPP_NAMESPACE::Bool32 variablePointers_                   = {},
88993                                                          VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_                    = {},
88994                                                          VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_             = {},
88995                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_               = {},
88996                                                          void *                       pNext_                              = nullptr ) VULKAN_HPP_NOEXCEPT
88997       : pNext{ pNext_ }
88998       , storageBuffer16BitAccess{ storageBuffer16BitAccess_ }
88999       , uniformAndStorageBuffer16BitAccess{ uniformAndStorageBuffer16BitAccess_ }
89000       , storagePushConstant16{ storagePushConstant16_ }
89001       , storageInputOutput16{ storageInputOutput16_ }
89002       , multiview{ multiview_ }
89003       , multiviewGeometryShader{ multiviewGeometryShader_ }
89004       , multiviewTessellationShader{ multiviewTessellationShader_ }
89005       , variablePointersStorageBuffer{ variablePointersStorageBuffer_ }
89006       , variablePointers{ variablePointers_ }
89007       , protectedMemory{ protectedMemory_ }
89008       , samplerYcbcrConversion{ samplerYcbcrConversion_ }
89009       , shaderDrawParameters{ shaderDrawParameters_ }
89010     {
89011     }
89012 
89013     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan11Features( PhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89014 
PhysicalDeviceVulkan11FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features89015     PhysicalDeviceVulkan11Features( VkPhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT
89016       : PhysicalDeviceVulkan11Features( *reinterpret_cast<PhysicalDeviceVulkan11Features const *>( &rhs ) )
89017     {
89018     }
89019 
89020     PhysicalDeviceVulkan11Features & operator=( PhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89021 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
89022 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features89023     PhysicalDeviceVulkan11Features & operator=( VkPhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT
89024     {
89025       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features const *>( &rhs );
89026       return *this;
89027     }
89028 
89029 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features89030     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
89031     {
89032       pNext = pNext_;
89033       return *this;
89034     }
89035 
89036     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setStorageBuffer16BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features89037       setStorageBuffer16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT
89038     {
89039       storageBuffer16BitAccess = storageBuffer16BitAccess_;
89040       return *this;
89041     }
89042 
89043     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setUniformAndStorageBuffer16BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features89044       setUniformAndStorageBuffer16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT
89045     {
89046       uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_;
89047       return *this;
89048     }
89049 
setStoragePushConstant16VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features89050     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setStoragePushConstant16( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_ ) VULKAN_HPP_NOEXCEPT
89051     {
89052       storagePushConstant16 = storagePushConstant16_;
89053       return *this;
89054     }
89055 
setStorageInputOutput16VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features89056     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setStorageInputOutput16( VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_ ) VULKAN_HPP_NOEXCEPT
89057     {
89058       storageInputOutput16 = storageInputOutput16_;
89059       return *this;
89060     }
89061 
setMultiviewVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features89062     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setMultiview( VULKAN_HPP_NAMESPACE::Bool32 multiview_ ) VULKAN_HPP_NOEXCEPT
89063     {
89064       multiview = multiview_;
89065       return *this;
89066     }
89067 
89068     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setMultiviewGeometryShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features89069       setMultiviewGeometryShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_ ) VULKAN_HPP_NOEXCEPT
89070     {
89071       multiviewGeometryShader = multiviewGeometryShader_;
89072       return *this;
89073     }
89074 
89075     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setMultiviewTessellationShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features89076       setMultiviewTessellationShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_ ) VULKAN_HPP_NOEXCEPT
89077     {
89078       multiviewTessellationShader = multiviewTessellationShader_;
89079       return *this;
89080     }
89081 
89082     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setVariablePointersStorageBufferVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features89083       setVariablePointersStorageBuffer( VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_ ) VULKAN_HPP_NOEXCEPT
89084     {
89085       variablePointersStorageBuffer = variablePointersStorageBuffer_;
89086       return *this;
89087     }
89088 
setVariablePointersVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features89089     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setVariablePointers( VULKAN_HPP_NAMESPACE::Bool32 variablePointers_ ) VULKAN_HPP_NOEXCEPT
89090     {
89091       variablePointers = variablePointers_;
89092       return *this;
89093     }
89094 
setProtectedMemoryVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features89095     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setProtectedMemory( VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_ ) VULKAN_HPP_NOEXCEPT
89096     {
89097       protectedMemory = protectedMemory_;
89098       return *this;
89099     }
89100 
89101     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features &
setSamplerYcbcrConversionVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features89102       setSamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_ ) VULKAN_HPP_NOEXCEPT
89103     {
89104       samplerYcbcrConversion = samplerYcbcrConversion_;
89105       return *this;
89106     }
89107 
setShaderDrawParametersVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features89108     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setShaderDrawParameters( VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ ) VULKAN_HPP_NOEXCEPT
89109     {
89110       shaderDrawParameters = shaderDrawParameters_;
89111       return *this;
89112     }
89113 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
89114 
operator VkPhysicalDeviceVulkan11Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features89115     operator VkPhysicalDeviceVulkan11Features const &() const VULKAN_HPP_NOEXCEPT
89116     {
89117       return *reinterpret_cast<const VkPhysicalDeviceVulkan11Features *>( this );
89118     }
89119 
operator VkPhysicalDeviceVulkan11Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features89120     operator VkPhysicalDeviceVulkan11Features &() VULKAN_HPP_NOEXCEPT
89121     {
89122       return *reinterpret_cast<VkPhysicalDeviceVulkan11Features *>( this );
89123     }
89124 
89125 #if defined( VULKAN_HPP_USE_REFLECT )
89126 #  if 14 <= VULKAN_HPP_CPP_VERSION
89127     auto
89128 #  else
89129     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
89130                void * const &,
89131                VULKAN_HPP_NAMESPACE::Bool32 const &,
89132                VULKAN_HPP_NAMESPACE::Bool32 const &,
89133                VULKAN_HPP_NAMESPACE::Bool32 const &,
89134                VULKAN_HPP_NAMESPACE::Bool32 const &,
89135                VULKAN_HPP_NAMESPACE::Bool32 const &,
89136                VULKAN_HPP_NAMESPACE::Bool32 const &,
89137                VULKAN_HPP_NAMESPACE::Bool32 const &,
89138                VULKAN_HPP_NAMESPACE::Bool32 const &,
89139                VULKAN_HPP_NAMESPACE::Bool32 const &,
89140                VULKAN_HPP_NAMESPACE::Bool32 const &,
89141                VULKAN_HPP_NAMESPACE::Bool32 const &,
89142                VULKAN_HPP_NAMESPACE::Bool32 const &>
89143 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features89144       reflect() const VULKAN_HPP_NOEXCEPT
89145     {
89146       return std::tie( sType,
89147                        pNext,
89148                        storageBuffer16BitAccess,
89149                        uniformAndStorageBuffer16BitAccess,
89150                        storagePushConstant16,
89151                        storageInputOutput16,
89152                        multiview,
89153                        multiviewGeometryShader,
89154                        multiviewTessellationShader,
89155                        variablePointersStorageBuffer,
89156                        variablePointers,
89157                        protectedMemory,
89158                        samplerYcbcrConversion,
89159                        shaderDrawParameters );
89160     }
89161 #endif
89162 
89163 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
89164     auto operator<=>( PhysicalDeviceVulkan11Features const & ) const = default;
89165 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features89166     bool operator==( PhysicalDeviceVulkan11Features const & rhs ) const VULKAN_HPP_NOEXCEPT
89167     {
89168 #  if defined( VULKAN_HPP_USE_REFLECT )
89169       return this->reflect() == rhs.reflect();
89170 #  else
89171       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess ) &&
89172              ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess ) && ( storagePushConstant16 == rhs.storagePushConstant16 ) &&
89173              ( storageInputOutput16 == rhs.storageInputOutput16 ) && ( multiview == rhs.multiview ) &&
89174              ( multiviewGeometryShader == rhs.multiviewGeometryShader ) && ( multiviewTessellationShader == rhs.multiviewTessellationShader ) &&
89175              ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer ) && ( variablePointers == rhs.variablePointers ) &&
89176              ( protectedMemory == rhs.protectedMemory ) && ( samplerYcbcrConversion == rhs.samplerYcbcrConversion ) &&
89177              ( shaderDrawParameters == rhs.shaderDrawParameters );
89178 #  endif
89179     }
89180 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features89181     bool operator!=( PhysicalDeviceVulkan11Features const & rhs ) const VULKAN_HPP_NOEXCEPT
89182     {
89183       return !operator==( rhs );
89184     }
89185 #endif
89186 
89187   public:
89188     VULKAN_HPP_NAMESPACE::StructureType sType                              = StructureType::ePhysicalDeviceVulkan11Features;
89189     void *                              pNext                              = {};
89190     VULKAN_HPP_NAMESPACE::Bool32        storageBuffer16BitAccess           = {};
89191     VULKAN_HPP_NAMESPACE::Bool32        uniformAndStorageBuffer16BitAccess = {};
89192     VULKAN_HPP_NAMESPACE::Bool32        storagePushConstant16              = {};
89193     VULKAN_HPP_NAMESPACE::Bool32        storageInputOutput16               = {};
89194     VULKAN_HPP_NAMESPACE::Bool32        multiview                          = {};
89195     VULKAN_HPP_NAMESPACE::Bool32        multiviewGeometryShader            = {};
89196     VULKAN_HPP_NAMESPACE::Bool32        multiviewTessellationShader        = {};
89197     VULKAN_HPP_NAMESPACE::Bool32        variablePointersStorageBuffer      = {};
89198     VULKAN_HPP_NAMESPACE::Bool32        variablePointers                   = {};
89199     VULKAN_HPP_NAMESPACE::Bool32        protectedMemory                    = {};
89200     VULKAN_HPP_NAMESPACE::Bool32        samplerYcbcrConversion             = {};
89201     VULKAN_HPP_NAMESPACE::Bool32        shaderDrawParameters               = {};
89202   };
89203 
89204   template <>
89205   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan11Features>
89206   {
89207     using Type = PhysicalDeviceVulkan11Features;
89208   };
89209 
89210   struct PhysicalDeviceVulkan11Properties
89211   {
89212     using NativeType = VkPhysicalDeviceVulkan11Properties;
89213 
89214     static const bool                                  allowDuplicate = false;
89215     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVulkan11Properties;
89216 
89217 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkan11PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties89218     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Properties(
89219       std::array<uint8_t, VK_UUID_SIZE> const &   deviceUUID_                        = {},
89220       std::array<uint8_t, VK_UUID_SIZE> const &   driverUUID_                        = {},
89221       std::array<uint8_t, VK_LUID_SIZE> const &   deviceLUID_                        = {},
89222       uint32_t                                    deviceNodeMask_                    = {},
89223       VULKAN_HPP_NAMESPACE::Bool32                deviceLUIDValid_                   = {},
89224       uint32_t                                    subgroupSize_                      = {},
89225       VULKAN_HPP_NAMESPACE::ShaderStageFlags      subgroupSupportedStages_           = {},
89226       VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags  subgroupSupportedOperations_       = {},
89227       VULKAN_HPP_NAMESPACE::Bool32                subgroupQuadOperationsInAllStages_ = {},
89228       VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior_             = VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes,
89229       uint32_t                                    maxMultiviewViewCount_             = {},
89230       uint32_t                                    maxMultiviewInstanceIndex_         = {},
89231       VULKAN_HPP_NAMESPACE::Bool32                protectedNoFault_                  = {},
89232       uint32_t                                    maxPerSetDescriptors_              = {},
89233       VULKAN_HPP_NAMESPACE::DeviceSize            maxMemoryAllocationSize_           = {},
89234       void *                                      pNext_                             = nullptr ) VULKAN_HPP_NOEXCEPT
89235       : pNext{ pNext_ }
89236       , deviceUUID{ deviceUUID_ }
89237       , driverUUID{ driverUUID_ }
89238       , deviceLUID{ deviceLUID_ }
89239       , deviceNodeMask{ deviceNodeMask_ }
89240       , deviceLUIDValid{ deviceLUIDValid_ }
89241       , subgroupSize{ subgroupSize_ }
89242       , subgroupSupportedStages{ subgroupSupportedStages_ }
89243       , subgroupSupportedOperations{ subgroupSupportedOperations_ }
89244       , subgroupQuadOperationsInAllStages{ subgroupQuadOperationsInAllStages_ }
89245       , pointClippingBehavior{ pointClippingBehavior_ }
89246       , maxMultiviewViewCount{ maxMultiviewViewCount_ }
89247       , maxMultiviewInstanceIndex{ maxMultiviewInstanceIndex_ }
89248       , protectedNoFault{ protectedNoFault_ }
89249       , maxPerSetDescriptors{ maxPerSetDescriptors_ }
89250       , maxMemoryAllocationSize{ maxMemoryAllocationSize_ }
89251     {
89252     }
89253 
89254     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Properties( PhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89255 
PhysicalDeviceVulkan11PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties89256     PhysicalDeviceVulkan11Properties( VkPhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT
89257       : PhysicalDeviceVulkan11Properties( *reinterpret_cast<PhysicalDeviceVulkan11Properties const *>( &rhs ) )
89258     {
89259     }
89260 
89261     PhysicalDeviceVulkan11Properties & operator=( PhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89262 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
89263 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties89264     PhysicalDeviceVulkan11Properties & operator=( VkPhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT
89265     {
89266       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties const *>( &rhs );
89267       return *this;
89268     }
89269 
operator VkPhysicalDeviceVulkan11Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties89270     operator VkPhysicalDeviceVulkan11Properties const &() const VULKAN_HPP_NOEXCEPT
89271     {
89272       return *reinterpret_cast<const VkPhysicalDeviceVulkan11Properties *>( this );
89273     }
89274 
operator VkPhysicalDeviceVulkan11Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties89275     operator VkPhysicalDeviceVulkan11Properties &() VULKAN_HPP_NOEXCEPT
89276     {
89277       return *reinterpret_cast<VkPhysicalDeviceVulkan11Properties *>( this );
89278     }
89279 
89280 #if defined( VULKAN_HPP_USE_REFLECT )
89281 #  if 14 <= VULKAN_HPP_CPP_VERSION
89282     auto
89283 #  else
89284     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
89285                void * const &,
89286                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &,
89287                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &,
89288                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_LUID_SIZE> const &,
89289                uint32_t const &,
89290                VULKAN_HPP_NAMESPACE::Bool32 const &,
89291                uint32_t const &,
89292                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
89293                VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags const &,
89294                VULKAN_HPP_NAMESPACE::Bool32 const &,
89295                VULKAN_HPP_NAMESPACE::PointClippingBehavior const &,
89296                uint32_t const &,
89297                uint32_t const &,
89298                VULKAN_HPP_NAMESPACE::Bool32 const &,
89299                uint32_t const &,
89300                VULKAN_HPP_NAMESPACE::DeviceSize const &>
89301 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties89302       reflect() const VULKAN_HPP_NOEXCEPT
89303     {
89304       return std::tie( sType,
89305                        pNext,
89306                        deviceUUID,
89307                        driverUUID,
89308                        deviceLUID,
89309                        deviceNodeMask,
89310                        deviceLUIDValid,
89311                        subgroupSize,
89312                        subgroupSupportedStages,
89313                        subgroupSupportedOperations,
89314                        subgroupQuadOperationsInAllStages,
89315                        pointClippingBehavior,
89316                        maxMultiviewViewCount,
89317                        maxMultiviewInstanceIndex,
89318                        protectedNoFault,
89319                        maxPerSetDescriptors,
89320                        maxMemoryAllocationSize );
89321     }
89322 #endif
89323 
89324 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
89325     auto operator<=>( PhysicalDeviceVulkan11Properties const & ) const = default;
89326 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties89327     bool operator==( PhysicalDeviceVulkan11Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
89328     {
89329 #  if defined( VULKAN_HPP_USE_REFLECT )
89330       return this->reflect() == rhs.reflect();
89331 #  else
89332       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceUUID == rhs.deviceUUID ) && ( driverUUID == rhs.driverUUID ) &&
89333              ( deviceLUID == rhs.deviceLUID ) && ( deviceNodeMask == rhs.deviceNodeMask ) && ( deviceLUIDValid == rhs.deviceLUIDValid ) &&
89334              ( subgroupSize == rhs.subgroupSize ) && ( subgroupSupportedStages == rhs.subgroupSupportedStages ) &&
89335              ( subgroupSupportedOperations == rhs.subgroupSupportedOperations ) &&
89336              ( subgroupQuadOperationsInAllStages == rhs.subgroupQuadOperationsInAllStages ) && ( pointClippingBehavior == rhs.pointClippingBehavior ) &&
89337              ( maxMultiviewViewCount == rhs.maxMultiviewViewCount ) && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex ) &&
89338              ( protectedNoFault == rhs.protectedNoFault ) && ( maxPerSetDescriptors == rhs.maxPerSetDescriptors ) &&
89339              ( maxMemoryAllocationSize == rhs.maxMemoryAllocationSize );
89340 #  endif
89341     }
89342 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties89343     bool operator!=( PhysicalDeviceVulkan11Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
89344     {
89345       return !operator==( rhs );
89346     }
89347 #endif
89348 
89349   public:
89350     VULKAN_HPP_NAMESPACE::StructureType                         sType                             = StructureType::ePhysicalDeviceVulkan11Properties;
89351     void *                                                      pNext                             = {};
89352     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> deviceUUID                        = {};
89353     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> driverUUID                        = {};
89354     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_LUID_SIZE> deviceLUID                        = {};
89355     uint32_t                                                    deviceNodeMask                    = {};
89356     VULKAN_HPP_NAMESPACE::Bool32                                deviceLUIDValid                   = {};
89357     uint32_t                                                    subgroupSize                      = {};
89358     VULKAN_HPP_NAMESPACE::ShaderStageFlags                      subgroupSupportedStages           = {};
89359     VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags                  subgroupSupportedOperations       = {};
89360     VULKAN_HPP_NAMESPACE::Bool32                                subgroupQuadOperationsInAllStages = {};
89361     VULKAN_HPP_NAMESPACE::PointClippingBehavior                 pointClippingBehavior             = VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes;
89362     uint32_t                                                    maxMultiviewViewCount             = {};
89363     uint32_t                                                    maxMultiviewInstanceIndex         = {};
89364     VULKAN_HPP_NAMESPACE::Bool32                                protectedNoFault                  = {};
89365     uint32_t                                                    maxPerSetDescriptors              = {};
89366     VULKAN_HPP_NAMESPACE::DeviceSize                            maxMemoryAllocationSize           = {};
89367   };
89368 
89369   template <>
89370   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan11Properties>
89371   {
89372     using Type = PhysicalDeviceVulkan11Properties;
89373   };
89374 
89375   struct PhysicalDeviceVulkan12Features
89376   {
89377     using NativeType = VkPhysicalDeviceVulkan12Features;
89378 
89379     static const bool                                  allowDuplicate = false;
89380     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVulkan12Features;
89381 
89382 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkan12FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89383     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan12Features( VULKAN_HPP_NAMESPACE::Bool32 samplerMirrorClampToEdge_                           = {},
89384                                                          VULKAN_HPP_NAMESPACE::Bool32 drawIndirectCount_                                  = {},
89385                                                          VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_                            = {},
89386                                                          VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_                  = {},
89387                                                          VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_                               = {},
89388                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_                           = {},
89389                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_                           = {},
89390                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_                                      = {},
89391                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_                                         = {},
89392                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorIndexing_                                 = {},
89393                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_          = {},
89394                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_       = {},
89395                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_       = {},
89396                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_         = {},
89397                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_          = {},
89398                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_         = {},
89399                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_          = {},
89400                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_       = {},
89401                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_    = {},
89402                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_    = {},
89403                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_      = {},
89404                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_       = {},
89405                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_       = {},
89406                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_      = {},
89407                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ = {},
89408                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ = {},
89409                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_          = {},
89410                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_                    = {},
89411                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_           = {},
89412                                                          VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_                             = {},
89413                                                          VULKAN_HPP_NAMESPACE::Bool32 samplerFilterMinmax_                                = {},
89414                                                          VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_                                  = {},
89415                                                          VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_                               = {},
89416                                                          VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_                        = {},
89417                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_                        = {},
89418                                                          VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_                        = {},
89419                                                          VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_                                     = {},
89420                                                          VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_                                  = {},
89421                                                          VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_                                = {},
89422                                                          VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_                   = {},
89423                                                          VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_                     = {},
89424                                                          VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_                                  = {},
89425                                                          VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_                       = {},
89426                                                          VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_      = {},
89427                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderOutputViewportIndex_                          = {},
89428                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderOutputLayer_                                  = {},
89429                                                          VULKAN_HPP_NAMESPACE::Bool32 subgroupBroadcastDynamicId_                         = {},
89430                                                          void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
89431       : pNext{ pNext_ }
89432       , samplerMirrorClampToEdge{ samplerMirrorClampToEdge_ }
89433       , drawIndirectCount{ drawIndirectCount_ }
89434       , storageBuffer8BitAccess{ storageBuffer8BitAccess_ }
89435       , uniformAndStorageBuffer8BitAccess{ uniformAndStorageBuffer8BitAccess_ }
89436       , storagePushConstant8{ storagePushConstant8_ }
89437       , shaderBufferInt64Atomics{ shaderBufferInt64Atomics_ }
89438       , shaderSharedInt64Atomics{ shaderSharedInt64Atomics_ }
89439       , shaderFloat16{ shaderFloat16_ }
89440       , shaderInt8{ shaderInt8_ }
89441       , descriptorIndexing{ descriptorIndexing_ }
89442       , shaderInputAttachmentArrayDynamicIndexing{ shaderInputAttachmentArrayDynamicIndexing_ }
89443       , shaderUniformTexelBufferArrayDynamicIndexing{ shaderUniformTexelBufferArrayDynamicIndexing_ }
89444       , shaderStorageTexelBufferArrayDynamicIndexing{ shaderStorageTexelBufferArrayDynamicIndexing_ }
89445       , shaderUniformBufferArrayNonUniformIndexing{ shaderUniformBufferArrayNonUniformIndexing_ }
89446       , shaderSampledImageArrayNonUniformIndexing{ shaderSampledImageArrayNonUniformIndexing_ }
89447       , shaderStorageBufferArrayNonUniformIndexing{ shaderStorageBufferArrayNonUniformIndexing_ }
89448       , shaderStorageImageArrayNonUniformIndexing{ shaderStorageImageArrayNonUniformIndexing_ }
89449       , shaderInputAttachmentArrayNonUniformIndexing{ shaderInputAttachmentArrayNonUniformIndexing_ }
89450       , shaderUniformTexelBufferArrayNonUniformIndexing{ shaderUniformTexelBufferArrayNonUniformIndexing_ }
89451       , shaderStorageTexelBufferArrayNonUniformIndexing{ shaderStorageTexelBufferArrayNonUniformIndexing_ }
89452       , descriptorBindingUniformBufferUpdateAfterBind{ descriptorBindingUniformBufferUpdateAfterBind_ }
89453       , descriptorBindingSampledImageUpdateAfterBind{ descriptorBindingSampledImageUpdateAfterBind_ }
89454       , descriptorBindingStorageImageUpdateAfterBind{ descriptorBindingStorageImageUpdateAfterBind_ }
89455       , descriptorBindingStorageBufferUpdateAfterBind{ descriptorBindingStorageBufferUpdateAfterBind_ }
89456       , descriptorBindingUniformTexelBufferUpdateAfterBind{ descriptorBindingUniformTexelBufferUpdateAfterBind_ }
89457       , descriptorBindingStorageTexelBufferUpdateAfterBind{ descriptorBindingStorageTexelBufferUpdateAfterBind_ }
89458       , descriptorBindingUpdateUnusedWhilePending{ descriptorBindingUpdateUnusedWhilePending_ }
89459       , descriptorBindingPartiallyBound{ descriptorBindingPartiallyBound_ }
89460       , descriptorBindingVariableDescriptorCount{ descriptorBindingVariableDescriptorCount_ }
89461       , runtimeDescriptorArray{ runtimeDescriptorArray_ }
89462       , samplerFilterMinmax{ samplerFilterMinmax_ }
89463       , scalarBlockLayout{ scalarBlockLayout_ }
89464       , imagelessFramebuffer{ imagelessFramebuffer_ }
89465       , uniformBufferStandardLayout{ uniformBufferStandardLayout_ }
89466       , shaderSubgroupExtendedTypes{ shaderSubgroupExtendedTypes_ }
89467       , separateDepthStencilLayouts{ separateDepthStencilLayouts_ }
89468       , hostQueryReset{ hostQueryReset_ }
89469       , timelineSemaphore{ timelineSemaphore_ }
89470       , bufferDeviceAddress{ bufferDeviceAddress_ }
89471       , bufferDeviceAddressCaptureReplay{ bufferDeviceAddressCaptureReplay_ }
89472       , bufferDeviceAddressMultiDevice{ bufferDeviceAddressMultiDevice_ }
89473       , vulkanMemoryModel{ vulkanMemoryModel_ }
89474       , vulkanMemoryModelDeviceScope{ vulkanMemoryModelDeviceScope_ }
89475       , vulkanMemoryModelAvailabilityVisibilityChains{ vulkanMemoryModelAvailabilityVisibilityChains_ }
89476       , shaderOutputViewportIndex{ shaderOutputViewportIndex_ }
89477       , shaderOutputLayer{ shaderOutputLayer_ }
89478       , subgroupBroadcastDynamicId{ subgroupBroadcastDynamicId_ }
89479     {
89480     }
89481 
89482     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan12Features( PhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89483 
PhysicalDeviceVulkan12FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89484     PhysicalDeviceVulkan12Features( VkPhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT
89485       : PhysicalDeviceVulkan12Features( *reinterpret_cast<PhysicalDeviceVulkan12Features const *>( &rhs ) )
89486     {
89487     }
89488 
89489     PhysicalDeviceVulkan12Features & operator=( PhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
89490 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
89491 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89492     PhysicalDeviceVulkan12Features & operator=( VkPhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT
89493     {
89494       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features const *>( &rhs );
89495       return *this;
89496     }
89497 
89498 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89499     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
89500     {
89501       pNext = pNext_;
89502       return *this;
89503     }
89504 
89505     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setSamplerMirrorClampToEdgeVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89506       setSamplerMirrorClampToEdge( VULKAN_HPP_NAMESPACE::Bool32 samplerMirrorClampToEdge_ ) VULKAN_HPP_NOEXCEPT
89507     {
89508       samplerMirrorClampToEdge = samplerMirrorClampToEdge_;
89509       return *this;
89510     }
89511 
setDrawIndirectCountVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89512     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDrawIndirectCount( VULKAN_HPP_NAMESPACE::Bool32 drawIndirectCount_ ) VULKAN_HPP_NOEXCEPT
89513     {
89514       drawIndirectCount = drawIndirectCount_;
89515       return *this;
89516     }
89517 
89518     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setStorageBuffer8BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89519       setStorageBuffer8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT
89520     {
89521       storageBuffer8BitAccess = storageBuffer8BitAccess_;
89522       return *this;
89523     }
89524 
89525     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setUniformAndStorageBuffer8BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89526       setUniformAndStorageBuffer8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT
89527     {
89528       uniformAndStorageBuffer8BitAccess = uniformAndStorageBuffer8BitAccess_;
89529       return *this;
89530     }
89531 
setStoragePushConstant8VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89532     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setStoragePushConstant8( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_ ) VULKAN_HPP_NOEXCEPT
89533     {
89534       storagePushConstant8 = storagePushConstant8_;
89535       return *this;
89536     }
89537 
89538     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderBufferInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89539       setShaderBufferInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
89540     {
89541       shaderBufferInt64Atomics = shaderBufferInt64Atomics_;
89542       return *this;
89543     }
89544 
89545     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderSharedInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89546       setShaderSharedInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
89547     {
89548       shaderSharedInt64Atomics = shaderSharedInt64Atomics_;
89549       return *this;
89550     }
89551 
setShaderFloat16VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89552     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderFloat16( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_ ) VULKAN_HPP_NOEXCEPT
89553     {
89554       shaderFloat16 = shaderFloat16_;
89555       return *this;
89556     }
89557 
setShaderInt8VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89558     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderInt8( VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_ ) VULKAN_HPP_NOEXCEPT
89559     {
89560       shaderInt8 = shaderInt8_;
89561       return *this;
89562     }
89563 
setDescriptorIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89564     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorIndexing( VULKAN_HPP_NAMESPACE::Bool32 descriptorIndexing_ ) VULKAN_HPP_NOEXCEPT
89565     {
89566       descriptorIndexing = descriptorIndexing_;
89567       return *this;
89568     }
89569 
89570     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderInputAttachmentArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89571       setShaderInputAttachmentArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
89572     {
89573       shaderInputAttachmentArrayDynamicIndexing = shaderInputAttachmentArrayDynamicIndexing_;
89574       return *this;
89575     }
89576 
89577     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderUniformTexelBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89578       setShaderUniformTexelBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
89579     {
89580       shaderUniformTexelBufferArrayDynamicIndexing = shaderUniformTexelBufferArrayDynamicIndexing_;
89581       return *this;
89582     }
89583 
89584     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderStorageTexelBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89585       setShaderStorageTexelBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
89586     {
89587       shaderStorageTexelBufferArrayDynamicIndexing = shaderStorageTexelBufferArrayDynamicIndexing_;
89588       return *this;
89589     }
89590 
89591     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderUniformBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89592       setShaderUniformBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
89593     {
89594       shaderUniformBufferArrayNonUniformIndexing = shaderUniformBufferArrayNonUniformIndexing_;
89595       return *this;
89596     }
89597 
89598     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderSampledImageArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89599       setShaderSampledImageArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
89600     {
89601       shaderSampledImageArrayNonUniformIndexing = shaderSampledImageArrayNonUniformIndexing_;
89602       return *this;
89603     }
89604 
89605     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderStorageBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89606       setShaderStorageBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
89607     {
89608       shaderStorageBufferArrayNonUniformIndexing = shaderStorageBufferArrayNonUniformIndexing_;
89609       return *this;
89610     }
89611 
89612     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderStorageImageArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89613       setShaderStorageImageArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
89614     {
89615       shaderStorageImageArrayNonUniformIndexing = shaderStorageImageArrayNonUniformIndexing_;
89616       return *this;
89617     }
89618 
89619     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderInputAttachmentArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89620       setShaderInputAttachmentArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
89621     {
89622       shaderInputAttachmentArrayNonUniformIndexing = shaderInputAttachmentArrayNonUniformIndexing_;
89623       return *this;
89624     }
89625 
89626     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderUniformTexelBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89627       setShaderUniformTexelBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
89628     {
89629       shaderUniformTexelBufferArrayNonUniformIndexing = shaderUniformTexelBufferArrayNonUniformIndexing_;
89630       return *this;
89631     }
89632 
89633     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderStorageTexelBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89634       setShaderStorageTexelBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
89635     {
89636       shaderStorageTexelBufferArrayNonUniformIndexing = shaderStorageTexelBufferArrayNonUniformIndexing_;
89637       return *this;
89638     }
89639 
89640     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setDescriptorBindingUniformBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89641       setDescriptorBindingUniformBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
89642     {
89643       descriptorBindingUniformBufferUpdateAfterBind = descriptorBindingUniformBufferUpdateAfterBind_;
89644       return *this;
89645     }
89646 
89647     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setDescriptorBindingSampledImageUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89648       setDescriptorBindingSampledImageUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
89649     {
89650       descriptorBindingSampledImageUpdateAfterBind = descriptorBindingSampledImageUpdateAfterBind_;
89651       return *this;
89652     }
89653 
89654     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setDescriptorBindingStorageImageUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89655       setDescriptorBindingStorageImageUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
89656     {
89657       descriptorBindingStorageImageUpdateAfterBind = descriptorBindingStorageImageUpdateAfterBind_;
89658       return *this;
89659     }
89660 
89661     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setDescriptorBindingStorageBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89662       setDescriptorBindingStorageBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
89663     {
89664       descriptorBindingStorageBufferUpdateAfterBind = descriptorBindingStorageBufferUpdateAfterBind_;
89665       return *this;
89666     }
89667 
setDescriptorBindingUniformTexelBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89668     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingUniformTexelBufferUpdateAfterBind(
89669       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
89670     {
89671       descriptorBindingUniformTexelBufferUpdateAfterBind = descriptorBindingUniformTexelBufferUpdateAfterBind_;
89672       return *this;
89673     }
89674 
setDescriptorBindingStorageTexelBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89675     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingStorageTexelBufferUpdateAfterBind(
89676       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
89677     {
89678       descriptorBindingStorageTexelBufferUpdateAfterBind = descriptorBindingStorageTexelBufferUpdateAfterBind_;
89679       return *this;
89680     }
89681 
89682     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setDescriptorBindingUpdateUnusedWhilePendingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89683       setDescriptorBindingUpdateUnusedWhilePending( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_ ) VULKAN_HPP_NOEXCEPT
89684     {
89685       descriptorBindingUpdateUnusedWhilePending = descriptorBindingUpdateUnusedWhilePending_;
89686       return *this;
89687     }
89688 
89689     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setDescriptorBindingPartiallyBoundVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89690       setDescriptorBindingPartiallyBound( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_ ) VULKAN_HPP_NOEXCEPT
89691     {
89692       descriptorBindingPartiallyBound = descriptorBindingPartiallyBound_;
89693       return *this;
89694     }
89695 
89696     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setDescriptorBindingVariableDescriptorCountVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89697       setDescriptorBindingVariableDescriptorCount( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_ ) VULKAN_HPP_NOEXCEPT
89698     {
89699       descriptorBindingVariableDescriptorCount = descriptorBindingVariableDescriptorCount_;
89700       return *this;
89701     }
89702 
89703     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setRuntimeDescriptorArrayVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89704       setRuntimeDescriptorArray( VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_ ) VULKAN_HPP_NOEXCEPT
89705     {
89706       runtimeDescriptorArray = runtimeDescriptorArray_;
89707       return *this;
89708     }
89709 
setSamplerFilterMinmaxVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89710     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setSamplerFilterMinmax( VULKAN_HPP_NAMESPACE::Bool32 samplerFilterMinmax_ ) VULKAN_HPP_NOEXCEPT
89711     {
89712       samplerFilterMinmax = samplerFilterMinmax_;
89713       return *this;
89714     }
89715 
setScalarBlockLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89716     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setScalarBlockLayout( VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_ ) VULKAN_HPP_NOEXCEPT
89717     {
89718       scalarBlockLayout = scalarBlockLayout_;
89719       return *this;
89720     }
89721 
setImagelessFramebufferVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89722     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setImagelessFramebuffer( VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_ ) VULKAN_HPP_NOEXCEPT
89723     {
89724       imagelessFramebuffer = imagelessFramebuffer_;
89725       return *this;
89726     }
89727 
89728     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setUniformBufferStandardLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89729       setUniformBufferStandardLayout( VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_ ) VULKAN_HPP_NOEXCEPT
89730     {
89731       uniformBufferStandardLayout = uniformBufferStandardLayout_;
89732       return *this;
89733     }
89734 
89735     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderSubgroupExtendedTypesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89736       setShaderSubgroupExtendedTypes( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_ ) VULKAN_HPP_NOEXCEPT
89737     {
89738       shaderSubgroupExtendedTypes = shaderSubgroupExtendedTypes_;
89739       return *this;
89740     }
89741 
89742     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setSeparateDepthStencilLayoutsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89743       setSeparateDepthStencilLayouts( VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_ ) VULKAN_HPP_NOEXCEPT
89744     {
89745       separateDepthStencilLayouts = separateDepthStencilLayouts_;
89746       return *this;
89747     }
89748 
setHostQueryResetVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89749     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setHostQueryReset( VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_ ) VULKAN_HPP_NOEXCEPT
89750     {
89751       hostQueryReset = hostQueryReset_;
89752       return *this;
89753     }
89754 
setTimelineSemaphoreVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89755     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setTimelineSemaphore( VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_ ) VULKAN_HPP_NOEXCEPT
89756     {
89757       timelineSemaphore = timelineSemaphore_;
89758       return *this;
89759     }
89760 
setBufferDeviceAddressVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89761     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setBufferDeviceAddress( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ ) VULKAN_HPP_NOEXCEPT
89762     {
89763       bufferDeviceAddress = bufferDeviceAddress_;
89764       return *this;
89765     }
89766 
89767     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setBufferDeviceAddressCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89768       setBufferDeviceAddressCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
89769     {
89770       bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_;
89771       return *this;
89772     }
89773 
89774     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setBufferDeviceAddressMultiDeviceVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89775       setBufferDeviceAddressMultiDevice( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ ) VULKAN_HPP_NOEXCEPT
89776     {
89777       bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_;
89778       return *this;
89779     }
89780 
setVulkanMemoryModelVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89781     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setVulkanMemoryModel( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_ ) VULKAN_HPP_NOEXCEPT
89782     {
89783       vulkanMemoryModel = vulkanMemoryModel_;
89784       return *this;
89785     }
89786 
89787     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setVulkanMemoryModelDeviceScopeVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89788       setVulkanMemoryModelDeviceScope( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_ ) VULKAN_HPP_NOEXCEPT
89789     {
89790       vulkanMemoryModelDeviceScope = vulkanMemoryModelDeviceScope_;
89791       return *this;
89792     }
89793 
89794     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setVulkanMemoryModelAvailabilityVisibilityChainsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89795       setVulkanMemoryModelAvailabilityVisibilityChains( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ ) VULKAN_HPP_NOEXCEPT
89796     {
89797       vulkanMemoryModelAvailabilityVisibilityChains = vulkanMemoryModelAvailabilityVisibilityChains_;
89798       return *this;
89799     }
89800 
89801     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setShaderOutputViewportIndexVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89802       setShaderOutputViewportIndex( VULKAN_HPP_NAMESPACE::Bool32 shaderOutputViewportIndex_ ) VULKAN_HPP_NOEXCEPT
89803     {
89804       shaderOutputViewportIndex = shaderOutputViewportIndex_;
89805       return *this;
89806     }
89807 
setShaderOutputLayerVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89808     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderOutputLayer( VULKAN_HPP_NAMESPACE::Bool32 shaderOutputLayer_ ) VULKAN_HPP_NOEXCEPT
89809     {
89810       shaderOutputLayer = shaderOutputLayer_;
89811       return *this;
89812     }
89813 
89814     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features &
setSubgroupBroadcastDynamicIdVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89815       setSubgroupBroadcastDynamicId( VULKAN_HPP_NAMESPACE::Bool32 subgroupBroadcastDynamicId_ ) VULKAN_HPP_NOEXCEPT
89816     {
89817       subgroupBroadcastDynamicId = subgroupBroadcastDynamicId_;
89818       return *this;
89819     }
89820 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
89821 
operator VkPhysicalDeviceVulkan12Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89822     operator VkPhysicalDeviceVulkan12Features const &() const VULKAN_HPP_NOEXCEPT
89823     {
89824       return *reinterpret_cast<const VkPhysicalDeviceVulkan12Features *>( this );
89825     }
89826 
operator VkPhysicalDeviceVulkan12Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89827     operator VkPhysicalDeviceVulkan12Features &() VULKAN_HPP_NOEXCEPT
89828     {
89829       return *reinterpret_cast<VkPhysicalDeviceVulkan12Features *>( this );
89830     }
89831 
89832 #if defined( VULKAN_HPP_USE_REFLECT )
89833 #  if 14 <= VULKAN_HPP_CPP_VERSION
89834     auto
89835 #  else
89836     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
89837                void * const &,
89838                VULKAN_HPP_NAMESPACE::Bool32 const &,
89839                VULKAN_HPP_NAMESPACE::Bool32 const &,
89840                VULKAN_HPP_NAMESPACE::Bool32 const &,
89841                VULKAN_HPP_NAMESPACE::Bool32 const &,
89842                VULKAN_HPP_NAMESPACE::Bool32 const &,
89843                VULKAN_HPP_NAMESPACE::Bool32 const &,
89844                VULKAN_HPP_NAMESPACE::Bool32 const &,
89845                VULKAN_HPP_NAMESPACE::Bool32 const &,
89846                VULKAN_HPP_NAMESPACE::Bool32 const &,
89847                VULKAN_HPP_NAMESPACE::Bool32 const &,
89848                VULKAN_HPP_NAMESPACE::Bool32 const &,
89849                VULKAN_HPP_NAMESPACE::Bool32 const &,
89850                VULKAN_HPP_NAMESPACE::Bool32 const &,
89851                VULKAN_HPP_NAMESPACE::Bool32 const &,
89852                VULKAN_HPP_NAMESPACE::Bool32 const &,
89853                VULKAN_HPP_NAMESPACE::Bool32 const &,
89854                VULKAN_HPP_NAMESPACE::Bool32 const &,
89855                VULKAN_HPP_NAMESPACE::Bool32 const &,
89856                VULKAN_HPP_NAMESPACE::Bool32 const &,
89857                VULKAN_HPP_NAMESPACE::Bool32 const &,
89858                VULKAN_HPP_NAMESPACE::Bool32 const &,
89859                VULKAN_HPP_NAMESPACE::Bool32 const &,
89860                VULKAN_HPP_NAMESPACE::Bool32 const &,
89861                VULKAN_HPP_NAMESPACE::Bool32 const &,
89862                VULKAN_HPP_NAMESPACE::Bool32 const &,
89863                VULKAN_HPP_NAMESPACE::Bool32 const &,
89864                VULKAN_HPP_NAMESPACE::Bool32 const &,
89865                VULKAN_HPP_NAMESPACE::Bool32 const &,
89866                VULKAN_HPP_NAMESPACE::Bool32 const &,
89867                VULKAN_HPP_NAMESPACE::Bool32 const &,
89868                VULKAN_HPP_NAMESPACE::Bool32 const &,
89869                VULKAN_HPP_NAMESPACE::Bool32 const &,
89870                VULKAN_HPP_NAMESPACE::Bool32 const &,
89871                VULKAN_HPP_NAMESPACE::Bool32 const &,
89872                VULKAN_HPP_NAMESPACE::Bool32 const &,
89873                VULKAN_HPP_NAMESPACE::Bool32 const &,
89874                VULKAN_HPP_NAMESPACE::Bool32 const &,
89875                VULKAN_HPP_NAMESPACE::Bool32 const &,
89876                VULKAN_HPP_NAMESPACE::Bool32 const &,
89877                VULKAN_HPP_NAMESPACE::Bool32 const &,
89878                VULKAN_HPP_NAMESPACE::Bool32 const &,
89879                VULKAN_HPP_NAMESPACE::Bool32 const &,
89880                VULKAN_HPP_NAMESPACE::Bool32 const &,
89881                VULKAN_HPP_NAMESPACE::Bool32 const &,
89882                VULKAN_HPP_NAMESPACE::Bool32 const &,
89883                VULKAN_HPP_NAMESPACE::Bool32 const &,
89884                VULKAN_HPP_NAMESPACE::Bool32 const &>
89885 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89886       reflect() const VULKAN_HPP_NOEXCEPT
89887     {
89888       return std::tie( sType,
89889                        pNext,
89890                        samplerMirrorClampToEdge,
89891                        drawIndirectCount,
89892                        storageBuffer8BitAccess,
89893                        uniformAndStorageBuffer8BitAccess,
89894                        storagePushConstant8,
89895                        shaderBufferInt64Atomics,
89896                        shaderSharedInt64Atomics,
89897                        shaderFloat16,
89898                        shaderInt8,
89899                        descriptorIndexing,
89900                        shaderInputAttachmentArrayDynamicIndexing,
89901                        shaderUniformTexelBufferArrayDynamicIndexing,
89902                        shaderStorageTexelBufferArrayDynamicIndexing,
89903                        shaderUniformBufferArrayNonUniformIndexing,
89904                        shaderSampledImageArrayNonUniformIndexing,
89905                        shaderStorageBufferArrayNonUniformIndexing,
89906                        shaderStorageImageArrayNonUniformIndexing,
89907                        shaderInputAttachmentArrayNonUniformIndexing,
89908                        shaderUniformTexelBufferArrayNonUniformIndexing,
89909                        shaderStorageTexelBufferArrayNonUniformIndexing,
89910                        descriptorBindingUniformBufferUpdateAfterBind,
89911                        descriptorBindingSampledImageUpdateAfterBind,
89912                        descriptorBindingStorageImageUpdateAfterBind,
89913                        descriptorBindingStorageBufferUpdateAfterBind,
89914                        descriptorBindingUniformTexelBufferUpdateAfterBind,
89915                        descriptorBindingStorageTexelBufferUpdateAfterBind,
89916                        descriptorBindingUpdateUnusedWhilePending,
89917                        descriptorBindingPartiallyBound,
89918                        descriptorBindingVariableDescriptorCount,
89919                        runtimeDescriptorArray,
89920                        samplerFilterMinmax,
89921                        scalarBlockLayout,
89922                        imagelessFramebuffer,
89923                        uniformBufferStandardLayout,
89924                        shaderSubgroupExtendedTypes,
89925                        separateDepthStencilLayouts,
89926                        hostQueryReset,
89927                        timelineSemaphore,
89928                        bufferDeviceAddress,
89929                        bufferDeviceAddressCaptureReplay,
89930                        bufferDeviceAddressMultiDevice,
89931                        vulkanMemoryModel,
89932                        vulkanMemoryModelDeviceScope,
89933                        vulkanMemoryModelAvailabilityVisibilityChains,
89934                        shaderOutputViewportIndex,
89935                        shaderOutputLayer,
89936                        subgroupBroadcastDynamicId );
89937     }
89938 #endif
89939 
89940 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
89941     auto operator<=>( PhysicalDeviceVulkan12Features const & ) const = default;
89942 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89943     bool operator==( PhysicalDeviceVulkan12Features const & rhs ) const VULKAN_HPP_NOEXCEPT
89944     {
89945 #  if defined( VULKAN_HPP_USE_REFLECT )
89946       return this->reflect() == rhs.reflect();
89947 #  else
89948       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( samplerMirrorClampToEdge == rhs.samplerMirrorClampToEdge ) &&
89949              ( drawIndirectCount == rhs.drawIndirectCount ) && ( storageBuffer8BitAccess == rhs.storageBuffer8BitAccess ) &&
89950              ( uniformAndStorageBuffer8BitAccess == rhs.uniformAndStorageBuffer8BitAccess ) && ( storagePushConstant8 == rhs.storagePushConstant8 ) &&
89951              ( shaderBufferInt64Atomics == rhs.shaderBufferInt64Atomics ) && ( shaderSharedInt64Atomics == rhs.shaderSharedInt64Atomics ) &&
89952              ( shaderFloat16 == rhs.shaderFloat16 ) && ( shaderInt8 == rhs.shaderInt8 ) && ( descriptorIndexing == rhs.descriptorIndexing ) &&
89953              ( shaderInputAttachmentArrayDynamicIndexing == rhs.shaderInputAttachmentArrayDynamicIndexing ) &&
89954              ( shaderUniformTexelBufferArrayDynamicIndexing == rhs.shaderUniformTexelBufferArrayDynamicIndexing ) &&
89955              ( shaderStorageTexelBufferArrayDynamicIndexing == rhs.shaderStorageTexelBufferArrayDynamicIndexing ) &&
89956              ( shaderUniformBufferArrayNonUniformIndexing == rhs.shaderUniformBufferArrayNonUniformIndexing ) &&
89957              ( shaderSampledImageArrayNonUniformIndexing == rhs.shaderSampledImageArrayNonUniformIndexing ) &&
89958              ( shaderStorageBufferArrayNonUniformIndexing == rhs.shaderStorageBufferArrayNonUniformIndexing ) &&
89959              ( shaderStorageImageArrayNonUniformIndexing == rhs.shaderStorageImageArrayNonUniformIndexing ) &&
89960              ( shaderInputAttachmentArrayNonUniformIndexing == rhs.shaderInputAttachmentArrayNonUniformIndexing ) &&
89961              ( shaderUniformTexelBufferArrayNonUniformIndexing == rhs.shaderUniformTexelBufferArrayNonUniformIndexing ) &&
89962              ( shaderStorageTexelBufferArrayNonUniformIndexing == rhs.shaderStorageTexelBufferArrayNonUniformIndexing ) &&
89963              ( descriptorBindingUniformBufferUpdateAfterBind == rhs.descriptorBindingUniformBufferUpdateAfterBind ) &&
89964              ( descriptorBindingSampledImageUpdateAfterBind == rhs.descriptorBindingSampledImageUpdateAfterBind ) &&
89965              ( descriptorBindingStorageImageUpdateAfterBind == rhs.descriptorBindingStorageImageUpdateAfterBind ) &&
89966              ( descriptorBindingStorageBufferUpdateAfterBind == rhs.descriptorBindingStorageBufferUpdateAfterBind ) &&
89967              ( descriptorBindingUniformTexelBufferUpdateAfterBind == rhs.descriptorBindingUniformTexelBufferUpdateAfterBind ) &&
89968              ( descriptorBindingStorageTexelBufferUpdateAfterBind == rhs.descriptorBindingStorageTexelBufferUpdateAfterBind ) &&
89969              ( descriptorBindingUpdateUnusedWhilePending == rhs.descriptorBindingUpdateUnusedWhilePending ) &&
89970              ( descriptorBindingPartiallyBound == rhs.descriptorBindingPartiallyBound ) &&
89971              ( descriptorBindingVariableDescriptorCount == rhs.descriptorBindingVariableDescriptorCount ) &&
89972              ( runtimeDescriptorArray == rhs.runtimeDescriptorArray ) && ( samplerFilterMinmax == rhs.samplerFilterMinmax ) &&
89973              ( scalarBlockLayout == rhs.scalarBlockLayout ) && ( imagelessFramebuffer == rhs.imagelessFramebuffer ) &&
89974              ( uniformBufferStandardLayout == rhs.uniformBufferStandardLayout ) && ( shaderSubgroupExtendedTypes == rhs.shaderSubgroupExtendedTypes ) &&
89975              ( separateDepthStencilLayouts == rhs.separateDepthStencilLayouts ) && ( hostQueryReset == rhs.hostQueryReset ) &&
89976              ( timelineSemaphore == rhs.timelineSemaphore ) && ( bufferDeviceAddress == rhs.bufferDeviceAddress ) &&
89977              ( bufferDeviceAddressCaptureReplay == rhs.bufferDeviceAddressCaptureReplay ) &&
89978              ( bufferDeviceAddressMultiDevice == rhs.bufferDeviceAddressMultiDevice ) && ( vulkanMemoryModel == rhs.vulkanMemoryModel ) &&
89979              ( vulkanMemoryModelDeviceScope == rhs.vulkanMemoryModelDeviceScope ) &&
89980              ( vulkanMemoryModelAvailabilityVisibilityChains == rhs.vulkanMemoryModelAvailabilityVisibilityChains ) &&
89981              ( shaderOutputViewportIndex == rhs.shaderOutputViewportIndex ) && ( shaderOutputLayer == rhs.shaderOutputLayer ) &&
89982              ( subgroupBroadcastDynamicId == rhs.subgroupBroadcastDynamicId );
89983 #  endif
89984     }
89985 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features89986     bool operator!=( PhysicalDeviceVulkan12Features const & rhs ) const VULKAN_HPP_NOEXCEPT
89987     {
89988       return !operator==( rhs );
89989     }
89990 #endif
89991 
89992   public:
89993     VULKAN_HPP_NAMESPACE::StructureType sType                                              = StructureType::ePhysicalDeviceVulkan12Features;
89994     void *                              pNext                                              = {};
89995     VULKAN_HPP_NAMESPACE::Bool32        samplerMirrorClampToEdge                           = {};
89996     VULKAN_HPP_NAMESPACE::Bool32        drawIndirectCount                                  = {};
89997     VULKAN_HPP_NAMESPACE::Bool32        storageBuffer8BitAccess                            = {};
89998     VULKAN_HPP_NAMESPACE::Bool32        uniformAndStorageBuffer8BitAccess                  = {};
89999     VULKAN_HPP_NAMESPACE::Bool32        storagePushConstant8                               = {};
90000     VULKAN_HPP_NAMESPACE::Bool32        shaderBufferInt64Atomics                           = {};
90001     VULKAN_HPP_NAMESPACE::Bool32        shaderSharedInt64Atomics                           = {};
90002     VULKAN_HPP_NAMESPACE::Bool32        shaderFloat16                                      = {};
90003     VULKAN_HPP_NAMESPACE::Bool32        shaderInt8                                         = {};
90004     VULKAN_HPP_NAMESPACE::Bool32        descriptorIndexing                                 = {};
90005     VULKAN_HPP_NAMESPACE::Bool32        shaderInputAttachmentArrayDynamicIndexing          = {};
90006     VULKAN_HPP_NAMESPACE::Bool32        shaderUniformTexelBufferArrayDynamicIndexing       = {};
90007     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageTexelBufferArrayDynamicIndexing       = {};
90008     VULKAN_HPP_NAMESPACE::Bool32        shaderUniformBufferArrayNonUniformIndexing         = {};
90009     VULKAN_HPP_NAMESPACE::Bool32        shaderSampledImageArrayNonUniformIndexing          = {};
90010     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageBufferArrayNonUniformIndexing         = {};
90011     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageImageArrayNonUniformIndexing          = {};
90012     VULKAN_HPP_NAMESPACE::Bool32        shaderInputAttachmentArrayNonUniformIndexing       = {};
90013     VULKAN_HPP_NAMESPACE::Bool32        shaderUniformTexelBufferArrayNonUniformIndexing    = {};
90014     VULKAN_HPP_NAMESPACE::Bool32        shaderStorageTexelBufferArrayNonUniformIndexing    = {};
90015     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingUniformBufferUpdateAfterBind      = {};
90016     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingSampledImageUpdateAfterBind       = {};
90017     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingStorageImageUpdateAfterBind       = {};
90018     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingStorageBufferUpdateAfterBind      = {};
90019     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingUniformTexelBufferUpdateAfterBind = {};
90020     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingStorageTexelBufferUpdateAfterBind = {};
90021     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingUpdateUnusedWhilePending          = {};
90022     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingPartiallyBound                    = {};
90023     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingVariableDescriptorCount           = {};
90024     VULKAN_HPP_NAMESPACE::Bool32        runtimeDescriptorArray                             = {};
90025     VULKAN_HPP_NAMESPACE::Bool32        samplerFilterMinmax                                = {};
90026     VULKAN_HPP_NAMESPACE::Bool32        scalarBlockLayout                                  = {};
90027     VULKAN_HPP_NAMESPACE::Bool32        imagelessFramebuffer                               = {};
90028     VULKAN_HPP_NAMESPACE::Bool32        uniformBufferStandardLayout                        = {};
90029     VULKAN_HPP_NAMESPACE::Bool32        shaderSubgroupExtendedTypes                        = {};
90030     VULKAN_HPP_NAMESPACE::Bool32        separateDepthStencilLayouts                        = {};
90031     VULKAN_HPP_NAMESPACE::Bool32        hostQueryReset                                     = {};
90032     VULKAN_HPP_NAMESPACE::Bool32        timelineSemaphore                                  = {};
90033     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddress                                = {};
90034     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddressCaptureReplay                   = {};
90035     VULKAN_HPP_NAMESPACE::Bool32        bufferDeviceAddressMultiDevice                     = {};
90036     VULKAN_HPP_NAMESPACE::Bool32        vulkanMemoryModel                                  = {};
90037     VULKAN_HPP_NAMESPACE::Bool32        vulkanMemoryModelDeviceScope                       = {};
90038     VULKAN_HPP_NAMESPACE::Bool32        vulkanMemoryModelAvailabilityVisibilityChains      = {};
90039     VULKAN_HPP_NAMESPACE::Bool32        shaderOutputViewportIndex                          = {};
90040     VULKAN_HPP_NAMESPACE::Bool32        shaderOutputLayer                                  = {};
90041     VULKAN_HPP_NAMESPACE::Bool32        subgroupBroadcastDynamicId                         = {};
90042   };
90043 
90044   template <>
90045   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan12Features>
90046   {
90047     using Type = PhysicalDeviceVulkan12Features;
90048   };
90049 
90050   struct PhysicalDeviceVulkan12Properties
90051   {
90052     using NativeType = VkPhysicalDeviceVulkan12Properties;
90053 
90054     static const bool                                  allowDuplicate = false;
90055     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVulkan12Properties;
90056 
90057 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkan12PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties90058     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Properties(
90059       VULKAN_HPP_NAMESPACE::DriverId                        driverID_                   = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary,
90060       std::array<char, VK_MAX_DRIVER_NAME_SIZE> const &     driverName_                 = {},
90061       std::array<char, VK_MAX_DRIVER_INFO_SIZE> const &     driverInfo_                 = {},
90062       VULKAN_HPP_NAMESPACE::ConformanceVersion              conformanceVersion_         = {},
90063       VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence_ = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly,
90064       VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence_   = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly,
90065       VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat16_                = {},
90066       VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat32_                = {},
90067       VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat64_                = {},
90068       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat16_                          = {},
90069       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat32_                          = {},
90070       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat64_                          = {},
90071       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat16_                       = {},
90072       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat32_                       = {},
90073       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat64_                       = {},
90074       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat16_                         = {},
90075       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat32_                         = {},
90076       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat64_                         = {},
90077       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat16_                         = {},
90078       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat32_                         = {},
90079       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat64_                         = {},
90080       uint32_t                                              maxUpdateAfterBindDescriptorsInAllPools_              = {},
90081       VULKAN_HPP_NAMESPACE::Bool32                          shaderUniformBufferArrayNonUniformIndexingNative_     = {},
90082       VULKAN_HPP_NAMESPACE::Bool32                          shaderSampledImageArrayNonUniformIndexingNative_      = {},
90083       VULKAN_HPP_NAMESPACE::Bool32                          shaderStorageBufferArrayNonUniformIndexingNative_     = {},
90084       VULKAN_HPP_NAMESPACE::Bool32                          shaderStorageImageArrayNonUniformIndexingNative_      = {},
90085       VULKAN_HPP_NAMESPACE::Bool32                          shaderInputAttachmentArrayNonUniformIndexingNative_   = {},
90086       VULKAN_HPP_NAMESPACE::Bool32                          robustBufferAccessUpdateAfterBind_                    = {},
90087       VULKAN_HPP_NAMESPACE::Bool32                          quadDivergentImplicitLod_                             = {},
90088       uint32_t                                              maxPerStageDescriptorUpdateAfterBindSamplers_         = {},
90089       uint32_t                                              maxPerStageDescriptorUpdateAfterBindUniformBuffers_   = {},
90090       uint32_t                                              maxPerStageDescriptorUpdateAfterBindStorageBuffers_   = {},
90091       uint32_t                                              maxPerStageDescriptorUpdateAfterBindSampledImages_    = {},
90092       uint32_t                                              maxPerStageDescriptorUpdateAfterBindStorageImages_    = {},
90093       uint32_t                                              maxPerStageDescriptorUpdateAfterBindInputAttachments_ = {},
90094       uint32_t                                              maxPerStageUpdateAfterBindResources_                  = {},
90095       uint32_t                                              maxDescriptorSetUpdateAfterBindSamplers_              = {},
90096       uint32_t                                              maxDescriptorSetUpdateAfterBindUniformBuffers_        = {},
90097       uint32_t                                              maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ = {},
90098       uint32_t                                              maxDescriptorSetUpdateAfterBindStorageBuffers_        = {},
90099       uint32_t                                              maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ = {},
90100       uint32_t                                              maxDescriptorSetUpdateAfterBindSampledImages_         = {},
90101       uint32_t                                              maxDescriptorSetUpdateAfterBindStorageImages_         = {},
90102       uint32_t                                              maxDescriptorSetUpdateAfterBindInputAttachments_      = {},
90103       VULKAN_HPP_NAMESPACE::ResolveModeFlags                supportedDepthResolveModes_                           = {},
90104       VULKAN_HPP_NAMESPACE::ResolveModeFlags                supportedStencilResolveModes_                         = {},
90105       VULKAN_HPP_NAMESPACE::Bool32                          independentResolveNone_                               = {},
90106       VULKAN_HPP_NAMESPACE::Bool32                          independentResolve_                                   = {},
90107       VULKAN_HPP_NAMESPACE::Bool32                          filterMinmaxSingleComponentFormats_                   = {},
90108       VULKAN_HPP_NAMESPACE::Bool32                          filterMinmaxImageComponentMapping_                    = {},
90109       uint64_t                                              maxTimelineSemaphoreValueDifference_                  = {},
90110       VULKAN_HPP_NAMESPACE::SampleCountFlags                framebufferIntegerColorSampleCounts_                  = {},
90111       void *                                                pNext_                                                = nullptr ) VULKAN_HPP_NOEXCEPT
90112       : pNext{ pNext_ }
90113       , driverID{ driverID_ }
90114       , driverName{ driverName_ }
90115       , driverInfo{ driverInfo_ }
90116       , conformanceVersion{ conformanceVersion_ }
90117       , denormBehaviorIndependence{ denormBehaviorIndependence_ }
90118       , roundingModeIndependence{ roundingModeIndependence_ }
90119       , shaderSignedZeroInfNanPreserveFloat16{ shaderSignedZeroInfNanPreserveFloat16_ }
90120       , shaderSignedZeroInfNanPreserveFloat32{ shaderSignedZeroInfNanPreserveFloat32_ }
90121       , shaderSignedZeroInfNanPreserveFloat64{ shaderSignedZeroInfNanPreserveFloat64_ }
90122       , shaderDenormPreserveFloat16{ shaderDenormPreserveFloat16_ }
90123       , shaderDenormPreserveFloat32{ shaderDenormPreserveFloat32_ }
90124       , shaderDenormPreserveFloat64{ shaderDenormPreserveFloat64_ }
90125       , shaderDenormFlushToZeroFloat16{ shaderDenormFlushToZeroFloat16_ }
90126       , shaderDenormFlushToZeroFloat32{ shaderDenormFlushToZeroFloat32_ }
90127       , shaderDenormFlushToZeroFloat64{ shaderDenormFlushToZeroFloat64_ }
90128       , shaderRoundingModeRTEFloat16{ shaderRoundingModeRTEFloat16_ }
90129       , shaderRoundingModeRTEFloat32{ shaderRoundingModeRTEFloat32_ }
90130       , shaderRoundingModeRTEFloat64{ shaderRoundingModeRTEFloat64_ }
90131       , shaderRoundingModeRTZFloat16{ shaderRoundingModeRTZFloat16_ }
90132       , shaderRoundingModeRTZFloat32{ shaderRoundingModeRTZFloat32_ }
90133       , shaderRoundingModeRTZFloat64{ shaderRoundingModeRTZFloat64_ }
90134       , maxUpdateAfterBindDescriptorsInAllPools{ maxUpdateAfterBindDescriptorsInAllPools_ }
90135       , shaderUniformBufferArrayNonUniformIndexingNative{ shaderUniformBufferArrayNonUniformIndexingNative_ }
90136       , shaderSampledImageArrayNonUniformIndexingNative{ shaderSampledImageArrayNonUniformIndexingNative_ }
90137       , shaderStorageBufferArrayNonUniformIndexingNative{ shaderStorageBufferArrayNonUniformIndexingNative_ }
90138       , shaderStorageImageArrayNonUniformIndexingNative{ shaderStorageImageArrayNonUniformIndexingNative_ }
90139       , shaderInputAttachmentArrayNonUniformIndexingNative{ shaderInputAttachmentArrayNonUniformIndexingNative_ }
90140       , robustBufferAccessUpdateAfterBind{ robustBufferAccessUpdateAfterBind_ }
90141       , quadDivergentImplicitLod{ quadDivergentImplicitLod_ }
90142       , maxPerStageDescriptorUpdateAfterBindSamplers{ maxPerStageDescriptorUpdateAfterBindSamplers_ }
90143       , maxPerStageDescriptorUpdateAfterBindUniformBuffers{ maxPerStageDescriptorUpdateAfterBindUniformBuffers_ }
90144       , maxPerStageDescriptorUpdateAfterBindStorageBuffers{ maxPerStageDescriptorUpdateAfterBindStorageBuffers_ }
90145       , maxPerStageDescriptorUpdateAfterBindSampledImages{ maxPerStageDescriptorUpdateAfterBindSampledImages_ }
90146       , maxPerStageDescriptorUpdateAfterBindStorageImages{ maxPerStageDescriptorUpdateAfterBindStorageImages_ }
90147       , maxPerStageDescriptorUpdateAfterBindInputAttachments{ maxPerStageDescriptorUpdateAfterBindInputAttachments_ }
90148       , maxPerStageUpdateAfterBindResources{ maxPerStageUpdateAfterBindResources_ }
90149       , maxDescriptorSetUpdateAfterBindSamplers{ maxDescriptorSetUpdateAfterBindSamplers_ }
90150       , maxDescriptorSetUpdateAfterBindUniformBuffers{ maxDescriptorSetUpdateAfterBindUniformBuffers_ }
90151       , maxDescriptorSetUpdateAfterBindUniformBuffersDynamic{ maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ }
90152       , maxDescriptorSetUpdateAfterBindStorageBuffers{ maxDescriptorSetUpdateAfterBindStorageBuffers_ }
90153       , maxDescriptorSetUpdateAfterBindStorageBuffersDynamic{ maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ }
90154       , maxDescriptorSetUpdateAfterBindSampledImages{ maxDescriptorSetUpdateAfterBindSampledImages_ }
90155       , maxDescriptorSetUpdateAfterBindStorageImages{ maxDescriptorSetUpdateAfterBindStorageImages_ }
90156       , maxDescriptorSetUpdateAfterBindInputAttachments{ maxDescriptorSetUpdateAfterBindInputAttachments_ }
90157       , supportedDepthResolveModes{ supportedDepthResolveModes_ }
90158       , supportedStencilResolveModes{ supportedStencilResolveModes_ }
90159       , independentResolveNone{ independentResolveNone_ }
90160       , independentResolve{ independentResolve_ }
90161       , filterMinmaxSingleComponentFormats{ filterMinmaxSingleComponentFormats_ }
90162       , filterMinmaxImageComponentMapping{ filterMinmaxImageComponentMapping_ }
90163       , maxTimelineSemaphoreValueDifference{ maxTimelineSemaphoreValueDifference_ }
90164       , framebufferIntegerColorSampleCounts{ framebufferIntegerColorSampleCounts_ }
90165     {
90166     }
90167 
90168     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Properties( PhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90169 
PhysicalDeviceVulkan12PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties90170     PhysicalDeviceVulkan12Properties( VkPhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT
90171       : PhysicalDeviceVulkan12Properties( *reinterpret_cast<PhysicalDeviceVulkan12Properties const *>( &rhs ) )
90172     {
90173     }
90174 
90175 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PhysicalDeviceVulkan12PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties90176     PhysicalDeviceVulkan12Properties(
90177       VULKAN_HPP_NAMESPACE::DriverId                        driverID_,
90178       std::string const &                                   driverName_,
90179       std::string const &                                   driverInfo_                 = {},
90180       VULKAN_HPP_NAMESPACE::ConformanceVersion              conformanceVersion_         = {},
90181       VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence_ = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly,
90182       VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence_   = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly,
90183       VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat16_                = {},
90184       VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat32_                = {},
90185       VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat64_                = {},
90186       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat16_                          = {},
90187       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat32_                          = {},
90188       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat64_                          = {},
90189       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat16_                       = {},
90190       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat32_                       = {},
90191       VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat64_                       = {},
90192       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat16_                         = {},
90193       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat32_                         = {},
90194       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat64_                         = {},
90195       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat16_                         = {},
90196       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat32_                         = {},
90197       VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat64_                         = {},
90198       uint32_t                                              maxUpdateAfterBindDescriptorsInAllPools_              = {},
90199       VULKAN_HPP_NAMESPACE::Bool32                          shaderUniformBufferArrayNonUniformIndexingNative_     = {},
90200       VULKAN_HPP_NAMESPACE::Bool32                          shaderSampledImageArrayNonUniformIndexingNative_      = {},
90201       VULKAN_HPP_NAMESPACE::Bool32                          shaderStorageBufferArrayNonUniformIndexingNative_     = {},
90202       VULKAN_HPP_NAMESPACE::Bool32                          shaderStorageImageArrayNonUniformIndexingNative_      = {},
90203       VULKAN_HPP_NAMESPACE::Bool32                          shaderInputAttachmentArrayNonUniformIndexingNative_   = {},
90204       VULKAN_HPP_NAMESPACE::Bool32                          robustBufferAccessUpdateAfterBind_                    = {},
90205       VULKAN_HPP_NAMESPACE::Bool32                          quadDivergentImplicitLod_                             = {},
90206       uint32_t                                              maxPerStageDescriptorUpdateAfterBindSamplers_         = {},
90207       uint32_t                                              maxPerStageDescriptorUpdateAfterBindUniformBuffers_   = {},
90208       uint32_t                                              maxPerStageDescriptorUpdateAfterBindStorageBuffers_   = {},
90209       uint32_t                                              maxPerStageDescriptorUpdateAfterBindSampledImages_    = {},
90210       uint32_t                                              maxPerStageDescriptorUpdateAfterBindStorageImages_    = {},
90211       uint32_t                                              maxPerStageDescriptorUpdateAfterBindInputAttachments_ = {},
90212       uint32_t                                              maxPerStageUpdateAfterBindResources_                  = {},
90213       uint32_t                                              maxDescriptorSetUpdateAfterBindSamplers_              = {},
90214       uint32_t                                              maxDescriptorSetUpdateAfterBindUniformBuffers_        = {},
90215       uint32_t                                              maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ = {},
90216       uint32_t                                              maxDescriptorSetUpdateAfterBindStorageBuffers_        = {},
90217       uint32_t                                              maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ = {},
90218       uint32_t                                              maxDescriptorSetUpdateAfterBindSampledImages_         = {},
90219       uint32_t                                              maxDescriptorSetUpdateAfterBindStorageImages_         = {},
90220       uint32_t                                              maxDescriptorSetUpdateAfterBindInputAttachments_      = {},
90221       VULKAN_HPP_NAMESPACE::ResolveModeFlags                supportedDepthResolveModes_                           = {},
90222       VULKAN_HPP_NAMESPACE::ResolveModeFlags                supportedStencilResolveModes_                         = {},
90223       VULKAN_HPP_NAMESPACE::Bool32                          independentResolveNone_                               = {},
90224       VULKAN_HPP_NAMESPACE::Bool32                          independentResolve_                                   = {},
90225       VULKAN_HPP_NAMESPACE::Bool32                          filterMinmaxSingleComponentFormats_                   = {},
90226       VULKAN_HPP_NAMESPACE::Bool32                          filterMinmaxImageComponentMapping_                    = {},
90227       uint64_t                                              maxTimelineSemaphoreValueDifference_                  = {},
90228       VULKAN_HPP_NAMESPACE::SampleCountFlags                framebufferIntegerColorSampleCounts_                  = {},
90229       void *                                                pNext_                                                = nullptr )
90230       : pNext( pNext_ )
90231       , driverID( driverID_ )
90232       , conformanceVersion( conformanceVersion_ )
90233       , denormBehaviorIndependence( denormBehaviorIndependence_ )
90234       , roundingModeIndependence( roundingModeIndependence_ )
90235       , shaderSignedZeroInfNanPreserveFloat16( shaderSignedZeroInfNanPreserveFloat16_ )
90236       , shaderSignedZeroInfNanPreserveFloat32( shaderSignedZeroInfNanPreserveFloat32_ )
90237       , shaderSignedZeroInfNanPreserveFloat64( shaderSignedZeroInfNanPreserveFloat64_ )
90238       , shaderDenormPreserveFloat16( shaderDenormPreserveFloat16_ )
90239       , shaderDenormPreserveFloat32( shaderDenormPreserveFloat32_ )
90240       , shaderDenormPreserveFloat64( shaderDenormPreserveFloat64_ )
90241       , shaderDenormFlushToZeroFloat16( shaderDenormFlushToZeroFloat16_ )
90242       , shaderDenormFlushToZeroFloat32( shaderDenormFlushToZeroFloat32_ )
90243       , shaderDenormFlushToZeroFloat64( shaderDenormFlushToZeroFloat64_ )
90244       , shaderRoundingModeRTEFloat16( shaderRoundingModeRTEFloat16_ )
90245       , shaderRoundingModeRTEFloat32( shaderRoundingModeRTEFloat32_ )
90246       , shaderRoundingModeRTEFloat64( shaderRoundingModeRTEFloat64_ )
90247       , shaderRoundingModeRTZFloat16( shaderRoundingModeRTZFloat16_ )
90248       , shaderRoundingModeRTZFloat32( shaderRoundingModeRTZFloat32_ )
90249       , shaderRoundingModeRTZFloat64( shaderRoundingModeRTZFloat64_ )
90250       , maxUpdateAfterBindDescriptorsInAllPools( maxUpdateAfterBindDescriptorsInAllPools_ )
90251       , shaderUniformBufferArrayNonUniformIndexingNative( shaderUniformBufferArrayNonUniformIndexingNative_ )
90252       , shaderSampledImageArrayNonUniformIndexingNative( shaderSampledImageArrayNonUniformIndexingNative_ )
90253       , shaderStorageBufferArrayNonUniformIndexingNative( shaderStorageBufferArrayNonUniformIndexingNative_ )
90254       , shaderStorageImageArrayNonUniformIndexingNative( shaderStorageImageArrayNonUniformIndexingNative_ )
90255       , shaderInputAttachmentArrayNonUniformIndexingNative( shaderInputAttachmentArrayNonUniformIndexingNative_ )
90256       , robustBufferAccessUpdateAfterBind( robustBufferAccessUpdateAfterBind_ )
90257       , quadDivergentImplicitLod( quadDivergentImplicitLod_ )
90258       , maxPerStageDescriptorUpdateAfterBindSamplers( maxPerStageDescriptorUpdateAfterBindSamplers_ )
90259       , maxPerStageDescriptorUpdateAfterBindUniformBuffers( maxPerStageDescriptorUpdateAfterBindUniformBuffers_ )
90260       , maxPerStageDescriptorUpdateAfterBindStorageBuffers( maxPerStageDescriptorUpdateAfterBindStorageBuffers_ )
90261       , maxPerStageDescriptorUpdateAfterBindSampledImages( maxPerStageDescriptorUpdateAfterBindSampledImages_ )
90262       , maxPerStageDescriptorUpdateAfterBindStorageImages( maxPerStageDescriptorUpdateAfterBindStorageImages_ )
90263       , maxPerStageDescriptorUpdateAfterBindInputAttachments( maxPerStageDescriptorUpdateAfterBindInputAttachments_ )
90264       , maxPerStageUpdateAfterBindResources( maxPerStageUpdateAfterBindResources_ )
90265       , maxDescriptorSetUpdateAfterBindSamplers( maxDescriptorSetUpdateAfterBindSamplers_ )
90266       , maxDescriptorSetUpdateAfterBindUniformBuffers( maxDescriptorSetUpdateAfterBindUniformBuffers_ )
90267       , maxDescriptorSetUpdateAfterBindUniformBuffersDynamic( maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ )
90268       , maxDescriptorSetUpdateAfterBindStorageBuffers( maxDescriptorSetUpdateAfterBindStorageBuffers_ )
90269       , maxDescriptorSetUpdateAfterBindStorageBuffersDynamic( maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ )
90270       , maxDescriptorSetUpdateAfterBindSampledImages( maxDescriptorSetUpdateAfterBindSampledImages_ )
90271       , maxDescriptorSetUpdateAfterBindStorageImages( maxDescriptorSetUpdateAfterBindStorageImages_ )
90272       , maxDescriptorSetUpdateAfterBindInputAttachments( maxDescriptorSetUpdateAfterBindInputAttachments_ )
90273       , supportedDepthResolveModes( supportedDepthResolveModes_ )
90274       , supportedStencilResolveModes( supportedStencilResolveModes_ )
90275       , independentResolveNone( independentResolveNone_ )
90276       , independentResolve( independentResolve_ )
90277       , filterMinmaxSingleComponentFormats( filterMinmaxSingleComponentFormats_ )
90278       , filterMinmaxImageComponentMapping( filterMinmaxImageComponentMapping_ )
90279       , maxTimelineSemaphoreValueDifference( maxTimelineSemaphoreValueDifference_ )
90280       , framebufferIntegerColorSampleCounts( framebufferIntegerColorSampleCounts_ )
90281     {
90282       VULKAN_HPP_ASSERT( driverName_.size() < VK_MAX_DRIVER_NAME_SIZE );
90283 #    if defined( WIN32 )
90284       strncpy_s( driverName, VK_MAX_DRIVER_NAME_SIZE, driverName_.data(), driverName_.size() );
90285 #    else
90286       strncpy( driverName, driverName_.data(), std::min<size_t>( VK_MAX_DRIVER_NAME_SIZE, driverName_.size() ) );
90287 #    endif
90288 
90289       VULKAN_HPP_ASSERT( driverInfo_.size() < VK_MAX_DRIVER_INFO_SIZE );
90290 #    if defined( WIN32 )
90291       strncpy_s( driverInfo, VK_MAX_DRIVER_INFO_SIZE, driverInfo_.data(), driverInfo_.size() );
90292 #    else
90293       strncpy( driverInfo, driverInfo_.data(), std::min<size_t>( VK_MAX_DRIVER_INFO_SIZE, driverInfo_.size() ) );
90294 #    endif
90295     }
90296 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
90297 
90298     PhysicalDeviceVulkan12Properties & operator=( PhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90299 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
90300 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties90301     PhysicalDeviceVulkan12Properties & operator=( VkPhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT
90302     {
90303       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties const *>( &rhs );
90304       return *this;
90305     }
90306 
operator VkPhysicalDeviceVulkan12Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties90307     operator VkPhysicalDeviceVulkan12Properties const &() const VULKAN_HPP_NOEXCEPT
90308     {
90309       return *reinterpret_cast<const VkPhysicalDeviceVulkan12Properties *>( this );
90310     }
90311 
operator VkPhysicalDeviceVulkan12Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties90312     operator VkPhysicalDeviceVulkan12Properties &() VULKAN_HPP_NOEXCEPT
90313     {
90314       return *reinterpret_cast<VkPhysicalDeviceVulkan12Properties *>( this );
90315     }
90316 
90317 #if defined( VULKAN_HPP_USE_REFLECT )
90318 #  if 14 <= VULKAN_HPP_CPP_VERSION
90319     auto
90320 #  else
90321     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
90322                void * const &,
90323                VULKAN_HPP_NAMESPACE::DriverId const &,
90324                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_NAME_SIZE> const &,
90325                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_INFO_SIZE> const &,
90326                VULKAN_HPP_NAMESPACE::ConformanceVersion const &,
90327                VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence const &,
90328                VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence const &,
90329                VULKAN_HPP_NAMESPACE::Bool32 const &,
90330                VULKAN_HPP_NAMESPACE::Bool32 const &,
90331                VULKAN_HPP_NAMESPACE::Bool32 const &,
90332                VULKAN_HPP_NAMESPACE::Bool32 const &,
90333                VULKAN_HPP_NAMESPACE::Bool32 const &,
90334                VULKAN_HPP_NAMESPACE::Bool32 const &,
90335                VULKAN_HPP_NAMESPACE::Bool32 const &,
90336                VULKAN_HPP_NAMESPACE::Bool32 const &,
90337                VULKAN_HPP_NAMESPACE::Bool32 const &,
90338                VULKAN_HPP_NAMESPACE::Bool32 const &,
90339                VULKAN_HPP_NAMESPACE::Bool32 const &,
90340                VULKAN_HPP_NAMESPACE::Bool32 const &,
90341                VULKAN_HPP_NAMESPACE::Bool32 const &,
90342                VULKAN_HPP_NAMESPACE::Bool32 const &,
90343                VULKAN_HPP_NAMESPACE::Bool32 const &,
90344                uint32_t const &,
90345                VULKAN_HPP_NAMESPACE::Bool32 const &,
90346                VULKAN_HPP_NAMESPACE::Bool32 const &,
90347                VULKAN_HPP_NAMESPACE::Bool32 const &,
90348                VULKAN_HPP_NAMESPACE::Bool32 const &,
90349                VULKAN_HPP_NAMESPACE::Bool32 const &,
90350                VULKAN_HPP_NAMESPACE::Bool32 const &,
90351                VULKAN_HPP_NAMESPACE::Bool32 const &,
90352                uint32_t const &,
90353                uint32_t const &,
90354                uint32_t const &,
90355                uint32_t const &,
90356                uint32_t const &,
90357                uint32_t const &,
90358                uint32_t const &,
90359                uint32_t const &,
90360                uint32_t const &,
90361                uint32_t const &,
90362                uint32_t const &,
90363                uint32_t const &,
90364                uint32_t const &,
90365                uint32_t const &,
90366                uint32_t const &,
90367                VULKAN_HPP_NAMESPACE::ResolveModeFlags const &,
90368                VULKAN_HPP_NAMESPACE::ResolveModeFlags const &,
90369                VULKAN_HPP_NAMESPACE::Bool32 const &,
90370                VULKAN_HPP_NAMESPACE::Bool32 const &,
90371                VULKAN_HPP_NAMESPACE::Bool32 const &,
90372                VULKAN_HPP_NAMESPACE::Bool32 const &,
90373                uint64_t const &,
90374                VULKAN_HPP_NAMESPACE::SampleCountFlags const &>
90375 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties90376       reflect() const VULKAN_HPP_NOEXCEPT
90377     {
90378       return std::tie( sType,
90379                        pNext,
90380                        driverID,
90381                        driverName,
90382                        driverInfo,
90383                        conformanceVersion,
90384                        denormBehaviorIndependence,
90385                        roundingModeIndependence,
90386                        shaderSignedZeroInfNanPreserveFloat16,
90387                        shaderSignedZeroInfNanPreserveFloat32,
90388                        shaderSignedZeroInfNanPreserveFloat64,
90389                        shaderDenormPreserveFloat16,
90390                        shaderDenormPreserveFloat32,
90391                        shaderDenormPreserveFloat64,
90392                        shaderDenormFlushToZeroFloat16,
90393                        shaderDenormFlushToZeroFloat32,
90394                        shaderDenormFlushToZeroFloat64,
90395                        shaderRoundingModeRTEFloat16,
90396                        shaderRoundingModeRTEFloat32,
90397                        shaderRoundingModeRTEFloat64,
90398                        shaderRoundingModeRTZFloat16,
90399                        shaderRoundingModeRTZFloat32,
90400                        shaderRoundingModeRTZFloat64,
90401                        maxUpdateAfterBindDescriptorsInAllPools,
90402                        shaderUniformBufferArrayNonUniformIndexingNative,
90403                        shaderSampledImageArrayNonUniformIndexingNative,
90404                        shaderStorageBufferArrayNonUniformIndexingNative,
90405                        shaderStorageImageArrayNonUniformIndexingNative,
90406                        shaderInputAttachmentArrayNonUniformIndexingNative,
90407                        robustBufferAccessUpdateAfterBind,
90408                        quadDivergentImplicitLod,
90409                        maxPerStageDescriptorUpdateAfterBindSamplers,
90410                        maxPerStageDescriptorUpdateAfterBindUniformBuffers,
90411                        maxPerStageDescriptorUpdateAfterBindStorageBuffers,
90412                        maxPerStageDescriptorUpdateAfterBindSampledImages,
90413                        maxPerStageDescriptorUpdateAfterBindStorageImages,
90414                        maxPerStageDescriptorUpdateAfterBindInputAttachments,
90415                        maxPerStageUpdateAfterBindResources,
90416                        maxDescriptorSetUpdateAfterBindSamplers,
90417                        maxDescriptorSetUpdateAfterBindUniformBuffers,
90418                        maxDescriptorSetUpdateAfterBindUniformBuffersDynamic,
90419                        maxDescriptorSetUpdateAfterBindStorageBuffers,
90420                        maxDescriptorSetUpdateAfterBindStorageBuffersDynamic,
90421                        maxDescriptorSetUpdateAfterBindSampledImages,
90422                        maxDescriptorSetUpdateAfterBindStorageImages,
90423                        maxDescriptorSetUpdateAfterBindInputAttachments,
90424                        supportedDepthResolveModes,
90425                        supportedStencilResolveModes,
90426                        independentResolveNone,
90427                        independentResolve,
90428                        filterMinmaxSingleComponentFormats,
90429                        filterMinmaxImageComponentMapping,
90430                        maxTimelineSemaphoreValueDifference,
90431                        framebufferIntegerColorSampleCounts );
90432     }
90433 #endif
90434 
90435 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties90436     std::strong_ordering operator<=>( PhysicalDeviceVulkan12Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
90437     {
90438       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
90439         return cmp;
90440       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
90441         return cmp;
90442       if ( auto cmp = driverID <=> rhs.driverID; cmp != 0 )
90443         return cmp;
90444       if ( auto cmp = strcmp( driverName, rhs.driverName ); cmp != 0 )
90445         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
90446       if ( auto cmp = strcmp( driverInfo, rhs.driverInfo ); cmp != 0 )
90447         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
90448       if ( auto cmp = conformanceVersion <=> rhs.conformanceVersion; cmp != 0 )
90449         return cmp;
90450       if ( auto cmp = denormBehaviorIndependence <=> rhs.denormBehaviorIndependence; cmp != 0 )
90451         return cmp;
90452       if ( auto cmp = roundingModeIndependence <=> rhs.roundingModeIndependence; cmp != 0 )
90453         return cmp;
90454       if ( auto cmp = shaderSignedZeroInfNanPreserveFloat16 <=> rhs.shaderSignedZeroInfNanPreserveFloat16; cmp != 0 )
90455         return cmp;
90456       if ( auto cmp = shaderSignedZeroInfNanPreserveFloat32 <=> rhs.shaderSignedZeroInfNanPreserveFloat32; cmp != 0 )
90457         return cmp;
90458       if ( auto cmp = shaderSignedZeroInfNanPreserveFloat64 <=> rhs.shaderSignedZeroInfNanPreserveFloat64; cmp != 0 )
90459         return cmp;
90460       if ( auto cmp = shaderDenormPreserveFloat16 <=> rhs.shaderDenormPreserveFloat16; cmp != 0 )
90461         return cmp;
90462       if ( auto cmp = shaderDenormPreserveFloat32 <=> rhs.shaderDenormPreserveFloat32; cmp != 0 )
90463         return cmp;
90464       if ( auto cmp = shaderDenormPreserveFloat64 <=> rhs.shaderDenormPreserveFloat64; cmp != 0 )
90465         return cmp;
90466       if ( auto cmp = shaderDenormFlushToZeroFloat16 <=> rhs.shaderDenormFlushToZeroFloat16; cmp != 0 )
90467         return cmp;
90468       if ( auto cmp = shaderDenormFlushToZeroFloat32 <=> rhs.shaderDenormFlushToZeroFloat32; cmp != 0 )
90469         return cmp;
90470       if ( auto cmp = shaderDenormFlushToZeroFloat64 <=> rhs.shaderDenormFlushToZeroFloat64; cmp != 0 )
90471         return cmp;
90472       if ( auto cmp = shaderRoundingModeRTEFloat16 <=> rhs.shaderRoundingModeRTEFloat16; cmp != 0 )
90473         return cmp;
90474       if ( auto cmp = shaderRoundingModeRTEFloat32 <=> rhs.shaderRoundingModeRTEFloat32; cmp != 0 )
90475         return cmp;
90476       if ( auto cmp = shaderRoundingModeRTEFloat64 <=> rhs.shaderRoundingModeRTEFloat64; cmp != 0 )
90477         return cmp;
90478       if ( auto cmp = shaderRoundingModeRTZFloat16 <=> rhs.shaderRoundingModeRTZFloat16; cmp != 0 )
90479         return cmp;
90480       if ( auto cmp = shaderRoundingModeRTZFloat32 <=> rhs.shaderRoundingModeRTZFloat32; cmp != 0 )
90481         return cmp;
90482       if ( auto cmp = shaderRoundingModeRTZFloat64 <=> rhs.shaderRoundingModeRTZFloat64; cmp != 0 )
90483         return cmp;
90484       if ( auto cmp = maxUpdateAfterBindDescriptorsInAllPools <=> rhs.maxUpdateAfterBindDescriptorsInAllPools; cmp != 0 )
90485         return cmp;
90486       if ( auto cmp = shaderUniformBufferArrayNonUniformIndexingNative <=> rhs.shaderUniformBufferArrayNonUniformIndexingNative; cmp != 0 )
90487         return cmp;
90488       if ( auto cmp = shaderSampledImageArrayNonUniformIndexingNative <=> rhs.shaderSampledImageArrayNonUniformIndexingNative; cmp != 0 )
90489         return cmp;
90490       if ( auto cmp = shaderStorageBufferArrayNonUniformIndexingNative <=> rhs.shaderStorageBufferArrayNonUniformIndexingNative; cmp != 0 )
90491         return cmp;
90492       if ( auto cmp = shaderStorageImageArrayNonUniformIndexingNative <=> rhs.shaderStorageImageArrayNonUniformIndexingNative; cmp != 0 )
90493         return cmp;
90494       if ( auto cmp = shaderInputAttachmentArrayNonUniformIndexingNative <=> rhs.shaderInputAttachmentArrayNonUniformIndexingNative; cmp != 0 )
90495         return cmp;
90496       if ( auto cmp = robustBufferAccessUpdateAfterBind <=> rhs.robustBufferAccessUpdateAfterBind; cmp != 0 )
90497         return cmp;
90498       if ( auto cmp = quadDivergentImplicitLod <=> rhs.quadDivergentImplicitLod; cmp != 0 )
90499         return cmp;
90500       if ( auto cmp = maxPerStageDescriptorUpdateAfterBindSamplers <=> rhs.maxPerStageDescriptorUpdateAfterBindSamplers; cmp != 0 )
90501         return cmp;
90502       if ( auto cmp = maxPerStageDescriptorUpdateAfterBindUniformBuffers <=> rhs.maxPerStageDescriptorUpdateAfterBindUniformBuffers; cmp != 0 )
90503         return cmp;
90504       if ( auto cmp = maxPerStageDescriptorUpdateAfterBindStorageBuffers <=> rhs.maxPerStageDescriptorUpdateAfterBindStorageBuffers; cmp != 0 )
90505         return cmp;
90506       if ( auto cmp = maxPerStageDescriptorUpdateAfterBindSampledImages <=> rhs.maxPerStageDescriptorUpdateAfterBindSampledImages; cmp != 0 )
90507         return cmp;
90508       if ( auto cmp = maxPerStageDescriptorUpdateAfterBindStorageImages <=> rhs.maxPerStageDescriptorUpdateAfterBindStorageImages; cmp != 0 )
90509         return cmp;
90510       if ( auto cmp = maxPerStageDescriptorUpdateAfterBindInputAttachments <=> rhs.maxPerStageDescriptorUpdateAfterBindInputAttachments; cmp != 0 )
90511         return cmp;
90512       if ( auto cmp = maxPerStageUpdateAfterBindResources <=> rhs.maxPerStageUpdateAfterBindResources; cmp != 0 )
90513         return cmp;
90514       if ( auto cmp = maxDescriptorSetUpdateAfterBindSamplers <=> rhs.maxDescriptorSetUpdateAfterBindSamplers; cmp != 0 )
90515         return cmp;
90516       if ( auto cmp = maxDescriptorSetUpdateAfterBindUniformBuffers <=> rhs.maxDescriptorSetUpdateAfterBindUniformBuffers; cmp != 0 )
90517         return cmp;
90518       if ( auto cmp = maxDescriptorSetUpdateAfterBindUniformBuffersDynamic <=> rhs.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; cmp != 0 )
90519         return cmp;
90520       if ( auto cmp = maxDescriptorSetUpdateAfterBindStorageBuffers <=> rhs.maxDescriptorSetUpdateAfterBindStorageBuffers; cmp != 0 )
90521         return cmp;
90522       if ( auto cmp = maxDescriptorSetUpdateAfterBindStorageBuffersDynamic <=> rhs.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; cmp != 0 )
90523         return cmp;
90524       if ( auto cmp = maxDescriptorSetUpdateAfterBindSampledImages <=> rhs.maxDescriptorSetUpdateAfterBindSampledImages; cmp != 0 )
90525         return cmp;
90526       if ( auto cmp = maxDescriptorSetUpdateAfterBindStorageImages <=> rhs.maxDescriptorSetUpdateAfterBindStorageImages; cmp != 0 )
90527         return cmp;
90528       if ( auto cmp = maxDescriptorSetUpdateAfterBindInputAttachments <=> rhs.maxDescriptorSetUpdateAfterBindInputAttachments; cmp != 0 )
90529         return cmp;
90530       if ( auto cmp = supportedDepthResolveModes <=> rhs.supportedDepthResolveModes; cmp != 0 )
90531         return cmp;
90532       if ( auto cmp = supportedStencilResolveModes <=> rhs.supportedStencilResolveModes; cmp != 0 )
90533         return cmp;
90534       if ( auto cmp = independentResolveNone <=> rhs.independentResolveNone; cmp != 0 )
90535         return cmp;
90536       if ( auto cmp = independentResolve <=> rhs.independentResolve; cmp != 0 )
90537         return cmp;
90538       if ( auto cmp = filterMinmaxSingleComponentFormats <=> rhs.filterMinmaxSingleComponentFormats; cmp != 0 )
90539         return cmp;
90540       if ( auto cmp = filterMinmaxImageComponentMapping <=> rhs.filterMinmaxImageComponentMapping; cmp != 0 )
90541         return cmp;
90542       if ( auto cmp = maxTimelineSemaphoreValueDifference <=> rhs.maxTimelineSemaphoreValueDifference; cmp != 0 )
90543         return cmp;
90544       if ( auto cmp = framebufferIntegerColorSampleCounts <=> rhs.framebufferIntegerColorSampleCounts; cmp != 0 )
90545         return cmp;
90546 
90547       return std::strong_ordering::equivalent;
90548     }
90549 #endif
90550 
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties90551     bool operator==( PhysicalDeviceVulkan12Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
90552     {
90553       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( driverID == rhs.driverID ) && ( strcmp( driverName, rhs.driverName ) == 0 ) &&
90554              ( strcmp( driverInfo, rhs.driverInfo ) == 0 ) && ( conformanceVersion == rhs.conformanceVersion ) &&
90555              ( denormBehaviorIndependence == rhs.denormBehaviorIndependence ) && ( roundingModeIndependence == rhs.roundingModeIndependence ) &&
90556              ( shaderSignedZeroInfNanPreserveFloat16 == rhs.shaderSignedZeroInfNanPreserveFloat16 ) &&
90557              ( shaderSignedZeroInfNanPreserveFloat32 == rhs.shaderSignedZeroInfNanPreserveFloat32 ) &&
90558              ( shaderSignedZeroInfNanPreserveFloat64 == rhs.shaderSignedZeroInfNanPreserveFloat64 ) &&
90559              ( shaderDenormPreserveFloat16 == rhs.shaderDenormPreserveFloat16 ) && ( shaderDenormPreserveFloat32 == rhs.shaderDenormPreserveFloat32 ) &&
90560              ( shaderDenormPreserveFloat64 == rhs.shaderDenormPreserveFloat64 ) && ( shaderDenormFlushToZeroFloat16 == rhs.shaderDenormFlushToZeroFloat16 ) &&
90561              ( shaderDenormFlushToZeroFloat32 == rhs.shaderDenormFlushToZeroFloat32 ) &&
90562              ( shaderDenormFlushToZeroFloat64 == rhs.shaderDenormFlushToZeroFloat64 ) && ( shaderRoundingModeRTEFloat16 == rhs.shaderRoundingModeRTEFloat16 ) &&
90563              ( shaderRoundingModeRTEFloat32 == rhs.shaderRoundingModeRTEFloat32 ) && ( shaderRoundingModeRTEFloat64 == rhs.shaderRoundingModeRTEFloat64 ) &&
90564              ( shaderRoundingModeRTZFloat16 == rhs.shaderRoundingModeRTZFloat16 ) && ( shaderRoundingModeRTZFloat32 == rhs.shaderRoundingModeRTZFloat32 ) &&
90565              ( shaderRoundingModeRTZFloat64 == rhs.shaderRoundingModeRTZFloat64 ) &&
90566              ( maxUpdateAfterBindDescriptorsInAllPools == rhs.maxUpdateAfterBindDescriptorsInAllPools ) &&
90567              ( shaderUniformBufferArrayNonUniformIndexingNative == rhs.shaderUniformBufferArrayNonUniformIndexingNative ) &&
90568              ( shaderSampledImageArrayNonUniformIndexingNative == rhs.shaderSampledImageArrayNonUniformIndexingNative ) &&
90569              ( shaderStorageBufferArrayNonUniformIndexingNative == rhs.shaderStorageBufferArrayNonUniformIndexingNative ) &&
90570              ( shaderStorageImageArrayNonUniformIndexingNative == rhs.shaderStorageImageArrayNonUniformIndexingNative ) &&
90571              ( shaderInputAttachmentArrayNonUniformIndexingNative == rhs.shaderInputAttachmentArrayNonUniformIndexingNative ) &&
90572              ( robustBufferAccessUpdateAfterBind == rhs.robustBufferAccessUpdateAfterBind ) && ( quadDivergentImplicitLod == rhs.quadDivergentImplicitLod ) &&
90573              ( maxPerStageDescriptorUpdateAfterBindSamplers == rhs.maxPerStageDescriptorUpdateAfterBindSamplers ) &&
90574              ( maxPerStageDescriptorUpdateAfterBindUniformBuffers == rhs.maxPerStageDescriptorUpdateAfterBindUniformBuffers ) &&
90575              ( maxPerStageDescriptorUpdateAfterBindStorageBuffers == rhs.maxPerStageDescriptorUpdateAfterBindStorageBuffers ) &&
90576              ( maxPerStageDescriptorUpdateAfterBindSampledImages == rhs.maxPerStageDescriptorUpdateAfterBindSampledImages ) &&
90577              ( maxPerStageDescriptorUpdateAfterBindStorageImages == rhs.maxPerStageDescriptorUpdateAfterBindStorageImages ) &&
90578              ( maxPerStageDescriptorUpdateAfterBindInputAttachments == rhs.maxPerStageDescriptorUpdateAfterBindInputAttachments ) &&
90579              ( maxPerStageUpdateAfterBindResources == rhs.maxPerStageUpdateAfterBindResources ) &&
90580              ( maxDescriptorSetUpdateAfterBindSamplers == rhs.maxDescriptorSetUpdateAfterBindSamplers ) &&
90581              ( maxDescriptorSetUpdateAfterBindUniformBuffers == rhs.maxDescriptorSetUpdateAfterBindUniformBuffers ) &&
90582              ( maxDescriptorSetUpdateAfterBindUniformBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic ) &&
90583              ( maxDescriptorSetUpdateAfterBindStorageBuffers == rhs.maxDescriptorSetUpdateAfterBindStorageBuffers ) &&
90584              ( maxDescriptorSetUpdateAfterBindStorageBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic ) &&
90585              ( maxDescriptorSetUpdateAfterBindSampledImages == rhs.maxDescriptorSetUpdateAfterBindSampledImages ) &&
90586              ( maxDescriptorSetUpdateAfterBindStorageImages == rhs.maxDescriptorSetUpdateAfterBindStorageImages ) &&
90587              ( maxDescriptorSetUpdateAfterBindInputAttachments == rhs.maxDescriptorSetUpdateAfterBindInputAttachments ) &&
90588              ( supportedDepthResolveModes == rhs.supportedDepthResolveModes ) && ( supportedStencilResolveModes == rhs.supportedStencilResolveModes ) &&
90589              ( independentResolveNone == rhs.independentResolveNone ) && ( independentResolve == rhs.independentResolve ) &&
90590              ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats ) &&
90591              ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping ) &&
90592              ( maxTimelineSemaphoreValueDifference == rhs.maxTimelineSemaphoreValueDifference ) &&
90593              ( framebufferIntegerColorSampleCounts == rhs.framebufferIntegerColorSampleCounts );
90594     }
90595 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties90596     bool operator!=( PhysicalDeviceVulkan12Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
90597     {
90598       return !operator==( rhs );
90599     }
90600 
90601   public:
90602     VULKAN_HPP_NAMESPACE::StructureType                                 sType              = StructureType::ePhysicalDeviceVulkan12Properties;
90603     void *                                                              pNext              = {};
90604     VULKAN_HPP_NAMESPACE::DriverId                                      driverID           = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary;
90605     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_NAME_SIZE> driverName         = {};
90606     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_INFO_SIZE> driverInfo         = {};
90607     VULKAN_HPP_NAMESPACE::ConformanceVersion                            conformanceVersion = {};
90608     VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence       = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly;
90609     VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence         = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly;
90610     VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat16                = {};
90611     VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat32                = {};
90612     VULKAN_HPP_NAMESPACE::Bool32                          shaderSignedZeroInfNanPreserveFloat64                = {};
90613     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat16                          = {};
90614     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat32                          = {};
90615     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormPreserveFloat64                          = {};
90616     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat16                       = {};
90617     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat32                       = {};
90618     VULKAN_HPP_NAMESPACE::Bool32                          shaderDenormFlushToZeroFloat64                       = {};
90619     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat16                         = {};
90620     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat32                         = {};
90621     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTEFloat64                         = {};
90622     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat16                         = {};
90623     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat32                         = {};
90624     VULKAN_HPP_NAMESPACE::Bool32                          shaderRoundingModeRTZFloat64                         = {};
90625     uint32_t                                              maxUpdateAfterBindDescriptorsInAllPools              = {};
90626     VULKAN_HPP_NAMESPACE::Bool32                          shaderUniformBufferArrayNonUniformIndexingNative     = {};
90627     VULKAN_HPP_NAMESPACE::Bool32                          shaderSampledImageArrayNonUniformIndexingNative      = {};
90628     VULKAN_HPP_NAMESPACE::Bool32                          shaderStorageBufferArrayNonUniformIndexingNative     = {};
90629     VULKAN_HPP_NAMESPACE::Bool32                          shaderStorageImageArrayNonUniformIndexingNative      = {};
90630     VULKAN_HPP_NAMESPACE::Bool32                          shaderInputAttachmentArrayNonUniformIndexingNative   = {};
90631     VULKAN_HPP_NAMESPACE::Bool32                          robustBufferAccessUpdateAfterBind                    = {};
90632     VULKAN_HPP_NAMESPACE::Bool32                          quadDivergentImplicitLod                             = {};
90633     uint32_t                                              maxPerStageDescriptorUpdateAfterBindSamplers         = {};
90634     uint32_t                                              maxPerStageDescriptorUpdateAfterBindUniformBuffers   = {};
90635     uint32_t                                              maxPerStageDescriptorUpdateAfterBindStorageBuffers   = {};
90636     uint32_t                                              maxPerStageDescriptorUpdateAfterBindSampledImages    = {};
90637     uint32_t                                              maxPerStageDescriptorUpdateAfterBindStorageImages    = {};
90638     uint32_t                                              maxPerStageDescriptorUpdateAfterBindInputAttachments = {};
90639     uint32_t                                              maxPerStageUpdateAfterBindResources                  = {};
90640     uint32_t                                              maxDescriptorSetUpdateAfterBindSamplers              = {};
90641     uint32_t                                              maxDescriptorSetUpdateAfterBindUniformBuffers        = {};
90642     uint32_t                                              maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = {};
90643     uint32_t                                              maxDescriptorSetUpdateAfterBindStorageBuffers        = {};
90644     uint32_t                                              maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = {};
90645     uint32_t                                              maxDescriptorSetUpdateAfterBindSampledImages         = {};
90646     uint32_t                                              maxDescriptorSetUpdateAfterBindStorageImages         = {};
90647     uint32_t                                              maxDescriptorSetUpdateAfterBindInputAttachments      = {};
90648     VULKAN_HPP_NAMESPACE::ResolveModeFlags                supportedDepthResolveModes                           = {};
90649     VULKAN_HPP_NAMESPACE::ResolveModeFlags                supportedStencilResolveModes                         = {};
90650     VULKAN_HPP_NAMESPACE::Bool32                          independentResolveNone                               = {};
90651     VULKAN_HPP_NAMESPACE::Bool32                          independentResolve                                   = {};
90652     VULKAN_HPP_NAMESPACE::Bool32                          filterMinmaxSingleComponentFormats                   = {};
90653     VULKAN_HPP_NAMESPACE::Bool32                          filterMinmaxImageComponentMapping                    = {};
90654     uint64_t                                              maxTimelineSemaphoreValueDifference                  = {};
90655     VULKAN_HPP_NAMESPACE::SampleCountFlags                framebufferIntegerColorSampleCounts                  = {};
90656   };
90657 
90658   template <>
90659   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan12Properties>
90660   {
90661     using Type = PhysicalDeviceVulkan12Properties;
90662   };
90663 
90664   struct PhysicalDeviceVulkan13Features
90665   {
90666     using NativeType = VkPhysicalDeviceVulkan13Features;
90667 
90668     static const bool                                  allowDuplicate = false;
90669     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVulkan13Features;
90670 
90671 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkan13FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90672     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan13Features( VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess_                                  = {},
90673                                                          VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock_                                 = {},
90674                                                          VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ = {},
90675                                                          VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl_                       = {},
90676                                                          VULKAN_HPP_NAMESPACE::Bool32 privateData_                                        = {},
90677                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation_                     = {},
90678                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation_                          = {},
90679                                                          VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl_                                = {},
90680                                                          VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups_                               = {},
90681                                                          VULKAN_HPP_NAMESPACE::Bool32 synchronization2_                                   = {},
90682                                                          VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR_                         = {},
90683                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory_                = {},
90684                                                          VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering_                                   = {},
90685                                                          VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct_                            = {},
90686                                                          VULKAN_HPP_NAMESPACE::Bool32 maintenance4_                                       = {},
90687                                                          void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
90688       : pNext{ pNext_ }
90689       , robustImageAccess{ robustImageAccess_ }
90690       , inlineUniformBlock{ inlineUniformBlock_ }
90691       , descriptorBindingInlineUniformBlockUpdateAfterBind{ descriptorBindingInlineUniformBlockUpdateAfterBind_ }
90692       , pipelineCreationCacheControl{ pipelineCreationCacheControl_ }
90693       , privateData{ privateData_ }
90694       , shaderDemoteToHelperInvocation{ shaderDemoteToHelperInvocation_ }
90695       , shaderTerminateInvocation{ shaderTerminateInvocation_ }
90696       , subgroupSizeControl{ subgroupSizeControl_ }
90697       , computeFullSubgroups{ computeFullSubgroups_ }
90698       , synchronization2{ synchronization2_ }
90699       , textureCompressionASTC_HDR{ textureCompressionASTC_HDR_ }
90700       , shaderZeroInitializeWorkgroupMemory{ shaderZeroInitializeWorkgroupMemory_ }
90701       , dynamicRendering{ dynamicRendering_ }
90702       , shaderIntegerDotProduct{ shaderIntegerDotProduct_ }
90703       , maintenance4{ maintenance4_ }
90704     {
90705     }
90706 
90707     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan13Features( PhysicalDeviceVulkan13Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90708 
PhysicalDeviceVulkan13FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90709     PhysicalDeviceVulkan13Features( VkPhysicalDeviceVulkan13Features const & rhs ) VULKAN_HPP_NOEXCEPT
90710       : PhysicalDeviceVulkan13Features( *reinterpret_cast<PhysicalDeviceVulkan13Features const *>( &rhs ) )
90711     {
90712     }
90713 
90714     PhysicalDeviceVulkan13Features & operator=( PhysicalDeviceVulkan13Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
90715 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
90716 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90717     PhysicalDeviceVulkan13Features & operator=( VkPhysicalDeviceVulkan13Features const & rhs ) VULKAN_HPP_NOEXCEPT
90718     {
90719       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features const *>( &rhs );
90720       return *this;
90721     }
90722 
90723 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90724     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
90725     {
90726       pNext = pNext_;
90727       return *this;
90728     }
90729 
setRobustImageAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90730     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setRobustImageAccess( VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess_ ) VULKAN_HPP_NOEXCEPT
90731     {
90732       robustImageAccess = robustImageAccess_;
90733       return *this;
90734     }
90735 
setInlineUniformBlockVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90736     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setInlineUniformBlock( VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock_ ) VULKAN_HPP_NOEXCEPT
90737     {
90738       inlineUniformBlock = inlineUniformBlock_;
90739       return *this;
90740     }
90741 
setDescriptorBindingInlineUniformBlockUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90742     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setDescriptorBindingInlineUniformBlockUpdateAfterBind(
90743       VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
90744     {
90745       descriptorBindingInlineUniformBlockUpdateAfterBind = descriptorBindingInlineUniformBlockUpdateAfterBind_;
90746       return *this;
90747     }
90748 
90749     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features &
setPipelineCreationCacheControlVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90750       setPipelineCreationCacheControl( VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl_ ) VULKAN_HPP_NOEXCEPT
90751     {
90752       pipelineCreationCacheControl = pipelineCreationCacheControl_;
90753       return *this;
90754     }
90755 
setPrivateDataVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90756     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setPrivateData( VULKAN_HPP_NAMESPACE::Bool32 privateData_ ) VULKAN_HPP_NOEXCEPT
90757     {
90758       privateData = privateData_;
90759       return *this;
90760     }
90761 
90762     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features &
setShaderDemoteToHelperInvocationVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90763       setShaderDemoteToHelperInvocation( VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation_ ) VULKAN_HPP_NOEXCEPT
90764     {
90765       shaderDemoteToHelperInvocation = shaderDemoteToHelperInvocation_;
90766       return *this;
90767     }
90768 
90769     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features &
setShaderTerminateInvocationVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90770       setShaderTerminateInvocation( VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation_ ) VULKAN_HPP_NOEXCEPT
90771     {
90772       shaderTerminateInvocation = shaderTerminateInvocation_;
90773       return *this;
90774     }
90775 
setSubgroupSizeControlVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90776     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setSubgroupSizeControl( VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl_ ) VULKAN_HPP_NOEXCEPT
90777     {
90778       subgroupSizeControl = subgroupSizeControl_;
90779       return *this;
90780     }
90781 
setComputeFullSubgroupsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90782     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setComputeFullSubgroups( VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups_ ) VULKAN_HPP_NOEXCEPT
90783     {
90784       computeFullSubgroups = computeFullSubgroups_;
90785       return *this;
90786     }
90787 
setSynchronization2VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90788     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setSynchronization2( VULKAN_HPP_NAMESPACE::Bool32 synchronization2_ ) VULKAN_HPP_NOEXCEPT
90789     {
90790       synchronization2 = synchronization2_;
90791       return *this;
90792     }
90793 
90794     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features &
setTextureCompressionASTC_HDRVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90795       setTextureCompressionASTC_HDR( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR_ ) VULKAN_HPP_NOEXCEPT
90796     {
90797       textureCompressionASTC_HDR = textureCompressionASTC_HDR_;
90798       return *this;
90799     }
90800 
90801     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features &
setShaderZeroInitializeWorkgroupMemoryVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90802       setShaderZeroInitializeWorkgroupMemory( VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory_ ) VULKAN_HPP_NOEXCEPT
90803     {
90804       shaderZeroInitializeWorkgroupMemory = shaderZeroInitializeWorkgroupMemory_;
90805       return *this;
90806     }
90807 
setDynamicRenderingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90808     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setDynamicRendering( VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering_ ) VULKAN_HPP_NOEXCEPT
90809     {
90810       dynamicRendering = dynamicRendering_;
90811       return *this;
90812     }
90813 
90814     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features &
setShaderIntegerDotProductVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90815       setShaderIntegerDotProduct( VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct_ ) VULKAN_HPP_NOEXCEPT
90816     {
90817       shaderIntegerDotProduct = shaderIntegerDotProduct_;
90818       return *this;
90819     }
90820 
setMaintenance4VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90821     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setMaintenance4( VULKAN_HPP_NAMESPACE::Bool32 maintenance4_ ) VULKAN_HPP_NOEXCEPT
90822     {
90823       maintenance4 = maintenance4_;
90824       return *this;
90825     }
90826 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
90827 
operator VkPhysicalDeviceVulkan13Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90828     operator VkPhysicalDeviceVulkan13Features const &() const VULKAN_HPP_NOEXCEPT
90829     {
90830       return *reinterpret_cast<const VkPhysicalDeviceVulkan13Features *>( this );
90831     }
90832 
operator VkPhysicalDeviceVulkan13Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90833     operator VkPhysicalDeviceVulkan13Features &() VULKAN_HPP_NOEXCEPT
90834     {
90835       return *reinterpret_cast<VkPhysicalDeviceVulkan13Features *>( this );
90836     }
90837 
90838 #if defined( VULKAN_HPP_USE_REFLECT )
90839 #  if 14 <= VULKAN_HPP_CPP_VERSION
90840     auto
90841 #  else
90842     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
90843                void * const &,
90844                VULKAN_HPP_NAMESPACE::Bool32 const &,
90845                VULKAN_HPP_NAMESPACE::Bool32 const &,
90846                VULKAN_HPP_NAMESPACE::Bool32 const &,
90847                VULKAN_HPP_NAMESPACE::Bool32 const &,
90848                VULKAN_HPP_NAMESPACE::Bool32 const &,
90849                VULKAN_HPP_NAMESPACE::Bool32 const &,
90850                VULKAN_HPP_NAMESPACE::Bool32 const &,
90851                VULKAN_HPP_NAMESPACE::Bool32 const &,
90852                VULKAN_HPP_NAMESPACE::Bool32 const &,
90853                VULKAN_HPP_NAMESPACE::Bool32 const &,
90854                VULKAN_HPP_NAMESPACE::Bool32 const &,
90855                VULKAN_HPP_NAMESPACE::Bool32 const &,
90856                VULKAN_HPP_NAMESPACE::Bool32 const &,
90857                VULKAN_HPP_NAMESPACE::Bool32 const &,
90858                VULKAN_HPP_NAMESPACE::Bool32 const &>
90859 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90860       reflect() const VULKAN_HPP_NOEXCEPT
90861     {
90862       return std::tie( sType,
90863                        pNext,
90864                        robustImageAccess,
90865                        inlineUniformBlock,
90866                        descriptorBindingInlineUniformBlockUpdateAfterBind,
90867                        pipelineCreationCacheControl,
90868                        privateData,
90869                        shaderDemoteToHelperInvocation,
90870                        shaderTerminateInvocation,
90871                        subgroupSizeControl,
90872                        computeFullSubgroups,
90873                        synchronization2,
90874                        textureCompressionASTC_HDR,
90875                        shaderZeroInitializeWorkgroupMemory,
90876                        dynamicRendering,
90877                        shaderIntegerDotProduct,
90878                        maintenance4 );
90879     }
90880 #endif
90881 
90882 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
90883     auto operator<=>( PhysicalDeviceVulkan13Features const & ) const = default;
90884 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90885     bool operator==( PhysicalDeviceVulkan13Features const & rhs ) const VULKAN_HPP_NOEXCEPT
90886     {
90887 #  if defined( VULKAN_HPP_USE_REFLECT )
90888       return this->reflect() == rhs.reflect();
90889 #  else
90890       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( robustImageAccess == rhs.robustImageAccess ) &&
90891              ( inlineUniformBlock == rhs.inlineUniformBlock ) &&
90892              ( descriptorBindingInlineUniformBlockUpdateAfterBind == rhs.descriptorBindingInlineUniformBlockUpdateAfterBind ) &&
90893              ( pipelineCreationCacheControl == rhs.pipelineCreationCacheControl ) && ( privateData == rhs.privateData ) &&
90894              ( shaderDemoteToHelperInvocation == rhs.shaderDemoteToHelperInvocation ) && ( shaderTerminateInvocation == rhs.shaderTerminateInvocation ) &&
90895              ( subgroupSizeControl == rhs.subgroupSizeControl ) && ( computeFullSubgroups == rhs.computeFullSubgroups ) &&
90896              ( synchronization2 == rhs.synchronization2 ) && ( textureCompressionASTC_HDR == rhs.textureCompressionASTC_HDR ) &&
90897              ( shaderZeroInitializeWorkgroupMemory == rhs.shaderZeroInitializeWorkgroupMemory ) && ( dynamicRendering == rhs.dynamicRendering ) &&
90898              ( shaderIntegerDotProduct == rhs.shaderIntegerDotProduct ) && ( maintenance4 == rhs.maintenance4 );
90899 #  endif
90900     }
90901 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features90902     bool operator!=( PhysicalDeviceVulkan13Features const & rhs ) const VULKAN_HPP_NOEXCEPT
90903     {
90904       return !operator==( rhs );
90905     }
90906 #endif
90907 
90908   public:
90909     VULKAN_HPP_NAMESPACE::StructureType sType                                              = StructureType::ePhysicalDeviceVulkan13Features;
90910     void *                              pNext                                              = {};
90911     VULKAN_HPP_NAMESPACE::Bool32        robustImageAccess                                  = {};
90912     VULKAN_HPP_NAMESPACE::Bool32        inlineUniformBlock                                 = {};
90913     VULKAN_HPP_NAMESPACE::Bool32        descriptorBindingInlineUniformBlockUpdateAfterBind = {};
90914     VULKAN_HPP_NAMESPACE::Bool32        pipelineCreationCacheControl                       = {};
90915     VULKAN_HPP_NAMESPACE::Bool32        privateData                                        = {};
90916     VULKAN_HPP_NAMESPACE::Bool32        shaderDemoteToHelperInvocation                     = {};
90917     VULKAN_HPP_NAMESPACE::Bool32        shaderTerminateInvocation                          = {};
90918     VULKAN_HPP_NAMESPACE::Bool32        subgroupSizeControl                                = {};
90919     VULKAN_HPP_NAMESPACE::Bool32        computeFullSubgroups                               = {};
90920     VULKAN_HPP_NAMESPACE::Bool32        synchronization2                                   = {};
90921     VULKAN_HPP_NAMESPACE::Bool32        textureCompressionASTC_HDR                         = {};
90922     VULKAN_HPP_NAMESPACE::Bool32        shaderZeroInitializeWorkgroupMemory                = {};
90923     VULKAN_HPP_NAMESPACE::Bool32        dynamicRendering                                   = {};
90924     VULKAN_HPP_NAMESPACE::Bool32        shaderIntegerDotProduct                            = {};
90925     VULKAN_HPP_NAMESPACE::Bool32        maintenance4                                       = {};
90926   };
90927 
90928   template <>
90929   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan13Features>
90930   {
90931     using Type = PhysicalDeviceVulkan13Features;
90932   };
90933 
90934   struct PhysicalDeviceVulkan13Properties
90935   {
90936     using NativeType = VkPhysicalDeviceVulkan13Properties;
90937 
90938     static const bool                                  allowDuplicate = false;
90939     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVulkan13Properties;
90940 
90941 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
90942     VULKAN_HPP_CONSTEXPR
PhysicalDeviceVulkan13PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties90943       PhysicalDeviceVulkan13Properties( uint32_t                               minSubgroupSize_                                                         = {},
90944                                         uint32_t                               maxSubgroupSize_                                                         = {},
90945                                         uint32_t                               maxComputeWorkgroupSubgroups_                                            = {},
90946                                         VULKAN_HPP_NAMESPACE::ShaderStageFlags requiredSubgroupSizeStages_                                              = {},
90947                                         uint32_t                               maxInlineUniformBlockSize_                                               = {},
90948                                         uint32_t                               maxPerStageDescriptorInlineUniformBlocks_                                = {},
90949                                         uint32_t                               maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_                 = {},
90950                                         uint32_t                               maxDescriptorSetInlineUniformBlocks_                                     = {},
90951                                         uint32_t                               maxDescriptorSetUpdateAfterBindInlineUniformBlocks_                      = {},
90952                                         uint32_t                               maxInlineUniformTotalSize_                                               = {},
90953                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct8BitUnsignedAccelerated_                                = {},
90954                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct8BitSignedAccelerated_                                  = {},
90955                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct8BitMixedSignednessAccelerated_                         = {},
90956                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct4x8BitPackedUnsignedAccelerated_                        = {},
90957                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct4x8BitPackedSignedAccelerated_                          = {},
90958                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct4x8BitPackedMixedSignednessAccelerated_                 = {},
90959                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct16BitUnsignedAccelerated_                               = {},
90960                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct16BitSignedAccelerated_                                 = {},
90961                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct16BitMixedSignednessAccelerated_                        = {},
90962                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct32BitUnsignedAccelerated_                               = {},
90963                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct32BitSignedAccelerated_                                 = {},
90964                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct32BitMixedSignednessAccelerated_                        = {},
90965                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct64BitUnsignedAccelerated_                               = {},
90966                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct64BitSignedAccelerated_                                 = {},
90967                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct64BitMixedSignednessAccelerated_                        = {},
90968                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_          = {},
90969                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating8BitSignedAccelerated_            = {},
90970                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_   = {},
90971                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_  = {},
90972                                         VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_    = {},
90973                                         VULKAN_HPP_NAMESPACE::Bool32     integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ = {},
90974                                         VULKAN_HPP_NAMESPACE::Bool32     integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_               = {},
90975                                         VULKAN_HPP_NAMESPACE::Bool32     integerDotProductAccumulatingSaturating16BitSignedAccelerated_                 = {},
90976                                         VULKAN_HPP_NAMESPACE::Bool32     integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_        = {},
90977                                         VULKAN_HPP_NAMESPACE::Bool32     integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_               = {},
90978                                         VULKAN_HPP_NAMESPACE::Bool32     integerDotProductAccumulatingSaturating32BitSignedAccelerated_                 = {},
90979                                         VULKAN_HPP_NAMESPACE::Bool32     integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_        = {},
90980                                         VULKAN_HPP_NAMESPACE::Bool32     integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_               = {},
90981                                         VULKAN_HPP_NAMESPACE::Bool32     integerDotProductAccumulatingSaturating64BitSignedAccelerated_                 = {},
90982                                         VULKAN_HPP_NAMESPACE::Bool32     integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_        = {},
90983                                         VULKAN_HPP_NAMESPACE::DeviceSize storageTexelBufferOffsetAlignmentBytes_                                        = {},
90984                                         VULKAN_HPP_NAMESPACE::Bool32     storageTexelBufferOffsetSingleTexelAlignment_                                  = {},
90985                                         VULKAN_HPP_NAMESPACE::DeviceSize uniformTexelBufferOffsetAlignmentBytes_                                        = {},
90986                                         VULKAN_HPP_NAMESPACE::Bool32     uniformTexelBufferOffsetSingleTexelAlignment_                                  = {},
90987                                         VULKAN_HPP_NAMESPACE::DeviceSize maxBufferSize_                                                                 = {},
90988                                         void *                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
90989       : pNext{ pNext_ }
90990       , minSubgroupSize{ minSubgroupSize_ }
90991       , maxSubgroupSize{ maxSubgroupSize_ }
90992       , maxComputeWorkgroupSubgroups{ maxComputeWorkgroupSubgroups_ }
90993       , requiredSubgroupSizeStages{ requiredSubgroupSizeStages_ }
90994       , maxInlineUniformBlockSize{ maxInlineUniformBlockSize_ }
90995       , maxPerStageDescriptorInlineUniformBlocks{ maxPerStageDescriptorInlineUniformBlocks_ }
90996       , maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks{ maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ }
90997       , maxDescriptorSetInlineUniformBlocks{ maxDescriptorSetInlineUniformBlocks_ }
90998       , maxDescriptorSetUpdateAfterBindInlineUniformBlocks{ maxDescriptorSetUpdateAfterBindInlineUniformBlocks_ }
90999       , maxInlineUniformTotalSize{ maxInlineUniformTotalSize_ }
91000       , integerDotProduct8BitUnsignedAccelerated{ integerDotProduct8BitUnsignedAccelerated_ }
91001       , integerDotProduct8BitSignedAccelerated{ integerDotProduct8BitSignedAccelerated_ }
91002       , integerDotProduct8BitMixedSignednessAccelerated{ integerDotProduct8BitMixedSignednessAccelerated_ }
91003       , integerDotProduct4x8BitPackedUnsignedAccelerated{ integerDotProduct4x8BitPackedUnsignedAccelerated_ }
91004       , integerDotProduct4x8BitPackedSignedAccelerated{ integerDotProduct4x8BitPackedSignedAccelerated_ }
91005       , integerDotProduct4x8BitPackedMixedSignednessAccelerated{ integerDotProduct4x8BitPackedMixedSignednessAccelerated_ }
91006       , integerDotProduct16BitUnsignedAccelerated{ integerDotProduct16BitUnsignedAccelerated_ }
91007       , integerDotProduct16BitSignedAccelerated{ integerDotProduct16BitSignedAccelerated_ }
91008       , integerDotProduct16BitMixedSignednessAccelerated{ integerDotProduct16BitMixedSignednessAccelerated_ }
91009       , integerDotProduct32BitUnsignedAccelerated{ integerDotProduct32BitUnsignedAccelerated_ }
91010       , integerDotProduct32BitSignedAccelerated{ integerDotProduct32BitSignedAccelerated_ }
91011       , integerDotProduct32BitMixedSignednessAccelerated{ integerDotProduct32BitMixedSignednessAccelerated_ }
91012       , integerDotProduct64BitUnsignedAccelerated{ integerDotProduct64BitUnsignedAccelerated_ }
91013       , integerDotProduct64BitSignedAccelerated{ integerDotProduct64BitSignedAccelerated_ }
91014       , integerDotProduct64BitMixedSignednessAccelerated{ integerDotProduct64BitMixedSignednessAccelerated_ }
91015       , integerDotProductAccumulatingSaturating8BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_ }
91016       , integerDotProductAccumulatingSaturating8BitSignedAccelerated{ integerDotProductAccumulatingSaturating8BitSignedAccelerated_ }
91017       , integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_ }
91018       , integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated{ integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_ }
91019       , integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated{ integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_ }
91020       , integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ }
91021       , integerDotProductAccumulatingSaturating16BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_ }
91022       , integerDotProductAccumulatingSaturating16BitSignedAccelerated{ integerDotProductAccumulatingSaturating16BitSignedAccelerated_ }
91023       , integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_ }
91024       , integerDotProductAccumulatingSaturating32BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_ }
91025       , integerDotProductAccumulatingSaturating32BitSignedAccelerated{ integerDotProductAccumulatingSaturating32BitSignedAccelerated_ }
91026       , integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_ }
91027       , integerDotProductAccumulatingSaturating64BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_ }
91028       , integerDotProductAccumulatingSaturating64BitSignedAccelerated{ integerDotProductAccumulatingSaturating64BitSignedAccelerated_ }
91029       , integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_ }
91030       , storageTexelBufferOffsetAlignmentBytes{ storageTexelBufferOffsetAlignmentBytes_ }
91031       , storageTexelBufferOffsetSingleTexelAlignment{ storageTexelBufferOffsetSingleTexelAlignment_ }
91032       , uniformTexelBufferOffsetAlignmentBytes{ uniformTexelBufferOffsetAlignmentBytes_ }
91033       , uniformTexelBufferOffsetSingleTexelAlignment{ uniformTexelBufferOffsetSingleTexelAlignment_ }
91034       , maxBufferSize{ maxBufferSize_ }
91035     {
91036     }
91037 
91038     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan13Properties( PhysicalDeviceVulkan13Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91039 
PhysicalDeviceVulkan13PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties91040     PhysicalDeviceVulkan13Properties( VkPhysicalDeviceVulkan13Properties const & rhs ) VULKAN_HPP_NOEXCEPT
91041       : PhysicalDeviceVulkan13Properties( *reinterpret_cast<PhysicalDeviceVulkan13Properties const *>( &rhs ) )
91042     {
91043     }
91044 
91045     PhysicalDeviceVulkan13Properties & operator=( PhysicalDeviceVulkan13Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91046 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
91047 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties91048     PhysicalDeviceVulkan13Properties & operator=( VkPhysicalDeviceVulkan13Properties const & rhs ) VULKAN_HPP_NOEXCEPT
91049     {
91050       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties const *>( &rhs );
91051       return *this;
91052     }
91053 
operator VkPhysicalDeviceVulkan13Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties91054     operator VkPhysicalDeviceVulkan13Properties const &() const VULKAN_HPP_NOEXCEPT
91055     {
91056       return *reinterpret_cast<const VkPhysicalDeviceVulkan13Properties *>( this );
91057     }
91058 
operator VkPhysicalDeviceVulkan13Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties91059     operator VkPhysicalDeviceVulkan13Properties &() VULKAN_HPP_NOEXCEPT
91060     {
91061       return *reinterpret_cast<VkPhysicalDeviceVulkan13Properties *>( this );
91062     }
91063 
91064 #if defined( VULKAN_HPP_USE_REFLECT )
91065 #  if 14 <= VULKAN_HPP_CPP_VERSION
91066     auto
91067 #  else
91068     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
91069                void * const &,
91070                uint32_t const &,
91071                uint32_t const &,
91072                uint32_t const &,
91073                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
91074                uint32_t const &,
91075                uint32_t const &,
91076                uint32_t const &,
91077                uint32_t const &,
91078                uint32_t const &,
91079                uint32_t const &,
91080                VULKAN_HPP_NAMESPACE::Bool32 const &,
91081                VULKAN_HPP_NAMESPACE::Bool32 const &,
91082                VULKAN_HPP_NAMESPACE::Bool32 const &,
91083                VULKAN_HPP_NAMESPACE::Bool32 const &,
91084                VULKAN_HPP_NAMESPACE::Bool32 const &,
91085                VULKAN_HPP_NAMESPACE::Bool32 const &,
91086                VULKAN_HPP_NAMESPACE::Bool32 const &,
91087                VULKAN_HPP_NAMESPACE::Bool32 const &,
91088                VULKAN_HPP_NAMESPACE::Bool32 const &,
91089                VULKAN_HPP_NAMESPACE::Bool32 const &,
91090                VULKAN_HPP_NAMESPACE::Bool32 const &,
91091                VULKAN_HPP_NAMESPACE::Bool32 const &,
91092                VULKAN_HPP_NAMESPACE::Bool32 const &,
91093                VULKAN_HPP_NAMESPACE::Bool32 const &,
91094                VULKAN_HPP_NAMESPACE::Bool32 const &,
91095                VULKAN_HPP_NAMESPACE::Bool32 const &,
91096                VULKAN_HPP_NAMESPACE::Bool32 const &,
91097                VULKAN_HPP_NAMESPACE::Bool32 const &,
91098                VULKAN_HPP_NAMESPACE::Bool32 const &,
91099                VULKAN_HPP_NAMESPACE::Bool32 const &,
91100                VULKAN_HPP_NAMESPACE::Bool32 const &,
91101                VULKAN_HPP_NAMESPACE::Bool32 const &,
91102                VULKAN_HPP_NAMESPACE::Bool32 const &,
91103                VULKAN_HPP_NAMESPACE::Bool32 const &,
91104                VULKAN_HPP_NAMESPACE::Bool32 const &,
91105                VULKAN_HPP_NAMESPACE::Bool32 const &,
91106                VULKAN_HPP_NAMESPACE::Bool32 const &,
91107                VULKAN_HPP_NAMESPACE::Bool32 const &,
91108                VULKAN_HPP_NAMESPACE::Bool32 const &,
91109                VULKAN_HPP_NAMESPACE::Bool32 const &,
91110                VULKAN_HPP_NAMESPACE::DeviceSize const &,
91111                VULKAN_HPP_NAMESPACE::Bool32 const &,
91112                VULKAN_HPP_NAMESPACE::DeviceSize const &,
91113                VULKAN_HPP_NAMESPACE::Bool32 const &,
91114                VULKAN_HPP_NAMESPACE::DeviceSize const &>
91115 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties91116       reflect() const VULKAN_HPP_NOEXCEPT
91117     {
91118       return std::tie( sType,
91119                        pNext,
91120                        minSubgroupSize,
91121                        maxSubgroupSize,
91122                        maxComputeWorkgroupSubgroups,
91123                        requiredSubgroupSizeStages,
91124                        maxInlineUniformBlockSize,
91125                        maxPerStageDescriptorInlineUniformBlocks,
91126                        maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks,
91127                        maxDescriptorSetInlineUniformBlocks,
91128                        maxDescriptorSetUpdateAfterBindInlineUniformBlocks,
91129                        maxInlineUniformTotalSize,
91130                        integerDotProduct8BitUnsignedAccelerated,
91131                        integerDotProduct8BitSignedAccelerated,
91132                        integerDotProduct8BitMixedSignednessAccelerated,
91133                        integerDotProduct4x8BitPackedUnsignedAccelerated,
91134                        integerDotProduct4x8BitPackedSignedAccelerated,
91135                        integerDotProduct4x8BitPackedMixedSignednessAccelerated,
91136                        integerDotProduct16BitUnsignedAccelerated,
91137                        integerDotProduct16BitSignedAccelerated,
91138                        integerDotProduct16BitMixedSignednessAccelerated,
91139                        integerDotProduct32BitUnsignedAccelerated,
91140                        integerDotProduct32BitSignedAccelerated,
91141                        integerDotProduct32BitMixedSignednessAccelerated,
91142                        integerDotProduct64BitUnsignedAccelerated,
91143                        integerDotProduct64BitSignedAccelerated,
91144                        integerDotProduct64BitMixedSignednessAccelerated,
91145                        integerDotProductAccumulatingSaturating8BitUnsignedAccelerated,
91146                        integerDotProductAccumulatingSaturating8BitSignedAccelerated,
91147                        integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated,
91148                        integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated,
91149                        integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated,
91150                        integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated,
91151                        integerDotProductAccumulatingSaturating16BitUnsignedAccelerated,
91152                        integerDotProductAccumulatingSaturating16BitSignedAccelerated,
91153                        integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated,
91154                        integerDotProductAccumulatingSaturating32BitUnsignedAccelerated,
91155                        integerDotProductAccumulatingSaturating32BitSignedAccelerated,
91156                        integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated,
91157                        integerDotProductAccumulatingSaturating64BitUnsignedAccelerated,
91158                        integerDotProductAccumulatingSaturating64BitSignedAccelerated,
91159                        integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated,
91160                        storageTexelBufferOffsetAlignmentBytes,
91161                        storageTexelBufferOffsetSingleTexelAlignment,
91162                        uniformTexelBufferOffsetAlignmentBytes,
91163                        uniformTexelBufferOffsetSingleTexelAlignment,
91164                        maxBufferSize );
91165     }
91166 #endif
91167 
91168 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
91169     auto operator<=>( PhysicalDeviceVulkan13Properties const & ) const = default;
91170 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties91171     bool operator==( PhysicalDeviceVulkan13Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
91172     {
91173 #  if defined( VULKAN_HPP_USE_REFLECT )
91174       return this->reflect() == rhs.reflect();
91175 #  else
91176       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minSubgroupSize == rhs.minSubgroupSize ) && ( maxSubgroupSize == rhs.maxSubgroupSize ) &&
91177              ( maxComputeWorkgroupSubgroups == rhs.maxComputeWorkgroupSubgroups ) && ( requiredSubgroupSizeStages == rhs.requiredSubgroupSizeStages ) &&
91178              ( maxInlineUniformBlockSize == rhs.maxInlineUniformBlockSize ) &&
91179              ( maxPerStageDescriptorInlineUniformBlocks == rhs.maxPerStageDescriptorInlineUniformBlocks ) &&
91180              ( maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks == rhs.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks ) &&
91181              ( maxDescriptorSetInlineUniformBlocks == rhs.maxDescriptorSetInlineUniformBlocks ) &&
91182              ( maxDescriptorSetUpdateAfterBindInlineUniformBlocks == rhs.maxDescriptorSetUpdateAfterBindInlineUniformBlocks ) &&
91183              ( maxInlineUniformTotalSize == rhs.maxInlineUniformTotalSize ) &&
91184              ( integerDotProduct8BitUnsignedAccelerated == rhs.integerDotProduct8BitUnsignedAccelerated ) &&
91185              ( integerDotProduct8BitSignedAccelerated == rhs.integerDotProduct8BitSignedAccelerated ) &&
91186              ( integerDotProduct8BitMixedSignednessAccelerated == rhs.integerDotProduct8BitMixedSignednessAccelerated ) &&
91187              ( integerDotProduct4x8BitPackedUnsignedAccelerated == rhs.integerDotProduct4x8BitPackedUnsignedAccelerated ) &&
91188              ( integerDotProduct4x8BitPackedSignedAccelerated == rhs.integerDotProduct4x8BitPackedSignedAccelerated ) &&
91189              ( integerDotProduct4x8BitPackedMixedSignednessAccelerated == rhs.integerDotProduct4x8BitPackedMixedSignednessAccelerated ) &&
91190              ( integerDotProduct16BitUnsignedAccelerated == rhs.integerDotProduct16BitUnsignedAccelerated ) &&
91191              ( integerDotProduct16BitSignedAccelerated == rhs.integerDotProduct16BitSignedAccelerated ) &&
91192              ( integerDotProduct16BitMixedSignednessAccelerated == rhs.integerDotProduct16BitMixedSignednessAccelerated ) &&
91193              ( integerDotProduct32BitUnsignedAccelerated == rhs.integerDotProduct32BitUnsignedAccelerated ) &&
91194              ( integerDotProduct32BitSignedAccelerated == rhs.integerDotProduct32BitSignedAccelerated ) &&
91195              ( integerDotProduct32BitMixedSignednessAccelerated == rhs.integerDotProduct32BitMixedSignednessAccelerated ) &&
91196              ( integerDotProduct64BitUnsignedAccelerated == rhs.integerDotProduct64BitUnsignedAccelerated ) &&
91197              ( integerDotProduct64BitSignedAccelerated == rhs.integerDotProduct64BitSignedAccelerated ) &&
91198              ( integerDotProduct64BitMixedSignednessAccelerated == rhs.integerDotProduct64BitMixedSignednessAccelerated ) &&
91199              ( integerDotProductAccumulatingSaturating8BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated ) &&
91200              ( integerDotProductAccumulatingSaturating8BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating8BitSignedAccelerated ) &&
91201              ( integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated ==
91202                rhs.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated ) &&
91203              ( integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated ==
91204                rhs.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated ) &&
91205              ( integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated ==
91206                rhs.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated ) &&
91207              ( integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated ==
91208                rhs.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated ) &&
91209              ( integerDotProductAccumulatingSaturating16BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated ) &&
91210              ( integerDotProductAccumulatingSaturating16BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating16BitSignedAccelerated ) &&
91211              ( integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated ==
91212                rhs.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated ) &&
91213              ( integerDotProductAccumulatingSaturating32BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated ) &&
91214              ( integerDotProductAccumulatingSaturating32BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating32BitSignedAccelerated ) &&
91215              ( integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated ==
91216                rhs.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated ) &&
91217              ( integerDotProductAccumulatingSaturating64BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated ) &&
91218              ( integerDotProductAccumulatingSaturating64BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating64BitSignedAccelerated ) &&
91219              ( integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated ==
91220                rhs.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated ) &&
91221              ( storageTexelBufferOffsetAlignmentBytes == rhs.storageTexelBufferOffsetAlignmentBytes ) &&
91222              ( storageTexelBufferOffsetSingleTexelAlignment == rhs.storageTexelBufferOffsetSingleTexelAlignment ) &&
91223              ( uniformTexelBufferOffsetAlignmentBytes == rhs.uniformTexelBufferOffsetAlignmentBytes ) &&
91224              ( uniformTexelBufferOffsetSingleTexelAlignment == rhs.uniformTexelBufferOffsetSingleTexelAlignment ) && ( maxBufferSize == rhs.maxBufferSize );
91225 #  endif
91226     }
91227 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties91228     bool operator!=( PhysicalDeviceVulkan13Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
91229     {
91230       return !operator==( rhs );
91231     }
91232 #endif
91233 
91234   public:
91235     VULKAN_HPP_NAMESPACE::StructureType    sType                                                          = StructureType::ePhysicalDeviceVulkan13Properties;
91236     void *                                 pNext                                                          = {};
91237     uint32_t                               minSubgroupSize                                                = {};
91238     uint32_t                               maxSubgroupSize                                                = {};
91239     uint32_t                               maxComputeWorkgroupSubgroups                                   = {};
91240     VULKAN_HPP_NAMESPACE::ShaderStageFlags requiredSubgroupSizeStages                                     = {};
91241     uint32_t                               maxInlineUniformBlockSize                                      = {};
91242     uint32_t                               maxPerStageDescriptorInlineUniformBlocks                       = {};
91243     uint32_t                               maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks        = {};
91244     uint32_t                               maxDescriptorSetInlineUniformBlocks                            = {};
91245     uint32_t                               maxDescriptorSetUpdateAfterBindInlineUniformBlocks             = {};
91246     uint32_t                               maxInlineUniformTotalSize                                      = {};
91247     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct8BitUnsignedAccelerated                       = {};
91248     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct8BitSignedAccelerated                         = {};
91249     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct8BitMixedSignednessAccelerated                = {};
91250     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct4x8BitPackedUnsignedAccelerated               = {};
91251     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct4x8BitPackedSignedAccelerated                 = {};
91252     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct4x8BitPackedMixedSignednessAccelerated        = {};
91253     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct16BitUnsignedAccelerated                      = {};
91254     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct16BitSignedAccelerated                        = {};
91255     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct16BitMixedSignednessAccelerated               = {};
91256     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct32BitUnsignedAccelerated                      = {};
91257     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct32BitSignedAccelerated                        = {};
91258     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct32BitMixedSignednessAccelerated               = {};
91259     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct64BitUnsignedAccelerated                      = {};
91260     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct64BitSignedAccelerated                        = {};
91261     VULKAN_HPP_NAMESPACE::Bool32           integerDotProduct64BitMixedSignednessAccelerated               = {};
91262     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating8BitUnsignedAccelerated = {};
91263     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating8BitSignedAccelerated   = {};
91264     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated         = {};
91265     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated        = {};
91266     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated          = {};
91267     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = {};
91268     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating16BitUnsignedAccelerated               = {};
91269     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating16BitSignedAccelerated                 = {};
91270     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated        = {};
91271     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating32BitUnsignedAccelerated               = {};
91272     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating32BitSignedAccelerated                 = {};
91273     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated        = {};
91274     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating64BitUnsignedAccelerated               = {};
91275     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating64BitSignedAccelerated                 = {};
91276     VULKAN_HPP_NAMESPACE::Bool32           integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated        = {};
91277     VULKAN_HPP_NAMESPACE::DeviceSize       storageTexelBufferOffsetAlignmentBytes                                        = {};
91278     VULKAN_HPP_NAMESPACE::Bool32           storageTexelBufferOffsetSingleTexelAlignment                                  = {};
91279     VULKAN_HPP_NAMESPACE::DeviceSize       uniformTexelBufferOffsetAlignmentBytes                                        = {};
91280     VULKAN_HPP_NAMESPACE::Bool32           uniformTexelBufferOffsetSingleTexelAlignment                                  = {};
91281     VULKAN_HPP_NAMESPACE::DeviceSize       maxBufferSize                                                                 = {};
91282   };
91283 
91284   template <>
91285   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan13Properties>
91286   {
91287     using Type = PhysicalDeviceVulkan13Properties;
91288   };
91289 
91290   struct PhysicalDeviceVulkanMemoryModelFeatures
91291   {
91292     using NativeType = VkPhysicalDeviceVulkanMemoryModelFeatures;
91293 
91294     static const bool                                  allowDuplicate = false;
91295     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceVulkanMemoryModelFeatures;
91296 
91297 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkanMemoryModelFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures91298     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkanMemoryModelFeatures( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_                             = {},
91299                                                                   VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_                  = {},
91300                                                                   VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ = {},
91301                                                                   void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
91302       : pNext{ pNext_ }
91303       , vulkanMemoryModel{ vulkanMemoryModel_ }
91304       , vulkanMemoryModelDeviceScope{ vulkanMemoryModelDeviceScope_ }
91305       , vulkanMemoryModelAvailabilityVisibilityChains{ vulkanMemoryModelAvailabilityVisibilityChains_ }
91306     {
91307     }
91308 
91309     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkanMemoryModelFeatures( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91310 
PhysicalDeviceVulkanMemoryModelFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures91311     PhysicalDeviceVulkanMemoryModelFeatures( VkPhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
91312       : PhysicalDeviceVulkanMemoryModelFeatures( *reinterpret_cast<PhysicalDeviceVulkanMemoryModelFeatures const *>( &rhs ) )
91313     {
91314     }
91315 
91316     PhysicalDeviceVulkanMemoryModelFeatures & operator=( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91317 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
91318 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures91319     PhysicalDeviceVulkanMemoryModelFeatures & operator=( VkPhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
91320     {
91321       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures const *>( &rhs );
91322       return *this;
91323     }
91324 
91325 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures91326     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
91327     {
91328       pNext = pNext_;
91329       return *this;
91330     }
91331 
91332     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures &
setVulkanMemoryModelVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures91333       setVulkanMemoryModel( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_ ) VULKAN_HPP_NOEXCEPT
91334     {
91335       vulkanMemoryModel = vulkanMemoryModel_;
91336       return *this;
91337     }
91338 
91339     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures &
setVulkanMemoryModelDeviceScopeVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures91340       setVulkanMemoryModelDeviceScope( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_ ) VULKAN_HPP_NOEXCEPT
91341     {
91342       vulkanMemoryModelDeviceScope = vulkanMemoryModelDeviceScope_;
91343       return *this;
91344     }
91345 
91346     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures &
setVulkanMemoryModelAvailabilityVisibilityChainsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures91347       setVulkanMemoryModelAvailabilityVisibilityChains( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ ) VULKAN_HPP_NOEXCEPT
91348     {
91349       vulkanMemoryModelAvailabilityVisibilityChains = vulkanMemoryModelAvailabilityVisibilityChains_;
91350       return *this;
91351     }
91352 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
91353 
operator VkPhysicalDeviceVulkanMemoryModelFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures91354     operator VkPhysicalDeviceVulkanMemoryModelFeatures const &() const VULKAN_HPP_NOEXCEPT
91355     {
91356       return *reinterpret_cast<const VkPhysicalDeviceVulkanMemoryModelFeatures *>( this );
91357     }
91358 
operator VkPhysicalDeviceVulkanMemoryModelFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures91359     operator VkPhysicalDeviceVulkanMemoryModelFeatures &() VULKAN_HPP_NOEXCEPT
91360     {
91361       return *reinterpret_cast<VkPhysicalDeviceVulkanMemoryModelFeatures *>( this );
91362     }
91363 
91364 #if defined( VULKAN_HPP_USE_REFLECT )
91365 #  if 14 <= VULKAN_HPP_CPP_VERSION
91366     auto
91367 #  else
91368     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
91369                void * const &,
91370                VULKAN_HPP_NAMESPACE::Bool32 const &,
91371                VULKAN_HPP_NAMESPACE::Bool32 const &,
91372                VULKAN_HPP_NAMESPACE::Bool32 const &>
91373 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures91374       reflect() const VULKAN_HPP_NOEXCEPT
91375     {
91376       return std::tie( sType, pNext, vulkanMemoryModel, vulkanMemoryModelDeviceScope, vulkanMemoryModelAvailabilityVisibilityChains );
91377     }
91378 #endif
91379 
91380 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
91381     auto operator<=>( PhysicalDeviceVulkanMemoryModelFeatures const & ) const = default;
91382 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures91383     bool operator==( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
91384     {
91385 #  if defined( VULKAN_HPP_USE_REFLECT )
91386       return this->reflect() == rhs.reflect();
91387 #  else
91388       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vulkanMemoryModel == rhs.vulkanMemoryModel ) &&
91389              ( vulkanMemoryModelDeviceScope == rhs.vulkanMemoryModelDeviceScope ) &&
91390              ( vulkanMemoryModelAvailabilityVisibilityChains == rhs.vulkanMemoryModelAvailabilityVisibilityChains );
91391 #  endif
91392     }
91393 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures91394     bool operator!=( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
91395     {
91396       return !operator==( rhs );
91397     }
91398 #endif
91399 
91400   public:
91401     VULKAN_HPP_NAMESPACE::StructureType sType                                         = StructureType::ePhysicalDeviceVulkanMemoryModelFeatures;
91402     void *                              pNext                                         = {};
91403     VULKAN_HPP_NAMESPACE::Bool32        vulkanMemoryModel                             = {};
91404     VULKAN_HPP_NAMESPACE::Bool32        vulkanMemoryModelDeviceScope                  = {};
91405     VULKAN_HPP_NAMESPACE::Bool32        vulkanMemoryModelAvailabilityVisibilityChains = {};
91406   };
91407 
91408   template <>
91409   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkanMemoryModelFeatures>
91410   {
91411     using Type = PhysicalDeviceVulkanMemoryModelFeatures;
91412   };
91413 
91414   using PhysicalDeviceVulkanMemoryModelFeaturesKHR = PhysicalDeviceVulkanMemoryModelFeatures;
91415 
91416   struct PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR
91417   {
91418     using NativeType = VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
91419 
91420     static const bool                                  allowDuplicate = false;
91421     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
91422 
91423 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
91424     VULKAN_HPP_CONSTEXPR
PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR91425       PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR( VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout_                  = {},
91426                                                               VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayoutScalarBlockLayout_ = {},
91427                                                               VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout8BitAccess_        = {},
91428                                                               VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout16BitAccess_       = {},
91429                                                               void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
91430       : pNext{ pNext_ }
91431       , workgroupMemoryExplicitLayout{ workgroupMemoryExplicitLayout_ }
91432       , workgroupMemoryExplicitLayoutScalarBlockLayout{ workgroupMemoryExplicitLayoutScalarBlockLayout_ }
91433       , workgroupMemoryExplicitLayout8BitAccess{ workgroupMemoryExplicitLayout8BitAccess_ }
91434       , workgroupMemoryExplicitLayout16BitAccess{ workgroupMemoryExplicitLayout16BitAccess_ }
91435     {
91436     }
91437 
91438     VULKAN_HPP_CONSTEXPR PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs )
91439       VULKAN_HPP_NOEXCEPT = default;
91440 
PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR91441     PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR( VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
91442       : PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR( *reinterpret_cast<PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const *>( &rhs ) )
91443     {
91444     }
91445 
91446     PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &
91447       operator=( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91448 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
91449 
91450     PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR91451       operator=( VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
91452     {
91453       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const *>( &rhs );
91454       return *this;
91455     }
91456 
91457 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR91458     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
91459     {
91460       pNext = pNext_;
91461       return *this;
91462     }
91463 
91464     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &
setWorkgroupMemoryExplicitLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR91465       setWorkgroupMemoryExplicitLayout( VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout_ ) VULKAN_HPP_NOEXCEPT
91466     {
91467       workgroupMemoryExplicitLayout = workgroupMemoryExplicitLayout_;
91468       return *this;
91469     }
91470 
91471     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &
setWorkgroupMemoryExplicitLayoutScalarBlockLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR91472       setWorkgroupMemoryExplicitLayoutScalarBlockLayout( VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayoutScalarBlockLayout_ ) VULKAN_HPP_NOEXCEPT
91473     {
91474       workgroupMemoryExplicitLayoutScalarBlockLayout = workgroupMemoryExplicitLayoutScalarBlockLayout_;
91475       return *this;
91476     }
91477 
91478     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &
setWorkgroupMemoryExplicitLayout8BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR91479       setWorkgroupMemoryExplicitLayout8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout8BitAccess_ ) VULKAN_HPP_NOEXCEPT
91480     {
91481       workgroupMemoryExplicitLayout8BitAccess = workgroupMemoryExplicitLayout8BitAccess_;
91482       return *this;
91483     }
91484 
91485     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &
setWorkgroupMemoryExplicitLayout16BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR91486       setWorkgroupMemoryExplicitLayout16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout16BitAccess_ ) VULKAN_HPP_NOEXCEPT
91487     {
91488       workgroupMemoryExplicitLayout16BitAccess = workgroupMemoryExplicitLayout16BitAccess_;
91489       return *this;
91490     }
91491 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
91492 
operator VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR91493     operator VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
91494     {
91495       return *reinterpret_cast<const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR *>( this );
91496     }
91497 
operator VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR91498     operator VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &() VULKAN_HPP_NOEXCEPT
91499     {
91500       return *reinterpret_cast<VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR *>( this );
91501     }
91502 
91503 #if defined( VULKAN_HPP_USE_REFLECT )
91504 #  if 14 <= VULKAN_HPP_CPP_VERSION
91505     auto
91506 #  else
91507     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
91508                void * const &,
91509                VULKAN_HPP_NAMESPACE::Bool32 const &,
91510                VULKAN_HPP_NAMESPACE::Bool32 const &,
91511                VULKAN_HPP_NAMESPACE::Bool32 const &,
91512                VULKAN_HPP_NAMESPACE::Bool32 const &>
91513 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR91514       reflect() const VULKAN_HPP_NOEXCEPT
91515     {
91516       return std::tie( sType,
91517                        pNext,
91518                        workgroupMemoryExplicitLayout,
91519                        workgroupMemoryExplicitLayoutScalarBlockLayout,
91520                        workgroupMemoryExplicitLayout8BitAccess,
91521                        workgroupMemoryExplicitLayout16BitAccess );
91522     }
91523 #endif
91524 
91525 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
91526     auto operator<=>( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & ) const = default;
91527 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR91528     bool operator==( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
91529     {
91530 #  if defined( VULKAN_HPP_USE_REFLECT )
91531       return this->reflect() == rhs.reflect();
91532 #  else
91533       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( workgroupMemoryExplicitLayout == rhs.workgroupMemoryExplicitLayout ) &&
91534              ( workgroupMemoryExplicitLayoutScalarBlockLayout == rhs.workgroupMemoryExplicitLayoutScalarBlockLayout ) &&
91535              ( workgroupMemoryExplicitLayout8BitAccess == rhs.workgroupMemoryExplicitLayout8BitAccess ) &&
91536              ( workgroupMemoryExplicitLayout16BitAccess == rhs.workgroupMemoryExplicitLayout16BitAccess );
91537 #  endif
91538     }
91539 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR91540     bool operator!=( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
91541     {
91542       return !operator==( rhs );
91543     }
91544 #endif
91545 
91546   public:
91547     VULKAN_HPP_NAMESPACE::StructureType sType                                          = StructureType::ePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
91548     void *                              pNext                                          = {};
91549     VULKAN_HPP_NAMESPACE::Bool32        workgroupMemoryExplicitLayout                  = {};
91550     VULKAN_HPP_NAMESPACE::Bool32        workgroupMemoryExplicitLayoutScalarBlockLayout = {};
91551     VULKAN_HPP_NAMESPACE::Bool32        workgroupMemoryExplicitLayout8BitAccess        = {};
91552     VULKAN_HPP_NAMESPACE::Bool32        workgroupMemoryExplicitLayout16BitAccess       = {};
91553   };
91554 
91555   template <>
91556   struct CppType<StructureType, StructureType::ePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>
91557   {
91558     using Type = PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
91559   };
91560 
91561   struct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
91562   {
91563     using NativeType = VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
91564 
91565     static const bool                                  allowDuplicate = false;
91566     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
91567 
91568 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT91569     VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 ycbcr2plane444Formats_ = {},
91570                                                                          void *                       pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
91571       : pNext{ pNext_ }
91572       , ycbcr2plane444Formats{ ycbcr2plane444Formats_ }
91573     {
91574     }
91575 
91576     VULKAN_HPP_CONSTEXPR
91577       PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91578 
PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT91579     PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT( VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
91580       : PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT( *reinterpret_cast<PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const *>( &rhs ) )
91581     {
91582     }
91583 
91584     PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT & operator=( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91585 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
91586 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT91587     PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT & operator=( VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
91588     {
91589       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const *>( &rhs );
91590       return *this;
91591     }
91592 
91593 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT91594     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
91595     {
91596       pNext = pNext_;
91597       return *this;
91598     }
91599 
91600     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT &
setYcbcr2plane444FormatsVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT91601       setYcbcr2plane444Formats( VULKAN_HPP_NAMESPACE::Bool32 ycbcr2plane444Formats_ ) VULKAN_HPP_NOEXCEPT
91602     {
91603       ycbcr2plane444Formats = ycbcr2plane444Formats_;
91604       return *this;
91605     }
91606 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
91607 
operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT91608     operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
91609     {
91610       return *reinterpret_cast<const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT *>( this );
91611     }
91612 
operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT91613     operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT &() VULKAN_HPP_NOEXCEPT
91614     {
91615       return *reinterpret_cast<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT *>( this );
91616     }
91617 
91618 #if defined( VULKAN_HPP_USE_REFLECT )
91619 #  if 14 <= VULKAN_HPP_CPP_VERSION
91620     auto
91621 #  else
91622     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
91623 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT91624       reflect() const VULKAN_HPP_NOEXCEPT
91625     {
91626       return std::tie( sType, pNext, ycbcr2plane444Formats );
91627     }
91628 #endif
91629 
91630 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
91631     auto operator<=>( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & ) const = default;
91632 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT91633     bool operator==( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
91634     {
91635 #  if defined( VULKAN_HPP_USE_REFLECT )
91636       return this->reflect() == rhs.reflect();
91637 #  else
91638       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ycbcr2plane444Formats == rhs.ycbcr2plane444Formats );
91639 #  endif
91640     }
91641 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT91642     bool operator!=( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
91643     {
91644       return !operator==( rhs );
91645     }
91646 #endif
91647 
91648   public:
91649     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::ePhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
91650     void *                              pNext                 = {};
91651     VULKAN_HPP_NAMESPACE::Bool32        ycbcr2plane444Formats = {};
91652   };
91653 
91654   template <>
91655   struct CppType<StructureType, StructureType::ePhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>
91656   {
91657     using Type = PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
91658   };
91659 
91660   struct PhysicalDeviceYcbcrDegammaFeaturesQCOM
91661   {
91662     using NativeType = VkPhysicalDeviceYcbcrDegammaFeaturesQCOM;
91663 
91664     static const bool                                  allowDuplicate = false;
91665     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceYcbcrDegammaFeaturesQCOM;
91666 
91667 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceYcbcrDegammaFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM91668     VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcrDegammaFeaturesQCOM( VULKAN_HPP_NAMESPACE::Bool32 ycbcrDegamma_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
91669       : pNext{ pNext_ }
91670       , ycbcrDegamma{ ycbcrDegamma_ }
91671     {
91672     }
91673 
91674     VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcrDegammaFeaturesQCOM( PhysicalDeviceYcbcrDegammaFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91675 
PhysicalDeviceYcbcrDegammaFeaturesQCOMVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM91676     PhysicalDeviceYcbcrDegammaFeaturesQCOM( VkPhysicalDeviceYcbcrDegammaFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
91677       : PhysicalDeviceYcbcrDegammaFeaturesQCOM( *reinterpret_cast<PhysicalDeviceYcbcrDegammaFeaturesQCOM const *>( &rhs ) )
91678     {
91679     }
91680 
91681     PhysicalDeviceYcbcrDegammaFeaturesQCOM & operator=( PhysicalDeviceYcbcrDegammaFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91682 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
91683 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM91684     PhysicalDeviceYcbcrDegammaFeaturesQCOM & operator=( VkPhysicalDeviceYcbcrDegammaFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
91685     {
91686       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM const *>( &rhs );
91687       return *this;
91688     }
91689 
91690 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM91691     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrDegammaFeaturesQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
91692     {
91693       pNext = pNext_;
91694       return *this;
91695     }
91696 
setYcbcrDegammaVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM91697     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrDegammaFeaturesQCOM & setYcbcrDegamma( VULKAN_HPP_NAMESPACE::Bool32 ycbcrDegamma_ ) VULKAN_HPP_NOEXCEPT
91698     {
91699       ycbcrDegamma = ycbcrDegamma_;
91700       return *this;
91701     }
91702 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
91703 
operator VkPhysicalDeviceYcbcrDegammaFeaturesQCOM const&VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM91704     operator VkPhysicalDeviceYcbcrDegammaFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT
91705     {
91706       return *reinterpret_cast<const VkPhysicalDeviceYcbcrDegammaFeaturesQCOM *>( this );
91707     }
91708 
operator VkPhysicalDeviceYcbcrDegammaFeaturesQCOM&VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM91709     operator VkPhysicalDeviceYcbcrDegammaFeaturesQCOM &() VULKAN_HPP_NOEXCEPT
91710     {
91711       return *reinterpret_cast<VkPhysicalDeviceYcbcrDegammaFeaturesQCOM *>( this );
91712     }
91713 
91714 #if defined( VULKAN_HPP_USE_REFLECT )
91715 #  if 14 <= VULKAN_HPP_CPP_VERSION
91716     auto
91717 #  else
91718     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
91719 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM91720       reflect() const VULKAN_HPP_NOEXCEPT
91721     {
91722       return std::tie( sType, pNext, ycbcrDegamma );
91723     }
91724 #endif
91725 
91726 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
91727     auto operator<=>( PhysicalDeviceYcbcrDegammaFeaturesQCOM const & ) const = default;
91728 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM91729     bool operator==( PhysicalDeviceYcbcrDegammaFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
91730     {
91731 #  if defined( VULKAN_HPP_USE_REFLECT )
91732       return this->reflect() == rhs.reflect();
91733 #  else
91734       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ycbcrDegamma == rhs.ycbcrDegamma );
91735 #  endif
91736     }
91737 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM91738     bool operator!=( PhysicalDeviceYcbcrDegammaFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
91739     {
91740       return !operator==( rhs );
91741     }
91742 #endif
91743 
91744   public:
91745     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::ePhysicalDeviceYcbcrDegammaFeaturesQCOM;
91746     void *                              pNext        = {};
91747     VULKAN_HPP_NAMESPACE::Bool32        ycbcrDegamma = {};
91748   };
91749 
91750   template <>
91751   struct CppType<StructureType, StructureType::ePhysicalDeviceYcbcrDegammaFeaturesQCOM>
91752   {
91753     using Type = PhysicalDeviceYcbcrDegammaFeaturesQCOM;
91754   };
91755 
91756   struct PhysicalDeviceYcbcrImageArraysFeaturesEXT
91757   {
91758     using NativeType = VkPhysicalDeviceYcbcrImageArraysFeaturesEXT;
91759 
91760     static const bool                                  allowDuplicate = false;
91761     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT;
91762 
91763 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceYcbcrImageArraysFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT91764     VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcrImageArraysFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 ycbcrImageArrays_ = {},
91765                                                                     void *                       pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
91766       : pNext{ pNext_ }
91767       , ycbcrImageArrays{ ycbcrImageArrays_ }
91768     {
91769     }
91770 
91771     VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcrImageArraysFeaturesEXT( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91772 
PhysicalDeviceYcbcrImageArraysFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT91773     PhysicalDeviceYcbcrImageArraysFeaturesEXT( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
91774       : PhysicalDeviceYcbcrImageArraysFeaturesEXT( *reinterpret_cast<PhysicalDeviceYcbcrImageArraysFeaturesEXT const *>( &rhs ) )
91775     {
91776     }
91777 
91778     PhysicalDeviceYcbcrImageArraysFeaturesEXT & operator=( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91779 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
91780 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT91781     PhysicalDeviceYcbcrImageArraysFeaturesEXT & operator=( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
91782     {
91783       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT const *>( &rhs );
91784       return *this;
91785     }
91786 
91787 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT91788     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrImageArraysFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
91789     {
91790       pNext = pNext_;
91791       return *this;
91792     }
91793 
91794     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrImageArraysFeaturesEXT &
setYcbcrImageArraysVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT91795       setYcbcrImageArrays( VULKAN_HPP_NAMESPACE::Bool32 ycbcrImageArrays_ ) VULKAN_HPP_NOEXCEPT
91796     {
91797       ycbcrImageArrays = ycbcrImageArrays_;
91798       return *this;
91799     }
91800 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
91801 
operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT91802     operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
91803     {
91804       return *reinterpret_cast<const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *>( this );
91805     }
91806 
operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT91807     operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT &() VULKAN_HPP_NOEXCEPT
91808     {
91809       return *reinterpret_cast<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *>( this );
91810     }
91811 
91812 #if defined( VULKAN_HPP_USE_REFLECT )
91813 #  if 14 <= VULKAN_HPP_CPP_VERSION
91814     auto
91815 #  else
91816     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
91817 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT91818       reflect() const VULKAN_HPP_NOEXCEPT
91819     {
91820       return std::tie( sType, pNext, ycbcrImageArrays );
91821     }
91822 #endif
91823 
91824 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
91825     auto operator<=>( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & ) const = default;
91826 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT91827     bool operator==( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
91828     {
91829 #  if defined( VULKAN_HPP_USE_REFLECT )
91830       return this->reflect() == rhs.reflect();
91831 #  else
91832       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ycbcrImageArrays == rhs.ycbcrImageArrays );
91833 #  endif
91834     }
91835 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT91836     bool operator!=( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
91837     {
91838       return !operator==( rhs );
91839     }
91840 #endif
91841 
91842   public:
91843     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT;
91844     void *                              pNext            = {};
91845     VULKAN_HPP_NAMESPACE::Bool32        ycbcrImageArrays = {};
91846   };
91847 
91848   template <>
91849   struct CppType<StructureType, StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT>
91850   {
91851     using Type = PhysicalDeviceYcbcrImageArraysFeaturesEXT;
91852   };
91853 
91854   struct PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
91855   {
91856     using NativeType = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
91857 
91858     static const bool                                  allowDuplicate = false;
91859     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
91860 
91861 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures91862     VULKAN_HPP_CONSTEXPR PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures( VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory_ = {},
91863                                                                               void *                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
91864       : pNext{ pNext_ }
91865       , shaderZeroInitializeWorkgroupMemory{ shaderZeroInitializeWorkgroupMemory_ }
91866     {
91867     }
91868 
91869     VULKAN_HPP_CONSTEXPR
91870       PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91871 
PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures91872     PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures( VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
91873       : PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures( *reinterpret_cast<PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const *>( &rhs ) )
91874     {
91875     }
91876 
91877     PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures &
91878       operator=( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91879 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
91880 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures91881     PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures & operator=( VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
91882     {
91883       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const *>( &rhs );
91884       return *this;
91885     }
91886 
91887 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures91888     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
91889     {
91890       pNext = pNext_;
91891       return *this;
91892     }
91893 
91894     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures &
setShaderZeroInitializeWorkgroupMemoryVULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures91895       setShaderZeroInitializeWorkgroupMemory( VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory_ ) VULKAN_HPP_NOEXCEPT
91896     {
91897       shaderZeroInitializeWorkgroupMemory = shaderZeroInitializeWorkgroupMemory_;
91898       return *this;
91899     }
91900 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
91901 
operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures91902     operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const &() const VULKAN_HPP_NOEXCEPT
91903     {
91904       return *reinterpret_cast<const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures *>( this );
91905     }
91906 
operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures91907     operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures &() VULKAN_HPP_NOEXCEPT
91908     {
91909       return *reinterpret_cast<VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures *>( this );
91910     }
91911 
91912 #if defined( VULKAN_HPP_USE_REFLECT )
91913 #  if 14 <= VULKAN_HPP_CPP_VERSION
91914     auto
91915 #  else
91916     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
91917 #  endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures91918       reflect() const VULKAN_HPP_NOEXCEPT
91919     {
91920       return std::tie( sType, pNext, shaderZeroInitializeWorkgroupMemory );
91921     }
91922 #endif
91923 
91924 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
91925     auto operator<=>( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & ) const = default;
91926 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures91927     bool operator==( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
91928     {
91929 #  if defined( VULKAN_HPP_USE_REFLECT )
91930       return this->reflect() == rhs.reflect();
91931 #  else
91932       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderZeroInitializeWorkgroupMemory == rhs.shaderZeroInitializeWorkgroupMemory );
91933 #  endif
91934     }
91935 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures91936     bool operator!=( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
91937     {
91938       return !operator==( rhs );
91939     }
91940 #endif
91941 
91942   public:
91943     VULKAN_HPP_NAMESPACE::StructureType sType                               = StructureType::ePhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
91944     void *                              pNext                               = {};
91945     VULKAN_HPP_NAMESPACE::Bool32        shaderZeroInitializeWorkgroupMemory = {};
91946   };
91947 
91948   template <>
91949   struct CppType<StructureType, StructureType::ePhysicalDeviceZeroInitializeWorkgroupMemoryFeatures>
91950   {
91951     using Type = PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
91952   };
91953 
91954   using PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
91955 
91956   struct PipelineCacheCreateInfo
91957   {
91958     using NativeType = VkPipelineCacheCreateInfo;
91959 
91960     static const bool                                  allowDuplicate = false;
91961     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineCacheCreateInfo;
91962 
91963 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCacheCreateInfoVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo91964     VULKAN_HPP_CONSTEXPR PipelineCacheCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags_           = {},
91965                                                   size_t                                         initialDataSize_ = {},
91966                                                   const void *                                   pInitialData_    = {},
91967                                                   const void *                                   pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
91968       : pNext{ pNext_ }
91969       , flags{ flags_ }
91970       , initialDataSize{ initialDataSize_ }
91971       , pInitialData{ pInitialData_ }
91972     {
91973     }
91974 
91975     VULKAN_HPP_CONSTEXPR PipelineCacheCreateInfo( PipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91976 
PipelineCacheCreateInfoVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo91977     PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
91978       : PipelineCacheCreateInfo( *reinterpret_cast<PipelineCacheCreateInfo const *>( &rhs ) )
91979     {
91980     }
91981 
91982 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
91983     template <typename T>
PipelineCacheCreateInfoVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo91984     PipelineCacheCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags                 flags_,
91985                              VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & initialData_,
91986                              const void *                                                   pNext_ = nullptr )
91987       : pNext( pNext_ ), flags( flags_ ), initialDataSize( initialData_.size() * sizeof( T ) ), pInitialData( initialData_.data() )
91988     {
91989     }
91990 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
91991 
91992     PipelineCacheCreateInfo & operator=( PipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
91993 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
91994 
operator =VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo91995     PipelineCacheCreateInfo & operator=( VkPipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
91996     {
91997       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo const *>( &rhs );
91998       return *this;
91999     }
92000 
92001 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo92002     VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
92003     {
92004       pNext = pNext_;
92005       return *this;
92006     }
92007 
setFlagsVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo92008     VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
92009     {
92010       flags = flags_;
92011       return *this;
92012     }
92013 
setInitialDataSizeVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo92014     VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setInitialDataSize( size_t initialDataSize_ ) VULKAN_HPP_NOEXCEPT
92015     {
92016       initialDataSize = initialDataSize_;
92017       return *this;
92018     }
92019 
setPInitialDataVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo92020     VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setPInitialData( const void * pInitialData_ ) VULKAN_HPP_NOEXCEPT
92021     {
92022       pInitialData = pInitialData_;
92023       return *this;
92024     }
92025 
92026 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
92027     template <typename T>
setInitialDataVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo92028     PipelineCacheCreateInfo & setInitialData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & initialData_ ) VULKAN_HPP_NOEXCEPT
92029     {
92030       initialDataSize = initialData_.size() * sizeof( T );
92031       pInitialData    = initialData_.data();
92032       return *this;
92033     }
92034 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
92035 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
92036 
operator VkPipelineCacheCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo92037     operator VkPipelineCacheCreateInfo const &() const VULKAN_HPP_NOEXCEPT
92038     {
92039       return *reinterpret_cast<const VkPipelineCacheCreateInfo *>( this );
92040     }
92041 
operator VkPipelineCacheCreateInfo&VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo92042     operator VkPipelineCacheCreateInfo &() VULKAN_HPP_NOEXCEPT
92043     {
92044       return *reinterpret_cast<VkPipelineCacheCreateInfo *>( this );
92045     }
92046 
92047 #if defined( VULKAN_HPP_USE_REFLECT )
92048 #  if 14 <= VULKAN_HPP_CPP_VERSION
92049     auto
92050 #  else
92051     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
92052                const void * const &,
92053                VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags const &,
92054                size_t const &,
92055                const void * const &>
92056 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo92057       reflect() const VULKAN_HPP_NOEXCEPT
92058     {
92059       return std::tie( sType, pNext, flags, initialDataSize, pInitialData );
92060     }
92061 #endif
92062 
92063 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
92064     auto operator<=>( PipelineCacheCreateInfo const & ) const = default;
92065 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo92066     bool operator==( PipelineCacheCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
92067     {
92068 #  if defined( VULKAN_HPP_USE_REFLECT )
92069       return this->reflect() == rhs.reflect();
92070 #  else
92071       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( initialDataSize == rhs.initialDataSize ) &&
92072              ( pInitialData == rhs.pInitialData );
92073 #  endif
92074     }
92075 
operator !=VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo92076     bool operator!=( PipelineCacheCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
92077     {
92078       return !operator==( rhs );
92079     }
92080 #endif
92081 
92082   public:
92083     VULKAN_HPP_NAMESPACE::StructureType            sType           = StructureType::ePipelineCacheCreateInfo;
92084     const void *                                   pNext           = {};
92085     VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags           = {};
92086     size_t                                         initialDataSize = {};
92087     const void *                                   pInitialData    = {};
92088   };
92089 
92090   template <>
92091   struct CppType<StructureType, StructureType::ePipelineCacheCreateInfo>
92092   {
92093     using Type = PipelineCacheCreateInfo;
92094   };
92095 
92096   struct PipelineCacheHeaderVersionOne
92097   {
92098     using NativeType = VkPipelineCacheHeaderVersionOne;
92099 
92100 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
92101     VULKAN_HPP_CONSTEXPR_14
PipelineCacheHeaderVersionOneVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne92102       PipelineCacheHeaderVersionOne( uint32_t                                         headerSize_    = {},
92103                                      VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion headerVersion_ = VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion::eOne,
92104                                      uint32_t                                         vendorID_      = {},
92105                                      uint32_t                                         deviceID_      = {},
92106                                      std::array<uint8_t, VK_UUID_SIZE> const &        pipelineCacheUUID_ = {} ) VULKAN_HPP_NOEXCEPT
92107       : headerSize{ headerSize_ }
92108       , headerVersion{ headerVersion_ }
92109       , vendorID{ vendorID_ }
92110       , deviceID{ deviceID_ }
92111       , pipelineCacheUUID{ pipelineCacheUUID_ }
92112     {
92113     }
92114 
92115     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne( PipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92116 
PipelineCacheHeaderVersionOneVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne92117     PipelineCacheHeaderVersionOne( VkPipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT
92118       : PipelineCacheHeaderVersionOne( *reinterpret_cast<PipelineCacheHeaderVersionOne const *>( &rhs ) )
92119     {
92120     }
92121 
92122     PipelineCacheHeaderVersionOne & operator=( PipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92123 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
92124 
operator =VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne92125     PipelineCacheHeaderVersionOne & operator=( VkPipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT
92126     {
92127       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne const *>( &rhs );
92128       return *this;
92129     }
92130 
92131 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setHeaderSizeVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne92132     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setHeaderSize( uint32_t headerSize_ ) VULKAN_HPP_NOEXCEPT
92133     {
92134       headerSize = headerSize_;
92135       return *this;
92136     }
92137 
92138     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne &
setHeaderVersionVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne92139       setHeaderVersion( VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion headerVersion_ ) VULKAN_HPP_NOEXCEPT
92140     {
92141       headerVersion = headerVersion_;
92142       return *this;
92143     }
92144 
setVendorIDVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne92145     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setVendorID( uint32_t vendorID_ ) VULKAN_HPP_NOEXCEPT
92146     {
92147       vendorID = vendorID_;
92148       return *this;
92149     }
92150 
setDeviceIDVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne92151     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setDeviceID( uint32_t deviceID_ ) VULKAN_HPP_NOEXCEPT
92152     {
92153       deviceID = deviceID_;
92154       return *this;
92155     }
92156 
setPipelineCacheUUIDVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne92157     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setPipelineCacheUUID( std::array<uint8_t, VK_UUID_SIZE> pipelineCacheUUID_ ) VULKAN_HPP_NOEXCEPT
92158     {
92159       pipelineCacheUUID = pipelineCacheUUID_;
92160       return *this;
92161     }
92162 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
92163 
operator VkPipelineCacheHeaderVersionOne const&VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne92164     operator VkPipelineCacheHeaderVersionOne const &() const VULKAN_HPP_NOEXCEPT
92165     {
92166       return *reinterpret_cast<const VkPipelineCacheHeaderVersionOne *>( this );
92167     }
92168 
operator VkPipelineCacheHeaderVersionOne&VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne92169     operator VkPipelineCacheHeaderVersionOne &() VULKAN_HPP_NOEXCEPT
92170     {
92171       return *reinterpret_cast<VkPipelineCacheHeaderVersionOne *>( this );
92172     }
92173 
92174 #if defined( VULKAN_HPP_USE_REFLECT )
92175 #  if 14 <= VULKAN_HPP_CPP_VERSION
92176     auto
92177 #  else
92178     std::tuple<uint32_t const &,
92179                VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion const &,
92180                uint32_t const &,
92181                uint32_t const &,
92182                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &>
92183 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne92184       reflect() const VULKAN_HPP_NOEXCEPT
92185     {
92186       return std::tie( headerSize, headerVersion, vendorID, deviceID, pipelineCacheUUID );
92187     }
92188 #endif
92189 
92190 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
92191     auto operator<=>( PipelineCacheHeaderVersionOne const & ) const = default;
92192 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne92193     bool operator==( PipelineCacheHeaderVersionOne const & rhs ) const VULKAN_HPP_NOEXCEPT
92194     {
92195 #  if defined( VULKAN_HPP_USE_REFLECT )
92196       return this->reflect() == rhs.reflect();
92197 #  else
92198       return ( headerSize == rhs.headerSize ) && ( headerVersion == rhs.headerVersion ) && ( vendorID == rhs.vendorID ) && ( deviceID == rhs.deviceID ) &&
92199              ( pipelineCacheUUID == rhs.pipelineCacheUUID );
92200 #  endif
92201     }
92202 
operator !=VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne92203     bool operator!=( PipelineCacheHeaderVersionOne const & rhs ) const VULKAN_HPP_NOEXCEPT
92204     {
92205       return !operator==( rhs );
92206     }
92207 #endif
92208 
92209   public:
92210     uint32_t                                                    headerSize        = {};
92211     VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion            headerVersion     = VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion::eOne;
92212     uint32_t                                                    vendorID          = {};
92213     uint32_t                                                    deviceID          = {};
92214     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> pipelineCacheUUID = {};
92215   };
92216 
92217   struct PipelineColorBlendAdvancedStateCreateInfoEXT
92218   {
92219     using NativeType = VkPipelineColorBlendAdvancedStateCreateInfoEXT;
92220 
92221     static const bool                                  allowDuplicate = false;
92222     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT;
92223 
92224 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
92225     VULKAN_HPP_CONSTEXPR
PipelineColorBlendAdvancedStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT92226       PipelineColorBlendAdvancedStateCreateInfoEXT( VULKAN_HPP_NAMESPACE::Bool32          srcPremultiplied_ = {},
92227                                                     VULKAN_HPP_NAMESPACE::Bool32          dstPremultiplied_ = {},
92228                                                     VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap_ = VULKAN_HPP_NAMESPACE::BlendOverlapEXT::eUncorrelated,
92229                                                     const void *                          pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
92230       : pNext{ pNext_ }
92231       , srcPremultiplied{ srcPremultiplied_ }
92232       , dstPremultiplied{ dstPremultiplied_ }
92233       , blendOverlap{ blendOverlap_ }
92234     {
92235     }
92236 
92237     VULKAN_HPP_CONSTEXPR PipelineColorBlendAdvancedStateCreateInfoEXT( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92238 
PipelineColorBlendAdvancedStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT92239     PipelineColorBlendAdvancedStateCreateInfoEXT( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
92240       : PipelineColorBlendAdvancedStateCreateInfoEXT( *reinterpret_cast<PipelineColorBlendAdvancedStateCreateInfoEXT const *>( &rhs ) )
92241     {
92242     }
92243 
92244     PipelineColorBlendAdvancedStateCreateInfoEXT & operator=( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92245 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
92246 
operator =VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT92247     PipelineColorBlendAdvancedStateCreateInfoEXT & operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
92248     {
92249       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT const *>( &rhs );
92250       return *this;
92251     }
92252 
92253 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT92254     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
92255     {
92256       pNext = pNext_;
92257       return *this;
92258     }
92259 
92260     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT &
setSrcPremultipliedVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT92261       setSrcPremultiplied( VULKAN_HPP_NAMESPACE::Bool32 srcPremultiplied_ ) VULKAN_HPP_NOEXCEPT
92262     {
92263       srcPremultiplied = srcPremultiplied_;
92264       return *this;
92265     }
92266 
92267     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT &
setDstPremultipliedVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT92268       setDstPremultiplied( VULKAN_HPP_NAMESPACE::Bool32 dstPremultiplied_ ) VULKAN_HPP_NOEXCEPT
92269     {
92270       dstPremultiplied = dstPremultiplied_;
92271       return *this;
92272     }
92273 
92274     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT &
setBlendOverlapVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT92275       setBlendOverlap( VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap_ ) VULKAN_HPP_NOEXCEPT
92276     {
92277       blendOverlap = blendOverlap_;
92278       return *this;
92279     }
92280 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
92281 
operator VkPipelineColorBlendAdvancedStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT92282     operator VkPipelineColorBlendAdvancedStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
92283     {
92284       return *reinterpret_cast<const VkPipelineColorBlendAdvancedStateCreateInfoEXT *>( this );
92285     }
92286 
operator VkPipelineColorBlendAdvancedStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT92287     operator VkPipelineColorBlendAdvancedStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
92288     {
92289       return *reinterpret_cast<VkPipelineColorBlendAdvancedStateCreateInfoEXT *>( this );
92290     }
92291 
92292 #if defined( VULKAN_HPP_USE_REFLECT )
92293 #  if 14 <= VULKAN_HPP_CPP_VERSION
92294     auto
92295 #  else
92296     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
92297                const void * const &,
92298                VULKAN_HPP_NAMESPACE::Bool32 const &,
92299                VULKAN_HPP_NAMESPACE::Bool32 const &,
92300                VULKAN_HPP_NAMESPACE::BlendOverlapEXT const &>
92301 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT92302       reflect() const VULKAN_HPP_NOEXCEPT
92303     {
92304       return std::tie( sType, pNext, srcPremultiplied, dstPremultiplied, blendOverlap );
92305     }
92306 #endif
92307 
92308 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
92309     auto operator<=>( PipelineColorBlendAdvancedStateCreateInfoEXT const & ) const = default;
92310 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT92311     bool operator==( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
92312     {
92313 #  if defined( VULKAN_HPP_USE_REFLECT )
92314       return this->reflect() == rhs.reflect();
92315 #  else
92316       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcPremultiplied == rhs.srcPremultiplied ) && ( dstPremultiplied == rhs.dstPremultiplied ) &&
92317              ( blendOverlap == rhs.blendOverlap );
92318 #  endif
92319     }
92320 
operator !=VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT92321     bool operator!=( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
92322     {
92323       return !operator==( rhs );
92324     }
92325 #endif
92326 
92327   public:
92328     VULKAN_HPP_NAMESPACE::StructureType   sType            = StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT;
92329     const void *                          pNext            = {};
92330     VULKAN_HPP_NAMESPACE::Bool32          srcPremultiplied = {};
92331     VULKAN_HPP_NAMESPACE::Bool32          dstPremultiplied = {};
92332     VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap     = VULKAN_HPP_NAMESPACE::BlendOverlapEXT::eUncorrelated;
92333   };
92334 
92335   template <>
92336   struct CppType<StructureType, StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT>
92337   {
92338     using Type = PipelineColorBlendAdvancedStateCreateInfoEXT;
92339   };
92340 
92341   struct PipelineColorWriteCreateInfoEXT
92342   {
92343     using NativeType = VkPipelineColorWriteCreateInfoEXT;
92344 
92345     static const bool                                  allowDuplicate = false;
92346     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineColorWriteCreateInfoEXT;
92347 
92348 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineColorWriteCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT92349     VULKAN_HPP_CONSTEXPR PipelineColorWriteCreateInfoEXT( uint32_t                             attachmentCount_    = {},
92350                                                           const VULKAN_HPP_NAMESPACE::Bool32 * pColorWriteEnables_ = {},
92351                                                           const void *                         pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
92352       : pNext{ pNext_ }
92353       , attachmentCount{ attachmentCount_ }
92354       , pColorWriteEnables{ pColorWriteEnables_ }
92355     {
92356     }
92357 
92358     VULKAN_HPP_CONSTEXPR PipelineColorWriteCreateInfoEXT( PipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92359 
PipelineColorWriteCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT92360     PipelineColorWriteCreateInfoEXT( VkPipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
92361       : PipelineColorWriteCreateInfoEXT( *reinterpret_cast<PipelineColorWriteCreateInfoEXT const *>( &rhs ) )
92362     {
92363     }
92364 
92365 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineColorWriteCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT92366     PipelineColorWriteCreateInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Bool32> const & colorWriteEnables_,
92367                                      const void *                                                                              pNext_ = nullptr )
92368       : pNext( pNext_ ), attachmentCount( static_cast<uint32_t>( colorWriteEnables_.size() ) ), pColorWriteEnables( colorWriteEnables_.data() )
92369     {
92370     }
92371 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
92372 
92373     PipelineColorWriteCreateInfoEXT & operator=( PipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92374 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
92375 
operator =VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT92376     PipelineColorWriteCreateInfoEXT & operator=( VkPipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
92377     {
92378       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT const *>( &rhs );
92379       return *this;
92380     }
92381 
92382 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT92383     VULKAN_HPP_CONSTEXPR_14 PipelineColorWriteCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
92384     {
92385       pNext = pNext_;
92386       return *this;
92387     }
92388 
setAttachmentCountVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT92389     VULKAN_HPP_CONSTEXPR_14 PipelineColorWriteCreateInfoEXT & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
92390     {
92391       attachmentCount = attachmentCount_;
92392       return *this;
92393     }
92394 
92395     VULKAN_HPP_CONSTEXPR_14 PipelineColorWriteCreateInfoEXT &
setPColorWriteEnablesVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT92396       setPColorWriteEnables( const VULKAN_HPP_NAMESPACE::Bool32 * pColorWriteEnables_ ) VULKAN_HPP_NOEXCEPT
92397     {
92398       pColorWriteEnables = pColorWriteEnables_;
92399       return *this;
92400     }
92401 
92402 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
92403     PipelineColorWriteCreateInfoEXT &
setColorWriteEnablesVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT92404       setColorWriteEnables( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Bool32> const & colorWriteEnables_ ) VULKAN_HPP_NOEXCEPT
92405     {
92406       attachmentCount    = static_cast<uint32_t>( colorWriteEnables_.size() );
92407       pColorWriteEnables = colorWriteEnables_.data();
92408       return *this;
92409     }
92410 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
92411 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
92412 
operator VkPipelineColorWriteCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT92413     operator VkPipelineColorWriteCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
92414     {
92415       return *reinterpret_cast<const VkPipelineColorWriteCreateInfoEXT *>( this );
92416     }
92417 
operator VkPipelineColorWriteCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT92418     operator VkPipelineColorWriteCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
92419     {
92420       return *reinterpret_cast<VkPipelineColorWriteCreateInfoEXT *>( this );
92421     }
92422 
92423 #if defined( VULKAN_HPP_USE_REFLECT )
92424 #  if 14 <= VULKAN_HPP_CPP_VERSION
92425     auto
92426 #  else
92427     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Bool32 * const &>
92428 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT92429       reflect() const VULKAN_HPP_NOEXCEPT
92430     {
92431       return std::tie( sType, pNext, attachmentCount, pColorWriteEnables );
92432     }
92433 #endif
92434 
92435 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
92436     auto operator<=>( PipelineColorWriteCreateInfoEXT const & ) const = default;
92437 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT92438     bool operator==( PipelineColorWriteCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
92439     {
92440 #  if defined( VULKAN_HPP_USE_REFLECT )
92441       return this->reflect() == rhs.reflect();
92442 #  else
92443       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachmentCount == rhs.attachmentCount ) && ( pColorWriteEnables == rhs.pColorWriteEnables );
92444 #  endif
92445     }
92446 
operator !=VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT92447     bool operator!=( PipelineColorWriteCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
92448     {
92449       return !operator==( rhs );
92450     }
92451 #endif
92452 
92453   public:
92454     VULKAN_HPP_NAMESPACE::StructureType  sType              = StructureType::ePipelineColorWriteCreateInfoEXT;
92455     const void *                         pNext              = {};
92456     uint32_t                             attachmentCount    = {};
92457     const VULKAN_HPP_NAMESPACE::Bool32 * pColorWriteEnables = {};
92458   };
92459 
92460   template <>
92461   struct CppType<StructureType, StructureType::ePipelineColorWriteCreateInfoEXT>
92462   {
92463     using Type = PipelineColorWriteCreateInfoEXT;
92464   };
92465 
92466   struct PipelineCompilerControlCreateInfoAMD
92467   {
92468     using NativeType = VkPipelineCompilerControlCreateInfoAMD;
92469 
92470     static const bool                                  allowDuplicate = false;
92471     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineCompilerControlCreateInfoAMD;
92472 
92473 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCompilerControlCreateInfoAMDVULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD92474     VULKAN_HPP_CONSTEXPR PipelineCompilerControlCreateInfoAMD( VULKAN_HPP_NAMESPACE::PipelineCompilerControlFlagsAMD compilerControlFlags_ = {},
92475                                                                const void *                                          pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
92476       : pNext{ pNext_ }
92477       , compilerControlFlags{ compilerControlFlags_ }
92478     {
92479     }
92480 
92481     VULKAN_HPP_CONSTEXPR PipelineCompilerControlCreateInfoAMD( PipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92482 
PipelineCompilerControlCreateInfoAMDVULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD92483     PipelineCompilerControlCreateInfoAMD( VkPipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
92484       : PipelineCompilerControlCreateInfoAMD( *reinterpret_cast<PipelineCompilerControlCreateInfoAMD const *>( &rhs ) )
92485     {
92486     }
92487 
92488     PipelineCompilerControlCreateInfoAMD & operator=( PipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92489 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
92490 
operator =VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD92491     PipelineCompilerControlCreateInfoAMD & operator=( VkPipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
92492     {
92493       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD const *>( &rhs );
92494       return *this;
92495     }
92496 
92497 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD92498     VULKAN_HPP_CONSTEXPR_14 PipelineCompilerControlCreateInfoAMD & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
92499     {
92500       pNext = pNext_;
92501       return *this;
92502     }
92503 
92504     VULKAN_HPP_CONSTEXPR_14 PipelineCompilerControlCreateInfoAMD &
setCompilerControlFlagsVULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD92505       setCompilerControlFlags( VULKAN_HPP_NAMESPACE::PipelineCompilerControlFlagsAMD compilerControlFlags_ ) VULKAN_HPP_NOEXCEPT
92506     {
92507       compilerControlFlags = compilerControlFlags_;
92508       return *this;
92509     }
92510 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
92511 
operator VkPipelineCompilerControlCreateInfoAMD const&VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD92512     operator VkPipelineCompilerControlCreateInfoAMD const &() const VULKAN_HPP_NOEXCEPT
92513     {
92514       return *reinterpret_cast<const VkPipelineCompilerControlCreateInfoAMD *>( this );
92515     }
92516 
operator VkPipelineCompilerControlCreateInfoAMD&VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD92517     operator VkPipelineCompilerControlCreateInfoAMD &() VULKAN_HPP_NOEXCEPT
92518     {
92519       return *reinterpret_cast<VkPipelineCompilerControlCreateInfoAMD *>( this );
92520     }
92521 
92522 #if defined( VULKAN_HPP_USE_REFLECT )
92523 #  if 14 <= VULKAN_HPP_CPP_VERSION
92524     auto
92525 #  else
92526     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineCompilerControlFlagsAMD const &>
92527 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD92528       reflect() const VULKAN_HPP_NOEXCEPT
92529     {
92530       return std::tie( sType, pNext, compilerControlFlags );
92531     }
92532 #endif
92533 
92534 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
92535     auto operator<=>( PipelineCompilerControlCreateInfoAMD const & ) const = default;
92536 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD92537     bool operator==( PipelineCompilerControlCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
92538     {
92539 #  if defined( VULKAN_HPP_USE_REFLECT )
92540       return this->reflect() == rhs.reflect();
92541 #  else
92542       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( compilerControlFlags == rhs.compilerControlFlags );
92543 #  endif
92544     }
92545 
operator !=VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD92546     bool operator!=( PipelineCompilerControlCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
92547     {
92548       return !operator==( rhs );
92549     }
92550 #endif
92551 
92552   public:
92553     VULKAN_HPP_NAMESPACE::StructureType                   sType                = StructureType::ePipelineCompilerControlCreateInfoAMD;
92554     const void *                                          pNext                = {};
92555     VULKAN_HPP_NAMESPACE::PipelineCompilerControlFlagsAMD compilerControlFlags = {};
92556   };
92557 
92558   template <>
92559   struct CppType<StructureType, StructureType::ePipelineCompilerControlCreateInfoAMD>
92560   {
92561     using Type = PipelineCompilerControlCreateInfoAMD;
92562   };
92563 
92564   struct PipelineCoverageModulationStateCreateInfoNV
92565   {
92566     using NativeType = VkPipelineCoverageModulationStateCreateInfoNV;
92567 
92568     static const bool                                  allowDuplicate = false;
92569     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineCoverageModulationStateCreateInfoNV;
92570 
92571 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCoverageModulationStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV92572     VULKAN_HPP_CONSTEXPR PipelineCoverageModulationStateCreateInfoNV(
92573       VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags_                         = {},
92574       VULKAN_HPP_NAMESPACE::CoverageModulationModeNV                     coverageModulationMode_        = VULKAN_HPP_NAMESPACE::CoverageModulationModeNV::eNone,
92575       VULKAN_HPP_NAMESPACE::Bool32                                       coverageModulationTableEnable_ = {},
92576       uint32_t                                                           coverageModulationTableCount_  = {},
92577       const float *                                                      pCoverageModulationTable_      = {},
92578       const void *                                                       pNext_                         = nullptr ) VULKAN_HPP_NOEXCEPT
92579       : pNext{ pNext_ }
92580       , flags{ flags_ }
92581       , coverageModulationMode{ coverageModulationMode_ }
92582       , coverageModulationTableEnable{ coverageModulationTableEnable_ }
92583       , coverageModulationTableCount{ coverageModulationTableCount_ }
92584       , pCoverageModulationTable{ pCoverageModulationTable_ }
92585     {
92586     }
92587 
92588     VULKAN_HPP_CONSTEXPR PipelineCoverageModulationStateCreateInfoNV( PipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92589 
PipelineCoverageModulationStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV92590     PipelineCoverageModulationStateCreateInfoNV( VkPipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
92591       : PipelineCoverageModulationStateCreateInfoNV( *reinterpret_cast<PipelineCoverageModulationStateCreateInfoNV const *>( &rhs ) )
92592     {
92593     }
92594 
92595 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineCoverageModulationStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV92596     PipelineCoverageModulationStateCreateInfoNV( VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags_,
92597                                                  VULKAN_HPP_NAMESPACE::CoverageModulationModeNV                     coverageModulationMode_,
92598                                                  VULKAN_HPP_NAMESPACE::Bool32                                       coverageModulationTableEnable_,
92599                                                  VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const float> const & coverageModulationTable_,
92600                                                  const void *                                                       pNext_ = nullptr )
92601       : pNext( pNext_ )
92602       , flags( flags_ )
92603       , coverageModulationMode( coverageModulationMode_ )
92604       , coverageModulationTableEnable( coverageModulationTableEnable_ )
92605       , coverageModulationTableCount( static_cast<uint32_t>( coverageModulationTable_.size() ) )
92606       , pCoverageModulationTable( coverageModulationTable_.data() )
92607     {
92608     }
92609 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
92610 
92611     PipelineCoverageModulationStateCreateInfoNV & operator=( PipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92612 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
92613 
operator =VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV92614     PipelineCoverageModulationStateCreateInfoNV & operator=( VkPipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
92615     {
92616       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV const *>( &rhs );
92617       return *this;
92618     }
92619 
92620 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV92621     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
92622     {
92623       pNext = pNext_;
92624       return *this;
92625     }
92626 
92627     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV &
setFlagsVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV92628       setFlags( VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
92629     {
92630       flags = flags_;
92631       return *this;
92632     }
92633 
92634     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV &
setCoverageModulationModeVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV92635       setCoverageModulationMode( VULKAN_HPP_NAMESPACE::CoverageModulationModeNV coverageModulationMode_ ) VULKAN_HPP_NOEXCEPT
92636     {
92637       coverageModulationMode = coverageModulationMode_;
92638       return *this;
92639     }
92640 
92641     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV &
setCoverageModulationTableEnableVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV92642       setCoverageModulationTableEnable( VULKAN_HPP_NAMESPACE::Bool32 coverageModulationTableEnable_ ) VULKAN_HPP_NOEXCEPT
92643     {
92644       coverageModulationTableEnable = coverageModulationTableEnable_;
92645       return *this;
92646     }
92647 
92648     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV &
setCoverageModulationTableCountVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV92649       setCoverageModulationTableCount( uint32_t coverageModulationTableCount_ ) VULKAN_HPP_NOEXCEPT
92650     {
92651       coverageModulationTableCount = coverageModulationTableCount_;
92652       return *this;
92653     }
92654 
92655     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV &
setPCoverageModulationTableVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV92656       setPCoverageModulationTable( const float * pCoverageModulationTable_ ) VULKAN_HPP_NOEXCEPT
92657     {
92658       pCoverageModulationTable = pCoverageModulationTable_;
92659       return *this;
92660     }
92661 
92662 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
92663     PipelineCoverageModulationStateCreateInfoNV &
setCoverageModulationTableVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV92664       setCoverageModulationTable( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const float> const & coverageModulationTable_ ) VULKAN_HPP_NOEXCEPT
92665     {
92666       coverageModulationTableCount = static_cast<uint32_t>( coverageModulationTable_.size() );
92667       pCoverageModulationTable     = coverageModulationTable_.data();
92668       return *this;
92669     }
92670 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
92671 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
92672 
operator VkPipelineCoverageModulationStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV92673     operator VkPipelineCoverageModulationStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
92674     {
92675       return *reinterpret_cast<const VkPipelineCoverageModulationStateCreateInfoNV *>( this );
92676     }
92677 
operator VkPipelineCoverageModulationStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV92678     operator VkPipelineCoverageModulationStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
92679     {
92680       return *reinterpret_cast<VkPipelineCoverageModulationStateCreateInfoNV *>( this );
92681     }
92682 
92683 #if defined( VULKAN_HPP_USE_REFLECT )
92684 #  if 14 <= VULKAN_HPP_CPP_VERSION
92685     auto
92686 #  else
92687     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
92688                const void * const &,
92689                VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV const &,
92690                VULKAN_HPP_NAMESPACE::CoverageModulationModeNV const &,
92691                VULKAN_HPP_NAMESPACE::Bool32 const &,
92692                uint32_t const &,
92693                const float * const &>
92694 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV92695       reflect() const VULKAN_HPP_NOEXCEPT
92696     {
92697       return std::tie( sType, pNext, flags, coverageModulationMode, coverageModulationTableEnable, coverageModulationTableCount, pCoverageModulationTable );
92698     }
92699 #endif
92700 
92701 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
92702     auto operator<=>( PipelineCoverageModulationStateCreateInfoNV const & ) const = default;
92703 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV92704     bool operator==( PipelineCoverageModulationStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
92705     {
92706 #  if defined( VULKAN_HPP_USE_REFLECT )
92707       return this->reflect() == rhs.reflect();
92708 #  else
92709       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( coverageModulationMode == rhs.coverageModulationMode ) &&
92710              ( coverageModulationTableEnable == rhs.coverageModulationTableEnable ) && ( coverageModulationTableCount == rhs.coverageModulationTableCount ) &&
92711              ( pCoverageModulationTable == rhs.pCoverageModulationTable );
92712 #  endif
92713     }
92714 
operator !=VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV92715     bool operator!=( PipelineCoverageModulationStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
92716     {
92717       return !operator==( rhs );
92718     }
92719 #endif
92720 
92721   public:
92722     VULKAN_HPP_NAMESPACE::StructureType                                sType                  = StructureType::ePipelineCoverageModulationStateCreateInfoNV;
92723     const void *                                                       pNext                  = {};
92724     VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags                  = {};
92725     VULKAN_HPP_NAMESPACE::CoverageModulationModeNV                     coverageModulationMode = VULKAN_HPP_NAMESPACE::CoverageModulationModeNV::eNone;
92726     VULKAN_HPP_NAMESPACE::Bool32                                       coverageModulationTableEnable = {};
92727     uint32_t                                                           coverageModulationTableCount  = {};
92728     const float *                                                      pCoverageModulationTable      = {};
92729   };
92730 
92731   template <>
92732   struct CppType<StructureType, StructureType::ePipelineCoverageModulationStateCreateInfoNV>
92733   {
92734     using Type = PipelineCoverageModulationStateCreateInfoNV;
92735   };
92736 
92737   struct PipelineCoverageReductionStateCreateInfoNV
92738   {
92739     using NativeType = VkPipelineCoverageReductionStateCreateInfoNV;
92740 
92741     static const bool                                  allowDuplicate = false;
92742     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineCoverageReductionStateCreateInfoNV;
92743 
92744 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCoverageReductionStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV92745     VULKAN_HPP_CONSTEXPR PipelineCoverageReductionStateCreateInfoNV(
92746       VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateFlagsNV flags_                 = {},
92747       VULKAN_HPP_NAMESPACE::CoverageReductionModeNV                     coverageReductionMode_ = VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge,
92748       const void *                                                      pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
92749       : pNext{ pNext_ }
92750       , flags{ flags_ }
92751       , coverageReductionMode{ coverageReductionMode_ }
92752     {
92753     }
92754 
92755     VULKAN_HPP_CONSTEXPR PipelineCoverageReductionStateCreateInfoNV( PipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92756 
PipelineCoverageReductionStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV92757     PipelineCoverageReductionStateCreateInfoNV( VkPipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
92758       : PipelineCoverageReductionStateCreateInfoNV( *reinterpret_cast<PipelineCoverageReductionStateCreateInfoNV const *>( &rhs ) )
92759     {
92760     }
92761 
92762     PipelineCoverageReductionStateCreateInfoNV & operator=( PipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92763 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
92764 
operator =VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV92765     PipelineCoverageReductionStateCreateInfoNV & operator=( VkPipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
92766     {
92767       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV const *>( &rhs );
92768       return *this;
92769     }
92770 
92771 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV92772     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageReductionStateCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
92773     {
92774       pNext = pNext_;
92775       return *this;
92776     }
92777 
92778     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageReductionStateCreateInfoNV &
setFlagsVULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV92779       setFlags( VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
92780     {
92781       flags = flags_;
92782       return *this;
92783     }
92784 
92785     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageReductionStateCreateInfoNV &
setCoverageReductionModeVULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV92786       setCoverageReductionMode( VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode_ ) VULKAN_HPP_NOEXCEPT
92787     {
92788       coverageReductionMode = coverageReductionMode_;
92789       return *this;
92790     }
92791 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
92792 
operator VkPipelineCoverageReductionStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV92793     operator VkPipelineCoverageReductionStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
92794     {
92795       return *reinterpret_cast<const VkPipelineCoverageReductionStateCreateInfoNV *>( this );
92796     }
92797 
operator VkPipelineCoverageReductionStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV92798     operator VkPipelineCoverageReductionStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
92799     {
92800       return *reinterpret_cast<VkPipelineCoverageReductionStateCreateInfoNV *>( this );
92801     }
92802 
92803 #if defined( VULKAN_HPP_USE_REFLECT )
92804 #  if 14 <= VULKAN_HPP_CPP_VERSION
92805     auto
92806 #  else
92807     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
92808                const void * const &,
92809                VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateFlagsNV const &,
92810                VULKAN_HPP_NAMESPACE::CoverageReductionModeNV const &>
92811 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV92812       reflect() const VULKAN_HPP_NOEXCEPT
92813     {
92814       return std::tie( sType, pNext, flags, coverageReductionMode );
92815     }
92816 #endif
92817 
92818 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
92819     auto operator<=>( PipelineCoverageReductionStateCreateInfoNV const & ) const = default;
92820 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV92821     bool operator==( PipelineCoverageReductionStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
92822     {
92823 #  if defined( VULKAN_HPP_USE_REFLECT )
92824       return this->reflect() == rhs.reflect();
92825 #  else
92826       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( coverageReductionMode == rhs.coverageReductionMode );
92827 #  endif
92828     }
92829 
operator !=VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV92830     bool operator!=( PipelineCoverageReductionStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
92831     {
92832       return !operator==( rhs );
92833     }
92834 #endif
92835 
92836   public:
92837     VULKAN_HPP_NAMESPACE::StructureType                               sType                 = StructureType::ePipelineCoverageReductionStateCreateInfoNV;
92838     const void *                                                      pNext                 = {};
92839     VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateFlagsNV flags                 = {};
92840     VULKAN_HPP_NAMESPACE::CoverageReductionModeNV                     coverageReductionMode = VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge;
92841   };
92842 
92843   template <>
92844   struct CppType<StructureType, StructureType::ePipelineCoverageReductionStateCreateInfoNV>
92845   {
92846     using Type = PipelineCoverageReductionStateCreateInfoNV;
92847   };
92848 
92849   struct PipelineCoverageToColorStateCreateInfoNV
92850   {
92851     using NativeType = VkPipelineCoverageToColorStateCreateInfoNV;
92852 
92853     static const bool                                  allowDuplicate = false;
92854     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineCoverageToColorStateCreateInfoNV;
92855 
92856 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCoverageToColorStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV92857     VULKAN_HPP_CONSTEXPR PipelineCoverageToColorStateCreateInfoNV( VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateFlagsNV flags_                 = {},
92858                                                                    VULKAN_HPP_NAMESPACE::Bool32                                    coverageToColorEnable_ = {},
92859                                                                    uint32_t     coverageToColorLocation_                                                  = {},
92860                                                                    const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
92861       : pNext{ pNext_ }
92862       , flags{ flags_ }
92863       , coverageToColorEnable{ coverageToColorEnable_ }
92864       , coverageToColorLocation{ coverageToColorLocation_ }
92865     {
92866     }
92867 
92868     VULKAN_HPP_CONSTEXPR PipelineCoverageToColorStateCreateInfoNV( PipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92869 
PipelineCoverageToColorStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV92870     PipelineCoverageToColorStateCreateInfoNV( VkPipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
92871       : PipelineCoverageToColorStateCreateInfoNV( *reinterpret_cast<PipelineCoverageToColorStateCreateInfoNV const *>( &rhs ) )
92872     {
92873     }
92874 
92875     PipelineCoverageToColorStateCreateInfoNV & operator=( PipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92876 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
92877 
operator =VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV92878     PipelineCoverageToColorStateCreateInfoNV & operator=( VkPipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
92879     {
92880       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV const *>( &rhs );
92881       return *this;
92882     }
92883 
92884 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV92885     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
92886     {
92887       pNext = pNext_;
92888       return *this;
92889     }
92890 
92891     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV &
setFlagsVULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV92892       setFlags( VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
92893     {
92894       flags = flags_;
92895       return *this;
92896     }
92897 
92898     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV &
setCoverageToColorEnableVULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV92899       setCoverageToColorEnable( VULKAN_HPP_NAMESPACE::Bool32 coverageToColorEnable_ ) VULKAN_HPP_NOEXCEPT
92900     {
92901       coverageToColorEnable = coverageToColorEnable_;
92902       return *this;
92903     }
92904 
setCoverageToColorLocationVULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV92905     VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV & setCoverageToColorLocation( uint32_t coverageToColorLocation_ ) VULKAN_HPP_NOEXCEPT
92906     {
92907       coverageToColorLocation = coverageToColorLocation_;
92908       return *this;
92909     }
92910 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
92911 
operator VkPipelineCoverageToColorStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV92912     operator VkPipelineCoverageToColorStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
92913     {
92914       return *reinterpret_cast<const VkPipelineCoverageToColorStateCreateInfoNV *>( this );
92915     }
92916 
operator VkPipelineCoverageToColorStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV92917     operator VkPipelineCoverageToColorStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
92918     {
92919       return *reinterpret_cast<VkPipelineCoverageToColorStateCreateInfoNV *>( this );
92920     }
92921 
92922 #if defined( VULKAN_HPP_USE_REFLECT )
92923 #  if 14 <= VULKAN_HPP_CPP_VERSION
92924     auto
92925 #  else
92926     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
92927                const void * const &,
92928                VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateFlagsNV const &,
92929                VULKAN_HPP_NAMESPACE::Bool32 const &,
92930                uint32_t const &>
92931 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV92932       reflect() const VULKAN_HPP_NOEXCEPT
92933     {
92934       return std::tie( sType, pNext, flags, coverageToColorEnable, coverageToColorLocation );
92935     }
92936 #endif
92937 
92938 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
92939     auto operator<=>( PipelineCoverageToColorStateCreateInfoNV const & ) const = default;
92940 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV92941     bool operator==( PipelineCoverageToColorStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
92942     {
92943 #  if defined( VULKAN_HPP_USE_REFLECT )
92944       return this->reflect() == rhs.reflect();
92945 #  else
92946       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( coverageToColorEnable == rhs.coverageToColorEnable ) &&
92947              ( coverageToColorLocation == rhs.coverageToColorLocation );
92948 #  endif
92949     }
92950 
operator !=VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV92951     bool operator!=( PipelineCoverageToColorStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
92952     {
92953       return !operator==( rhs );
92954     }
92955 #endif
92956 
92957   public:
92958     VULKAN_HPP_NAMESPACE::StructureType                             sType                   = StructureType::ePipelineCoverageToColorStateCreateInfoNV;
92959     const void *                                                    pNext                   = {};
92960     VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateFlagsNV flags                   = {};
92961     VULKAN_HPP_NAMESPACE::Bool32                                    coverageToColorEnable   = {};
92962     uint32_t                                                        coverageToColorLocation = {};
92963   };
92964 
92965   template <>
92966   struct CppType<StructureType, StructureType::ePipelineCoverageToColorStateCreateInfoNV>
92967   {
92968     using Type = PipelineCoverageToColorStateCreateInfoNV;
92969   };
92970 
92971   struct PipelineCreateFlags2CreateInfoKHR
92972   {
92973     using NativeType = VkPipelineCreateFlags2CreateInfoKHR;
92974 
92975     static const bool                                  allowDuplicate = false;
92976     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineCreateFlags2CreateInfoKHR;
92977 
92978 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCreateFlags2CreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfoKHR92979     VULKAN_HPP_CONSTEXPR PipelineCreateFlags2CreateInfoKHR( VULKAN_HPP_NAMESPACE::PipelineCreateFlags2KHR flags_ = {},
92980                                                             const void *                                  pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
92981       : pNext{ pNext_ }
92982       , flags{ flags_ }
92983     {
92984     }
92985 
92986     VULKAN_HPP_CONSTEXPR PipelineCreateFlags2CreateInfoKHR( PipelineCreateFlags2CreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92987 
PipelineCreateFlags2CreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfoKHR92988     PipelineCreateFlags2CreateInfoKHR( VkPipelineCreateFlags2CreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
92989       : PipelineCreateFlags2CreateInfoKHR( *reinterpret_cast<PipelineCreateFlags2CreateInfoKHR const *>( &rhs ) )
92990     {
92991     }
92992 
92993     PipelineCreateFlags2CreateInfoKHR & operator=( PipelineCreateFlags2CreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
92994 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
92995 
operator =VULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfoKHR92996     PipelineCreateFlags2CreateInfoKHR & operator=( VkPipelineCreateFlags2CreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
92997     {
92998       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfoKHR const *>( &rhs );
92999       return *this;
93000     }
93001 
93002 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfoKHR93003     VULKAN_HPP_CONSTEXPR_14 PipelineCreateFlags2CreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
93004     {
93005       pNext = pNext_;
93006       return *this;
93007     }
93008 
setFlagsVULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfoKHR93009     VULKAN_HPP_CONSTEXPR_14 PipelineCreateFlags2CreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags2KHR flags_ ) VULKAN_HPP_NOEXCEPT
93010     {
93011       flags = flags_;
93012       return *this;
93013     }
93014 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
93015 
operator VkPipelineCreateFlags2CreateInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfoKHR93016     operator VkPipelineCreateFlags2CreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
93017     {
93018       return *reinterpret_cast<const VkPipelineCreateFlags2CreateInfoKHR *>( this );
93019     }
93020 
operator VkPipelineCreateFlags2CreateInfoKHR&VULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfoKHR93021     operator VkPipelineCreateFlags2CreateInfoKHR &() VULKAN_HPP_NOEXCEPT
93022     {
93023       return *reinterpret_cast<VkPipelineCreateFlags2CreateInfoKHR *>( this );
93024     }
93025 
93026 #if defined( VULKAN_HPP_USE_REFLECT )
93027 #  if 14 <= VULKAN_HPP_CPP_VERSION
93028     auto
93029 #  else
93030     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineCreateFlags2KHR const &>
93031 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfoKHR93032       reflect() const VULKAN_HPP_NOEXCEPT
93033     {
93034       return std::tie( sType, pNext, flags );
93035     }
93036 #endif
93037 
93038 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
93039     auto operator<=>( PipelineCreateFlags2CreateInfoKHR const & ) const = default;
93040 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfoKHR93041     bool operator==( PipelineCreateFlags2CreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93042     {
93043 #  if defined( VULKAN_HPP_USE_REFLECT )
93044       return this->reflect() == rhs.reflect();
93045 #  else
93046       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
93047 #  endif
93048     }
93049 
operator !=VULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfoKHR93050     bool operator!=( PipelineCreateFlags2CreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93051     {
93052       return !operator==( rhs );
93053     }
93054 #endif
93055 
93056   public:
93057     VULKAN_HPP_NAMESPACE::StructureType           sType = StructureType::ePipelineCreateFlags2CreateInfoKHR;
93058     const void *                                  pNext = {};
93059     VULKAN_HPP_NAMESPACE::PipelineCreateFlags2KHR flags = {};
93060   };
93061 
93062   template <>
93063   struct CppType<StructureType, StructureType::ePipelineCreateFlags2CreateInfoKHR>
93064   {
93065     using Type = PipelineCreateFlags2CreateInfoKHR;
93066   };
93067 
93068   struct PipelineCreationFeedback
93069   {
93070     using NativeType = VkPipelineCreationFeedback;
93071 
93072 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCreationFeedbackVULKAN_HPP_NAMESPACE::PipelineCreationFeedback93073     VULKAN_HPP_CONSTEXPR PipelineCreationFeedback( VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackFlags flags_    = {},
93074                                                    uint64_t                                            duration_ = {} ) VULKAN_HPP_NOEXCEPT
93075       : flags{ flags_ }
93076       , duration{ duration_ }
93077     {
93078     }
93079 
93080     VULKAN_HPP_CONSTEXPR PipelineCreationFeedback( PipelineCreationFeedback const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93081 
PipelineCreationFeedbackVULKAN_HPP_NAMESPACE::PipelineCreationFeedback93082     PipelineCreationFeedback( VkPipelineCreationFeedback const & rhs ) VULKAN_HPP_NOEXCEPT
93083       : PipelineCreationFeedback( *reinterpret_cast<PipelineCreationFeedback const *>( &rhs ) )
93084     {
93085     }
93086 
93087     PipelineCreationFeedback & operator=( PipelineCreationFeedback const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93088 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
93089 
operator =VULKAN_HPP_NAMESPACE::PipelineCreationFeedback93090     PipelineCreationFeedback & operator=( VkPipelineCreationFeedback const & rhs ) VULKAN_HPP_NOEXCEPT
93091     {
93092       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCreationFeedback const *>( &rhs );
93093       return *this;
93094     }
93095 
operator VkPipelineCreationFeedback const&VULKAN_HPP_NAMESPACE::PipelineCreationFeedback93096     operator VkPipelineCreationFeedback const &() const VULKAN_HPP_NOEXCEPT
93097     {
93098       return *reinterpret_cast<const VkPipelineCreationFeedback *>( this );
93099     }
93100 
operator VkPipelineCreationFeedback&VULKAN_HPP_NAMESPACE::PipelineCreationFeedback93101     operator VkPipelineCreationFeedback &() VULKAN_HPP_NOEXCEPT
93102     {
93103       return *reinterpret_cast<VkPipelineCreationFeedback *>( this );
93104     }
93105 
93106 #if defined( VULKAN_HPP_USE_REFLECT )
93107 #  if 14 <= VULKAN_HPP_CPP_VERSION
93108     auto
93109 #  else
93110     std::tuple<VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackFlags const &, uint64_t const &>
93111 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineCreationFeedback93112       reflect() const VULKAN_HPP_NOEXCEPT
93113     {
93114       return std::tie( flags, duration );
93115     }
93116 #endif
93117 
93118 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
93119     auto operator<=>( PipelineCreationFeedback const & ) const = default;
93120 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCreationFeedback93121     bool operator==( PipelineCreationFeedback const & rhs ) const VULKAN_HPP_NOEXCEPT
93122     {
93123 #  if defined( VULKAN_HPP_USE_REFLECT )
93124       return this->reflect() == rhs.reflect();
93125 #  else
93126       return ( flags == rhs.flags ) && ( duration == rhs.duration );
93127 #  endif
93128     }
93129 
operator !=VULKAN_HPP_NAMESPACE::PipelineCreationFeedback93130     bool operator!=( PipelineCreationFeedback const & rhs ) const VULKAN_HPP_NOEXCEPT
93131     {
93132       return !operator==( rhs );
93133     }
93134 #endif
93135 
93136   public:
93137     VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackFlags flags    = {};
93138     uint64_t                                            duration = {};
93139   };
93140 
93141   using PipelineCreationFeedbackEXT = PipelineCreationFeedback;
93142 
93143   struct PipelineCreationFeedbackCreateInfo
93144   {
93145     using NativeType = VkPipelineCreationFeedbackCreateInfo;
93146 
93147     static const bool                                  allowDuplicate = false;
93148     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineCreationFeedbackCreateInfo;
93149 
93150 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCreationFeedbackCreateInfoVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo93151     VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineCreationFeedback_          = {},
93152                                                              uint32_t                                         pipelineStageCreationFeedbackCount_ = {},
93153                                                              VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineStageCreationFeedbacks_    = {},
93154                                                              const void *                                     pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
93155       : pNext{ pNext_ }
93156       , pPipelineCreationFeedback{ pPipelineCreationFeedback_ }
93157       , pipelineStageCreationFeedbackCount{ pipelineStageCreationFeedbackCount_ }
93158       , pPipelineStageCreationFeedbacks{ pPipelineStageCreationFeedbacks_ }
93159     {
93160     }
93161 
93162     VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackCreateInfo( PipelineCreationFeedbackCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93163 
PipelineCreationFeedbackCreateInfoVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo93164     PipelineCreationFeedbackCreateInfo( VkPipelineCreationFeedbackCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
93165       : PipelineCreationFeedbackCreateInfo( *reinterpret_cast<PipelineCreationFeedbackCreateInfo const *>( &rhs ) )
93166     {
93167     }
93168 
93169 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineCreationFeedbackCreateInfoVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo93170     PipelineCreationFeedbackCreateInfo(
93171       VULKAN_HPP_NAMESPACE::PipelineCreationFeedback *                                                      pPipelineCreationFeedback_,
93172       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::PipelineCreationFeedback> const & pipelineStageCreationFeedbacks_,
93173       const void *                                                                                          pNext_ = nullptr )
93174       : pNext( pNext_ )
93175       , pPipelineCreationFeedback( pPipelineCreationFeedback_ )
93176       , pipelineStageCreationFeedbackCount( static_cast<uint32_t>( pipelineStageCreationFeedbacks_.size() ) )
93177       , pPipelineStageCreationFeedbacks( pipelineStageCreationFeedbacks_.data() )
93178     {
93179     }
93180 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
93181 
93182     PipelineCreationFeedbackCreateInfo & operator=( PipelineCreationFeedbackCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93183 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
93184 
operator =VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo93185     PipelineCreationFeedbackCreateInfo & operator=( VkPipelineCreationFeedbackCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
93186     {
93187       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo const *>( &rhs );
93188       return *this;
93189     }
93190 
93191 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo93192     VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
93193     {
93194       pNext = pNext_;
93195       return *this;
93196     }
93197 
93198     VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo &
setPPipelineCreationFeedbackVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo93199       setPPipelineCreationFeedback( VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineCreationFeedback_ ) VULKAN_HPP_NOEXCEPT
93200     {
93201       pPipelineCreationFeedback = pPipelineCreationFeedback_;
93202       return *this;
93203     }
93204 
93205     VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo &
setPipelineStageCreationFeedbackCountVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo93206       setPipelineStageCreationFeedbackCount( uint32_t pipelineStageCreationFeedbackCount_ ) VULKAN_HPP_NOEXCEPT
93207     {
93208       pipelineStageCreationFeedbackCount = pipelineStageCreationFeedbackCount_;
93209       return *this;
93210     }
93211 
93212     VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo &
setPPipelineStageCreationFeedbacksVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo93213       setPPipelineStageCreationFeedbacks( VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineStageCreationFeedbacks_ ) VULKAN_HPP_NOEXCEPT
93214     {
93215       pPipelineStageCreationFeedbacks = pPipelineStageCreationFeedbacks_;
93216       return *this;
93217     }
93218 
93219 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPipelineStageCreationFeedbacksVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo93220     PipelineCreationFeedbackCreateInfo & setPipelineStageCreationFeedbacks(
93221       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::PipelineCreationFeedback> const & pipelineStageCreationFeedbacks_ )
93222       VULKAN_HPP_NOEXCEPT
93223     {
93224       pipelineStageCreationFeedbackCount = static_cast<uint32_t>( pipelineStageCreationFeedbacks_.size() );
93225       pPipelineStageCreationFeedbacks    = pipelineStageCreationFeedbacks_.data();
93226       return *this;
93227     }
93228 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
93229 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
93230 
operator VkPipelineCreationFeedbackCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo93231     operator VkPipelineCreationFeedbackCreateInfo const &() const VULKAN_HPP_NOEXCEPT
93232     {
93233       return *reinterpret_cast<const VkPipelineCreationFeedbackCreateInfo *>( this );
93234     }
93235 
operator VkPipelineCreationFeedbackCreateInfo&VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo93236     operator VkPipelineCreationFeedbackCreateInfo &() VULKAN_HPP_NOEXCEPT
93237     {
93238       return *reinterpret_cast<VkPipelineCreationFeedbackCreateInfo *>( this );
93239     }
93240 
93241 #if defined( VULKAN_HPP_USE_REFLECT )
93242 #  if 14 <= VULKAN_HPP_CPP_VERSION
93243     auto
93244 #  else
93245     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
93246                const void * const &,
93247                VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * const &,
93248                uint32_t const &,
93249                VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * const &>
93250 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo93251       reflect() const VULKAN_HPP_NOEXCEPT
93252     {
93253       return std::tie( sType, pNext, pPipelineCreationFeedback, pipelineStageCreationFeedbackCount, pPipelineStageCreationFeedbacks );
93254     }
93255 #endif
93256 
93257 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
93258     auto operator<=>( PipelineCreationFeedbackCreateInfo const & ) const = default;
93259 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo93260     bool operator==( PipelineCreationFeedbackCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
93261     {
93262 #  if defined( VULKAN_HPP_USE_REFLECT )
93263       return this->reflect() == rhs.reflect();
93264 #  else
93265       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pPipelineCreationFeedback == rhs.pPipelineCreationFeedback ) &&
93266              ( pipelineStageCreationFeedbackCount == rhs.pipelineStageCreationFeedbackCount ) &&
93267              ( pPipelineStageCreationFeedbacks == rhs.pPipelineStageCreationFeedbacks );
93268 #  endif
93269     }
93270 
operator !=VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo93271     bool operator!=( PipelineCreationFeedbackCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
93272     {
93273       return !operator==( rhs );
93274     }
93275 #endif
93276 
93277   public:
93278     VULKAN_HPP_NAMESPACE::StructureType              sType                              = StructureType::ePipelineCreationFeedbackCreateInfo;
93279     const void *                                     pNext                              = {};
93280     VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineCreationFeedback          = {};
93281     uint32_t                                         pipelineStageCreationFeedbackCount = {};
93282     VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineStageCreationFeedbacks    = {};
93283   };
93284 
93285   template <>
93286   struct CppType<StructureType, StructureType::ePipelineCreationFeedbackCreateInfo>
93287   {
93288     using Type = PipelineCreationFeedbackCreateInfo;
93289   };
93290 
93291   using PipelineCreationFeedbackCreateInfoEXT = PipelineCreationFeedbackCreateInfo;
93292 
93293   struct PipelineDiscardRectangleStateCreateInfoEXT
93294   {
93295     using NativeType = VkPipelineDiscardRectangleStateCreateInfoEXT;
93296 
93297     static const bool                                  allowDuplicate = false;
93298     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineDiscardRectangleStateCreateInfoEXT;
93299 
93300 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineDiscardRectangleStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT93301     VULKAN_HPP_CONSTEXPR PipelineDiscardRectangleStateCreateInfoEXT(
93302       VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags_                 = {},
93303       VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT                     discardRectangleMode_  = VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT::eInclusive,
93304       uint32_t                                                          discardRectangleCount_ = {},
93305       const VULKAN_HPP_NAMESPACE::Rect2D *                              pDiscardRectangles_    = {},
93306       const void *                                                      pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
93307       : pNext{ pNext_ }
93308       , flags{ flags_ }
93309       , discardRectangleMode{ discardRectangleMode_ }
93310       , discardRectangleCount{ discardRectangleCount_ }
93311       , pDiscardRectangles{ pDiscardRectangles_ }
93312     {
93313     }
93314 
93315     VULKAN_HPP_CONSTEXPR PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93316 
PipelineDiscardRectangleStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT93317     PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
93318       : PipelineDiscardRectangleStateCreateInfoEXT( *reinterpret_cast<PipelineDiscardRectangleStateCreateInfoEXT const *>( &rhs ) )
93319     {
93320     }
93321 
93322 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineDiscardRectangleStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT93323     PipelineDiscardRectangleStateCreateInfoEXT( VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT                         flags_,
93324                                                 VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT                                             discardRectangleMode_,
93325                                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & discardRectangles_,
93326                                                 const void *                                                                              pNext_ = nullptr )
93327       : pNext( pNext_ )
93328       , flags( flags_ )
93329       , discardRectangleMode( discardRectangleMode_ )
93330       , discardRectangleCount( static_cast<uint32_t>( discardRectangles_.size() ) )
93331       , pDiscardRectangles( discardRectangles_.data() )
93332     {
93333     }
93334 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
93335 
93336     PipelineDiscardRectangleStateCreateInfoEXT & operator=( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93337 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
93338 
operator =VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT93339     PipelineDiscardRectangleStateCreateInfoEXT & operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
93340     {
93341       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT const *>( &rhs );
93342       return *this;
93343     }
93344 
93345 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT93346     VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
93347     {
93348       pNext = pNext_;
93349       return *this;
93350     }
93351 
93352     VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT93353       setFlags( VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
93354     {
93355       flags = flags_;
93356       return *this;
93357     }
93358 
93359     VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT &
setDiscardRectangleModeVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT93360       setDiscardRectangleMode( VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT discardRectangleMode_ ) VULKAN_HPP_NOEXCEPT
93361     {
93362       discardRectangleMode = discardRectangleMode_;
93363       return *this;
93364     }
93365 
setDiscardRectangleCountVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT93366     VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT & setDiscardRectangleCount( uint32_t discardRectangleCount_ ) VULKAN_HPP_NOEXCEPT
93367     {
93368       discardRectangleCount = discardRectangleCount_;
93369       return *this;
93370     }
93371 
93372     VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT &
setPDiscardRectanglesVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT93373       setPDiscardRectangles( const VULKAN_HPP_NAMESPACE::Rect2D * pDiscardRectangles_ ) VULKAN_HPP_NOEXCEPT
93374     {
93375       pDiscardRectangles = pDiscardRectangles_;
93376       return *this;
93377     }
93378 
93379 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
93380     PipelineDiscardRectangleStateCreateInfoEXT &
setDiscardRectanglesVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT93381       setDiscardRectangles( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & discardRectangles_ ) VULKAN_HPP_NOEXCEPT
93382     {
93383       discardRectangleCount = static_cast<uint32_t>( discardRectangles_.size() );
93384       pDiscardRectangles    = discardRectangles_.data();
93385       return *this;
93386     }
93387 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
93388 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
93389 
operator VkPipelineDiscardRectangleStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT93390     operator VkPipelineDiscardRectangleStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
93391     {
93392       return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT *>( this );
93393     }
93394 
operator VkPipelineDiscardRectangleStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT93395     operator VkPipelineDiscardRectangleStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
93396     {
93397       return *reinterpret_cast<VkPipelineDiscardRectangleStateCreateInfoEXT *>( this );
93398     }
93399 
93400 #if defined( VULKAN_HPP_USE_REFLECT )
93401 #  if 14 <= VULKAN_HPP_CPP_VERSION
93402     auto
93403 #  else
93404     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
93405                const void * const &,
93406                VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT const &,
93407                VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT const &,
93408                uint32_t const &,
93409                const VULKAN_HPP_NAMESPACE::Rect2D * const &>
93410 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT93411       reflect() const VULKAN_HPP_NOEXCEPT
93412     {
93413       return std::tie( sType, pNext, flags, discardRectangleMode, discardRectangleCount, pDiscardRectangles );
93414     }
93415 #endif
93416 
93417 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
93418     auto operator<=>( PipelineDiscardRectangleStateCreateInfoEXT const & ) const = default;
93419 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT93420     bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
93421     {
93422 #  if defined( VULKAN_HPP_USE_REFLECT )
93423       return this->reflect() == rhs.reflect();
93424 #  else
93425       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( discardRectangleMode == rhs.discardRectangleMode ) &&
93426              ( discardRectangleCount == rhs.discardRectangleCount ) && ( pDiscardRectangles == rhs.pDiscardRectangles );
93427 #  endif
93428     }
93429 
operator !=VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT93430     bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
93431     {
93432       return !operator==( rhs );
93433     }
93434 #endif
93435 
93436   public:
93437     VULKAN_HPP_NAMESPACE::StructureType                               sType                 = StructureType::ePipelineDiscardRectangleStateCreateInfoEXT;
93438     const void *                                                      pNext                 = {};
93439     VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags                 = {};
93440     VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT                     discardRectangleMode  = VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT::eInclusive;
93441     uint32_t                                                          discardRectangleCount = {};
93442     const VULKAN_HPP_NAMESPACE::Rect2D *                              pDiscardRectangles    = {};
93443   };
93444 
93445   template <>
93446   struct CppType<StructureType, StructureType::ePipelineDiscardRectangleStateCreateInfoEXT>
93447   {
93448     using Type = PipelineDiscardRectangleStateCreateInfoEXT;
93449   };
93450 
93451   struct PipelineExecutableInfoKHR
93452   {
93453     using NativeType = VkPipelineExecutableInfoKHR;
93454 
93455     static const bool                                  allowDuplicate = false;
93456     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineExecutableInfoKHR;
93457 
93458 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineExecutableInfoKHRVULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR93459     VULKAN_HPP_CONSTEXPR PipelineExecutableInfoKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline_        = {},
93460                                                     uint32_t                       executableIndex_ = {},
93461                                                     const void *                   pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
93462       : pNext{ pNext_ }
93463       , pipeline{ pipeline_ }
93464       , executableIndex{ executableIndex_ }
93465     {
93466     }
93467 
93468     VULKAN_HPP_CONSTEXPR PipelineExecutableInfoKHR( PipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93469 
PipelineExecutableInfoKHRVULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR93470     PipelineExecutableInfoKHR( VkPipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93471       : PipelineExecutableInfoKHR( *reinterpret_cast<PipelineExecutableInfoKHR const *>( &rhs ) )
93472     {
93473     }
93474 
93475     PipelineExecutableInfoKHR & operator=( PipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93476 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
93477 
operator =VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR93478     PipelineExecutableInfoKHR & operator=( VkPipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93479     {
93480       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR const *>( &rhs );
93481       return *this;
93482     }
93483 
93484 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR93485     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
93486     {
93487       pNext = pNext_;
93488       return *this;
93489     }
93490 
setPipelineVULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR93491     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInfoKHR & setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT
93492     {
93493       pipeline = pipeline_;
93494       return *this;
93495     }
93496 
setExecutableIndexVULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR93497     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInfoKHR & setExecutableIndex( uint32_t executableIndex_ ) VULKAN_HPP_NOEXCEPT
93498     {
93499       executableIndex = executableIndex_;
93500       return *this;
93501     }
93502 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
93503 
operator VkPipelineExecutableInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR93504     operator VkPipelineExecutableInfoKHR const &() const VULKAN_HPP_NOEXCEPT
93505     {
93506       return *reinterpret_cast<const VkPipelineExecutableInfoKHR *>( this );
93507     }
93508 
operator VkPipelineExecutableInfoKHR&VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR93509     operator VkPipelineExecutableInfoKHR &() VULKAN_HPP_NOEXCEPT
93510     {
93511       return *reinterpret_cast<VkPipelineExecutableInfoKHR *>( this );
93512     }
93513 
93514 #if defined( VULKAN_HPP_USE_REFLECT )
93515 #  if 14 <= VULKAN_HPP_CPP_VERSION
93516     auto
93517 #  else
93518     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Pipeline const &, uint32_t const &>
93519 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR93520       reflect() const VULKAN_HPP_NOEXCEPT
93521     {
93522       return std::tie( sType, pNext, pipeline, executableIndex );
93523     }
93524 #endif
93525 
93526 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
93527     auto operator<=>( PipelineExecutableInfoKHR const & ) const = default;
93528 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR93529     bool operator==( PipelineExecutableInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93530     {
93531 #  if defined( VULKAN_HPP_USE_REFLECT )
93532       return this->reflect() == rhs.reflect();
93533 #  else
93534       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipeline == rhs.pipeline ) && ( executableIndex == rhs.executableIndex );
93535 #  endif
93536     }
93537 
operator !=VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR93538     bool operator!=( PipelineExecutableInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93539     {
93540       return !operator==( rhs );
93541     }
93542 #endif
93543 
93544   public:
93545     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::ePipelineExecutableInfoKHR;
93546     const void *                        pNext           = {};
93547     VULKAN_HPP_NAMESPACE::Pipeline      pipeline        = {};
93548     uint32_t                            executableIndex = {};
93549   };
93550 
93551   template <>
93552   struct CppType<StructureType, StructureType::ePipelineExecutableInfoKHR>
93553   {
93554     using Type = PipelineExecutableInfoKHR;
93555   };
93556 
93557   struct PipelineExecutableInternalRepresentationKHR
93558   {
93559     using NativeType = VkPipelineExecutableInternalRepresentationKHR;
93560 
93561     static const bool                                  allowDuplicate = false;
93562     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineExecutableInternalRepresentationKHR;
93563 
93564 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineExecutableInternalRepresentationKHRVULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR93565     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInternalRepresentationKHR( std::array<char, VK_MAX_DESCRIPTION_SIZE> const & name_        = {},
93566                                                                          std::array<char, VK_MAX_DESCRIPTION_SIZE> const & description_ = {},
93567                                                                          VULKAN_HPP_NAMESPACE::Bool32                      isText_      = {},
93568                                                                          size_t                                            dataSize_    = {},
93569                                                                          void *                                            pData_       = {},
93570                                                                          void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
93571       : pNext{ pNext_ }
93572       , name{ name_ }
93573       , description{ description_ }
93574       , isText{ isText_ }
93575       , dataSize{ dataSize_ }
93576       , pData{ pData_ }
93577     {
93578     }
93579 
93580     VULKAN_HPP_CONSTEXPR_14
93581       PipelineExecutableInternalRepresentationKHR( PipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93582 
PipelineExecutableInternalRepresentationKHRVULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR93583     PipelineExecutableInternalRepresentationKHR( VkPipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93584       : PipelineExecutableInternalRepresentationKHR( *reinterpret_cast<PipelineExecutableInternalRepresentationKHR const *>( &rhs ) )
93585     {
93586     }
93587 
93588 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
93589     template <typename T>
PipelineExecutableInternalRepresentationKHRVULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR93590     PipelineExecutableInternalRepresentationKHR( std::string const &                                      name_,
93591                                                  std::string const &                                      description_ = {},
93592                                                  VULKAN_HPP_NAMESPACE::Bool32                             isText_      = {},
93593                                                  VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<T> const & data_        = {},
93594                                                  void *                                                   pNext_       = nullptr )
93595       : pNext( pNext_ ), isText( isText_ ), dataSize( data_.size() * sizeof( T ) ), pData( data_.data() )
93596     {
93597       VULKAN_HPP_ASSERT( name_.size() < VK_MAX_DESCRIPTION_SIZE );
93598 #    if defined( WIN32 )
93599       strncpy_s( name, VK_MAX_DESCRIPTION_SIZE, name_.data(), name_.size() );
93600 #    else
93601       strncpy( name, name_.data(), std::min<size_t>( VK_MAX_DESCRIPTION_SIZE, name_.size() ) );
93602 #    endif
93603 
93604       VULKAN_HPP_ASSERT( description_.size() < VK_MAX_DESCRIPTION_SIZE );
93605 #    if defined( WIN32 )
93606       strncpy_s( description, VK_MAX_DESCRIPTION_SIZE, description_.data(), description_.size() );
93607 #    else
93608       strncpy( description, description_.data(), std::min<size_t>( VK_MAX_DESCRIPTION_SIZE, description_.size() ) );
93609 #    endif
93610     }
93611 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
93612 
93613     PipelineExecutableInternalRepresentationKHR & operator=( PipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93614 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
93615 
operator =VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR93616     PipelineExecutableInternalRepresentationKHR & operator=( VkPipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93617     {
93618       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR const *>( &rhs );
93619       return *this;
93620     }
93621 
operator VkPipelineExecutableInternalRepresentationKHR const&VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR93622     operator VkPipelineExecutableInternalRepresentationKHR const &() const VULKAN_HPP_NOEXCEPT
93623     {
93624       return *reinterpret_cast<const VkPipelineExecutableInternalRepresentationKHR *>( this );
93625     }
93626 
operator VkPipelineExecutableInternalRepresentationKHR&VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR93627     operator VkPipelineExecutableInternalRepresentationKHR &() VULKAN_HPP_NOEXCEPT
93628     {
93629       return *reinterpret_cast<VkPipelineExecutableInternalRepresentationKHR *>( this );
93630     }
93631 
93632 #if defined( VULKAN_HPP_USE_REFLECT )
93633 #  if 14 <= VULKAN_HPP_CPP_VERSION
93634     auto
93635 #  else
93636     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
93637                void * const &,
93638                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
93639                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
93640                VULKAN_HPP_NAMESPACE::Bool32 const &,
93641                size_t const &,
93642                void * const &>
93643 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR93644       reflect() const VULKAN_HPP_NOEXCEPT
93645     {
93646       return std::tie( sType, pNext, name, description, isText, dataSize, pData );
93647     }
93648 #endif
93649 
93650 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR93651     std::strong_ordering operator<=>( PipelineExecutableInternalRepresentationKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93652     {
93653       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
93654         return cmp;
93655       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
93656         return cmp;
93657       if ( auto cmp = strcmp( name, rhs.name ); cmp != 0 )
93658         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
93659       if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 )
93660         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
93661       if ( auto cmp = isText <=> rhs.isText; cmp != 0 )
93662         return cmp;
93663       if ( auto cmp = dataSize <=> rhs.dataSize; cmp != 0 )
93664         return cmp;
93665       if ( auto cmp = pData <=> rhs.pData; cmp != 0 )
93666         return cmp;
93667 
93668       return std::strong_ordering::equivalent;
93669     }
93670 #endif
93671 
operator ==VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR93672     bool operator==( PipelineExecutableInternalRepresentationKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93673     {
93674       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( strcmp( name, rhs.name ) == 0 ) && ( strcmp( description, rhs.description ) == 0 ) &&
93675              ( isText == rhs.isText ) && ( dataSize == rhs.dataSize ) && ( pData == rhs.pData );
93676     }
93677 
operator !=VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR93678     bool operator!=( PipelineExecutableInternalRepresentationKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93679     {
93680       return !operator==( rhs );
93681     }
93682 
93683   public:
93684     VULKAN_HPP_NAMESPACE::StructureType                                 sType       = StructureType::ePipelineExecutableInternalRepresentationKHR;
93685     void *                                                              pNext       = {};
93686     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> name        = {};
93687     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description = {};
93688     VULKAN_HPP_NAMESPACE::Bool32                                        isText      = {};
93689     size_t                                                              dataSize    = {};
93690     void *                                                              pData       = {};
93691   };
93692 
93693   template <>
93694   struct CppType<StructureType, StructureType::ePipelineExecutableInternalRepresentationKHR>
93695   {
93696     using Type = PipelineExecutableInternalRepresentationKHR;
93697   };
93698 
93699   struct PipelineExecutablePropertiesKHR
93700   {
93701     using NativeType = VkPipelineExecutablePropertiesKHR;
93702 
93703     static const bool                                  allowDuplicate = false;
93704     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineExecutablePropertiesKHR;
93705 
93706 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineExecutablePropertiesKHRVULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR93707     VULKAN_HPP_CONSTEXPR_14 PipelineExecutablePropertiesKHR( VULKAN_HPP_NAMESPACE::ShaderStageFlags            stages_       = {},
93708                                                              std::array<char, VK_MAX_DESCRIPTION_SIZE> const & name_         = {},
93709                                                              std::array<char, VK_MAX_DESCRIPTION_SIZE> const & description_  = {},
93710                                                              uint32_t                                          subgroupSize_ = {},
93711                                                              void *                                            pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
93712       : pNext{ pNext_ }
93713       , stages{ stages_ }
93714       , name{ name_ }
93715       , description{ description_ }
93716       , subgroupSize{ subgroupSize_ }
93717     {
93718     }
93719 
93720     VULKAN_HPP_CONSTEXPR_14 PipelineExecutablePropertiesKHR( PipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93721 
PipelineExecutablePropertiesKHRVULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR93722     PipelineExecutablePropertiesKHR( VkPipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93723       : PipelineExecutablePropertiesKHR( *reinterpret_cast<PipelineExecutablePropertiesKHR const *>( &rhs ) )
93724     {
93725     }
93726 
93727 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineExecutablePropertiesKHRVULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR93728     PipelineExecutablePropertiesKHR( VULKAN_HPP_NAMESPACE::ShaderStageFlags stages_,
93729                                      std::string const &                    name_,
93730                                      std::string const &                    description_  = {},
93731                                      uint32_t                               subgroupSize_ = {},
93732                                      void *                                 pNext_        = nullptr )
93733       : pNext( pNext_ ), stages( stages_ ), subgroupSize( subgroupSize_ )
93734     {
93735       VULKAN_HPP_ASSERT( name_.size() < VK_MAX_DESCRIPTION_SIZE );
93736 #    if defined( WIN32 )
93737       strncpy_s( name, VK_MAX_DESCRIPTION_SIZE, name_.data(), name_.size() );
93738 #    else
93739       strncpy( name, name_.data(), std::min<size_t>( VK_MAX_DESCRIPTION_SIZE, name_.size() ) );
93740 #    endif
93741 
93742       VULKAN_HPP_ASSERT( description_.size() < VK_MAX_DESCRIPTION_SIZE );
93743 #    if defined( WIN32 )
93744       strncpy_s( description, VK_MAX_DESCRIPTION_SIZE, description_.data(), description_.size() );
93745 #    else
93746       strncpy( description, description_.data(), std::min<size_t>( VK_MAX_DESCRIPTION_SIZE, description_.size() ) );
93747 #    endif
93748     }
93749 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
93750 
93751     PipelineExecutablePropertiesKHR & operator=( PipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93752 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
93753 
operator =VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR93754     PipelineExecutablePropertiesKHR & operator=( VkPipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93755     {
93756       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR const *>( &rhs );
93757       return *this;
93758     }
93759 
operator VkPipelineExecutablePropertiesKHR const&VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR93760     operator VkPipelineExecutablePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
93761     {
93762       return *reinterpret_cast<const VkPipelineExecutablePropertiesKHR *>( this );
93763     }
93764 
operator VkPipelineExecutablePropertiesKHR&VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR93765     operator VkPipelineExecutablePropertiesKHR &() VULKAN_HPP_NOEXCEPT
93766     {
93767       return *reinterpret_cast<VkPipelineExecutablePropertiesKHR *>( this );
93768     }
93769 
93770 #if defined( VULKAN_HPP_USE_REFLECT )
93771 #  if 14 <= VULKAN_HPP_CPP_VERSION
93772     auto
93773 #  else
93774     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
93775                void * const &,
93776                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
93777                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
93778                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
93779                uint32_t const &>
93780 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR93781       reflect() const VULKAN_HPP_NOEXCEPT
93782     {
93783       return std::tie( sType, pNext, stages, name, description, subgroupSize );
93784     }
93785 #endif
93786 
93787 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR93788     std::strong_ordering operator<=>( PipelineExecutablePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93789     {
93790       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
93791         return cmp;
93792       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
93793         return cmp;
93794       if ( auto cmp = stages <=> rhs.stages; cmp != 0 )
93795         return cmp;
93796       if ( auto cmp = strcmp( name, rhs.name ); cmp != 0 )
93797         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
93798       if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 )
93799         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
93800       if ( auto cmp = subgroupSize <=> rhs.subgroupSize; cmp != 0 )
93801         return cmp;
93802 
93803       return std::strong_ordering::equivalent;
93804     }
93805 #endif
93806 
operator ==VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR93807     bool operator==( PipelineExecutablePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93808     {
93809       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stages == rhs.stages ) && ( strcmp( name, rhs.name ) == 0 ) &&
93810              ( strcmp( description, rhs.description ) == 0 ) && ( subgroupSize == rhs.subgroupSize );
93811     }
93812 
operator !=VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR93813     bool operator!=( PipelineExecutablePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
93814     {
93815       return !operator==( rhs );
93816     }
93817 
93818   public:
93819     VULKAN_HPP_NAMESPACE::StructureType                                 sType        = StructureType::ePipelineExecutablePropertiesKHR;
93820     void *                                                              pNext        = {};
93821     VULKAN_HPP_NAMESPACE::ShaderStageFlags                              stages       = {};
93822     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> name         = {};
93823     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description  = {};
93824     uint32_t                                                            subgroupSize = {};
93825   };
93826 
93827   template <>
93828   struct CppType<StructureType, StructureType::ePipelineExecutablePropertiesKHR>
93829   {
93830     using Type = PipelineExecutablePropertiesKHR;
93831   };
93832 
93833   union PipelineExecutableStatisticValueKHR
93834   {
93835     using NativeType = VkPipelineExecutableStatisticValueKHR;
93836 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
93837 
PipelineExecutableStatisticValueKHR(VULKAN_HPP_NAMESPACE::Bool32 b32_={} )93838     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR( VULKAN_HPP_NAMESPACE::Bool32 b32_ = {} ) : b32( b32_ ) {}
93839 
PipelineExecutableStatisticValueKHR(int64_t i64_)93840     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR( int64_t i64_ ) : i64( i64_ ) {}
93841 
PipelineExecutableStatisticValueKHR(uint64_t u64_)93842     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR( uint64_t u64_ ) : u64( u64_ ) {}
93843 
PipelineExecutableStatisticValueKHR(double f64_)93844     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR( double f64_ ) : f64( f64_ ) {}
93845 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
93846 
93847 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setB32(VULKAN_HPP_NAMESPACE::Bool32 b32_)93848     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR & setB32( VULKAN_HPP_NAMESPACE::Bool32 b32_ ) VULKAN_HPP_NOEXCEPT
93849     {
93850       b32 = b32_;
93851       return *this;
93852     }
93853 
setI64(int64_t i64_)93854     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR & setI64( int64_t i64_ ) VULKAN_HPP_NOEXCEPT
93855     {
93856       i64 = i64_;
93857       return *this;
93858     }
93859 
setU64(uint64_t u64_)93860     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR & setU64( uint64_t u64_ ) VULKAN_HPP_NOEXCEPT
93861     {
93862       u64 = u64_;
93863       return *this;
93864     }
93865 
setF64(double f64_)93866     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR & setF64( double f64_ ) VULKAN_HPP_NOEXCEPT
93867     {
93868       f64 = f64_;
93869       return *this;
93870     }
93871 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
93872 
operator VkPipelineExecutableStatisticValueKHR const&() const93873     operator VkPipelineExecutableStatisticValueKHR const &() const
93874     {
93875       return *reinterpret_cast<const VkPipelineExecutableStatisticValueKHR *>( this );
93876     }
93877 
operator VkPipelineExecutableStatisticValueKHR&()93878     operator VkPipelineExecutableStatisticValueKHR &()
93879     {
93880       return *reinterpret_cast<VkPipelineExecutableStatisticValueKHR *>( this );
93881     }
93882 
93883 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
93884     VULKAN_HPP_NAMESPACE::Bool32 b32;
93885     int64_t                      i64;
93886     uint64_t                     u64;
93887     double                       f64;
93888 #else
93889     VkBool32 b32;
93890     int64_t  i64;
93891     uint64_t u64;
93892     double   f64;
93893 #endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
93894   };
93895 
93896   struct PipelineExecutableStatisticKHR
93897   {
93898     using NativeType = VkPipelineExecutableStatisticKHR;
93899 
93900     static const bool                                  allowDuplicate = false;
93901     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineExecutableStatisticKHR;
93902 
93903 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineExecutableStatisticKHRVULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR93904     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticKHR(
93905       std::array<char, VK_MAX_DESCRIPTION_SIZE> const &          name_        = {},
93906       std::array<char, VK_MAX_DESCRIPTION_SIZE> const &          description_ = {},
93907       VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR format_      = VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR::eBool32,
93908       VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticValueKHR  value_       = {},
93909       void *                                                     pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
93910       : pNext{ pNext_ }
93911       , name{ name_ }
93912       , description{ description_ }
93913       , format{ format_ }
93914       , value{ value_ }
93915     {
93916     }
93917 
93918     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticKHR( PipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93919 
PipelineExecutableStatisticKHRVULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR93920     PipelineExecutableStatisticKHR( VkPipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93921       : PipelineExecutableStatisticKHR( *reinterpret_cast<PipelineExecutableStatisticKHR const *>( &rhs ) )
93922     {
93923     }
93924 
93925 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineExecutableStatisticKHRVULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR93926     PipelineExecutableStatisticKHR(
93927       std::string const &                                        name_,
93928       std::string const &                                        description_ = {},
93929       VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR format_      = VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR::eBool32,
93930       VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticValueKHR  value_       = {},
93931       void *                                                     pNext_       = nullptr )
93932       : pNext( pNext_ ), format( format_ ), value( value_ )
93933     {
93934       VULKAN_HPP_ASSERT( name_.size() < VK_MAX_DESCRIPTION_SIZE );
93935 #    if defined( WIN32 )
93936       strncpy_s( name, VK_MAX_DESCRIPTION_SIZE, name_.data(), name_.size() );
93937 #    else
93938       strncpy( name, name_.data(), std::min<size_t>( VK_MAX_DESCRIPTION_SIZE, name_.size() ) );
93939 #    endif
93940 
93941       VULKAN_HPP_ASSERT( description_.size() < VK_MAX_DESCRIPTION_SIZE );
93942 #    if defined( WIN32 )
93943       strncpy_s( description, VK_MAX_DESCRIPTION_SIZE, description_.data(), description_.size() );
93944 #    else
93945       strncpy( description, description_.data(), std::min<size_t>( VK_MAX_DESCRIPTION_SIZE, description_.size() ) );
93946 #    endif
93947     }
93948 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
93949 
93950     PipelineExecutableStatisticKHR & operator=( PipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
93951 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
93952 
operator =VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR93953     PipelineExecutableStatisticKHR & operator=( VkPipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT
93954     {
93955       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR const *>( &rhs );
93956       return *this;
93957     }
93958 
operator VkPipelineExecutableStatisticKHR const&VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR93959     operator VkPipelineExecutableStatisticKHR const &() const VULKAN_HPP_NOEXCEPT
93960     {
93961       return *reinterpret_cast<const VkPipelineExecutableStatisticKHR *>( this );
93962     }
93963 
operator VkPipelineExecutableStatisticKHR&VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR93964     operator VkPipelineExecutableStatisticKHR &() VULKAN_HPP_NOEXCEPT
93965     {
93966       return *reinterpret_cast<VkPipelineExecutableStatisticKHR *>( this );
93967     }
93968 
93969 #if defined( VULKAN_HPP_USE_REFLECT )
93970 #  if 14 <= VULKAN_HPP_CPP_VERSION
93971     auto
93972 #  else
93973     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
93974                void * const &,
93975                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
93976                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &,
93977                VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR const &,
93978                VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticValueKHR const &>
93979 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR93980       reflect() const VULKAN_HPP_NOEXCEPT
93981     {
93982       return std::tie( sType, pNext, name, description, format, value );
93983     }
93984 #endif
93985 
93986   public:
93987     VULKAN_HPP_NAMESPACE::StructureType                                 sType       = StructureType::ePipelineExecutableStatisticKHR;
93988     void *                                                              pNext       = {};
93989     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> name        = {};
93990     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description = {};
93991     VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR          format      = VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR::eBool32;
93992     VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticValueKHR           value       = {};
93993   };
93994 
93995   template <>
93996   struct CppType<StructureType, StructureType::ePipelineExecutableStatisticKHR>
93997   {
93998     using Type = PipelineExecutableStatisticKHR;
93999   };
94000 
94001   struct PipelineFragmentShadingRateEnumStateCreateInfoNV
94002   {
94003     using NativeType = VkPipelineFragmentShadingRateEnumStateCreateInfoNV;
94004 
94005     static const bool                                  allowDuplicate = false;
94006     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineFragmentShadingRateEnumStateCreateInfoNV;
94007 
94008 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineFragmentShadingRateEnumStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV94009     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV(
94010       VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV shadingRateType_ = VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV::eFragmentSize,
94011       VULKAN_HPP_NAMESPACE::FragmentShadingRateNV     shadingRate_     = VULKAN_HPP_NAMESPACE::FragmentShadingRateNV::e1InvocationPerPixel,
94012       std::array<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> const &
94013         combinerOps_ = { { VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep, VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep } },
94014       const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
94015       : pNext{ pNext_ }
94016       , shadingRateType{ shadingRateType_ }
94017       , shadingRate{ shadingRate_ }
94018       , combinerOps{ combinerOps_ }
94019     {
94020     }
94021 
94022     VULKAN_HPP_CONSTEXPR_14
94023       PipelineFragmentShadingRateEnumStateCreateInfoNV( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94024 
PipelineFragmentShadingRateEnumStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV94025     PipelineFragmentShadingRateEnumStateCreateInfoNV( VkPipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
94026       : PipelineFragmentShadingRateEnumStateCreateInfoNV( *reinterpret_cast<PipelineFragmentShadingRateEnumStateCreateInfoNV const *>( &rhs ) )
94027     {
94028     }
94029 
94030     PipelineFragmentShadingRateEnumStateCreateInfoNV & operator=( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94031 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94032 
operator =VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV94033     PipelineFragmentShadingRateEnumStateCreateInfoNV & operator=( VkPipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
94034     {
94035       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV const *>( &rhs );
94036       return *this;
94037     }
94038 
94039 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV94040     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
94041     {
94042       pNext = pNext_;
94043       return *this;
94044     }
94045 
94046     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV &
setShadingRateTypeVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV94047       setShadingRateType( VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV shadingRateType_ ) VULKAN_HPP_NOEXCEPT
94048     {
94049       shadingRateType = shadingRateType_;
94050       return *this;
94051     }
94052 
94053     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV &
setShadingRateVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV94054       setShadingRate( VULKAN_HPP_NAMESPACE::FragmentShadingRateNV shadingRate_ ) VULKAN_HPP_NOEXCEPT
94055     {
94056       shadingRate = shadingRate_;
94057       return *this;
94058     }
94059 
94060     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV &
setCombinerOpsVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV94061       setCombinerOps( std::array<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> combinerOps_ ) VULKAN_HPP_NOEXCEPT
94062     {
94063       combinerOps = combinerOps_;
94064       return *this;
94065     }
94066 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94067 
operator VkPipelineFragmentShadingRateEnumStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV94068     operator VkPipelineFragmentShadingRateEnumStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
94069     {
94070       return *reinterpret_cast<const VkPipelineFragmentShadingRateEnumStateCreateInfoNV *>( this );
94071     }
94072 
operator VkPipelineFragmentShadingRateEnumStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV94073     operator VkPipelineFragmentShadingRateEnumStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
94074     {
94075       return *reinterpret_cast<VkPipelineFragmentShadingRateEnumStateCreateInfoNV *>( this );
94076     }
94077 
94078 #if defined( VULKAN_HPP_USE_REFLECT )
94079 #  if 14 <= VULKAN_HPP_CPP_VERSION
94080     auto
94081 #  else
94082     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
94083                const void * const &,
94084                VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV const &,
94085                VULKAN_HPP_NAMESPACE::FragmentShadingRateNV const &,
94086                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> const &>
94087 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV94088       reflect() const VULKAN_HPP_NOEXCEPT
94089     {
94090       return std::tie( sType, pNext, shadingRateType, shadingRate, combinerOps );
94091     }
94092 #endif
94093 
94094 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
94095     auto operator<=>( PipelineFragmentShadingRateEnumStateCreateInfoNV const & ) const = default;
94096 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV94097     bool     operator==( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
94098     {
94099 #  if defined( VULKAN_HPP_USE_REFLECT )
94100       return this->reflect() == rhs.reflect();
94101 #  else
94102       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shadingRateType == rhs.shadingRateType ) && ( shadingRate == rhs.shadingRate ) &&
94103              ( combinerOps == rhs.combinerOps );
94104 #  endif
94105     }
94106 
operator !=VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV94107     bool operator!=( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
94108     {
94109       return !operator==( rhs );
94110     }
94111 #endif
94112 
94113   public:
94114     VULKAN_HPP_NAMESPACE::StructureType             sType           = StructureType::ePipelineFragmentShadingRateEnumStateCreateInfoNV;
94115     const void *                                    pNext           = {};
94116     VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV shadingRateType = VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV::eFragmentSize;
94117     VULKAN_HPP_NAMESPACE::FragmentShadingRateNV     shadingRate     = VULKAN_HPP_NAMESPACE::FragmentShadingRateNV::e1InvocationPerPixel;
94118     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> combinerOps = {};
94119   };
94120 
94121   template <>
94122   struct CppType<StructureType, StructureType::ePipelineFragmentShadingRateEnumStateCreateInfoNV>
94123   {
94124     using Type = PipelineFragmentShadingRateEnumStateCreateInfoNV;
94125   };
94126 
94127   struct PipelineFragmentShadingRateStateCreateInfoKHR
94128   {
94129     using NativeType = VkPipelineFragmentShadingRateStateCreateInfoKHR;
94130 
94131     static const bool                                  allowDuplicate = false;
94132     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR;
94133 
94134 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineFragmentShadingRateStateCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR94135     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR(
94136       VULKAN_HPP_NAMESPACE::Extent2D fragmentSize_ = {},
94137       std::array<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> const &
94138         combinerOps_ = { { VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep, VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep } },
94139       const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
94140       : pNext{ pNext_ }
94141       , fragmentSize{ fragmentSize_ }
94142       , combinerOps{ combinerOps_ }
94143     {
94144     }
94145 
94146     VULKAN_HPP_CONSTEXPR_14
94147       PipelineFragmentShadingRateStateCreateInfoKHR( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94148 
PipelineFragmentShadingRateStateCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR94149     PipelineFragmentShadingRateStateCreateInfoKHR( VkPipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
94150       : PipelineFragmentShadingRateStateCreateInfoKHR( *reinterpret_cast<PipelineFragmentShadingRateStateCreateInfoKHR const *>( &rhs ) )
94151     {
94152     }
94153 
94154     PipelineFragmentShadingRateStateCreateInfoKHR & operator=( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94155 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94156 
operator =VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR94157     PipelineFragmentShadingRateStateCreateInfoKHR & operator=( VkPipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
94158     {
94159       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR const *>( &rhs );
94160       return *this;
94161     }
94162 
94163 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR94164     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
94165     {
94166       pNext = pNext_;
94167       return *this;
94168     }
94169 
94170     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR &
setFragmentSizeVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR94171       setFragmentSize( VULKAN_HPP_NAMESPACE::Extent2D const & fragmentSize_ ) VULKAN_HPP_NOEXCEPT
94172     {
94173       fragmentSize = fragmentSize_;
94174       return *this;
94175     }
94176 
94177     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR &
setCombinerOpsVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR94178       setCombinerOps( std::array<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> combinerOps_ ) VULKAN_HPP_NOEXCEPT
94179     {
94180       combinerOps = combinerOps_;
94181       return *this;
94182     }
94183 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94184 
operator VkPipelineFragmentShadingRateStateCreateInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR94185     operator VkPipelineFragmentShadingRateStateCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
94186     {
94187       return *reinterpret_cast<const VkPipelineFragmentShadingRateStateCreateInfoKHR *>( this );
94188     }
94189 
operator VkPipelineFragmentShadingRateStateCreateInfoKHR&VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR94190     operator VkPipelineFragmentShadingRateStateCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
94191     {
94192       return *reinterpret_cast<VkPipelineFragmentShadingRateStateCreateInfoKHR *>( this );
94193     }
94194 
94195 #if defined( VULKAN_HPP_USE_REFLECT )
94196 #  if 14 <= VULKAN_HPP_CPP_VERSION
94197     auto
94198 #  else
94199     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
94200                const void * const &,
94201                VULKAN_HPP_NAMESPACE::Extent2D const &,
94202                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> const &>
94203 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR94204       reflect() const VULKAN_HPP_NOEXCEPT
94205     {
94206       return std::tie( sType, pNext, fragmentSize, combinerOps );
94207     }
94208 #endif
94209 
94210 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
94211     auto operator<=>( PipelineFragmentShadingRateStateCreateInfoKHR const & ) const = default;
94212 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR94213     bool operator==( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
94214     {
94215 #  if defined( VULKAN_HPP_USE_REFLECT )
94216       return this->reflect() == rhs.reflect();
94217 #  else
94218       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentSize == rhs.fragmentSize ) && ( combinerOps == rhs.combinerOps );
94219 #  endif
94220     }
94221 
operator !=VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR94222     bool operator!=( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
94223     {
94224       return !operator==( rhs );
94225     }
94226 #endif
94227 
94228   public:
94229     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR;
94230     const void *                        pNext        = {};
94231     VULKAN_HPP_NAMESPACE::Extent2D      fragmentSize = {};
94232     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> combinerOps = {};
94233   };
94234 
94235   template <>
94236   struct CppType<StructureType, StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR>
94237   {
94238     using Type = PipelineFragmentShadingRateStateCreateInfoKHR;
94239   };
94240 
94241   struct PipelineIndirectDeviceAddressInfoNV
94242   {
94243     using NativeType = VkPipelineIndirectDeviceAddressInfoNV;
94244 
94245     static const bool                                  allowDuplicate = false;
94246     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineIndirectDeviceAddressInfoNV;
94247 
94248 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
94249     VULKAN_HPP_CONSTEXPR
PipelineIndirectDeviceAddressInfoNVVULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV94250       PipelineIndirectDeviceAddressInfoNV( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
94251                                            VULKAN_HPP_NAMESPACE::Pipeline          pipeline_          = {},
94252                                            const void *                            pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
94253       : pNext{ pNext_ }
94254       , pipelineBindPoint{ pipelineBindPoint_ }
94255       , pipeline{ pipeline_ }
94256     {
94257     }
94258 
94259     VULKAN_HPP_CONSTEXPR PipelineIndirectDeviceAddressInfoNV( PipelineIndirectDeviceAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94260 
PipelineIndirectDeviceAddressInfoNVVULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV94261     PipelineIndirectDeviceAddressInfoNV( VkPipelineIndirectDeviceAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
94262       : PipelineIndirectDeviceAddressInfoNV( *reinterpret_cast<PipelineIndirectDeviceAddressInfoNV const *>( &rhs ) )
94263     {
94264     }
94265 
94266     PipelineIndirectDeviceAddressInfoNV & operator=( PipelineIndirectDeviceAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94267 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94268 
operator =VULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV94269     PipelineIndirectDeviceAddressInfoNV & operator=( VkPipelineIndirectDeviceAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
94270     {
94271       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV const *>( &rhs );
94272       return *this;
94273     }
94274 
94275 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV94276     VULKAN_HPP_CONSTEXPR_14 PipelineIndirectDeviceAddressInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
94277     {
94278       pNext = pNext_;
94279       return *this;
94280     }
94281 
94282     VULKAN_HPP_CONSTEXPR_14 PipelineIndirectDeviceAddressInfoNV &
setPipelineBindPointVULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV94283       setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
94284     {
94285       pipelineBindPoint = pipelineBindPoint_;
94286       return *this;
94287     }
94288 
setPipelineVULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV94289     VULKAN_HPP_CONSTEXPR_14 PipelineIndirectDeviceAddressInfoNV & setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT
94290     {
94291       pipeline = pipeline_;
94292       return *this;
94293     }
94294 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94295 
operator VkPipelineIndirectDeviceAddressInfoNV const&VULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV94296     operator VkPipelineIndirectDeviceAddressInfoNV const &() const VULKAN_HPP_NOEXCEPT
94297     {
94298       return *reinterpret_cast<const VkPipelineIndirectDeviceAddressInfoNV *>( this );
94299     }
94300 
operator VkPipelineIndirectDeviceAddressInfoNV&VULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV94301     operator VkPipelineIndirectDeviceAddressInfoNV &() VULKAN_HPP_NOEXCEPT
94302     {
94303       return *reinterpret_cast<VkPipelineIndirectDeviceAddressInfoNV *>( this );
94304     }
94305 
94306 #if defined( VULKAN_HPP_USE_REFLECT )
94307 #  if 14 <= VULKAN_HPP_CPP_VERSION
94308     auto
94309 #  else
94310     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
94311                const void * const &,
94312                VULKAN_HPP_NAMESPACE::PipelineBindPoint const &,
94313                VULKAN_HPP_NAMESPACE::Pipeline const &>
94314 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV94315       reflect() const VULKAN_HPP_NOEXCEPT
94316     {
94317       return std::tie( sType, pNext, pipelineBindPoint, pipeline );
94318     }
94319 #endif
94320 
94321 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
94322     auto operator<=>( PipelineIndirectDeviceAddressInfoNV const & ) const = default;
94323 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV94324     bool operator==( PipelineIndirectDeviceAddressInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
94325     {
94326 #  if defined( VULKAN_HPP_USE_REFLECT )
94327       return this->reflect() == rhs.reflect();
94328 #  else
94329       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) && ( pipeline == rhs.pipeline );
94330 #  endif
94331     }
94332 
operator !=VULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV94333     bool operator!=( PipelineIndirectDeviceAddressInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
94334     {
94335       return !operator==( rhs );
94336     }
94337 #endif
94338 
94339   public:
94340     VULKAN_HPP_NAMESPACE::StructureType     sType             = StructureType::ePipelineIndirectDeviceAddressInfoNV;
94341     const void *                            pNext             = {};
94342     VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
94343     VULKAN_HPP_NAMESPACE::Pipeline          pipeline          = {};
94344   };
94345 
94346   template <>
94347   struct CppType<StructureType, StructureType::ePipelineIndirectDeviceAddressInfoNV>
94348   {
94349     using Type = PipelineIndirectDeviceAddressInfoNV;
94350   };
94351 
94352   struct PipelineInfoKHR
94353   {
94354     using NativeType = VkPipelineInfoKHR;
94355 
94356     static const bool                                  allowDuplicate = false;
94357     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineInfoKHR;
94358 
94359 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineInfoKHRVULKAN_HPP_NAMESPACE::PipelineInfoKHR94360     VULKAN_HPP_CONSTEXPR PipelineInfoKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
94361       : pNext{ pNext_ }
94362       , pipeline{ pipeline_ }
94363     {
94364     }
94365 
94366     VULKAN_HPP_CONSTEXPR PipelineInfoKHR( PipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94367 
PipelineInfoKHRVULKAN_HPP_NAMESPACE::PipelineInfoKHR94368     PipelineInfoKHR( VkPipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : PipelineInfoKHR( *reinterpret_cast<PipelineInfoKHR const *>( &rhs ) ) {}
94369 
94370     PipelineInfoKHR & operator=( PipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94371 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94372 
operator =VULKAN_HPP_NAMESPACE::PipelineInfoKHR94373     PipelineInfoKHR & operator=( VkPipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
94374     {
94375       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineInfoKHR const *>( &rhs );
94376       return *this;
94377     }
94378 
94379 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineInfoKHR94380     VULKAN_HPP_CONSTEXPR_14 PipelineInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
94381     {
94382       pNext = pNext_;
94383       return *this;
94384     }
94385 
setPipelineVULKAN_HPP_NAMESPACE::PipelineInfoKHR94386     VULKAN_HPP_CONSTEXPR_14 PipelineInfoKHR & setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT
94387     {
94388       pipeline = pipeline_;
94389       return *this;
94390     }
94391 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94392 
operator VkPipelineInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineInfoKHR94393     operator VkPipelineInfoKHR const &() const VULKAN_HPP_NOEXCEPT
94394     {
94395       return *reinterpret_cast<const VkPipelineInfoKHR *>( this );
94396     }
94397 
operator VkPipelineInfoKHR&VULKAN_HPP_NAMESPACE::PipelineInfoKHR94398     operator VkPipelineInfoKHR &() VULKAN_HPP_NOEXCEPT
94399     {
94400       return *reinterpret_cast<VkPipelineInfoKHR *>( this );
94401     }
94402 
94403 #if defined( VULKAN_HPP_USE_REFLECT )
94404 #  if 14 <= VULKAN_HPP_CPP_VERSION
94405     auto
94406 #  else
94407     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Pipeline const &>
94408 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineInfoKHR94409       reflect() const VULKAN_HPP_NOEXCEPT
94410     {
94411       return std::tie( sType, pNext, pipeline );
94412     }
94413 #endif
94414 
94415 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
94416     auto operator<=>( PipelineInfoKHR const & ) const = default;
94417 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineInfoKHR94418     bool operator==( PipelineInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
94419     {
94420 #  if defined( VULKAN_HPP_USE_REFLECT )
94421       return this->reflect() == rhs.reflect();
94422 #  else
94423       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipeline == rhs.pipeline );
94424 #  endif
94425     }
94426 
operator !=VULKAN_HPP_NAMESPACE::PipelineInfoKHR94427     bool operator!=( PipelineInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
94428     {
94429       return !operator==( rhs );
94430     }
94431 #endif
94432 
94433   public:
94434     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::ePipelineInfoKHR;
94435     const void *                        pNext    = {};
94436     VULKAN_HPP_NAMESPACE::Pipeline      pipeline = {};
94437   };
94438 
94439   template <>
94440   struct CppType<StructureType, StructureType::ePipelineInfoKHR>
94441   {
94442     using Type = PipelineInfoKHR;
94443   };
94444 
94445   using PipelineInfoEXT = PipelineInfoKHR;
94446 
94447   struct PushConstantRange
94448   {
94449     using NativeType = VkPushConstantRange;
94450 
94451 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
94452     VULKAN_HPP_CONSTEXPR
PushConstantRangeVULKAN_HPP_NAMESPACE::PushConstantRange94453       PushConstantRange( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ = {}, uint32_t offset_ = {}, uint32_t size_ = {} ) VULKAN_HPP_NOEXCEPT
94454       : stageFlags{ stageFlags_ }
94455       , offset{ offset_ }
94456       , size{ size_ }
94457     {
94458     }
94459 
94460     VULKAN_HPP_CONSTEXPR PushConstantRange( PushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94461 
PushConstantRangeVULKAN_HPP_NAMESPACE::PushConstantRange94462     PushConstantRange( VkPushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT : PushConstantRange( *reinterpret_cast<PushConstantRange const *>( &rhs ) ) {}
94463 
94464     PushConstantRange & operator=( PushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94465 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94466 
operator =VULKAN_HPP_NAMESPACE::PushConstantRange94467     PushConstantRange & operator=( VkPushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT
94468     {
94469       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PushConstantRange const *>( &rhs );
94470       return *this;
94471     }
94472 
94473 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setStageFlagsVULKAN_HPP_NAMESPACE::PushConstantRange94474     VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT
94475     {
94476       stageFlags = stageFlags_;
94477       return *this;
94478     }
94479 
setOffsetVULKAN_HPP_NAMESPACE::PushConstantRange94480     VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT
94481     {
94482       offset = offset_;
94483       return *this;
94484     }
94485 
setSizeVULKAN_HPP_NAMESPACE::PushConstantRange94486     VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT
94487     {
94488       size = size_;
94489       return *this;
94490     }
94491 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94492 
operator VkPushConstantRange const&VULKAN_HPP_NAMESPACE::PushConstantRange94493     operator VkPushConstantRange const &() const VULKAN_HPP_NOEXCEPT
94494     {
94495       return *reinterpret_cast<const VkPushConstantRange *>( this );
94496     }
94497 
operator VkPushConstantRange&VULKAN_HPP_NAMESPACE::PushConstantRange94498     operator VkPushConstantRange &() VULKAN_HPP_NOEXCEPT
94499     {
94500       return *reinterpret_cast<VkPushConstantRange *>( this );
94501     }
94502 
94503 #if defined( VULKAN_HPP_USE_REFLECT )
94504 #  if 14 <= VULKAN_HPP_CPP_VERSION
94505     auto
94506 #  else
94507     std::tuple<VULKAN_HPP_NAMESPACE::ShaderStageFlags const &, uint32_t const &, uint32_t const &>
94508 #  endif
reflectVULKAN_HPP_NAMESPACE::PushConstantRange94509       reflect() const VULKAN_HPP_NOEXCEPT
94510     {
94511       return std::tie( stageFlags, offset, size );
94512     }
94513 #endif
94514 
94515 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
94516     auto operator<=>( PushConstantRange const & ) const = default;
94517 #else
operator ==VULKAN_HPP_NAMESPACE::PushConstantRange94518     bool operator==( PushConstantRange const & rhs ) const VULKAN_HPP_NOEXCEPT
94519     {
94520 #  if defined( VULKAN_HPP_USE_REFLECT )
94521       return this->reflect() == rhs.reflect();
94522 #  else
94523       return ( stageFlags == rhs.stageFlags ) && ( offset == rhs.offset ) && ( size == rhs.size );
94524 #  endif
94525     }
94526 
operator !=VULKAN_HPP_NAMESPACE::PushConstantRange94527     bool operator!=( PushConstantRange const & rhs ) const VULKAN_HPP_NOEXCEPT
94528     {
94529       return !operator==( rhs );
94530     }
94531 #endif
94532 
94533   public:
94534     VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags = {};
94535     uint32_t                               offset     = {};
94536     uint32_t                               size       = {};
94537   };
94538 
94539   struct PipelineLayoutCreateInfo
94540   {
94541     using NativeType = VkPipelineLayoutCreateInfo;
94542 
94543     static const bool                                  allowDuplicate = false;
94544     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineLayoutCreateInfo;
94545 
94546 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineLayoutCreateInfoVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo94547     VULKAN_HPP_CONSTEXPR PipelineLayoutCreateInfo( VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags   flags_                  = {},
94548                                                    uint32_t                                          setLayoutCount_         = {},
94549                                                    const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_            = {},
94550                                                    uint32_t                                          pushConstantRangeCount_ = {},
94551                                                    const VULKAN_HPP_NAMESPACE::PushConstantRange *   pPushConstantRanges_    = {},
94552                                                    const void *                                      pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
94553       : pNext{ pNext_ }
94554       , flags{ flags_ }
94555       , setLayoutCount{ setLayoutCount_ }
94556       , pSetLayouts{ pSetLayouts_ }
94557       , pushConstantRangeCount{ pushConstantRangeCount_ }
94558       , pPushConstantRanges{ pPushConstantRanges_ }
94559     {
94560     }
94561 
94562     VULKAN_HPP_CONSTEXPR PipelineLayoutCreateInfo( PipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94563 
PipelineLayoutCreateInfoVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo94564     PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
94565       : PipelineLayoutCreateInfo( *reinterpret_cast<PipelineLayoutCreateInfo const *>( &rhs ) )
94566     {
94567     }
94568 
94569 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineLayoutCreateInfoVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo94570     PipelineLayoutCreateInfo( VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags                                                        flags_,
94571                               VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const & setLayouts_,
94572                               VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PushConstantRange> const &   pushConstantRanges_ = {},
94573                               const void *                                                                                           pNext_ = nullptr )
94574       : pNext( pNext_ )
94575       , flags( flags_ )
94576       , setLayoutCount( static_cast<uint32_t>( setLayouts_.size() ) )
94577       , pSetLayouts( setLayouts_.data() )
94578       , pushConstantRangeCount( static_cast<uint32_t>( pushConstantRanges_.size() ) )
94579       , pPushConstantRanges( pushConstantRanges_.data() )
94580     {
94581     }
94582 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94583 
94584     PipelineLayoutCreateInfo & operator=( PipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94585 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94586 
operator =VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo94587     PipelineLayoutCreateInfo & operator=( VkPipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
94588     {
94589       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo const *>( &rhs );
94590       return *this;
94591     }
94592 
94593 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo94594     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
94595     {
94596       pNext = pNext_;
94597       return *this;
94598     }
94599 
setFlagsVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo94600     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
94601     {
94602       flags = flags_;
94603       return *this;
94604     }
94605 
setSetLayoutCountVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo94606     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setSetLayoutCount( uint32_t setLayoutCount_ ) VULKAN_HPP_NOEXCEPT
94607     {
94608       setLayoutCount = setLayoutCount_;
94609       return *this;
94610     }
94611 
setPSetLayoutsVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo94612     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setPSetLayouts( const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_ ) VULKAN_HPP_NOEXCEPT
94613     {
94614       pSetLayouts = pSetLayouts_;
94615       return *this;
94616     }
94617 
94618 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
94619     PipelineLayoutCreateInfo &
setSetLayoutsVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo94620       setSetLayouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const & setLayouts_ ) VULKAN_HPP_NOEXCEPT
94621     {
94622       setLayoutCount = static_cast<uint32_t>( setLayouts_.size() );
94623       pSetLayouts    = setLayouts_.data();
94624       return *this;
94625     }
94626 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94627 
setPushConstantRangeCountVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo94628     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setPushConstantRangeCount( uint32_t pushConstantRangeCount_ ) VULKAN_HPP_NOEXCEPT
94629     {
94630       pushConstantRangeCount = pushConstantRangeCount_;
94631       return *this;
94632     }
94633 
94634     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo &
setPPushConstantRangesVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo94635       setPPushConstantRanges( const VULKAN_HPP_NAMESPACE::PushConstantRange * pPushConstantRanges_ ) VULKAN_HPP_NOEXCEPT
94636     {
94637       pPushConstantRanges = pPushConstantRanges_;
94638       return *this;
94639     }
94640 
94641 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPushConstantRangesVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo94642     PipelineLayoutCreateInfo & setPushConstantRanges(
94643       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PushConstantRange> const & pushConstantRanges_ ) VULKAN_HPP_NOEXCEPT
94644     {
94645       pushConstantRangeCount = static_cast<uint32_t>( pushConstantRanges_.size() );
94646       pPushConstantRanges    = pushConstantRanges_.data();
94647       return *this;
94648     }
94649 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
94650 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94651 
operator VkPipelineLayoutCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo94652     operator VkPipelineLayoutCreateInfo const &() const VULKAN_HPP_NOEXCEPT
94653     {
94654       return *reinterpret_cast<const VkPipelineLayoutCreateInfo *>( this );
94655     }
94656 
operator VkPipelineLayoutCreateInfo&VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo94657     operator VkPipelineLayoutCreateInfo &() VULKAN_HPP_NOEXCEPT
94658     {
94659       return *reinterpret_cast<VkPipelineLayoutCreateInfo *>( this );
94660     }
94661 
94662 #if defined( VULKAN_HPP_USE_REFLECT )
94663 #  if 14 <= VULKAN_HPP_CPP_VERSION
94664     auto
94665 #  else
94666     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
94667                const void * const &,
94668                VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags const &,
94669                uint32_t const &,
94670                const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * const &,
94671                uint32_t const &,
94672                const VULKAN_HPP_NAMESPACE::PushConstantRange * const &>
94673 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo94674       reflect() const VULKAN_HPP_NOEXCEPT
94675     {
94676       return std::tie( sType, pNext, flags, setLayoutCount, pSetLayouts, pushConstantRangeCount, pPushConstantRanges );
94677     }
94678 #endif
94679 
94680 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
94681     auto operator<=>( PipelineLayoutCreateInfo const & ) const = default;
94682 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo94683     bool operator==( PipelineLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
94684     {
94685 #  if defined( VULKAN_HPP_USE_REFLECT )
94686       return this->reflect() == rhs.reflect();
94687 #  else
94688       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( setLayoutCount == rhs.setLayoutCount ) &&
94689              ( pSetLayouts == rhs.pSetLayouts ) && ( pushConstantRangeCount == rhs.pushConstantRangeCount ) &&
94690              ( pPushConstantRanges == rhs.pPushConstantRanges );
94691 #  endif
94692     }
94693 
operator !=VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo94694     bool operator!=( PipelineLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
94695     {
94696       return !operator==( rhs );
94697     }
94698 #endif
94699 
94700   public:
94701     VULKAN_HPP_NAMESPACE::StructureType               sType                  = StructureType::ePipelineLayoutCreateInfo;
94702     const void *                                      pNext                  = {};
94703     VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags   flags                  = {};
94704     uint32_t                                          setLayoutCount         = {};
94705     const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts            = {};
94706     uint32_t                                          pushConstantRangeCount = {};
94707     const VULKAN_HPP_NAMESPACE::PushConstantRange *   pPushConstantRanges    = {};
94708   };
94709 
94710   template <>
94711   struct CppType<StructureType, StructureType::ePipelineLayoutCreateInfo>
94712   {
94713     using Type = PipelineLayoutCreateInfo;
94714   };
94715 
94716   struct PipelinePropertiesIdentifierEXT
94717   {
94718     using NativeType = VkPipelinePropertiesIdentifierEXT;
94719 
94720     static const bool                                  allowDuplicate = false;
94721     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelinePropertiesIdentifierEXT;
94722 
94723 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelinePropertiesIdentifierEXTVULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT94724     VULKAN_HPP_CONSTEXPR_14 PipelinePropertiesIdentifierEXT( std::array<uint8_t, VK_UUID_SIZE> const & pipelineIdentifier_ = {},
94725                                                              void *                                    pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
94726       : pNext{ pNext_ }
94727       , pipelineIdentifier{ pipelineIdentifier_ }
94728     {
94729     }
94730 
94731     VULKAN_HPP_CONSTEXPR_14 PipelinePropertiesIdentifierEXT( PipelinePropertiesIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94732 
PipelinePropertiesIdentifierEXTVULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT94733     PipelinePropertiesIdentifierEXT( VkPipelinePropertiesIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT
94734       : PipelinePropertiesIdentifierEXT( *reinterpret_cast<PipelinePropertiesIdentifierEXT const *>( &rhs ) )
94735     {
94736     }
94737 
94738     PipelinePropertiesIdentifierEXT & operator=( PipelinePropertiesIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94739 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94740 
operator =VULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT94741     PipelinePropertiesIdentifierEXT & operator=( VkPipelinePropertiesIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT
94742     {
94743       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT const *>( &rhs );
94744       return *this;
94745     }
94746 
operator VkPipelinePropertiesIdentifierEXT const&VULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT94747     operator VkPipelinePropertiesIdentifierEXT const &() const VULKAN_HPP_NOEXCEPT
94748     {
94749       return *reinterpret_cast<const VkPipelinePropertiesIdentifierEXT *>( this );
94750     }
94751 
operator VkPipelinePropertiesIdentifierEXT&VULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT94752     operator VkPipelinePropertiesIdentifierEXT &() VULKAN_HPP_NOEXCEPT
94753     {
94754       return *reinterpret_cast<VkPipelinePropertiesIdentifierEXT *>( this );
94755     }
94756 
94757 #if defined( VULKAN_HPP_USE_REFLECT )
94758 #  if 14 <= VULKAN_HPP_CPP_VERSION
94759     auto
94760 #  else
94761     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &>
94762 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT94763       reflect() const VULKAN_HPP_NOEXCEPT
94764     {
94765       return std::tie( sType, pNext, pipelineIdentifier );
94766     }
94767 #endif
94768 
94769 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
94770     auto operator<=>( PipelinePropertiesIdentifierEXT const & ) const = default;
94771 #else
operator ==VULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT94772     bool operator==( PipelinePropertiesIdentifierEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
94773     {
94774 #  if defined( VULKAN_HPP_USE_REFLECT )
94775       return this->reflect() == rhs.reflect();
94776 #  else
94777       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineIdentifier == rhs.pipelineIdentifier );
94778 #  endif
94779     }
94780 
operator !=VULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT94781     bool operator!=( PipelinePropertiesIdentifierEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
94782     {
94783       return !operator==( rhs );
94784     }
94785 #endif
94786 
94787   public:
94788     VULKAN_HPP_NAMESPACE::StructureType                         sType              = StructureType::ePipelinePropertiesIdentifierEXT;
94789     void *                                                      pNext              = {};
94790     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> pipelineIdentifier = {};
94791   };
94792 
94793   template <>
94794   struct CppType<StructureType, StructureType::ePipelinePropertiesIdentifierEXT>
94795   {
94796     using Type = PipelinePropertiesIdentifierEXT;
94797   };
94798 
94799   struct PipelineRasterizationConservativeStateCreateInfoEXT
94800   {
94801     using NativeType = VkPipelineRasterizationConservativeStateCreateInfoEXT;
94802 
94803     static const bool                                  allowDuplicate = false;
94804     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT;
94805 
94806 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationConservativeStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT94807     VULKAN_HPP_CONSTEXPR PipelineRasterizationConservativeStateCreateInfoEXT(
94808       VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT flags_     = {},
94809       VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT conservativeRasterizationMode_ = VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT::eDisabled,
94810       float                                                  extraPrimitiveOverestimationSize_ = {},
94811       const void *                                           pNext_                            = nullptr ) VULKAN_HPP_NOEXCEPT
94812       : pNext{ pNext_ }
94813       , flags{ flags_ }
94814       , conservativeRasterizationMode{ conservativeRasterizationMode_ }
94815       , extraPrimitiveOverestimationSize{ extraPrimitiveOverestimationSize_ }
94816     {
94817     }
94818 
94819     VULKAN_HPP_CONSTEXPR
94820       PipelineRasterizationConservativeStateCreateInfoEXT( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94821 
PipelineRasterizationConservativeStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT94822     PipelineRasterizationConservativeStateCreateInfoEXT( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
94823       : PipelineRasterizationConservativeStateCreateInfoEXT( *reinterpret_cast<PipelineRasterizationConservativeStateCreateInfoEXT const *>( &rhs ) )
94824     {
94825     }
94826 
94827     PipelineRasterizationConservativeStateCreateInfoEXT &
94828       operator=( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94829 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94830 
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT94831     PipelineRasterizationConservativeStateCreateInfoEXT & operator=( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
94832     {
94833       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT const *>( &rhs );
94834       return *this;
94835     }
94836 
94837 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT94838     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
94839     {
94840       pNext = pNext_;
94841       return *this;
94842     }
94843 
94844     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT94845       setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
94846     {
94847       flags = flags_;
94848       return *this;
94849     }
94850 
94851     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT &
setConservativeRasterizationModeVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT94852       setConservativeRasterizationMode( VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT conservativeRasterizationMode_ ) VULKAN_HPP_NOEXCEPT
94853     {
94854       conservativeRasterizationMode = conservativeRasterizationMode_;
94855       return *this;
94856     }
94857 
94858     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT &
setExtraPrimitiveOverestimationSizeVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT94859       setExtraPrimitiveOverestimationSize( float extraPrimitiveOverestimationSize_ ) VULKAN_HPP_NOEXCEPT
94860     {
94861       extraPrimitiveOverestimationSize = extraPrimitiveOverestimationSize_;
94862       return *this;
94863     }
94864 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94865 
operator VkPipelineRasterizationConservativeStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT94866     operator VkPipelineRasterizationConservativeStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
94867     {
94868       return *reinterpret_cast<const VkPipelineRasterizationConservativeStateCreateInfoEXT *>( this );
94869     }
94870 
operator VkPipelineRasterizationConservativeStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT94871     operator VkPipelineRasterizationConservativeStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
94872     {
94873       return *reinterpret_cast<VkPipelineRasterizationConservativeStateCreateInfoEXT *>( this );
94874     }
94875 
94876 #if defined( VULKAN_HPP_USE_REFLECT )
94877 #  if 14 <= VULKAN_HPP_CPP_VERSION
94878     auto
94879 #  else
94880     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
94881                const void * const &,
94882                VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT const &,
94883                VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT const &,
94884                float const &>
94885 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT94886       reflect() const VULKAN_HPP_NOEXCEPT
94887     {
94888       return std::tie( sType, pNext, flags, conservativeRasterizationMode, extraPrimitiveOverestimationSize );
94889     }
94890 #endif
94891 
94892 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
94893     auto operator<=>( PipelineRasterizationConservativeStateCreateInfoEXT const & ) const = default;
94894 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT94895     bool operator==( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
94896     {
94897 #  if defined( VULKAN_HPP_USE_REFLECT )
94898       return this->reflect() == rhs.reflect();
94899 #  else
94900       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) &&
94901              ( conservativeRasterizationMode == rhs.conservativeRasterizationMode ) &&
94902              ( extraPrimitiveOverestimationSize == rhs.extraPrimitiveOverestimationSize );
94903 #  endif
94904     }
94905 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT94906     bool operator!=( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
94907     {
94908       return !operator==( rhs );
94909     }
94910 #endif
94911 
94912   public:
94913     VULKAN_HPP_NAMESPACE::StructureType                                        sType     = StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT;
94914     const void *                                                               pNext     = {};
94915     VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT flags     = {};
94916     VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT conservativeRasterizationMode = VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT::eDisabled;
94917     float                                                  extraPrimitiveOverestimationSize = {};
94918   };
94919 
94920   template <>
94921   struct CppType<StructureType, StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT>
94922   {
94923     using Type = PipelineRasterizationConservativeStateCreateInfoEXT;
94924   };
94925 
94926   struct PipelineRasterizationDepthClipStateCreateInfoEXT
94927   {
94928     using NativeType = VkPipelineRasterizationDepthClipStateCreateInfoEXT;
94929 
94930     static const bool                                  allowDuplicate = false;
94931     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT;
94932 
94933 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationDepthClipStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT94934     VULKAN_HPP_CONSTEXPR PipelineRasterizationDepthClipStateCreateInfoEXT( VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT flags_ = {},
94935                                                                            VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_                                  = {},
94936                                                                            const void *                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
94937       : pNext{ pNext_ }
94938       , flags{ flags_ }
94939       , depthClipEnable{ depthClipEnable_ }
94940     {
94941     }
94942 
94943     VULKAN_HPP_CONSTEXPR
94944       PipelineRasterizationDepthClipStateCreateInfoEXT( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94945 
PipelineRasterizationDepthClipStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT94946     PipelineRasterizationDepthClipStateCreateInfoEXT( VkPipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
94947       : PipelineRasterizationDepthClipStateCreateInfoEXT( *reinterpret_cast<PipelineRasterizationDepthClipStateCreateInfoEXT const *>( &rhs ) )
94948     {
94949     }
94950 
94951     PipelineRasterizationDepthClipStateCreateInfoEXT & operator=( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
94952 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
94953 
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT94954     PipelineRasterizationDepthClipStateCreateInfoEXT & operator=( VkPipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
94955     {
94956       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT const *>( &rhs );
94957       return *this;
94958     }
94959 
94960 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT94961     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
94962     {
94963       pNext = pNext_;
94964       return *this;
94965     }
94966 
94967     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT94968       setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
94969     {
94970       flags = flags_;
94971       return *this;
94972     }
94973 
94974     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT &
setDepthClipEnableVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT94975       setDepthClipEnable( VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_ ) VULKAN_HPP_NOEXCEPT
94976     {
94977       depthClipEnable = depthClipEnable_;
94978       return *this;
94979     }
94980 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
94981 
operator VkPipelineRasterizationDepthClipStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT94982     operator VkPipelineRasterizationDepthClipStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
94983     {
94984       return *reinterpret_cast<const VkPipelineRasterizationDepthClipStateCreateInfoEXT *>( this );
94985     }
94986 
operator VkPipelineRasterizationDepthClipStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT94987     operator VkPipelineRasterizationDepthClipStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
94988     {
94989       return *reinterpret_cast<VkPipelineRasterizationDepthClipStateCreateInfoEXT *>( this );
94990     }
94991 
94992 #if defined( VULKAN_HPP_USE_REFLECT )
94993 #  if 14 <= VULKAN_HPP_CPP_VERSION
94994     auto
94995 #  else
94996     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
94997                const void * const &,
94998                VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT const &,
94999                VULKAN_HPP_NAMESPACE::Bool32 const &>
95000 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT95001       reflect() const VULKAN_HPP_NOEXCEPT
95002     {
95003       return std::tie( sType, pNext, flags, depthClipEnable );
95004     }
95005 #endif
95006 
95007 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
95008     auto operator<=>( PipelineRasterizationDepthClipStateCreateInfoEXT const & ) const = default;
95009 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT95010     bool operator==( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
95011     {
95012 #  if defined( VULKAN_HPP_USE_REFLECT )
95013       return this->reflect() == rhs.reflect();
95014 #  else
95015       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( depthClipEnable == rhs.depthClipEnable );
95016 #  endif
95017     }
95018 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT95019     bool operator!=( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
95020     {
95021       return !operator==( rhs );
95022     }
95023 #endif
95024 
95025   public:
95026     VULKAN_HPP_NAMESPACE::StructureType                                     sType           = StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT;
95027     const void *                                                            pNext           = {};
95028     VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT flags           = {};
95029     VULKAN_HPP_NAMESPACE::Bool32                                            depthClipEnable = {};
95030   };
95031 
95032   template <>
95033   struct CppType<StructureType, StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT>
95034   {
95035     using Type = PipelineRasterizationDepthClipStateCreateInfoEXT;
95036   };
95037 
95038   struct PipelineRasterizationLineStateCreateInfoKHR
95039   {
95040     using NativeType = VkPipelineRasterizationLineStateCreateInfoKHR;
95041 
95042     static const bool                                  allowDuplicate = false;
95043     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineRasterizationLineStateCreateInfoKHR;
95044 
95045 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationLineStateCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoKHR95046     VULKAN_HPP_CONSTEXPR PipelineRasterizationLineStateCreateInfoKHR(
95047       VULKAN_HPP_NAMESPACE::LineRasterizationModeKHR lineRasterizationMode_ = VULKAN_HPP_NAMESPACE::LineRasterizationModeKHR::eDefault,
95048       VULKAN_HPP_NAMESPACE::Bool32                   stippledLineEnable_    = {},
95049       uint32_t                                       lineStippleFactor_     = {},
95050       uint16_t                                       lineStipplePattern_    = {},
95051       const void *                                   pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
95052       : pNext{ pNext_ }
95053       , lineRasterizationMode{ lineRasterizationMode_ }
95054       , stippledLineEnable{ stippledLineEnable_ }
95055       , lineStippleFactor{ lineStippleFactor_ }
95056       , lineStipplePattern{ lineStipplePattern_ }
95057     {
95058     }
95059 
95060     VULKAN_HPP_CONSTEXPR PipelineRasterizationLineStateCreateInfoKHR( PipelineRasterizationLineStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95061 
PipelineRasterizationLineStateCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoKHR95062     PipelineRasterizationLineStateCreateInfoKHR( VkPipelineRasterizationLineStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
95063       : PipelineRasterizationLineStateCreateInfoKHR( *reinterpret_cast<PipelineRasterizationLineStateCreateInfoKHR const *>( &rhs ) )
95064     {
95065     }
95066 
95067     PipelineRasterizationLineStateCreateInfoKHR & operator=( PipelineRasterizationLineStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95068 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
95069 
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoKHR95070     PipelineRasterizationLineStateCreateInfoKHR & operator=( VkPipelineRasterizationLineStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
95071     {
95072       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoKHR const *>( &rhs );
95073       return *this;
95074     }
95075 
95076 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoKHR95077     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
95078     {
95079       pNext = pNext_;
95080       return *this;
95081     }
95082 
95083     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoKHR &
setLineRasterizationModeVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoKHR95084       setLineRasterizationMode( VULKAN_HPP_NAMESPACE::LineRasterizationModeKHR lineRasterizationMode_ ) VULKAN_HPP_NOEXCEPT
95085     {
95086       lineRasterizationMode = lineRasterizationMode_;
95087       return *this;
95088     }
95089 
95090     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoKHR &
setStippledLineEnableVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoKHR95091       setStippledLineEnable( VULKAN_HPP_NAMESPACE::Bool32 stippledLineEnable_ ) VULKAN_HPP_NOEXCEPT
95092     {
95093       stippledLineEnable = stippledLineEnable_;
95094       return *this;
95095     }
95096 
setLineStippleFactorVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoKHR95097     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoKHR & setLineStippleFactor( uint32_t lineStippleFactor_ ) VULKAN_HPP_NOEXCEPT
95098     {
95099       lineStippleFactor = lineStippleFactor_;
95100       return *this;
95101     }
95102 
setLineStipplePatternVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoKHR95103     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoKHR & setLineStipplePattern( uint16_t lineStipplePattern_ ) VULKAN_HPP_NOEXCEPT
95104     {
95105       lineStipplePattern = lineStipplePattern_;
95106       return *this;
95107     }
95108 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
95109 
operator VkPipelineRasterizationLineStateCreateInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoKHR95110     operator VkPipelineRasterizationLineStateCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
95111     {
95112       return *reinterpret_cast<const VkPipelineRasterizationLineStateCreateInfoKHR *>( this );
95113     }
95114 
operator VkPipelineRasterizationLineStateCreateInfoKHR&VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoKHR95115     operator VkPipelineRasterizationLineStateCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
95116     {
95117       return *reinterpret_cast<VkPipelineRasterizationLineStateCreateInfoKHR *>( this );
95118     }
95119 
95120 #if defined( VULKAN_HPP_USE_REFLECT )
95121 #  if 14 <= VULKAN_HPP_CPP_VERSION
95122     auto
95123 #  else
95124     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
95125                const void * const &,
95126                VULKAN_HPP_NAMESPACE::LineRasterizationModeKHR const &,
95127                VULKAN_HPP_NAMESPACE::Bool32 const &,
95128                uint32_t const &,
95129                uint16_t const &>
95130 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoKHR95131       reflect() const VULKAN_HPP_NOEXCEPT
95132     {
95133       return std::tie( sType, pNext, lineRasterizationMode, stippledLineEnable, lineStippleFactor, lineStipplePattern );
95134     }
95135 #endif
95136 
95137 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
95138     auto operator<=>( PipelineRasterizationLineStateCreateInfoKHR const & ) const = default;
95139 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoKHR95140     bool operator==( PipelineRasterizationLineStateCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
95141     {
95142 #  if defined( VULKAN_HPP_USE_REFLECT )
95143       return this->reflect() == rhs.reflect();
95144 #  else
95145       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( lineRasterizationMode == rhs.lineRasterizationMode ) &&
95146              ( stippledLineEnable == rhs.stippledLineEnable ) && ( lineStippleFactor == rhs.lineStippleFactor ) &&
95147              ( lineStipplePattern == rhs.lineStipplePattern );
95148 #  endif
95149     }
95150 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoKHR95151     bool operator!=( PipelineRasterizationLineStateCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
95152     {
95153       return !operator==( rhs );
95154     }
95155 #endif
95156 
95157   public:
95158     VULKAN_HPP_NAMESPACE::StructureType            sType                 = StructureType::ePipelineRasterizationLineStateCreateInfoKHR;
95159     const void *                                   pNext                 = {};
95160     VULKAN_HPP_NAMESPACE::LineRasterizationModeKHR lineRasterizationMode = VULKAN_HPP_NAMESPACE::LineRasterizationModeKHR::eDefault;
95161     VULKAN_HPP_NAMESPACE::Bool32                   stippledLineEnable    = {};
95162     uint32_t                                       lineStippleFactor     = {};
95163     uint16_t                                       lineStipplePattern    = {};
95164   };
95165 
95166   template <>
95167   struct CppType<StructureType, StructureType::ePipelineRasterizationLineStateCreateInfoKHR>
95168   {
95169     using Type = PipelineRasterizationLineStateCreateInfoKHR;
95170   };
95171 
95172   using PipelineRasterizationLineStateCreateInfoEXT = PipelineRasterizationLineStateCreateInfoKHR;
95173 
95174   struct PipelineRasterizationProvokingVertexStateCreateInfoEXT
95175   {
95176     using NativeType = VkPipelineRasterizationProvokingVertexStateCreateInfoEXT;
95177 
95178     static const bool                                  allowDuplicate = false;
95179     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineRasterizationProvokingVertexStateCreateInfoEXT;
95180 
95181 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationProvokingVertexStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT95182     VULKAN_HPP_CONSTEXPR PipelineRasterizationProvokingVertexStateCreateInfoEXT(
95183       VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT provokingVertexMode_ = VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT::eFirstVertex,
95184       const void *                                 pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
95185       : pNext{ pNext_ }
95186       , provokingVertexMode{ provokingVertexMode_ }
95187     {
95188     }
95189 
95190     VULKAN_HPP_CONSTEXPR PipelineRasterizationProvokingVertexStateCreateInfoEXT( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs )
95191       VULKAN_HPP_NOEXCEPT = default;
95192 
PipelineRasterizationProvokingVertexStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT95193     PipelineRasterizationProvokingVertexStateCreateInfoEXT( VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
95194       : PipelineRasterizationProvokingVertexStateCreateInfoEXT( *reinterpret_cast<PipelineRasterizationProvokingVertexStateCreateInfoEXT const *>( &rhs ) )
95195     {
95196     }
95197 
95198     PipelineRasterizationProvokingVertexStateCreateInfoEXT &
95199       operator=( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95200 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
95201 
95202     PipelineRasterizationProvokingVertexStateCreateInfoEXT &
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT95203       operator=( VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
95204     {
95205       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT const *>( &rhs );
95206       return *this;
95207     }
95208 
95209 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT95210     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationProvokingVertexStateCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
95211     {
95212       pNext = pNext_;
95213       return *this;
95214     }
95215 
95216     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationProvokingVertexStateCreateInfoEXT &
setProvokingVertexModeVULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT95217       setProvokingVertexMode( VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT provokingVertexMode_ ) VULKAN_HPP_NOEXCEPT
95218     {
95219       provokingVertexMode = provokingVertexMode_;
95220       return *this;
95221     }
95222 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
95223 
operator VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT95224     operator VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
95225     {
95226       return *reinterpret_cast<const VkPipelineRasterizationProvokingVertexStateCreateInfoEXT *>( this );
95227     }
95228 
operator VkPipelineRasterizationProvokingVertexStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT95229     operator VkPipelineRasterizationProvokingVertexStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
95230     {
95231       return *reinterpret_cast<VkPipelineRasterizationProvokingVertexStateCreateInfoEXT *>( this );
95232     }
95233 
95234 #if defined( VULKAN_HPP_USE_REFLECT )
95235 #  if 14 <= VULKAN_HPP_CPP_VERSION
95236     auto
95237 #  else
95238     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT const &>
95239 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT95240       reflect() const VULKAN_HPP_NOEXCEPT
95241     {
95242       return std::tie( sType, pNext, provokingVertexMode );
95243     }
95244 #endif
95245 
95246 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
95247     auto operator<=>( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & ) const = default;
95248 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT95249     bool operator==( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
95250     {
95251 #  if defined( VULKAN_HPP_USE_REFLECT )
95252       return this->reflect() == rhs.reflect();
95253 #  else
95254       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( provokingVertexMode == rhs.provokingVertexMode );
95255 #  endif
95256     }
95257 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT95258     bool operator!=( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
95259     {
95260       return !operator==( rhs );
95261     }
95262 #endif
95263 
95264   public:
95265     VULKAN_HPP_NAMESPACE::StructureType          sType               = StructureType::ePipelineRasterizationProvokingVertexStateCreateInfoEXT;
95266     const void *                                 pNext               = {};
95267     VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT provokingVertexMode = VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT::eFirstVertex;
95268   };
95269 
95270   template <>
95271   struct CppType<StructureType, StructureType::ePipelineRasterizationProvokingVertexStateCreateInfoEXT>
95272   {
95273     using Type = PipelineRasterizationProvokingVertexStateCreateInfoEXT;
95274   };
95275 
95276   struct PipelineRasterizationStateRasterizationOrderAMD
95277   {
95278     using NativeType = VkPipelineRasterizationStateRasterizationOrderAMD;
95279 
95280     static const bool                                  allowDuplicate = false;
95281     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineRasterizationStateRasterizationOrderAMD;
95282 
95283 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationStateRasterizationOrderAMDVULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD95284     VULKAN_HPP_CONSTEXPR PipelineRasterizationStateRasterizationOrderAMD(
95285       VULKAN_HPP_NAMESPACE::RasterizationOrderAMD rasterizationOrder_ = VULKAN_HPP_NAMESPACE::RasterizationOrderAMD::eStrict,
95286       const void *                                pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
95287       : pNext{ pNext_ }
95288       , rasterizationOrder{ rasterizationOrder_ }
95289     {
95290     }
95291 
95292     VULKAN_HPP_CONSTEXPR
95293       PipelineRasterizationStateRasterizationOrderAMD( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95294 
PipelineRasterizationStateRasterizationOrderAMDVULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD95295     PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT
95296       : PipelineRasterizationStateRasterizationOrderAMD( *reinterpret_cast<PipelineRasterizationStateRasterizationOrderAMD const *>( &rhs ) )
95297     {
95298     }
95299 
95300     PipelineRasterizationStateRasterizationOrderAMD & operator=( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95301 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
95302 
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD95303     PipelineRasterizationStateRasterizationOrderAMD & operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT
95304     {
95305       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD const *>( &rhs );
95306       return *this;
95307     }
95308 
95309 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD95310     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateRasterizationOrderAMD & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
95311     {
95312       pNext = pNext_;
95313       return *this;
95314     }
95315 
95316     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateRasterizationOrderAMD &
setRasterizationOrderVULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD95317       setRasterizationOrder( VULKAN_HPP_NAMESPACE::RasterizationOrderAMD rasterizationOrder_ ) VULKAN_HPP_NOEXCEPT
95318     {
95319       rasterizationOrder = rasterizationOrder_;
95320       return *this;
95321     }
95322 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
95323 
operator VkPipelineRasterizationStateRasterizationOrderAMD const&VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD95324     operator VkPipelineRasterizationStateRasterizationOrderAMD const &() const VULKAN_HPP_NOEXCEPT
95325     {
95326       return *reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD *>( this );
95327     }
95328 
operator VkPipelineRasterizationStateRasterizationOrderAMD&VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD95329     operator VkPipelineRasterizationStateRasterizationOrderAMD &() VULKAN_HPP_NOEXCEPT
95330     {
95331       return *reinterpret_cast<VkPipelineRasterizationStateRasterizationOrderAMD *>( this );
95332     }
95333 
95334 #if defined( VULKAN_HPP_USE_REFLECT )
95335 #  if 14 <= VULKAN_HPP_CPP_VERSION
95336     auto
95337 #  else
95338     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::RasterizationOrderAMD const &>
95339 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD95340       reflect() const VULKAN_HPP_NOEXCEPT
95341     {
95342       return std::tie( sType, pNext, rasterizationOrder );
95343     }
95344 #endif
95345 
95346 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
95347     auto operator<=>( PipelineRasterizationStateRasterizationOrderAMD const & ) const = default;
95348 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD95349     bool operator==( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
95350     {
95351 #  if defined( VULKAN_HPP_USE_REFLECT )
95352       return this->reflect() == rhs.reflect();
95353 #  else
95354       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rasterizationOrder == rhs.rasterizationOrder );
95355 #  endif
95356     }
95357 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD95358     bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
95359     {
95360       return !operator==( rhs );
95361     }
95362 #endif
95363 
95364   public:
95365     VULKAN_HPP_NAMESPACE::StructureType         sType              = StructureType::ePipelineRasterizationStateRasterizationOrderAMD;
95366     const void *                                pNext              = {};
95367     VULKAN_HPP_NAMESPACE::RasterizationOrderAMD rasterizationOrder = VULKAN_HPP_NAMESPACE::RasterizationOrderAMD::eStrict;
95368   };
95369 
95370   template <>
95371   struct CppType<StructureType, StructureType::ePipelineRasterizationStateRasterizationOrderAMD>
95372   {
95373     using Type = PipelineRasterizationStateRasterizationOrderAMD;
95374   };
95375 
95376   struct PipelineRasterizationStateStreamCreateInfoEXT
95377   {
95378     using NativeType = VkPipelineRasterizationStateStreamCreateInfoEXT;
95379 
95380     static const bool                                  allowDuplicate = false;
95381     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineRasterizationStateStreamCreateInfoEXT;
95382 
95383 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationStateStreamCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT95384     VULKAN_HPP_CONSTEXPR PipelineRasterizationStateStreamCreateInfoEXT( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateFlagsEXT flags_ = {},
95385                                                                         uint32_t     rasterizationStream_                                           = {},
95386                                                                         const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
95387       : pNext{ pNext_ }
95388       , flags{ flags_ }
95389       , rasterizationStream{ rasterizationStream_ }
95390     {
95391     }
95392 
95393     VULKAN_HPP_CONSTEXPR
95394       PipelineRasterizationStateStreamCreateInfoEXT( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95395 
PipelineRasterizationStateStreamCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT95396     PipelineRasterizationStateStreamCreateInfoEXT( VkPipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
95397       : PipelineRasterizationStateStreamCreateInfoEXT( *reinterpret_cast<PipelineRasterizationStateStreamCreateInfoEXT const *>( &rhs ) )
95398     {
95399     }
95400 
95401     PipelineRasterizationStateStreamCreateInfoEXT & operator=( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95402 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
95403 
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT95404     PipelineRasterizationStateStreamCreateInfoEXT & operator=( VkPipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
95405     {
95406       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT const *>( &rhs );
95407       return *this;
95408     }
95409 
95410 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT95411     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateStreamCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
95412     {
95413       pNext = pNext_;
95414       return *this;
95415     }
95416 
95417     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateStreamCreateInfoEXT &
setFlagsVULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT95418       setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
95419     {
95420       flags = flags_;
95421       return *this;
95422     }
95423 
setRasterizationStreamVULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT95424     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateStreamCreateInfoEXT & setRasterizationStream( uint32_t rasterizationStream_ ) VULKAN_HPP_NOEXCEPT
95425     {
95426       rasterizationStream = rasterizationStream_;
95427       return *this;
95428     }
95429 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
95430 
operator VkPipelineRasterizationStateStreamCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT95431     operator VkPipelineRasterizationStateStreamCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
95432     {
95433       return *reinterpret_cast<const VkPipelineRasterizationStateStreamCreateInfoEXT *>( this );
95434     }
95435 
operator VkPipelineRasterizationStateStreamCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT95436     operator VkPipelineRasterizationStateStreamCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
95437     {
95438       return *reinterpret_cast<VkPipelineRasterizationStateStreamCreateInfoEXT *>( this );
95439     }
95440 
95441 #if defined( VULKAN_HPP_USE_REFLECT )
95442 #  if 14 <= VULKAN_HPP_CPP_VERSION
95443     auto
95444 #  else
95445     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
95446                const void * const &,
95447                VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateFlagsEXT const &,
95448                uint32_t const &>
95449 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT95450       reflect() const VULKAN_HPP_NOEXCEPT
95451     {
95452       return std::tie( sType, pNext, flags, rasterizationStream );
95453     }
95454 #endif
95455 
95456 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
95457     auto operator<=>( PipelineRasterizationStateStreamCreateInfoEXT const & ) const = default;
95458 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT95459     bool operator==( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
95460     {
95461 #  if defined( VULKAN_HPP_USE_REFLECT )
95462       return this->reflect() == rhs.reflect();
95463 #  else
95464       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( rasterizationStream == rhs.rasterizationStream );
95465 #  endif
95466     }
95467 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT95468     bool operator!=( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
95469     {
95470       return !operator==( rhs );
95471     }
95472 #endif
95473 
95474   public:
95475     VULKAN_HPP_NAMESPACE::StructureType                                  sType               = StructureType::ePipelineRasterizationStateStreamCreateInfoEXT;
95476     const void *                                                         pNext               = {};
95477     VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateFlagsEXT flags               = {};
95478     uint32_t                                                             rasterizationStream = {};
95479   };
95480 
95481   template <>
95482   struct CppType<StructureType, StructureType::ePipelineRasterizationStateStreamCreateInfoEXT>
95483   {
95484     using Type = PipelineRasterizationStateStreamCreateInfoEXT;
95485   };
95486 
95487   struct PipelineRenderingCreateInfo
95488   {
95489     using NativeType = VkPipelineRenderingCreateInfo;
95490 
95491     static const bool                                  allowDuplicate = false;
95492     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineRenderingCreateInfo;
95493 
95494 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRenderingCreateInfoVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo95495     VULKAN_HPP_CONSTEXPR PipelineRenderingCreateInfo( uint32_t                             viewMask_                = {},
95496                                                       uint32_t                             colorAttachmentCount_    = {},
95497                                                       const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats_ = {},
95498                                                       VULKAN_HPP_NAMESPACE::Format         depthAttachmentFormat_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
95499                                                       VULKAN_HPP_NAMESPACE::Format         stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
95500                                                       const void *                         pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
95501       : pNext{ pNext_ }
95502       , viewMask{ viewMask_ }
95503       , colorAttachmentCount{ colorAttachmentCount_ }
95504       , pColorAttachmentFormats{ pColorAttachmentFormats_ }
95505       , depthAttachmentFormat{ depthAttachmentFormat_ }
95506       , stencilAttachmentFormat{ stencilAttachmentFormat_ }
95507     {
95508     }
95509 
95510     VULKAN_HPP_CONSTEXPR PipelineRenderingCreateInfo( PipelineRenderingCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95511 
PipelineRenderingCreateInfoVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo95512     PipelineRenderingCreateInfo( VkPipelineRenderingCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
95513       : PipelineRenderingCreateInfo( *reinterpret_cast<PipelineRenderingCreateInfo const *>( &rhs ) )
95514     {
95515     }
95516 
95517 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineRenderingCreateInfoVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo95518     PipelineRenderingCreateInfo( uint32_t                                                                                  viewMask_,
95519                                  VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & colorAttachmentFormats_,
95520                                  VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
95521                                  VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
95522                                  const void *                 pNext_                   = nullptr )
95523       : pNext( pNext_ )
95524       , viewMask( viewMask_ )
95525       , colorAttachmentCount( static_cast<uint32_t>( colorAttachmentFormats_.size() ) )
95526       , pColorAttachmentFormats( colorAttachmentFormats_.data() )
95527       , depthAttachmentFormat( depthAttachmentFormat_ )
95528       , stencilAttachmentFormat( stencilAttachmentFormat_ )
95529     {
95530     }
95531 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
95532 
95533     PipelineRenderingCreateInfo & operator=( PipelineRenderingCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95534 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
95535 
operator =VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo95536     PipelineRenderingCreateInfo & operator=( VkPipelineRenderingCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
95537     {
95538       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo const *>( &rhs );
95539       return *this;
95540     }
95541 
95542 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo95543     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
95544     {
95545       pNext = pNext_;
95546       return *this;
95547     }
95548 
setViewMaskVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo95549     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT
95550     {
95551       viewMask = viewMask_;
95552       return *this;
95553     }
95554 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo95555     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
95556     {
95557       colorAttachmentCount = colorAttachmentCount_;
95558       return *this;
95559     }
95560 
95561     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo &
setPColorAttachmentFormatsVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo95562       setPColorAttachmentFormats( const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT
95563     {
95564       pColorAttachmentFormats = pColorAttachmentFormats_;
95565       return *this;
95566     }
95567 
95568 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentFormatsVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo95569     PipelineRenderingCreateInfo & setColorAttachmentFormats(
95570       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & colorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT
95571     {
95572       colorAttachmentCount    = static_cast<uint32_t>( colorAttachmentFormats_.size() );
95573       pColorAttachmentFormats = colorAttachmentFormats_.data();
95574       return *this;
95575     }
95576 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
95577 
setDepthAttachmentFormatVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo95578     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setDepthAttachmentFormat( VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT
95579     {
95580       depthAttachmentFormat = depthAttachmentFormat_;
95581       return *this;
95582     }
95583 
95584     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo &
setStencilAttachmentFormatVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo95585       setStencilAttachmentFormat( VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT
95586     {
95587       stencilAttachmentFormat = stencilAttachmentFormat_;
95588       return *this;
95589     }
95590 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
95591 
operator VkPipelineRenderingCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo95592     operator VkPipelineRenderingCreateInfo const &() const VULKAN_HPP_NOEXCEPT
95593     {
95594       return *reinterpret_cast<const VkPipelineRenderingCreateInfo *>( this );
95595     }
95596 
operator VkPipelineRenderingCreateInfo&VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo95597     operator VkPipelineRenderingCreateInfo &() VULKAN_HPP_NOEXCEPT
95598     {
95599       return *reinterpret_cast<VkPipelineRenderingCreateInfo *>( this );
95600     }
95601 
95602 #if defined( VULKAN_HPP_USE_REFLECT )
95603 #  if 14 <= VULKAN_HPP_CPP_VERSION
95604     auto
95605 #  else
95606     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
95607                const void * const &,
95608                uint32_t const &,
95609                uint32_t const &,
95610                const VULKAN_HPP_NAMESPACE::Format * const &,
95611                VULKAN_HPP_NAMESPACE::Format const &,
95612                VULKAN_HPP_NAMESPACE::Format const &>
95613 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo95614       reflect() const VULKAN_HPP_NOEXCEPT
95615     {
95616       return std::tie( sType, pNext, viewMask, colorAttachmentCount, pColorAttachmentFormats, depthAttachmentFormat, stencilAttachmentFormat );
95617     }
95618 #endif
95619 
95620 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
95621     auto operator<=>( PipelineRenderingCreateInfo const & ) const = default;
95622 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo95623     bool operator==( PipelineRenderingCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
95624     {
95625 #  if defined( VULKAN_HPP_USE_REFLECT )
95626       return this->reflect() == rhs.reflect();
95627 #  else
95628       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( viewMask == rhs.viewMask ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) &&
95629              ( pColorAttachmentFormats == rhs.pColorAttachmentFormats ) && ( depthAttachmentFormat == rhs.depthAttachmentFormat ) &&
95630              ( stencilAttachmentFormat == rhs.stencilAttachmentFormat );
95631 #  endif
95632     }
95633 
operator !=VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo95634     bool operator!=( PipelineRenderingCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
95635     {
95636       return !operator==( rhs );
95637     }
95638 #endif
95639 
95640   public:
95641     VULKAN_HPP_NAMESPACE::StructureType  sType                   = StructureType::ePipelineRenderingCreateInfo;
95642     const void *                         pNext                   = {};
95643     uint32_t                             viewMask                = {};
95644     uint32_t                             colorAttachmentCount    = {};
95645     const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats = {};
95646     VULKAN_HPP_NAMESPACE::Format         depthAttachmentFormat   = VULKAN_HPP_NAMESPACE::Format::eUndefined;
95647     VULKAN_HPP_NAMESPACE::Format         stencilAttachmentFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined;
95648   };
95649 
95650   template <>
95651   struct CppType<StructureType, StructureType::ePipelineRenderingCreateInfo>
95652   {
95653     using Type = PipelineRenderingCreateInfo;
95654   };
95655 
95656   using PipelineRenderingCreateInfoKHR = PipelineRenderingCreateInfo;
95657 
95658   struct PipelineRepresentativeFragmentTestStateCreateInfoNV
95659   {
95660     using NativeType = VkPipelineRepresentativeFragmentTestStateCreateInfoNV;
95661 
95662     static const bool                                  allowDuplicate = false;
95663     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV;
95664 
95665 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRepresentativeFragmentTestStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV95666     VULKAN_HPP_CONSTEXPR PipelineRepresentativeFragmentTestStateCreateInfoNV( VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTestEnable_ = {},
95667                                                                               const void *                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
95668       : pNext{ pNext_ }
95669       , representativeFragmentTestEnable{ representativeFragmentTestEnable_ }
95670     {
95671     }
95672 
95673     VULKAN_HPP_CONSTEXPR
95674       PipelineRepresentativeFragmentTestStateCreateInfoNV( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95675 
PipelineRepresentativeFragmentTestStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV95676     PipelineRepresentativeFragmentTestStateCreateInfoNV( VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
95677       : PipelineRepresentativeFragmentTestStateCreateInfoNV( *reinterpret_cast<PipelineRepresentativeFragmentTestStateCreateInfoNV const *>( &rhs ) )
95678     {
95679     }
95680 
95681     PipelineRepresentativeFragmentTestStateCreateInfoNV &
95682       operator=( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95683 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
95684 
operator =VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV95685     PipelineRepresentativeFragmentTestStateCreateInfoNV & operator=( VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
95686     {
95687       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV const *>( &rhs );
95688       return *this;
95689     }
95690 
95691 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV95692     VULKAN_HPP_CONSTEXPR_14 PipelineRepresentativeFragmentTestStateCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
95693     {
95694       pNext = pNext_;
95695       return *this;
95696     }
95697 
95698     VULKAN_HPP_CONSTEXPR_14 PipelineRepresentativeFragmentTestStateCreateInfoNV &
setRepresentativeFragmentTestEnableVULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV95699       setRepresentativeFragmentTestEnable( VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTestEnable_ ) VULKAN_HPP_NOEXCEPT
95700     {
95701       representativeFragmentTestEnable = representativeFragmentTestEnable_;
95702       return *this;
95703     }
95704 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
95705 
operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV95706     operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
95707     {
95708       return *reinterpret_cast<const VkPipelineRepresentativeFragmentTestStateCreateInfoNV *>( this );
95709     }
95710 
operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV95711     operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
95712     {
95713       return *reinterpret_cast<VkPipelineRepresentativeFragmentTestStateCreateInfoNV *>( this );
95714     }
95715 
95716 #if defined( VULKAN_HPP_USE_REFLECT )
95717 #  if 14 <= VULKAN_HPP_CPP_VERSION
95718     auto
95719 #  else
95720     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
95721 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV95722       reflect() const VULKAN_HPP_NOEXCEPT
95723     {
95724       return std::tie( sType, pNext, representativeFragmentTestEnable );
95725     }
95726 #endif
95727 
95728 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
95729     auto operator<=>( PipelineRepresentativeFragmentTestStateCreateInfoNV const & ) const = default;
95730 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV95731     bool operator==( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
95732     {
95733 #  if defined( VULKAN_HPP_USE_REFLECT )
95734       return this->reflect() == rhs.reflect();
95735 #  else
95736       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( representativeFragmentTestEnable == rhs.representativeFragmentTestEnable );
95737 #  endif
95738     }
95739 
operator !=VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV95740     bool operator!=( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
95741     {
95742       return !operator==( rhs );
95743     }
95744 #endif
95745 
95746   public:
95747     VULKAN_HPP_NAMESPACE::StructureType sType                            = StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV;
95748     const void *                        pNext                            = {};
95749     VULKAN_HPP_NAMESPACE::Bool32        representativeFragmentTestEnable = {};
95750   };
95751 
95752   template <>
95753   struct CppType<StructureType, StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV>
95754   {
95755     using Type = PipelineRepresentativeFragmentTestStateCreateInfoNV;
95756   };
95757 
95758   struct PipelineRobustnessCreateInfoEXT
95759   {
95760     using NativeType = VkPipelineRobustnessCreateInfoEXT;
95761 
95762     static const bool                                  allowDuplicate = false;
95763     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineRobustnessCreateInfoEXT;
95764 
95765 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRobustnessCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfoEXT95766     VULKAN_HPP_CONSTEXPR PipelineRobustnessCreateInfoEXT(
95767       VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT storageBuffers_ = VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT::eDeviceDefault,
95768       VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT uniformBuffers_ = VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT::eDeviceDefault,
95769       VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT vertexInputs_   = VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT::eDeviceDefault,
95770       VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehaviorEXT  images_         = VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehaviorEXT::eDeviceDefault,
95771       const void *                                              pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
95772       : pNext{ pNext_ }
95773       , storageBuffers{ storageBuffers_ }
95774       , uniformBuffers{ uniformBuffers_ }
95775       , vertexInputs{ vertexInputs_ }
95776       , images{ images_ }
95777     {
95778     }
95779 
95780     VULKAN_HPP_CONSTEXPR PipelineRobustnessCreateInfoEXT( PipelineRobustnessCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95781 
PipelineRobustnessCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfoEXT95782     PipelineRobustnessCreateInfoEXT( VkPipelineRobustnessCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
95783       : PipelineRobustnessCreateInfoEXT( *reinterpret_cast<PipelineRobustnessCreateInfoEXT const *>( &rhs ) )
95784     {
95785     }
95786 
95787     PipelineRobustnessCreateInfoEXT & operator=( PipelineRobustnessCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95788 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
95789 
operator =VULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfoEXT95790     PipelineRobustnessCreateInfoEXT & operator=( VkPipelineRobustnessCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
95791     {
95792       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfoEXT const *>( &rhs );
95793       return *this;
95794     }
95795 
95796 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfoEXT95797     VULKAN_HPP_CONSTEXPR_14 PipelineRobustnessCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
95798     {
95799       pNext = pNext_;
95800       return *this;
95801     }
95802 
95803     VULKAN_HPP_CONSTEXPR_14 PipelineRobustnessCreateInfoEXT &
setStorageBuffersVULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfoEXT95804       setStorageBuffers( VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT storageBuffers_ ) VULKAN_HPP_NOEXCEPT
95805     {
95806       storageBuffers = storageBuffers_;
95807       return *this;
95808     }
95809 
95810     VULKAN_HPP_CONSTEXPR_14 PipelineRobustnessCreateInfoEXT &
setUniformBuffersVULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfoEXT95811       setUniformBuffers( VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT uniformBuffers_ ) VULKAN_HPP_NOEXCEPT
95812     {
95813       uniformBuffers = uniformBuffers_;
95814       return *this;
95815     }
95816 
95817     VULKAN_HPP_CONSTEXPR_14 PipelineRobustnessCreateInfoEXT &
setVertexInputsVULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfoEXT95818       setVertexInputs( VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT vertexInputs_ ) VULKAN_HPP_NOEXCEPT
95819     {
95820       vertexInputs = vertexInputs_;
95821       return *this;
95822     }
95823 
setImagesVULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfoEXT95824     VULKAN_HPP_CONSTEXPR_14 PipelineRobustnessCreateInfoEXT & setImages( VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehaviorEXT images_ ) VULKAN_HPP_NOEXCEPT
95825     {
95826       images = images_;
95827       return *this;
95828     }
95829 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
95830 
operator VkPipelineRobustnessCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfoEXT95831     operator VkPipelineRobustnessCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
95832     {
95833       return *reinterpret_cast<const VkPipelineRobustnessCreateInfoEXT *>( this );
95834     }
95835 
operator VkPipelineRobustnessCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfoEXT95836     operator VkPipelineRobustnessCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
95837     {
95838       return *reinterpret_cast<VkPipelineRobustnessCreateInfoEXT *>( this );
95839     }
95840 
95841 #if defined( VULKAN_HPP_USE_REFLECT )
95842 #  if 14 <= VULKAN_HPP_CPP_VERSION
95843     auto
95844 #  else
95845     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
95846                const void * const &,
95847                VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT const &,
95848                VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT const &,
95849                VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT const &,
95850                VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehaviorEXT const &>
95851 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfoEXT95852       reflect() const VULKAN_HPP_NOEXCEPT
95853     {
95854       return std::tie( sType, pNext, storageBuffers, uniformBuffers, vertexInputs, images );
95855     }
95856 #endif
95857 
95858 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
95859     auto operator<=>( PipelineRobustnessCreateInfoEXT const & ) const = default;
95860 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfoEXT95861     bool operator==( PipelineRobustnessCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
95862     {
95863 #  if defined( VULKAN_HPP_USE_REFLECT )
95864       return this->reflect() == rhs.reflect();
95865 #  else
95866       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( storageBuffers == rhs.storageBuffers ) && ( uniformBuffers == rhs.uniformBuffers ) &&
95867              ( vertexInputs == rhs.vertexInputs ) && ( images == rhs.images );
95868 #  endif
95869     }
95870 
operator !=VULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfoEXT95871     bool operator!=( PipelineRobustnessCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
95872     {
95873       return !operator==( rhs );
95874     }
95875 #endif
95876 
95877   public:
95878     VULKAN_HPP_NAMESPACE::StructureType                       sType          = StructureType::ePipelineRobustnessCreateInfoEXT;
95879     const void *                                              pNext          = {};
95880     VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT storageBuffers = VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT::eDeviceDefault;
95881     VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT uniformBuffers = VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT::eDeviceDefault;
95882     VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT vertexInputs   = VULKAN_HPP_NAMESPACE::PipelineRobustnessBufferBehaviorEXT::eDeviceDefault;
95883     VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehaviorEXT  images         = VULKAN_HPP_NAMESPACE::PipelineRobustnessImageBehaviorEXT::eDeviceDefault;
95884   };
95885 
95886   template <>
95887   struct CppType<StructureType, StructureType::ePipelineRobustnessCreateInfoEXT>
95888   {
95889     using Type = PipelineRobustnessCreateInfoEXT;
95890   };
95891 
95892   struct PipelineSampleLocationsStateCreateInfoEXT
95893   {
95894     using NativeType = VkPipelineSampleLocationsStateCreateInfoEXT;
95895 
95896     static const bool                                  allowDuplicate = false;
95897     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineSampleLocationsStateCreateInfoEXT;
95898 
95899 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineSampleLocationsStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT95900     VULKAN_HPP_CONSTEXPR PipelineSampleLocationsStateCreateInfoEXT( VULKAN_HPP_NAMESPACE::Bool32                 sampleLocationsEnable_ = {},
95901                                                                     VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo_   = {},
95902                                                                     const void *                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
95903       : pNext{ pNext_ }
95904       , sampleLocationsEnable{ sampleLocationsEnable_ }
95905       , sampleLocationsInfo{ sampleLocationsInfo_ }
95906     {
95907     }
95908 
95909     VULKAN_HPP_CONSTEXPR PipelineSampleLocationsStateCreateInfoEXT( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95910 
PipelineSampleLocationsStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT95911     PipelineSampleLocationsStateCreateInfoEXT( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
95912       : PipelineSampleLocationsStateCreateInfoEXT( *reinterpret_cast<PipelineSampleLocationsStateCreateInfoEXT const *>( &rhs ) )
95913     {
95914     }
95915 
95916     PipelineSampleLocationsStateCreateInfoEXT & operator=( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
95917 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
95918 
operator =VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT95919     PipelineSampleLocationsStateCreateInfoEXT & operator=( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
95920     {
95921       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT const *>( &rhs );
95922       return *this;
95923     }
95924 
95925 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT95926     VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
95927     {
95928       pNext = pNext_;
95929       return *this;
95930     }
95931 
95932     VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT &
setSampleLocationsEnableVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT95933       setSampleLocationsEnable( VULKAN_HPP_NAMESPACE::Bool32 sampleLocationsEnable_ ) VULKAN_HPP_NOEXCEPT
95934     {
95935       sampleLocationsEnable = sampleLocationsEnable_;
95936       return *this;
95937     }
95938 
95939     VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT &
setSampleLocationsInfoVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT95940       setSampleLocationsInfo( VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const & sampleLocationsInfo_ ) VULKAN_HPP_NOEXCEPT
95941     {
95942       sampleLocationsInfo = sampleLocationsInfo_;
95943       return *this;
95944     }
95945 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
95946 
operator VkPipelineSampleLocationsStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT95947     operator VkPipelineSampleLocationsStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
95948     {
95949       return *reinterpret_cast<const VkPipelineSampleLocationsStateCreateInfoEXT *>( this );
95950     }
95951 
operator VkPipelineSampleLocationsStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT95952     operator VkPipelineSampleLocationsStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
95953     {
95954       return *reinterpret_cast<VkPipelineSampleLocationsStateCreateInfoEXT *>( this );
95955     }
95956 
95957 #if defined( VULKAN_HPP_USE_REFLECT )
95958 #  if 14 <= VULKAN_HPP_CPP_VERSION
95959     auto
95960 #  else
95961     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
95962                const void * const &,
95963                VULKAN_HPP_NAMESPACE::Bool32 const &,
95964                VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const &>
95965 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT95966       reflect() const VULKAN_HPP_NOEXCEPT
95967     {
95968       return std::tie( sType, pNext, sampleLocationsEnable, sampleLocationsInfo );
95969     }
95970 #endif
95971 
95972 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
95973     auto operator<=>( PipelineSampleLocationsStateCreateInfoEXT const & ) const = default;
95974 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT95975     bool operator==( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
95976     {
95977 #  if defined( VULKAN_HPP_USE_REFLECT )
95978       return this->reflect() == rhs.reflect();
95979 #  else
95980       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sampleLocationsEnable == rhs.sampleLocationsEnable ) &&
95981              ( sampleLocationsInfo == rhs.sampleLocationsInfo );
95982 #  endif
95983     }
95984 
operator !=VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT95985     bool operator!=( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
95986     {
95987       return !operator==( rhs );
95988     }
95989 #endif
95990 
95991   public:
95992     VULKAN_HPP_NAMESPACE::StructureType          sType                 = StructureType::ePipelineSampleLocationsStateCreateInfoEXT;
95993     const void *                                 pNext                 = {};
95994     VULKAN_HPP_NAMESPACE::Bool32                 sampleLocationsEnable = {};
95995     VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo   = {};
95996   };
95997 
95998   template <>
95999   struct CppType<StructureType, StructureType::ePipelineSampleLocationsStateCreateInfoEXT>
96000   {
96001     using Type = PipelineSampleLocationsStateCreateInfoEXT;
96002   };
96003 
96004   struct PipelineShaderStageModuleIdentifierCreateInfoEXT
96005   {
96006     using NativeType = VkPipelineShaderStageModuleIdentifierCreateInfoEXT;
96007 
96008     static const bool                                  allowDuplicate = false;
96009     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineShaderStageModuleIdentifierCreateInfoEXT;
96010 
96011 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineShaderStageModuleIdentifierCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT96012     VULKAN_HPP_CONSTEXPR PipelineShaderStageModuleIdentifierCreateInfoEXT( uint32_t        identifierSize_ = {},
96013                                                                            const uint8_t * pIdentifier_    = {},
96014                                                                            const void *    pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
96015       : pNext{ pNext_ }
96016       , identifierSize{ identifierSize_ }
96017       , pIdentifier{ pIdentifier_ }
96018     {
96019     }
96020 
96021     VULKAN_HPP_CONSTEXPR
96022       PipelineShaderStageModuleIdentifierCreateInfoEXT( PipelineShaderStageModuleIdentifierCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96023 
PipelineShaderStageModuleIdentifierCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT96024     PipelineShaderStageModuleIdentifierCreateInfoEXT( VkPipelineShaderStageModuleIdentifierCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
96025       : PipelineShaderStageModuleIdentifierCreateInfoEXT( *reinterpret_cast<PipelineShaderStageModuleIdentifierCreateInfoEXT const *>( &rhs ) )
96026     {
96027     }
96028 
96029 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineShaderStageModuleIdentifierCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT96030     PipelineShaderStageModuleIdentifierCreateInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint8_t> const & identifier_,
96031                                                       const void *                                                         pNext_ = nullptr )
96032       : pNext( pNext_ ), identifierSize( static_cast<uint32_t>( identifier_.size() ) ), pIdentifier( identifier_.data() )
96033     {
96034     }
96035 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
96036 
96037     PipelineShaderStageModuleIdentifierCreateInfoEXT & operator=( PipelineShaderStageModuleIdentifierCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96038 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
96039 
operator =VULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT96040     PipelineShaderStageModuleIdentifierCreateInfoEXT & operator=( VkPipelineShaderStageModuleIdentifierCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
96041     {
96042       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT const *>( &rhs );
96043       return *this;
96044     }
96045 
96046 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT96047     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageModuleIdentifierCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
96048     {
96049       pNext = pNext_;
96050       return *this;
96051     }
96052 
setIdentifierSizeVULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT96053     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageModuleIdentifierCreateInfoEXT & setIdentifierSize( uint32_t identifierSize_ ) VULKAN_HPP_NOEXCEPT
96054     {
96055       identifierSize = identifierSize_;
96056       return *this;
96057     }
96058 
setPIdentifierVULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT96059     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageModuleIdentifierCreateInfoEXT & setPIdentifier( const uint8_t * pIdentifier_ ) VULKAN_HPP_NOEXCEPT
96060     {
96061       pIdentifier = pIdentifier_;
96062       return *this;
96063     }
96064 
96065 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
96066     PipelineShaderStageModuleIdentifierCreateInfoEXT &
setIdentifierVULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT96067       setIdentifier( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint8_t> const & identifier_ ) VULKAN_HPP_NOEXCEPT
96068     {
96069       identifierSize = static_cast<uint32_t>( identifier_.size() );
96070       pIdentifier    = identifier_.data();
96071       return *this;
96072     }
96073 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
96074 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
96075 
operator VkPipelineShaderStageModuleIdentifierCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT96076     operator VkPipelineShaderStageModuleIdentifierCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
96077     {
96078       return *reinterpret_cast<const VkPipelineShaderStageModuleIdentifierCreateInfoEXT *>( this );
96079     }
96080 
operator VkPipelineShaderStageModuleIdentifierCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT96081     operator VkPipelineShaderStageModuleIdentifierCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
96082     {
96083       return *reinterpret_cast<VkPipelineShaderStageModuleIdentifierCreateInfoEXT *>( this );
96084     }
96085 
96086 #if defined( VULKAN_HPP_USE_REFLECT )
96087 #  if 14 <= VULKAN_HPP_CPP_VERSION
96088     auto
96089 #  else
96090     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const uint8_t * const &>
96091 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT96092       reflect() const VULKAN_HPP_NOEXCEPT
96093     {
96094       return std::tie( sType, pNext, identifierSize, pIdentifier );
96095     }
96096 #endif
96097 
96098 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
96099     auto operator<=>( PipelineShaderStageModuleIdentifierCreateInfoEXT const & ) const = default;
96100 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT96101     bool operator==( PipelineShaderStageModuleIdentifierCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
96102     {
96103 #  if defined( VULKAN_HPP_USE_REFLECT )
96104       return this->reflect() == rhs.reflect();
96105 #  else
96106       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( identifierSize == rhs.identifierSize ) && ( pIdentifier == rhs.pIdentifier );
96107 #  endif
96108     }
96109 
operator !=VULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT96110     bool operator!=( PipelineShaderStageModuleIdentifierCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
96111     {
96112       return !operator==( rhs );
96113     }
96114 #endif
96115 
96116   public:
96117     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePipelineShaderStageModuleIdentifierCreateInfoEXT;
96118     const void *                        pNext          = {};
96119     uint32_t                            identifierSize = {};
96120     const uint8_t *                     pIdentifier    = {};
96121   };
96122 
96123   template <>
96124   struct CppType<StructureType, StructureType::ePipelineShaderStageModuleIdentifierCreateInfoEXT>
96125   {
96126     using Type = PipelineShaderStageModuleIdentifierCreateInfoEXT;
96127   };
96128 
96129 #if defined( VK_ENABLE_BETA_EXTENSIONS )
96130   struct PipelineShaderStageNodeCreateInfoAMDX
96131   {
96132     using NativeType = VkPipelineShaderStageNodeCreateInfoAMDX;
96133 
96134     static const bool                                  allowDuplicate = false;
96135     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineShaderStageNodeCreateInfoAMDX;
96136 
96137 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
96138     VULKAN_HPP_CONSTEXPR
PipelineShaderStageNodeCreateInfoAMDXVULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX96139       PipelineShaderStageNodeCreateInfoAMDX( const char * pName_ = {}, uint32_t index_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
96140       : pNext{ pNext_ }
96141       , pName{ pName_ }
96142       , index{ index_ }
96143     {
96144     }
96145 
96146     VULKAN_HPP_CONSTEXPR PipelineShaderStageNodeCreateInfoAMDX( PipelineShaderStageNodeCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96147 
PipelineShaderStageNodeCreateInfoAMDXVULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX96148     PipelineShaderStageNodeCreateInfoAMDX( VkPipelineShaderStageNodeCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
96149       : PipelineShaderStageNodeCreateInfoAMDX( *reinterpret_cast<PipelineShaderStageNodeCreateInfoAMDX const *>( &rhs ) )
96150     {
96151     }
96152 
96153     PipelineShaderStageNodeCreateInfoAMDX & operator=( PipelineShaderStageNodeCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96154 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
96155 
operator =VULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX96156     PipelineShaderStageNodeCreateInfoAMDX & operator=( VkPipelineShaderStageNodeCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT
96157     {
96158       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX const *>( &rhs );
96159       return *this;
96160     }
96161 
96162 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX96163     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageNodeCreateInfoAMDX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
96164     {
96165       pNext = pNext_;
96166       return *this;
96167     }
96168 
setPNameVULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX96169     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageNodeCreateInfoAMDX & setPName( const char * pName_ ) VULKAN_HPP_NOEXCEPT
96170     {
96171       pName = pName_;
96172       return *this;
96173     }
96174 
setIndexVULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX96175     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageNodeCreateInfoAMDX & setIndex( uint32_t index_ ) VULKAN_HPP_NOEXCEPT
96176     {
96177       index = index_;
96178       return *this;
96179     }
96180 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
96181 
operator VkPipelineShaderStageNodeCreateInfoAMDX const&VULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX96182     operator VkPipelineShaderStageNodeCreateInfoAMDX const &() const VULKAN_HPP_NOEXCEPT
96183     {
96184       return *reinterpret_cast<const VkPipelineShaderStageNodeCreateInfoAMDX *>( this );
96185     }
96186 
operator VkPipelineShaderStageNodeCreateInfoAMDX&VULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX96187     operator VkPipelineShaderStageNodeCreateInfoAMDX &() VULKAN_HPP_NOEXCEPT
96188     {
96189       return *reinterpret_cast<VkPipelineShaderStageNodeCreateInfoAMDX *>( this );
96190     }
96191 
96192 #  if defined( VULKAN_HPP_USE_REFLECT )
96193 #    if 14 <= VULKAN_HPP_CPP_VERSION
96194     auto
96195 #    else
96196     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const char * const &, uint32_t const &>
96197 #    endif
reflectVULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX96198       reflect() const VULKAN_HPP_NOEXCEPT
96199     {
96200       return std::tie( sType, pNext, pName, index );
96201     }
96202 #  endif
96203 
96204 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX96205     std::strong_ordering operator<=>( PipelineShaderStageNodeCreateInfoAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
96206     {
96207       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
96208         return cmp;
96209       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
96210         return cmp;
96211       if ( pName != rhs.pName )
96212         if ( auto cmp = strcmp( pName, rhs.pName ); cmp != 0 )
96213           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
96214       if ( auto cmp = index <=> rhs.index; cmp != 0 )
96215         return cmp;
96216 
96217       return std::strong_ordering::equivalent;
96218     }
96219 #  endif
96220 
operator ==VULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX96221     bool operator==( PipelineShaderStageNodeCreateInfoAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
96222     {
96223       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ( pName == rhs.pName ) || ( strcmp( pName, rhs.pName ) == 0 ) ) && ( index == rhs.index );
96224     }
96225 
operator !=VULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX96226     bool operator!=( PipelineShaderStageNodeCreateInfoAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT
96227     {
96228       return !operator==( rhs );
96229     }
96230 
96231   public:
96232     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineShaderStageNodeCreateInfoAMDX;
96233     const void *                        pNext = {};
96234     const char *                        pName = {};
96235     uint32_t                            index = {};
96236   };
96237 
96238   template <>
96239   struct CppType<StructureType, StructureType::ePipelineShaderStageNodeCreateInfoAMDX>
96240   {
96241     using Type = PipelineShaderStageNodeCreateInfoAMDX;
96242   };
96243 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
96244 
96245   struct PipelineShaderStageRequiredSubgroupSizeCreateInfo
96246   {
96247     using NativeType = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo;
96248 
96249     static const bool                                  allowDuplicate = false;
96250     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfo;
96251 
96252 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineShaderStageRequiredSubgroupSizeCreateInfoVULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo96253     VULKAN_HPP_CONSTEXPR PipelineShaderStageRequiredSubgroupSizeCreateInfo( uint32_t requiredSubgroupSize_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
96254       : pNext{ pNext_ }
96255       , requiredSubgroupSize{ requiredSubgroupSize_ }
96256     {
96257     }
96258 
96259     VULKAN_HPP_CONSTEXPR
96260       PipelineShaderStageRequiredSubgroupSizeCreateInfo( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96261 
PipelineShaderStageRequiredSubgroupSizeCreateInfoVULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo96262     PipelineShaderStageRequiredSubgroupSizeCreateInfo( VkPipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
96263       : PipelineShaderStageRequiredSubgroupSizeCreateInfo( *reinterpret_cast<PipelineShaderStageRequiredSubgroupSizeCreateInfo const *>( &rhs ) )
96264     {
96265     }
96266 
96267     PipelineShaderStageRequiredSubgroupSizeCreateInfo &
96268       operator=( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96269 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
96270 
operator =VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo96271     PipelineShaderStageRequiredSubgroupSizeCreateInfo & operator=( VkPipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
96272     {
96273       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo const *>( &rhs );
96274       return *this;
96275     }
96276 
operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo96277     operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfo const &() const VULKAN_HPP_NOEXCEPT
96278     {
96279       return *reinterpret_cast<const VkPipelineShaderStageRequiredSubgroupSizeCreateInfo *>( this );
96280     }
96281 
operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfo&VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo96282     operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfo &() VULKAN_HPP_NOEXCEPT
96283     {
96284       return *reinterpret_cast<VkPipelineShaderStageRequiredSubgroupSizeCreateInfo *>( this );
96285     }
96286 
96287 #if defined( VULKAN_HPP_USE_REFLECT )
96288 #  if 14 <= VULKAN_HPP_CPP_VERSION
96289     auto
96290 #  else
96291     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
96292 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo96293       reflect() const VULKAN_HPP_NOEXCEPT
96294     {
96295       return std::tie( sType, pNext, requiredSubgroupSize );
96296     }
96297 #endif
96298 
96299 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
96300     auto operator<=>( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & ) const = default;
96301 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo96302     bool operator==( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
96303     {
96304 #  if defined( VULKAN_HPP_USE_REFLECT )
96305       return this->reflect() == rhs.reflect();
96306 #  else
96307       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( requiredSubgroupSize == rhs.requiredSubgroupSize );
96308 #  endif
96309     }
96310 
operator !=VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo96311     bool operator!=( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
96312     {
96313       return !operator==( rhs );
96314     }
96315 #endif
96316 
96317   public:
96318     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfo;
96319     void *                              pNext                = {};
96320     uint32_t                            requiredSubgroupSize = {};
96321   };
96322 
96323   template <>
96324   struct CppType<StructureType, StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfo>
96325   {
96326     using Type = PipelineShaderStageRequiredSubgroupSizeCreateInfo;
96327   };
96328 
96329   using PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = PipelineShaderStageRequiredSubgroupSizeCreateInfo;
96330   using ShaderRequiredSubgroupSizeCreateInfoEXT              = PipelineShaderStageRequiredSubgroupSizeCreateInfo;
96331 
96332   struct PipelineTessellationDomainOriginStateCreateInfo
96333   {
96334     using NativeType = VkPipelineTessellationDomainOriginStateCreateInfo;
96335 
96336     static const bool                                  allowDuplicate = false;
96337     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineTessellationDomainOriginStateCreateInfo;
96338 
96339 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineTessellationDomainOriginStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo96340     VULKAN_HPP_CONSTEXPR PipelineTessellationDomainOriginStateCreateInfo(
96341       VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin_ = VULKAN_HPP_NAMESPACE::TessellationDomainOrigin::eUpperLeft,
96342       const void *                                   pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
96343       : pNext{ pNext_ }
96344       , domainOrigin{ domainOrigin_ }
96345     {
96346     }
96347 
96348     VULKAN_HPP_CONSTEXPR
96349       PipelineTessellationDomainOriginStateCreateInfo( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96350 
PipelineTessellationDomainOriginStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo96351     PipelineTessellationDomainOriginStateCreateInfo( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
96352       : PipelineTessellationDomainOriginStateCreateInfo( *reinterpret_cast<PipelineTessellationDomainOriginStateCreateInfo const *>( &rhs ) )
96353     {
96354     }
96355 
96356     PipelineTessellationDomainOriginStateCreateInfo & operator=( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96357 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
96358 
operator =VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo96359     PipelineTessellationDomainOriginStateCreateInfo & operator=( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
96360     {
96361       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo const *>( &rhs );
96362       return *this;
96363     }
96364 
96365 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo96366     VULKAN_HPP_CONSTEXPR_14 PipelineTessellationDomainOriginStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
96367     {
96368       pNext = pNext_;
96369       return *this;
96370     }
96371 
96372     VULKAN_HPP_CONSTEXPR_14 PipelineTessellationDomainOriginStateCreateInfo &
setDomainOriginVULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo96373       setDomainOrigin( VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin_ ) VULKAN_HPP_NOEXCEPT
96374     {
96375       domainOrigin = domainOrigin_;
96376       return *this;
96377     }
96378 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
96379 
operator VkPipelineTessellationDomainOriginStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo96380     operator VkPipelineTessellationDomainOriginStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
96381     {
96382       return *reinterpret_cast<const VkPipelineTessellationDomainOriginStateCreateInfo *>( this );
96383     }
96384 
operator VkPipelineTessellationDomainOriginStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo96385     operator VkPipelineTessellationDomainOriginStateCreateInfo &() VULKAN_HPP_NOEXCEPT
96386     {
96387       return *reinterpret_cast<VkPipelineTessellationDomainOriginStateCreateInfo *>( this );
96388     }
96389 
96390 #if defined( VULKAN_HPP_USE_REFLECT )
96391 #  if 14 <= VULKAN_HPP_CPP_VERSION
96392     auto
96393 #  else
96394     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::TessellationDomainOrigin const &>
96395 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo96396       reflect() const VULKAN_HPP_NOEXCEPT
96397     {
96398       return std::tie( sType, pNext, domainOrigin );
96399     }
96400 #endif
96401 
96402 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
96403     auto operator<=>( PipelineTessellationDomainOriginStateCreateInfo const & ) const = default;
96404 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo96405     bool operator==( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
96406     {
96407 #  if defined( VULKAN_HPP_USE_REFLECT )
96408       return this->reflect() == rhs.reflect();
96409 #  else
96410       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( domainOrigin == rhs.domainOrigin );
96411 #  endif
96412     }
96413 
operator !=VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo96414     bool operator!=( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
96415     {
96416       return !operator==( rhs );
96417     }
96418 #endif
96419 
96420   public:
96421     VULKAN_HPP_NAMESPACE::StructureType            sType        = StructureType::ePipelineTessellationDomainOriginStateCreateInfo;
96422     const void *                                   pNext        = {};
96423     VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin = VULKAN_HPP_NAMESPACE::TessellationDomainOrigin::eUpperLeft;
96424   };
96425 
96426   template <>
96427   struct CppType<StructureType, StructureType::ePipelineTessellationDomainOriginStateCreateInfo>
96428   {
96429     using Type = PipelineTessellationDomainOriginStateCreateInfo;
96430   };
96431 
96432   using PipelineTessellationDomainOriginStateCreateInfoKHR = PipelineTessellationDomainOriginStateCreateInfo;
96433 
96434   struct VertexInputBindingDivisorDescriptionKHR
96435   {
96436     using NativeType = VkVertexInputBindingDivisorDescriptionKHR;
96437 
96438 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VertexInputBindingDivisorDescriptionKHRVULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionKHR96439     VULKAN_HPP_CONSTEXPR VertexInputBindingDivisorDescriptionKHR( uint32_t binding_ = {}, uint32_t divisor_ = {} ) VULKAN_HPP_NOEXCEPT
96440       : binding{ binding_ }
96441       , divisor{ divisor_ }
96442     {
96443     }
96444 
96445     VULKAN_HPP_CONSTEXPR VertexInputBindingDivisorDescriptionKHR( VertexInputBindingDivisorDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96446 
VertexInputBindingDivisorDescriptionKHRVULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionKHR96447     VertexInputBindingDivisorDescriptionKHR( VkVertexInputBindingDivisorDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
96448       : VertexInputBindingDivisorDescriptionKHR( *reinterpret_cast<VertexInputBindingDivisorDescriptionKHR const *>( &rhs ) )
96449     {
96450     }
96451 
96452     VertexInputBindingDivisorDescriptionKHR & operator=( VertexInputBindingDivisorDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96453 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
96454 
operator =VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionKHR96455     VertexInputBindingDivisorDescriptionKHR & operator=( VkVertexInputBindingDivisorDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
96456     {
96457       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionKHR const *>( &rhs );
96458       return *this;
96459     }
96460 
96461 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBindingVULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionKHR96462     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDivisorDescriptionKHR & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
96463     {
96464       binding = binding_;
96465       return *this;
96466     }
96467 
setDivisorVULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionKHR96468     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDivisorDescriptionKHR & setDivisor( uint32_t divisor_ ) VULKAN_HPP_NOEXCEPT
96469     {
96470       divisor = divisor_;
96471       return *this;
96472     }
96473 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
96474 
operator VkVertexInputBindingDivisorDescriptionKHR const&VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionKHR96475     operator VkVertexInputBindingDivisorDescriptionKHR const &() const VULKAN_HPP_NOEXCEPT
96476     {
96477       return *reinterpret_cast<const VkVertexInputBindingDivisorDescriptionKHR *>( this );
96478     }
96479 
operator VkVertexInputBindingDivisorDescriptionKHR&VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionKHR96480     operator VkVertexInputBindingDivisorDescriptionKHR &() VULKAN_HPP_NOEXCEPT
96481     {
96482       return *reinterpret_cast<VkVertexInputBindingDivisorDescriptionKHR *>( this );
96483     }
96484 
96485 #if defined( VULKAN_HPP_USE_REFLECT )
96486 #  if 14 <= VULKAN_HPP_CPP_VERSION
96487     auto
96488 #  else
96489     std::tuple<uint32_t const &, uint32_t const &>
96490 #  endif
reflectVULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionKHR96491       reflect() const VULKAN_HPP_NOEXCEPT
96492     {
96493       return std::tie( binding, divisor );
96494     }
96495 #endif
96496 
96497 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
96498     auto operator<=>( VertexInputBindingDivisorDescriptionKHR const & ) const = default;
96499 #else
operator ==VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionKHR96500     bool operator==( VertexInputBindingDivisorDescriptionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
96501     {
96502 #  if defined( VULKAN_HPP_USE_REFLECT )
96503       return this->reflect() == rhs.reflect();
96504 #  else
96505       return ( binding == rhs.binding ) && ( divisor == rhs.divisor );
96506 #  endif
96507     }
96508 
operator !=VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionKHR96509     bool operator!=( VertexInputBindingDivisorDescriptionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
96510     {
96511       return !operator==( rhs );
96512     }
96513 #endif
96514 
96515   public:
96516     uint32_t binding = {};
96517     uint32_t divisor = {};
96518   };
96519 
96520   using VertexInputBindingDivisorDescriptionEXT = VertexInputBindingDivisorDescriptionKHR;
96521 
96522   struct PipelineVertexInputDivisorStateCreateInfoKHR
96523   {
96524     using NativeType = VkPipelineVertexInputDivisorStateCreateInfoKHR;
96525 
96526     static const bool                                  allowDuplicate = false;
96527     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineVertexInputDivisorStateCreateInfoKHR;
96528 
96529 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
96530     VULKAN_HPP_CONSTEXPR
PipelineVertexInputDivisorStateCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoKHR96531       PipelineVertexInputDivisorStateCreateInfoKHR( uint32_t                                                              vertexBindingDivisorCount_ = {},
96532                                                     const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionKHR * pVertexBindingDivisors_    = {},
96533                                                     const void *                                                          pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
96534       : pNext{ pNext_ }
96535       , vertexBindingDivisorCount{ vertexBindingDivisorCount_ }
96536       , pVertexBindingDivisors{ pVertexBindingDivisors_ }
96537     {
96538     }
96539 
96540     VULKAN_HPP_CONSTEXPR PipelineVertexInputDivisorStateCreateInfoKHR( PipelineVertexInputDivisorStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96541 
PipelineVertexInputDivisorStateCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoKHR96542     PipelineVertexInputDivisorStateCreateInfoKHR( VkPipelineVertexInputDivisorStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
96543       : PipelineVertexInputDivisorStateCreateInfoKHR( *reinterpret_cast<PipelineVertexInputDivisorStateCreateInfoKHR const *>( &rhs ) )
96544     {
96545     }
96546 
96547 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineVertexInputDivisorStateCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoKHR96548     PipelineVertexInputDivisorStateCreateInfoKHR(
96549       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionKHR> const & vertexBindingDivisors_,
96550       const void *                                                                                                               pNext_ = nullptr )
96551       : pNext( pNext_ )
96552       , vertexBindingDivisorCount( static_cast<uint32_t>( vertexBindingDivisors_.size() ) )
96553       , pVertexBindingDivisors( vertexBindingDivisors_.data() )
96554     {
96555     }
96556 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
96557 
96558     PipelineVertexInputDivisorStateCreateInfoKHR & operator=( PipelineVertexInputDivisorStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96559 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
96560 
operator =VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoKHR96561     PipelineVertexInputDivisorStateCreateInfoKHR & operator=( VkPipelineVertexInputDivisorStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
96562     {
96563       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoKHR const *>( &rhs );
96564       return *this;
96565     }
96566 
96567 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoKHR96568     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
96569     {
96570       pNext = pNext_;
96571       return *this;
96572     }
96573 
96574     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfoKHR &
setVertexBindingDivisorCountVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoKHR96575       setVertexBindingDivisorCount( uint32_t vertexBindingDivisorCount_ ) VULKAN_HPP_NOEXCEPT
96576     {
96577       vertexBindingDivisorCount = vertexBindingDivisorCount_;
96578       return *this;
96579     }
96580 
96581     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfoKHR &
setPVertexBindingDivisorsVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoKHR96582       setPVertexBindingDivisors( const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionKHR * pVertexBindingDivisors_ ) VULKAN_HPP_NOEXCEPT
96583     {
96584       pVertexBindingDivisors = pVertexBindingDivisors_;
96585       return *this;
96586     }
96587 
96588 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setVertexBindingDivisorsVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoKHR96589     PipelineVertexInputDivisorStateCreateInfoKHR & setVertexBindingDivisors(
96590       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionKHR> const & vertexBindingDivisors_ )
96591       VULKAN_HPP_NOEXCEPT
96592     {
96593       vertexBindingDivisorCount = static_cast<uint32_t>( vertexBindingDivisors_.size() );
96594       pVertexBindingDivisors    = vertexBindingDivisors_.data();
96595       return *this;
96596     }
96597 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
96598 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
96599 
operator VkPipelineVertexInputDivisorStateCreateInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoKHR96600     operator VkPipelineVertexInputDivisorStateCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
96601     {
96602       return *reinterpret_cast<const VkPipelineVertexInputDivisorStateCreateInfoKHR *>( this );
96603     }
96604 
operator VkPipelineVertexInputDivisorStateCreateInfoKHR&VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoKHR96605     operator VkPipelineVertexInputDivisorStateCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
96606     {
96607       return *reinterpret_cast<VkPipelineVertexInputDivisorStateCreateInfoKHR *>( this );
96608     }
96609 
96610 #if defined( VULKAN_HPP_USE_REFLECT )
96611 #  if 14 <= VULKAN_HPP_CPP_VERSION
96612     auto
96613 #  else
96614     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
96615                const void * const &,
96616                uint32_t const &,
96617                const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionKHR * const &>
96618 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoKHR96619       reflect() const VULKAN_HPP_NOEXCEPT
96620     {
96621       return std::tie( sType, pNext, vertexBindingDivisorCount, pVertexBindingDivisors );
96622     }
96623 #endif
96624 
96625 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
96626     auto operator<=>( PipelineVertexInputDivisorStateCreateInfoKHR const & ) const = default;
96627 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoKHR96628     bool operator==( PipelineVertexInputDivisorStateCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
96629     {
96630 #  if defined( VULKAN_HPP_USE_REFLECT )
96631       return this->reflect() == rhs.reflect();
96632 #  else
96633       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vertexBindingDivisorCount == rhs.vertexBindingDivisorCount ) &&
96634              ( pVertexBindingDivisors == rhs.pVertexBindingDivisors );
96635 #  endif
96636     }
96637 
operator !=VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoKHR96638     bool operator!=( PipelineVertexInputDivisorStateCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
96639     {
96640       return !operator==( rhs );
96641     }
96642 #endif
96643 
96644   public:
96645     VULKAN_HPP_NAMESPACE::StructureType                                   sType = StructureType::ePipelineVertexInputDivisorStateCreateInfoKHR;
96646     const void *                                                          pNext = {};
96647     uint32_t                                                              vertexBindingDivisorCount = {};
96648     const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionKHR * pVertexBindingDivisors    = {};
96649   };
96650 
96651   template <>
96652   struct CppType<StructureType, StructureType::ePipelineVertexInputDivisorStateCreateInfoKHR>
96653   {
96654     using Type = PipelineVertexInputDivisorStateCreateInfoKHR;
96655   };
96656 
96657   using PipelineVertexInputDivisorStateCreateInfoEXT = PipelineVertexInputDivisorStateCreateInfoKHR;
96658 
96659   struct PipelineViewportCoarseSampleOrderStateCreateInfoNV
96660   {
96661     using NativeType = VkPipelineViewportCoarseSampleOrderStateCreateInfoNV;
96662 
96663     static const bool                                  allowDuplicate = false;
96664     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV;
96665 
96666 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineViewportCoarseSampleOrderStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV96667     VULKAN_HPP_CONSTEXPR PipelineViewportCoarseSampleOrderStateCreateInfoNV(
96668       VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV           sampleOrderType_        = VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV::eDefault,
96669       uint32_t                                                customSampleOrderCount_ = {},
96670       const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV * pCustomSampleOrders_    = {},
96671       const void *                                            pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
96672       : pNext{ pNext_ }
96673       , sampleOrderType{ sampleOrderType_ }
96674       , customSampleOrderCount{ customSampleOrderCount_ }
96675       , pCustomSampleOrders{ pCustomSampleOrders_ }
96676     {
96677     }
96678 
96679     VULKAN_HPP_CONSTEXPR
96680       PipelineViewportCoarseSampleOrderStateCreateInfoNV( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96681 
PipelineViewportCoarseSampleOrderStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV96682     PipelineViewportCoarseSampleOrderStateCreateInfoNV( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
96683       : PipelineViewportCoarseSampleOrderStateCreateInfoNV( *reinterpret_cast<PipelineViewportCoarseSampleOrderStateCreateInfoNV const *>( &rhs ) )
96684     {
96685     }
96686 
96687 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineViewportCoarseSampleOrderStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV96688     PipelineViewportCoarseSampleOrderStateCreateInfoNV(
96689       VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV                                                                sampleOrderType_,
96690       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV> const & customSampleOrders_,
96691       const void *                                                                                                 pNext_ = nullptr )
96692       : pNext( pNext_ )
96693       , sampleOrderType( sampleOrderType_ )
96694       , customSampleOrderCount( static_cast<uint32_t>( customSampleOrders_.size() ) )
96695       , pCustomSampleOrders( customSampleOrders_.data() )
96696     {
96697     }
96698 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
96699 
96700     PipelineViewportCoarseSampleOrderStateCreateInfoNV &
96701       operator=( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96702 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
96703 
operator =VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV96704     PipelineViewportCoarseSampleOrderStateCreateInfoNV & operator=( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
96705     {
96706       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV const *>( &rhs );
96707       return *this;
96708     }
96709 
96710 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV96711     VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
96712     {
96713       pNext = pNext_;
96714       return *this;
96715     }
96716 
96717     VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV &
setSampleOrderTypeVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV96718       setSampleOrderType( VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType_ ) VULKAN_HPP_NOEXCEPT
96719     {
96720       sampleOrderType = sampleOrderType_;
96721       return *this;
96722     }
96723 
96724     VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV &
setCustomSampleOrderCountVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV96725       setCustomSampleOrderCount( uint32_t customSampleOrderCount_ ) VULKAN_HPP_NOEXCEPT
96726     {
96727       customSampleOrderCount = customSampleOrderCount_;
96728       return *this;
96729     }
96730 
96731     VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV &
setPCustomSampleOrdersVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV96732       setPCustomSampleOrders( const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV * pCustomSampleOrders_ ) VULKAN_HPP_NOEXCEPT
96733     {
96734       pCustomSampleOrders = pCustomSampleOrders_;
96735       return *this;
96736     }
96737 
96738 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCustomSampleOrdersVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV96739     PipelineViewportCoarseSampleOrderStateCreateInfoNV & setCustomSampleOrders(
96740       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV> const & customSampleOrders_ ) VULKAN_HPP_NOEXCEPT
96741     {
96742       customSampleOrderCount = static_cast<uint32_t>( customSampleOrders_.size() );
96743       pCustomSampleOrders    = customSampleOrders_.data();
96744       return *this;
96745     }
96746 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
96747 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
96748 
operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV96749     operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
96750     {
96751       return *reinterpret_cast<const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV *>( this );
96752     }
96753 
operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV96754     operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
96755     {
96756       return *reinterpret_cast<VkPipelineViewportCoarseSampleOrderStateCreateInfoNV *>( this );
96757     }
96758 
96759 #if defined( VULKAN_HPP_USE_REFLECT )
96760 #  if 14 <= VULKAN_HPP_CPP_VERSION
96761     auto
96762 #  else
96763     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
96764                const void * const &,
96765                VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV const &,
96766                uint32_t const &,
96767                const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV * const &>
96768 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV96769       reflect() const VULKAN_HPP_NOEXCEPT
96770     {
96771       return std::tie( sType, pNext, sampleOrderType, customSampleOrderCount, pCustomSampleOrders );
96772     }
96773 #endif
96774 
96775 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
96776     auto operator<=>( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & ) const = default;
96777 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV96778     bool operator==( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
96779     {
96780 #  if defined( VULKAN_HPP_USE_REFLECT )
96781       return this->reflect() == rhs.reflect();
96782 #  else
96783       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sampleOrderType == rhs.sampleOrderType ) &&
96784              ( customSampleOrderCount == rhs.customSampleOrderCount ) && ( pCustomSampleOrders == rhs.pCustomSampleOrders );
96785 #  endif
96786     }
96787 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV96788     bool operator!=( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
96789     {
96790       return !operator==( rhs );
96791     }
96792 #endif
96793 
96794   public:
96795     VULKAN_HPP_NAMESPACE::StructureType                     sType                  = StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV;
96796     const void *                                            pNext                  = {};
96797     VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV           sampleOrderType        = VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV::eDefault;
96798     uint32_t                                                customSampleOrderCount = {};
96799     const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV * pCustomSampleOrders    = {};
96800   };
96801 
96802   template <>
96803   struct CppType<StructureType, StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV>
96804   {
96805     using Type = PipelineViewportCoarseSampleOrderStateCreateInfoNV;
96806   };
96807 
96808   struct PipelineViewportDepthClipControlCreateInfoEXT
96809   {
96810     using NativeType = VkPipelineViewportDepthClipControlCreateInfoEXT;
96811 
96812     static const bool                                  allowDuplicate = false;
96813     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineViewportDepthClipControlCreateInfoEXT;
96814 
96815 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineViewportDepthClipControlCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT96816     VULKAN_HPP_CONSTEXPR PipelineViewportDepthClipControlCreateInfoEXT( VULKAN_HPP_NAMESPACE::Bool32 negativeOneToOne_ = {},
96817                                                                         const void *                 pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
96818       : pNext{ pNext_ }
96819       , negativeOneToOne{ negativeOneToOne_ }
96820     {
96821     }
96822 
96823     VULKAN_HPP_CONSTEXPR
96824       PipelineViewportDepthClipControlCreateInfoEXT( PipelineViewportDepthClipControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96825 
PipelineViewportDepthClipControlCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT96826     PipelineViewportDepthClipControlCreateInfoEXT( VkPipelineViewportDepthClipControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
96827       : PipelineViewportDepthClipControlCreateInfoEXT( *reinterpret_cast<PipelineViewportDepthClipControlCreateInfoEXT const *>( &rhs ) )
96828     {
96829     }
96830 
96831     PipelineViewportDepthClipControlCreateInfoEXT & operator=( PipelineViewportDepthClipControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96832 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
96833 
operator =VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT96834     PipelineViewportDepthClipControlCreateInfoEXT & operator=( VkPipelineViewportDepthClipControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
96835     {
96836       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT const *>( &rhs );
96837       return *this;
96838     }
96839 
96840 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT96841     VULKAN_HPP_CONSTEXPR_14 PipelineViewportDepthClipControlCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
96842     {
96843       pNext = pNext_;
96844       return *this;
96845     }
96846 
96847     VULKAN_HPP_CONSTEXPR_14 PipelineViewportDepthClipControlCreateInfoEXT &
setNegativeOneToOneVULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT96848       setNegativeOneToOne( VULKAN_HPP_NAMESPACE::Bool32 negativeOneToOne_ ) VULKAN_HPP_NOEXCEPT
96849     {
96850       negativeOneToOne = negativeOneToOne_;
96851       return *this;
96852     }
96853 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
96854 
operator VkPipelineViewportDepthClipControlCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT96855     operator VkPipelineViewportDepthClipControlCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
96856     {
96857       return *reinterpret_cast<const VkPipelineViewportDepthClipControlCreateInfoEXT *>( this );
96858     }
96859 
operator VkPipelineViewportDepthClipControlCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT96860     operator VkPipelineViewportDepthClipControlCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
96861     {
96862       return *reinterpret_cast<VkPipelineViewportDepthClipControlCreateInfoEXT *>( this );
96863     }
96864 
96865 #if defined( VULKAN_HPP_USE_REFLECT )
96866 #  if 14 <= VULKAN_HPP_CPP_VERSION
96867     auto
96868 #  else
96869     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
96870 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT96871       reflect() const VULKAN_HPP_NOEXCEPT
96872     {
96873       return std::tie( sType, pNext, negativeOneToOne );
96874     }
96875 #endif
96876 
96877 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
96878     auto operator<=>( PipelineViewportDepthClipControlCreateInfoEXT const & ) const = default;
96879 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT96880     bool operator==( PipelineViewportDepthClipControlCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
96881     {
96882 #  if defined( VULKAN_HPP_USE_REFLECT )
96883       return this->reflect() == rhs.reflect();
96884 #  else
96885       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( negativeOneToOne == rhs.negativeOneToOne );
96886 #  endif
96887     }
96888 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT96889     bool operator!=( PipelineViewportDepthClipControlCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
96890     {
96891       return !operator==( rhs );
96892     }
96893 #endif
96894 
96895   public:
96896     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::ePipelineViewportDepthClipControlCreateInfoEXT;
96897     const void *                        pNext            = {};
96898     VULKAN_HPP_NAMESPACE::Bool32        negativeOneToOne = {};
96899   };
96900 
96901   template <>
96902   struct CppType<StructureType, StructureType::ePipelineViewportDepthClipControlCreateInfoEXT>
96903   {
96904     using Type = PipelineViewportDepthClipControlCreateInfoEXT;
96905   };
96906 
96907   struct PipelineViewportExclusiveScissorStateCreateInfoNV
96908   {
96909     using NativeType = VkPipelineViewportExclusiveScissorStateCreateInfoNV;
96910 
96911     static const bool                                  allowDuplicate = false;
96912     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV;
96913 
96914 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineViewportExclusiveScissorStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV96915     VULKAN_HPP_CONSTEXPR PipelineViewportExclusiveScissorStateCreateInfoNV( uint32_t                             exclusiveScissorCount_ = {},
96916                                                                             const VULKAN_HPP_NAMESPACE::Rect2D * pExclusiveScissors_    = {},
96917                                                                             const void *                         pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
96918       : pNext{ pNext_ }
96919       , exclusiveScissorCount{ exclusiveScissorCount_ }
96920       , pExclusiveScissors{ pExclusiveScissors_ }
96921     {
96922     }
96923 
96924     VULKAN_HPP_CONSTEXPR
96925       PipelineViewportExclusiveScissorStateCreateInfoNV( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96926 
PipelineViewportExclusiveScissorStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV96927     PipelineViewportExclusiveScissorStateCreateInfoNV( VkPipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
96928       : PipelineViewportExclusiveScissorStateCreateInfoNV( *reinterpret_cast<PipelineViewportExclusiveScissorStateCreateInfoNV const *>( &rhs ) )
96929     {
96930     }
96931 
96932 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineViewportExclusiveScissorStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV96933     PipelineViewportExclusiveScissorStateCreateInfoNV(
96934       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & exclusiveScissors_, const void * pNext_ = nullptr )
96935       : pNext( pNext_ ), exclusiveScissorCount( static_cast<uint32_t>( exclusiveScissors_.size() ) ), pExclusiveScissors( exclusiveScissors_.data() )
96936     {
96937     }
96938 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
96939 
96940     PipelineViewportExclusiveScissorStateCreateInfoNV &
96941       operator=( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
96942 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
96943 
operator =VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV96944     PipelineViewportExclusiveScissorStateCreateInfoNV & operator=( VkPipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
96945     {
96946       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV const *>( &rhs );
96947       return *this;
96948     }
96949 
96950 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV96951     VULKAN_HPP_CONSTEXPR_14 PipelineViewportExclusiveScissorStateCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
96952     {
96953       pNext = pNext_;
96954       return *this;
96955     }
96956 
setExclusiveScissorCountVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV96957     VULKAN_HPP_CONSTEXPR_14 PipelineViewportExclusiveScissorStateCreateInfoNV & setExclusiveScissorCount( uint32_t exclusiveScissorCount_ ) VULKAN_HPP_NOEXCEPT
96958     {
96959       exclusiveScissorCount = exclusiveScissorCount_;
96960       return *this;
96961     }
96962 
96963     VULKAN_HPP_CONSTEXPR_14 PipelineViewportExclusiveScissorStateCreateInfoNV &
setPExclusiveScissorsVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV96964       setPExclusiveScissors( const VULKAN_HPP_NAMESPACE::Rect2D * pExclusiveScissors_ ) VULKAN_HPP_NOEXCEPT
96965     {
96966       pExclusiveScissors = pExclusiveScissors_;
96967       return *this;
96968     }
96969 
96970 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
96971     PipelineViewportExclusiveScissorStateCreateInfoNV &
setExclusiveScissorsVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV96972       setExclusiveScissors( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & exclusiveScissors_ ) VULKAN_HPP_NOEXCEPT
96973     {
96974       exclusiveScissorCount = static_cast<uint32_t>( exclusiveScissors_.size() );
96975       pExclusiveScissors    = exclusiveScissors_.data();
96976       return *this;
96977     }
96978 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
96979 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
96980 
operator VkPipelineViewportExclusiveScissorStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV96981     operator VkPipelineViewportExclusiveScissorStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
96982     {
96983       return *reinterpret_cast<const VkPipelineViewportExclusiveScissorStateCreateInfoNV *>( this );
96984     }
96985 
operator VkPipelineViewportExclusiveScissorStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV96986     operator VkPipelineViewportExclusiveScissorStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
96987     {
96988       return *reinterpret_cast<VkPipelineViewportExclusiveScissorStateCreateInfoNV *>( this );
96989     }
96990 
96991 #if defined( VULKAN_HPP_USE_REFLECT )
96992 #  if 14 <= VULKAN_HPP_CPP_VERSION
96993     auto
96994 #  else
96995     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Rect2D * const &>
96996 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV96997       reflect() const VULKAN_HPP_NOEXCEPT
96998     {
96999       return std::tie( sType, pNext, exclusiveScissorCount, pExclusiveScissors );
97000     }
97001 #endif
97002 
97003 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
97004     auto operator<=>( PipelineViewportExclusiveScissorStateCreateInfoNV const & ) const = default;
97005 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV97006     bool operator==( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
97007     {
97008 #  if defined( VULKAN_HPP_USE_REFLECT )
97009       return this->reflect() == rhs.reflect();
97010 #  else
97011       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( exclusiveScissorCount == rhs.exclusiveScissorCount ) &&
97012              ( pExclusiveScissors == rhs.pExclusiveScissors );
97013 #  endif
97014     }
97015 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV97016     bool operator!=( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
97017     {
97018       return !operator==( rhs );
97019     }
97020 #endif
97021 
97022   public:
97023     VULKAN_HPP_NAMESPACE::StructureType  sType                 = StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV;
97024     const void *                         pNext                 = {};
97025     uint32_t                             exclusiveScissorCount = {};
97026     const VULKAN_HPP_NAMESPACE::Rect2D * pExclusiveScissors    = {};
97027   };
97028 
97029   template <>
97030   struct CppType<StructureType, StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV>
97031   {
97032     using Type = PipelineViewportExclusiveScissorStateCreateInfoNV;
97033   };
97034 
97035   struct ShadingRatePaletteNV
97036   {
97037     using NativeType = VkShadingRatePaletteNV;
97038 
97039 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ShadingRatePaletteNVVULKAN_HPP_NAMESPACE::ShadingRatePaletteNV97040     VULKAN_HPP_CONSTEXPR ShadingRatePaletteNV( uint32_t                                                shadingRatePaletteEntryCount_ = {},
97041                                                const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV * pShadingRatePaletteEntries_   = {} ) VULKAN_HPP_NOEXCEPT
97042       : shadingRatePaletteEntryCount{ shadingRatePaletteEntryCount_ }
97043       , pShadingRatePaletteEntries{ pShadingRatePaletteEntries_ }
97044     {
97045     }
97046 
97047     VULKAN_HPP_CONSTEXPR ShadingRatePaletteNV( ShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97048 
ShadingRatePaletteNVVULKAN_HPP_NAMESPACE::ShadingRatePaletteNV97049     ShadingRatePaletteNV( VkShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT
97050       : ShadingRatePaletteNV( *reinterpret_cast<ShadingRatePaletteNV const *>( &rhs ) )
97051     {
97052     }
97053 
97054 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ShadingRatePaletteNVVULKAN_HPP_NAMESPACE::ShadingRatePaletteNV97055     ShadingRatePaletteNV(
97056       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV> const & shadingRatePaletteEntries_ )
97057       : shadingRatePaletteEntryCount( static_cast<uint32_t>( shadingRatePaletteEntries_.size() ) )
97058       , pShadingRatePaletteEntries( shadingRatePaletteEntries_.data() )
97059     {
97060     }
97061 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
97062 
97063     ShadingRatePaletteNV & operator=( ShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97064 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
97065 
operator =VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV97066     ShadingRatePaletteNV & operator=( VkShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT
97067     {
97068       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV const *>( &rhs );
97069       return *this;
97070     }
97071 
97072 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setShadingRatePaletteEntryCountVULKAN_HPP_NAMESPACE::ShadingRatePaletteNV97073     VULKAN_HPP_CONSTEXPR_14 ShadingRatePaletteNV & setShadingRatePaletteEntryCount( uint32_t shadingRatePaletteEntryCount_ ) VULKAN_HPP_NOEXCEPT
97074     {
97075       shadingRatePaletteEntryCount = shadingRatePaletteEntryCount_;
97076       return *this;
97077     }
97078 
97079     VULKAN_HPP_CONSTEXPR_14 ShadingRatePaletteNV &
setPShadingRatePaletteEntriesVULKAN_HPP_NAMESPACE::ShadingRatePaletteNV97080       setPShadingRatePaletteEntries( const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV * pShadingRatePaletteEntries_ ) VULKAN_HPP_NOEXCEPT
97081     {
97082       pShadingRatePaletteEntries = pShadingRatePaletteEntries_;
97083       return *this;
97084     }
97085 
97086 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setShadingRatePaletteEntriesVULKAN_HPP_NAMESPACE::ShadingRatePaletteNV97087     ShadingRatePaletteNV & setShadingRatePaletteEntries(
97088       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV> const & shadingRatePaletteEntries_ )
97089       VULKAN_HPP_NOEXCEPT
97090     {
97091       shadingRatePaletteEntryCount = static_cast<uint32_t>( shadingRatePaletteEntries_.size() );
97092       pShadingRatePaletteEntries   = shadingRatePaletteEntries_.data();
97093       return *this;
97094     }
97095 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
97096 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
97097 
operator VkShadingRatePaletteNV const&VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV97098     operator VkShadingRatePaletteNV const &() const VULKAN_HPP_NOEXCEPT
97099     {
97100       return *reinterpret_cast<const VkShadingRatePaletteNV *>( this );
97101     }
97102 
operator VkShadingRatePaletteNV&VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV97103     operator VkShadingRatePaletteNV &() VULKAN_HPP_NOEXCEPT
97104     {
97105       return *reinterpret_cast<VkShadingRatePaletteNV *>( this );
97106     }
97107 
97108 #if defined( VULKAN_HPP_USE_REFLECT )
97109 #  if 14 <= VULKAN_HPP_CPP_VERSION
97110     auto
97111 #  else
97112     std::tuple<uint32_t const &, const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV * const &>
97113 #  endif
reflectVULKAN_HPP_NAMESPACE::ShadingRatePaletteNV97114       reflect() const VULKAN_HPP_NOEXCEPT
97115     {
97116       return std::tie( shadingRatePaletteEntryCount, pShadingRatePaletteEntries );
97117     }
97118 #endif
97119 
97120 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
97121     auto operator<=>( ShadingRatePaletteNV const & ) const = default;
97122 #else
operator ==VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV97123     bool operator==( ShadingRatePaletteNV const & rhs ) const VULKAN_HPP_NOEXCEPT
97124     {
97125 #  if defined( VULKAN_HPP_USE_REFLECT )
97126       return this->reflect() == rhs.reflect();
97127 #  else
97128       return ( shadingRatePaletteEntryCount == rhs.shadingRatePaletteEntryCount ) && ( pShadingRatePaletteEntries == rhs.pShadingRatePaletteEntries );
97129 #  endif
97130     }
97131 
operator !=VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV97132     bool operator!=( ShadingRatePaletteNV const & rhs ) const VULKAN_HPP_NOEXCEPT
97133     {
97134       return !operator==( rhs );
97135     }
97136 #endif
97137 
97138   public:
97139     uint32_t                                                shadingRatePaletteEntryCount = {};
97140     const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV * pShadingRatePaletteEntries   = {};
97141   };
97142 
97143   struct PipelineViewportShadingRateImageStateCreateInfoNV
97144   {
97145     using NativeType = VkPipelineViewportShadingRateImageStateCreateInfoNV;
97146 
97147     static const bool                                  allowDuplicate = false;
97148     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV;
97149 
97150 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineViewportShadingRateImageStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV97151     VULKAN_HPP_CONSTEXPR PipelineViewportShadingRateImageStateCreateInfoNV( VULKAN_HPP_NAMESPACE::Bool32                       shadingRateImageEnable_ = {},
97152                                                                             uint32_t                                           viewportCount_          = {},
97153                                                                             const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV * pShadingRatePalettes_   = {},
97154                                                                             const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
97155       : pNext{ pNext_ }
97156       , shadingRateImageEnable{ shadingRateImageEnable_ }
97157       , viewportCount{ viewportCount_ }
97158       , pShadingRatePalettes{ pShadingRatePalettes_ }
97159     {
97160     }
97161 
97162     VULKAN_HPP_CONSTEXPR
97163       PipelineViewportShadingRateImageStateCreateInfoNV( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97164 
PipelineViewportShadingRateImageStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV97165     PipelineViewportShadingRateImageStateCreateInfoNV( VkPipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
97166       : PipelineViewportShadingRateImageStateCreateInfoNV( *reinterpret_cast<PipelineViewportShadingRateImageStateCreateInfoNV const *>( &rhs ) )
97167     {
97168     }
97169 
97170 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineViewportShadingRateImageStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV97171     PipelineViewportShadingRateImageStateCreateInfoNV(
97172       VULKAN_HPP_NAMESPACE::Bool32                                                                            shadingRateImageEnable_,
97173       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV> const & shadingRatePalettes_,
97174       const void *                                                                                            pNext_ = nullptr )
97175       : pNext( pNext_ )
97176       , shadingRateImageEnable( shadingRateImageEnable_ )
97177       , viewportCount( static_cast<uint32_t>( shadingRatePalettes_.size() ) )
97178       , pShadingRatePalettes( shadingRatePalettes_.data() )
97179     {
97180     }
97181 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
97182 
97183     PipelineViewportShadingRateImageStateCreateInfoNV &
97184       operator=( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97185 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
97186 
operator =VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV97187     PipelineViewportShadingRateImageStateCreateInfoNV & operator=( VkPipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
97188     {
97189       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV const *>( &rhs );
97190       return *this;
97191     }
97192 
97193 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV97194     VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
97195     {
97196       pNext = pNext_;
97197       return *this;
97198     }
97199 
97200     VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV &
setShadingRateImageEnableVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV97201       setShadingRateImageEnable( VULKAN_HPP_NAMESPACE::Bool32 shadingRateImageEnable_ ) VULKAN_HPP_NOEXCEPT
97202     {
97203       shadingRateImageEnable = shadingRateImageEnable_;
97204       return *this;
97205     }
97206 
setViewportCountVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV97207     VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV & setViewportCount( uint32_t viewportCount_ ) VULKAN_HPP_NOEXCEPT
97208     {
97209       viewportCount = viewportCount_;
97210       return *this;
97211     }
97212 
97213     VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV &
setPShadingRatePalettesVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV97214       setPShadingRatePalettes( const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV * pShadingRatePalettes_ ) VULKAN_HPP_NOEXCEPT
97215     {
97216       pShadingRatePalettes = pShadingRatePalettes_;
97217       return *this;
97218     }
97219 
97220 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setShadingRatePalettesVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV97221     PipelineViewportShadingRateImageStateCreateInfoNV & setShadingRatePalettes(
97222       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV> const & shadingRatePalettes_ ) VULKAN_HPP_NOEXCEPT
97223     {
97224       viewportCount        = static_cast<uint32_t>( shadingRatePalettes_.size() );
97225       pShadingRatePalettes = shadingRatePalettes_.data();
97226       return *this;
97227     }
97228 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
97229 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
97230 
operator VkPipelineViewportShadingRateImageStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV97231     operator VkPipelineViewportShadingRateImageStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
97232     {
97233       return *reinterpret_cast<const VkPipelineViewportShadingRateImageStateCreateInfoNV *>( this );
97234     }
97235 
operator VkPipelineViewportShadingRateImageStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV97236     operator VkPipelineViewportShadingRateImageStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
97237     {
97238       return *reinterpret_cast<VkPipelineViewportShadingRateImageStateCreateInfoNV *>( this );
97239     }
97240 
97241 #if defined( VULKAN_HPP_USE_REFLECT )
97242 #  if 14 <= VULKAN_HPP_CPP_VERSION
97243     auto
97244 #  else
97245     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
97246                const void * const &,
97247                VULKAN_HPP_NAMESPACE::Bool32 const &,
97248                uint32_t const &,
97249                const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV * const &>
97250 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV97251       reflect() const VULKAN_HPP_NOEXCEPT
97252     {
97253       return std::tie( sType, pNext, shadingRateImageEnable, viewportCount, pShadingRatePalettes );
97254     }
97255 #endif
97256 
97257 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
97258     auto operator<=>( PipelineViewportShadingRateImageStateCreateInfoNV const & ) const = default;
97259 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV97260     bool operator==( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
97261     {
97262 #  if defined( VULKAN_HPP_USE_REFLECT )
97263       return this->reflect() == rhs.reflect();
97264 #  else
97265       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shadingRateImageEnable == rhs.shadingRateImageEnable ) &&
97266              ( viewportCount == rhs.viewportCount ) && ( pShadingRatePalettes == rhs.pShadingRatePalettes );
97267 #  endif
97268     }
97269 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV97270     bool operator!=( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
97271     {
97272       return !operator==( rhs );
97273     }
97274 #endif
97275 
97276   public:
97277     VULKAN_HPP_NAMESPACE::StructureType                sType                  = StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV;
97278     const void *                                       pNext                  = {};
97279     VULKAN_HPP_NAMESPACE::Bool32                       shadingRateImageEnable = {};
97280     uint32_t                                           viewportCount          = {};
97281     const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV * pShadingRatePalettes   = {};
97282   };
97283 
97284   template <>
97285   struct CppType<StructureType, StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV>
97286   {
97287     using Type = PipelineViewportShadingRateImageStateCreateInfoNV;
97288   };
97289 
97290   struct ViewportSwizzleNV
97291   {
97292     using NativeType = VkViewportSwizzleNV;
97293 
97294 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ViewportSwizzleNVVULKAN_HPP_NAMESPACE::ViewportSwizzleNV97295     VULKAN_HPP_CONSTEXPR ViewportSwizzleNV(
97296       VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV x_ = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX,
97297       VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV y_ = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX,
97298       VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV z_ = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX,
97299       VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV w_ = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX ) VULKAN_HPP_NOEXCEPT
97300       : x{ x_ }
97301       , y{ y_ }
97302       , z{ z_ }
97303       , w{ w_ }
97304     {
97305     }
97306 
97307     VULKAN_HPP_CONSTEXPR ViewportSwizzleNV( ViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97308 
ViewportSwizzleNVVULKAN_HPP_NAMESPACE::ViewportSwizzleNV97309     ViewportSwizzleNV( VkViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT : ViewportSwizzleNV( *reinterpret_cast<ViewportSwizzleNV const *>( &rhs ) ) {}
97310 
97311     ViewportSwizzleNV & operator=( ViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97312 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
97313 
operator =VULKAN_HPP_NAMESPACE::ViewportSwizzleNV97314     ViewportSwizzleNV & operator=( VkViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT
97315     {
97316       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ViewportSwizzleNV const *>( &rhs );
97317       return *this;
97318     }
97319 
97320 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::ViewportSwizzleNV97321     VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV & setX( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV x_ ) VULKAN_HPP_NOEXCEPT
97322     {
97323       x = x_;
97324       return *this;
97325     }
97326 
setYVULKAN_HPP_NAMESPACE::ViewportSwizzleNV97327     VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV & setY( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV y_ ) VULKAN_HPP_NOEXCEPT
97328     {
97329       y = y_;
97330       return *this;
97331     }
97332 
setZVULKAN_HPP_NAMESPACE::ViewportSwizzleNV97333     VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV & setZ( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV z_ ) VULKAN_HPP_NOEXCEPT
97334     {
97335       z = z_;
97336       return *this;
97337     }
97338 
setWVULKAN_HPP_NAMESPACE::ViewportSwizzleNV97339     VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV & setW( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV w_ ) VULKAN_HPP_NOEXCEPT
97340     {
97341       w = w_;
97342       return *this;
97343     }
97344 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
97345 
operator VkViewportSwizzleNV const&VULKAN_HPP_NAMESPACE::ViewportSwizzleNV97346     operator VkViewportSwizzleNV const &() const VULKAN_HPP_NOEXCEPT
97347     {
97348       return *reinterpret_cast<const VkViewportSwizzleNV *>( this );
97349     }
97350 
operator VkViewportSwizzleNV&VULKAN_HPP_NAMESPACE::ViewportSwizzleNV97351     operator VkViewportSwizzleNV &() VULKAN_HPP_NOEXCEPT
97352     {
97353       return *reinterpret_cast<VkViewportSwizzleNV *>( this );
97354     }
97355 
97356 #if defined( VULKAN_HPP_USE_REFLECT )
97357 #  if 14 <= VULKAN_HPP_CPP_VERSION
97358     auto
97359 #  else
97360     std::tuple<VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV const &,
97361                VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV const &,
97362                VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV const &,
97363                VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV const &>
97364 #  endif
reflectVULKAN_HPP_NAMESPACE::ViewportSwizzleNV97365       reflect() const VULKAN_HPP_NOEXCEPT
97366     {
97367       return std::tie( x, y, z, w );
97368     }
97369 #endif
97370 
97371 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
97372     auto operator<=>( ViewportSwizzleNV const & ) const = default;
97373 #else
operator ==VULKAN_HPP_NAMESPACE::ViewportSwizzleNV97374     bool operator==( ViewportSwizzleNV const & rhs ) const VULKAN_HPP_NOEXCEPT
97375     {
97376 #  if defined( VULKAN_HPP_USE_REFLECT )
97377       return this->reflect() == rhs.reflect();
97378 #  else
97379       return ( x == rhs.x ) && ( y == rhs.y ) && ( z == rhs.z ) && ( w == rhs.w );
97380 #  endif
97381     }
97382 
operator !=VULKAN_HPP_NAMESPACE::ViewportSwizzleNV97383     bool operator!=( ViewportSwizzleNV const & rhs ) const VULKAN_HPP_NOEXCEPT
97384     {
97385       return !operator==( rhs );
97386     }
97387 #endif
97388 
97389   public:
97390     VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV x = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX;
97391     VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV y = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX;
97392     VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV z = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX;
97393     VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV w = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX;
97394   };
97395 
97396   struct PipelineViewportSwizzleStateCreateInfoNV
97397   {
97398     using NativeType = VkPipelineViewportSwizzleStateCreateInfoNV;
97399 
97400     static const bool                                  allowDuplicate = false;
97401     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineViewportSwizzleStateCreateInfoNV;
97402 
97403 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineViewportSwizzleStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV97404     VULKAN_HPP_CONSTEXPR PipelineViewportSwizzleStateCreateInfoNV( VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV flags_             = {},
97405                                                                    uint32_t                                                        viewportCount_     = {},
97406                                                                    const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV *                 pViewportSwizzles_ = {},
97407                                                                    const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
97408       : pNext{ pNext_ }
97409       , flags{ flags_ }
97410       , viewportCount{ viewportCount_ }
97411       , pViewportSwizzles{ pViewportSwizzles_ }
97412     {
97413     }
97414 
97415     VULKAN_HPP_CONSTEXPR PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97416 
PipelineViewportSwizzleStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV97417     PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
97418       : PipelineViewportSwizzleStateCreateInfoNV( *reinterpret_cast<PipelineViewportSwizzleStateCreateInfoNV const *>( &rhs ) )
97419     {
97420     }
97421 
97422 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineViewportSwizzleStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV97423     PipelineViewportSwizzleStateCreateInfoNV(
97424       VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV                                      flags_,
97425       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV> const & viewportSwizzles_,
97426       const void *                                                                                         pNext_ = nullptr )
97427       : pNext( pNext_ ), flags( flags_ ), viewportCount( static_cast<uint32_t>( viewportSwizzles_.size() ) ), pViewportSwizzles( viewportSwizzles_.data() )
97428     {
97429     }
97430 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
97431 
97432     PipelineViewportSwizzleStateCreateInfoNV & operator=( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97433 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
97434 
operator =VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV97435     PipelineViewportSwizzleStateCreateInfoNV & operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
97436     {
97437       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV const *>( &rhs );
97438       return *this;
97439     }
97440 
97441 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV97442     VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
97443     {
97444       pNext = pNext_;
97445       return *this;
97446     }
97447 
97448     VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV &
setFlagsVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV97449       setFlags( VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT
97450     {
97451       flags = flags_;
97452       return *this;
97453     }
97454 
setViewportCountVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV97455     VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV & setViewportCount( uint32_t viewportCount_ ) VULKAN_HPP_NOEXCEPT
97456     {
97457       viewportCount = viewportCount_;
97458       return *this;
97459     }
97460 
97461     VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV &
setPViewportSwizzlesVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV97462       setPViewportSwizzles( const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV * pViewportSwizzles_ ) VULKAN_HPP_NOEXCEPT
97463     {
97464       pViewportSwizzles = pViewportSwizzles_;
97465       return *this;
97466     }
97467 
97468 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setViewportSwizzlesVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV97469     PipelineViewportSwizzleStateCreateInfoNV & setViewportSwizzles(
97470       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV> const & viewportSwizzles_ ) VULKAN_HPP_NOEXCEPT
97471     {
97472       viewportCount     = static_cast<uint32_t>( viewportSwizzles_.size() );
97473       pViewportSwizzles = viewportSwizzles_.data();
97474       return *this;
97475     }
97476 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
97477 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
97478 
operator VkPipelineViewportSwizzleStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV97479     operator VkPipelineViewportSwizzleStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
97480     {
97481       return *reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV *>( this );
97482     }
97483 
operator VkPipelineViewportSwizzleStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV97484     operator VkPipelineViewportSwizzleStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
97485     {
97486       return *reinterpret_cast<VkPipelineViewportSwizzleStateCreateInfoNV *>( this );
97487     }
97488 
97489 #if defined( VULKAN_HPP_USE_REFLECT )
97490 #  if 14 <= VULKAN_HPP_CPP_VERSION
97491     auto
97492 #  else
97493     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
97494                const void * const &,
97495                VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV const &,
97496                uint32_t const &,
97497                const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV * const &>
97498 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV97499       reflect() const VULKAN_HPP_NOEXCEPT
97500     {
97501       return std::tie( sType, pNext, flags, viewportCount, pViewportSwizzles );
97502     }
97503 #endif
97504 
97505 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
97506     auto operator<=>( PipelineViewportSwizzleStateCreateInfoNV const & ) const = default;
97507 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV97508     bool operator==( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
97509     {
97510 #  if defined( VULKAN_HPP_USE_REFLECT )
97511       return this->reflect() == rhs.reflect();
97512 #  else
97513       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( viewportCount == rhs.viewportCount ) &&
97514              ( pViewportSwizzles == rhs.pViewportSwizzles );
97515 #  endif
97516     }
97517 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV97518     bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
97519     {
97520       return !operator==( rhs );
97521     }
97522 #endif
97523 
97524   public:
97525     VULKAN_HPP_NAMESPACE::StructureType                             sType             = StructureType::ePipelineViewportSwizzleStateCreateInfoNV;
97526     const void *                                                    pNext             = {};
97527     VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV flags             = {};
97528     uint32_t                                                        viewportCount     = {};
97529     const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV *                 pViewportSwizzles = {};
97530   };
97531 
97532   template <>
97533   struct CppType<StructureType, StructureType::ePipelineViewportSwizzleStateCreateInfoNV>
97534   {
97535     using Type = PipelineViewportSwizzleStateCreateInfoNV;
97536   };
97537 
97538   struct ViewportWScalingNV
97539   {
97540     using NativeType = VkViewportWScalingNV;
97541 
97542 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ViewportWScalingNVVULKAN_HPP_NAMESPACE::ViewportWScalingNV97543     VULKAN_HPP_CONSTEXPR ViewportWScalingNV( float xcoeff_ = {}, float ycoeff_ = {} ) VULKAN_HPP_NOEXCEPT
97544       : xcoeff{ xcoeff_ }
97545       , ycoeff{ ycoeff_ }
97546     {
97547     }
97548 
97549     VULKAN_HPP_CONSTEXPR ViewportWScalingNV( ViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97550 
ViewportWScalingNVVULKAN_HPP_NAMESPACE::ViewportWScalingNV97551     ViewportWScalingNV( VkViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT : ViewportWScalingNV( *reinterpret_cast<ViewportWScalingNV const *>( &rhs ) ) {}
97552 
97553     ViewportWScalingNV & operator=( ViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97554 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
97555 
operator =VULKAN_HPP_NAMESPACE::ViewportWScalingNV97556     ViewportWScalingNV & operator=( VkViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT
97557     {
97558       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ViewportWScalingNV const *>( &rhs );
97559       return *this;
97560     }
97561 
97562 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXcoeffVULKAN_HPP_NAMESPACE::ViewportWScalingNV97563     VULKAN_HPP_CONSTEXPR_14 ViewportWScalingNV & setXcoeff( float xcoeff_ ) VULKAN_HPP_NOEXCEPT
97564     {
97565       xcoeff = xcoeff_;
97566       return *this;
97567     }
97568 
setYcoeffVULKAN_HPP_NAMESPACE::ViewportWScalingNV97569     VULKAN_HPP_CONSTEXPR_14 ViewportWScalingNV & setYcoeff( float ycoeff_ ) VULKAN_HPP_NOEXCEPT
97570     {
97571       ycoeff = ycoeff_;
97572       return *this;
97573     }
97574 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
97575 
operator VkViewportWScalingNV const&VULKAN_HPP_NAMESPACE::ViewportWScalingNV97576     operator VkViewportWScalingNV const &() const VULKAN_HPP_NOEXCEPT
97577     {
97578       return *reinterpret_cast<const VkViewportWScalingNV *>( this );
97579     }
97580 
operator VkViewportWScalingNV&VULKAN_HPP_NAMESPACE::ViewportWScalingNV97581     operator VkViewportWScalingNV &() VULKAN_HPP_NOEXCEPT
97582     {
97583       return *reinterpret_cast<VkViewportWScalingNV *>( this );
97584     }
97585 
97586 #if defined( VULKAN_HPP_USE_REFLECT )
97587 #  if 14 <= VULKAN_HPP_CPP_VERSION
97588     auto
97589 #  else
97590     std::tuple<float const &, float const &>
97591 #  endif
reflectVULKAN_HPP_NAMESPACE::ViewportWScalingNV97592       reflect() const VULKAN_HPP_NOEXCEPT
97593     {
97594       return std::tie( xcoeff, ycoeff );
97595     }
97596 #endif
97597 
97598 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
97599     auto operator<=>( ViewportWScalingNV const & ) const = default;
97600 #else
operator ==VULKAN_HPP_NAMESPACE::ViewportWScalingNV97601     bool operator==( ViewportWScalingNV const & rhs ) const VULKAN_HPP_NOEXCEPT
97602     {
97603 #  if defined( VULKAN_HPP_USE_REFLECT )
97604       return this->reflect() == rhs.reflect();
97605 #  else
97606       return ( xcoeff == rhs.xcoeff ) && ( ycoeff == rhs.ycoeff );
97607 #  endif
97608     }
97609 
operator !=VULKAN_HPP_NAMESPACE::ViewportWScalingNV97610     bool operator!=( ViewportWScalingNV const & rhs ) const VULKAN_HPP_NOEXCEPT
97611     {
97612       return !operator==( rhs );
97613     }
97614 #endif
97615 
97616   public:
97617     float xcoeff = {};
97618     float ycoeff = {};
97619   };
97620 
97621   struct PipelineViewportWScalingStateCreateInfoNV
97622   {
97623     using NativeType = VkPipelineViewportWScalingStateCreateInfoNV;
97624 
97625     static const bool                                  allowDuplicate = false;
97626     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePipelineViewportWScalingStateCreateInfoNV;
97627 
97628 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineViewportWScalingStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV97629     VULKAN_HPP_CONSTEXPR PipelineViewportWScalingStateCreateInfoNV( VULKAN_HPP_NAMESPACE::Bool32                     viewportWScalingEnable_ = {},
97630                                                                     uint32_t                                         viewportCount_          = {},
97631                                                                     const VULKAN_HPP_NAMESPACE::ViewportWScalingNV * pViewportWScalings_     = {},
97632                                                                     const void *                                     pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
97633       : pNext{ pNext_ }
97634       , viewportWScalingEnable{ viewportWScalingEnable_ }
97635       , viewportCount{ viewportCount_ }
97636       , pViewportWScalings{ pViewportWScalings_ }
97637     {
97638     }
97639 
97640     VULKAN_HPP_CONSTEXPR PipelineViewportWScalingStateCreateInfoNV( PipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97641 
PipelineViewportWScalingStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV97642     PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
97643       : PipelineViewportWScalingStateCreateInfoNV( *reinterpret_cast<PipelineViewportWScalingStateCreateInfoNV const *>( &rhs ) )
97644     {
97645     }
97646 
97647 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineViewportWScalingStateCreateInfoNVVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV97648     PipelineViewportWScalingStateCreateInfoNV(
97649       VULKAN_HPP_NAMESPACE::Bool32                                                                          viewportWScalingEnable_,
97650       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ViewportWScalingNV> const & viewportWScalings_,
97651       const void *                                                                                          pNext_ = nullptr )
97652       : pNext( pNext_ )
97653       , viewportWScalingEnable( viewportWScalingEnable_ )
97654       , viewportCount( static_cast<uint32_t>( viewportWScalings_.size() ) )
97655       , pViewportWScalings( viewportWScalings_.data() )
97656     {
97657     }
97658 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
97659 
97660     PipelineViewportWScalingStateCreateInfoNV & operator=( PipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97661 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
97662 
operator =VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV97663     PipelineViewportWScalingStateCreateInfoNV & operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
97664     {
97665       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV const *>( &rhs );
97666       return *this;
97667     }
97668 
97669 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV97670     VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
97671     {
97672       pNext = pNext_;
97673       return *this;
97674     }
97675 
97676     VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV &
setViewportWScalingEnableVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV97677       setViewportWScalingEnable( VULKAN_HPP_NAMESPACE::Bool32 viewportWScalingEnable_ ) VULKAN_HPP_NOEXCEPT
97678     {
97679       viewportWScalingEnable = viewportWScalingEnable_;
97680       return *this;
97681     }
97682 
setViewportCountVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV97683     VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV & setViewportCount( uint32_t viewportCount_ ) VULKAN_HPP_NOEXCEPT
97684     {
97685       viewportCount = viewportCount_;
97686       return *this;
97687     }
97688 
97689     VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV &
setPViewportWScalingsVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV97690       setPViewportWScalings( const VULKAN_HPP_NAMESPACE::ViewportWScalingNV * pViewportWScalings_ ) VULKAN_HPP_NOEXCEPT
97691     {
97692       pViewportWScalings = pViewportWScalings_;
97693       return *this;
97694     }
97695 
97696 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setViewportWScalingsVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV97697     PipelineViewportWScalingStateCreateInfoNV & setViewportWScalings(
97698       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ViewportWScalingNV> const & viewportWScalings_ ) VULKAN_HPP_NOEXCEPT
97699     {
97700       viewportCount      = static_cast<uint32_t>( viewportWScalings_.size() );
97701       pViewportWScalings = viewportWScalings_.data();
97702       return *this;
97703     }
97704 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
97705 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
97706 
operator VkPipelineViewportWScalingStateCreateInfoNV const&VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV97707     operator VkPipelineViewportWScalingStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
97708     {
97709       return *reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV *>( this );
97710     }
97711 
operator VkPipelineViewportWScalingStateCreateInfoNV&VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV97712     operator VkPipelineViewportWScalingStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT
97713     {
97714       return *reinterpret_cast<VkPipelineViewportWScalingStateCreateInfoNV *>( this );
97715     }
97716 
97717 #if defined( VULKAN_HPP_USE_REFLECT )
97718 #  if 14 <= VULKAN_HPP_CPP_VERSION
97719     auto
97720 #  else
97721     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
97722                const void * const &,
97723                VULKAN_HPP_NAMESPACE::Bool32 const &,
97724                uint32_t const &,
97725                const VULKAN_HPP_NAMESPACE::ViewportWScalingNV * const &>
97726 #  endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV97727       reflect() const VULKAN_HPP_NOEXCEPT
97728     {
97729       return std::tie( sType, pNext, viewportWScalingEnable, viewportCount, pViewportWScalings );
97730     }
97731 #endif
97732 
97733 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
97734     auto operator<=>( PipelineViewportWScalingStateCreateInfoNV const & ) const = default;
97735 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV97736     bool operator==( PipelineViewportWScalingStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
97737     {
97738 #  if defined( VULKAN_HPP_USE_REFLECT )
97739       return this->reflect() == rhs.reflect();
97740 #  else
97741       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( viewportWScalingEnable == rhs.viewportWScalingEnable ) &&
97742              ( viewportCount == rhs.viewportCount ) && ( pViewportWScalings == rhs.pViewportWScalings );
97743 #  endif
97744     }
97745 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV97746     bool operator!=( PipelineViewportWScalingStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
97747     {
97748       return !operator==( rhs );
97749     }
97750 #endif
97751 
97752   public:
97753     VULKAN_HPP_NAMESPACE::StructureType              sType                  = StructureType::ePipelineViewportWScalingStateCreateInfoNV;
97754     const void *                                     pNext                  = {};
97755     VULKAN_HPP_NAMESPACE::Bool32                     viewportWScalingEnable = {};
97756     uint32_t                                         viewportCount          = {};
97757     const VULKAN_HPP_NAMESPACE::ViewportWScalingNV * pViewportWScalings     = {};
97758   };
97759 
97760   template <>
97761   struct CppType<StructureType, StructureType::ePipelineViewportWScalingStateCreateInfoNV>
97762   {
97763     using Type = PipelineViewportWScalingStateCreateInfoNV;
97764   };
97765 
97766 #if defined( VK_USE_PLATFORM_GGP )
97767   struct PresentFrameTokenGGP
97768   {
97769     using NativeType = VkPresentFrameTokenGGP;
97770 
97771     static const bool                                  allowDuplicate = false;
97772     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePresentFrameTokenGGP;
97773 
97774 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PresentFrameTokenGGPVULKAN_HPP_NAMESPACE::PresentFrameTokenGGP97775     VULKAN_HPP_CONSTEXPR PresentFrameTokenGGP( GgpFrameToken frameToken_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
97776       : pNext{ pNext_ }
97777       , frameToken{ frameToken_ }
97778     {
97779     }
97780 
97781     VULKAN_HPP_CONSTEXPR PresentFrameTokenGGP( PresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97782 
PresentFrameTokenGGPVULKAN_HPP_NAMESPACE::PresentFrameTokenGGP97783     PresentFrameTokenGGP( VkPresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT
97784       : PresentFrameTokenGGP( *reinterpret_cast<PresentFrameTokenGGP const *>( &rhs ) )
97785     {
97786     }
97787 
97788     PresentFrameTokenGGP & operator=( PresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97789 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
97790 
operator =VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP97791     PresentFrameTokenGGP & operator=( VkPresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT
97792     {
97793       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP const *>( &rhs );
97794       return *this;
97795     }
97796 
97797 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PresentFrameTokenGGP97798     VULKAN_HPP_CONSTEXPR_14 PresentFrameTokenGGP & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
97799     {
97800       pNext = pNext_;
97801       return *this;
97802     }
97803 
setFrameTokenVULKAN_HPP_NAMESPACE::PresentFrameTokenGGP97804     VULKAN_HPP_CONSTEXPR_14 PresentFrameTokenGGP & setFrameToken( GgpFrameToken frameToken_ ) VULKAN_HPP_NOEXCEPT
97805     {
97806       frameToken = frameToken_;
97807       return *this;
97808     }
97809 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
97810 
operator VkPresentFrameTokenGGP const&VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP97811     operator VkPresentFrameTokenGGP const &() const VULKAN_HPP_NOEXCEPT
97812     {
97813       return *reinterpret_cast<const VkPresentFrameTokenGGP *>( this );
97814     }
97815 
operator VkPresentFrameTokenGGP&VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP97816     operator VkPresentFrameTokenGGP &() VULKAN_HPP_NOEXCEPT
97817     {
97818       return *reinterpret_cast<VkPresentFrameTokenGGP *>( this );
97819     }
97820 
97821 #  if defined( VULKAN_HPP_USE_REFLECT )
97822 #    if 14 <= VULKAN_HPP_CPP_VERSION
97823     auto
97824 #    else
97825     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, GgpFrameToken const &>
97826 #    endif
reflectVULKAN_HPP_NAMESPACE::PresentFrameTokenGGP97827       reflect() const VULKAN_HPP_NOEXCEPT
97828     {
97829       return std::tie( sType, pNext, frameToken );
97830     }
97831 #  endif
97832 
97833 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP97834     std::strong_ordering operator<=>( PresentFrameTokenGGP const & rhs ) const VULKAN_HPP_NOEXCEPT
97835     {
97836       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
97837         return cmp;
97838       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
97839         return cmp;
97840       if ( auto cmp = memcmp( &frameToken, &rhs.frameToken, sizeof( GgpFrameToken ) ); cmp != 0 )
97841         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
97842 
97843       return std::strong_ordering::equivalent;
97844     }
97845 #  endif
97846 
operator ==VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP97847     bool operator==( PresentFrameTokenGGP const & rhs ) const VULKAN_HPP_NOEXCEPT
97848     {
97849       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &frameToken, &rhs.frameToken, sizeof( GgpFrameToken ) ) == 0 );
97850     }
97851 
operator !=VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP97852     bool operator!=( PresentFrameTokenGGP const & rhs ) const VULKAN_HPP_NOEXCEPT
97853     {
97854       return !operator==( rhs );
97855     }
97856 
97857   public:
97858     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::ePresentFrameTokenGGP;
97859     const void *                        pNext      = {};
97860     GgpFrameToken                       frameToken = {};
97861   };
97862 
97863   template <>
97864   struct CppType<StructureType, StructureType::ePresentFrameTokenGGP>
97865   {
97866     using Type = PresentFrameTokenGGP;
97867   };
97868 #endif /*VK_USE_PLATFORM_GGP*/
97869 
97870   struct PresentIdKHR
97871   {
97872     using NativeType = VkPresentIdKHR;
97873 
97874     static const bool                                  allowDuplicate = false;
97875     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePresentIdKHR;
97876 
97877 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PresentIdKHRVULKAN_HPP_NAMESPACE::PresentIdKHR97878     VULKAN_HPP_CONSTEXPR PresentIdKHR( uint32_t swapchainCount_ = {}, const uint64_t * pPresentIds_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
97879       : pNext{ pNext_ }
97880       , swapchainCount{ swapchainCount_ }
97881       , pPresentIds{ pPresentIds_ }
97882     {
97883     }
97884 
97885     VULKAN_HPP_CONSTEXPR PresentIdKHR( PresentIdKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97886 
PresentIdKHRVULKAN_HPP_NAMESPACE::PresentIdKHR97887     PresentIdKHR( VkPresentIdKHR const & rhs ) VULKAN_HPP_NOEXCEPT : PresentIdKHR( *reinterpret_cast<PresentIdKHR const *>( &rhs ) ) {}
97888 
97889 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PresentIdKHRVULKAN_HPP_NAMESPACE::PresentIdKHR97890     PresentIdKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & presentIds_, const void * pNext_ = nullptr )
97891       : pNext( pNext_ ), swapchainCount( static_cast<uint32_t>( presentIds_.size() ) ), pPresentIds( presentIds_.data() )
97892     {
97893     }
97894 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
97895 
97896     PresentIdKHR & operator=( PresentIdKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
97897 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
97898 
operator =VULKAN_HPP_NAMESPACE::PresentIdKHR97899     PresentIdKHR & operator=( VkPresentIdKHR const & rhs ) VULKAN_HPP_NOEXCEPT
97900     {
97901       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentIdKHR const *>( &rhs );
97902       return *this;
97903     }
97904 
97905 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PresentIdKHR97906     VULKAN_HPP_CONSTEXPR_14 PresentIdKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
97907     {
97908       pNext = pNext_;
97909       return *this;
97910     }
97911 
setSwapchainCountVULKAN_HPP_NAMESPACE::PresentIdKHR97912     VULKAN_HPP_CONSTEXPR_14 PresentIdKHR & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
97913     {
97914       swapchainCount = swapchainCount_;
97915       return *this;
97916     }
97917 
setPPresentIdsVULKAN_HPP_NAMESPACE::PresentIdKHR97918     VULKAN_HPP_CONSTEXPR_14 PresentIdKHR & setPPresentIds( const uint64_t * pPresentIds_ ) VULKAN_HPP_NOEXCEPT
97919     {
97920       pPresentIds = pPresentIds_;
97921       return *this;
97922     }
97923 
97924 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPresentIdsVULKAN_HPP_NAMESPACE::PresentIdKHR97925     PresentIdKHR & setPresentIds( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & presentIds_ ) VULKAN_HPP_NOEXCEPT
97926     {
97927       swapchainCount = static_cast<uint32_t>( presentIds_.size() );
97928       pPresentIds    = presentIds_.data();
97929       return *this;
97930     }
97931 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
97932 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
97933 
operator VkPresentIdKHR const&VULKAN_HPP_NAMESPACE::PresentIdKHR97934     operator VkPresentIdKHR const &() const VULKAN_HPP_NOEXCEPT
97935     {
97936       return *reinterpret_cast<const VkPresentIdKHR *>( this );
97937     }
97938 
operator VkPresentIdKHR&VULKAN_HPP_NAMESPACE::PresentIdKHR97939     operator VkPresentIdKHR &() VULKAN_HPP_NOEXCEPT
97940     {
97941       return *reinterpret_cast<VkPresentIdKHR *>( this );
97942     }
97943 
97944 #if defined( VULKAN_HPP_USE_REFLECT )
97945 #  if 14 <= VULKAN_HPP_CPP_VERSION
97946     auto
97947 #  else
97948     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const uint64_t * const &>
97949 #  endif
reflectVULKAN_HPP_NAMESPACE::PresentIdKHR97950       reflect() const VULKAN_HPP_NOEXCEPT
97951     {
97952       return std::tie( sType, pNext, swapchainCount, pPresentIds );
97953     }
97954 #endif
97955 
97956 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
97957     auto operator<=>( PresentIdKHR const & ) const = default;
97958 #else
operator ==VULKAN_HPP_NAMESPACE::PresentIdKHR97959     bool operator==( PresentIdKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
97960     {
97961 #  if defined( VULKAN_HPP_USE_REFLECT )
97962       return this->reflect() == rhs.reflect();
97963 #  else
97964       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && ( pPresentIds == rhs.pPresentIds );
97965 #  endif
97966     }
97967 
operator !=VULKAN_HPP_NAMESPACE::PresentIdKHR97968     bool operator!=( PresentIdKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
97969     {
97970       return !operator==( rhs );
97971     }
97972 #endif
97973 
97974   public:
97975     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::ePresentIdKHR;
97976     const void *                        pNext          = {};
97977     uint32_t                            swapchainCount = {};
97978     const uint64_t *                    pPresentIds    = {};
97979   };
97980 
97981   template <>
97982   struct CppType<StructureType, StructureType::ePresentIdKHR>
97983   {
97984     using Type = PresentIdKHR;
97985   };
97986 
97987   struct PresentInfoKHR
97988   {
97989     using NativeType = VkPresentInfoKHR;
97990 
97991     static const bool                                  allowDuplicate = false;
97992     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePresentInfoKHR;
97993 
97994 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PresentInfoKHRVULKAN_HPP_NAMESPACE::PresentInfoKHR97995     VULKAN_HPP_CONSTEXPR PresentInfoKHR( uint32_t                                   waitSemaphoreCount_ = {},
97996                                          const VULKAN_HPP_NAMESPACE::Semaphore *    pWaitSemaphores_    = {},
97997                                          uint32_t                                   swapchainCount_     = {},
97998                                          const VULKAN_HPP_NAMESPACE::SwapchainKHR * pSwapchains_        = {},
97999                                          const uint32_t *                           pImageIndices_      = {},
98000                                          VULKAN_HPP_NAMESPACE::Result *             pResults_           = {},
98001                                          const void *                               pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
98002       : pNext{ pNext_ }
98003       , waitSemaphoreCount{ waitSemaphoreCount_ }
98004       , pWaitSemaphores{ pWaitSemaphores_ }
98005       , swapchainCount{ swapchainCount_ }
98006       , pSwapchains{ pSwapchains_ }
98007       , pImageIndices{ pImageIndices_ }
98008       , pResults{ pResults_ }
98009     {
98010     }
98011 
98012     VULKAN_HPP_CONSTEXPR PresentInfoKHR( PresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98013 
PresentInfoKHRVULKAN_HPP_NAMESPACE::PresentInfoKHR98014     PresentInfoKHR( VkPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : PresentInfoKHR( *reinterpret_cast<PresentInfoKHR const *>( &rhs ) ) {}
98015 
98016 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PresentInfoKHRVULKAN_HPP_NAMESPACE::PresentInfoKHR98017     PresentInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const &    waitSemaphores_,
98018                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SwapchainKHR> const & swapchains_   = {},
98019                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &                           imageIndices_ = {},
98020                     VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::Result> const &             results_      = {},
98021                     const void *                                                                                    pNext_        = nullptr )
98022       : pNext( pNext_ )
98023       , waitSemaphoreCount( static_cast<uint32_t>( waitSemaphores_.size() ) )
98024       , pWaitSemaphores( waitSemaphores_.data() )
98025       , swapchainCount( static_cast<uint32_t>( swapchains_.size() ) )
98026       , pSwapchains( swapchains_.data() )
98027       , pImageIndices( imageIndices_.data() )
98028       , pResults( results_.data() )
98029     {
98030 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
98031       VULKAN_HPP_ASSERT( swapchains_.size() == imageIndices_.size() );
98032       VULKAN_HPP_ASSERT( results_.empty() || ( swapchains_.size() == results_.size() ) );
98033       VULKAN_HPP_ASSERT( results_.empty() || ( imageIndices_.size() == results_.size() ) );
98034 #    else
98035       if ( swapchains_.size() != imageIndices_.size() )
98036       {
98037         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::PresentInfoKHR::PresentInfoKHR: swapchains_.size() != imageIndices_.size()" );
98038       }
98039       if ( !results_.empty() && ( swapchains_.size() != results_.size() ) )
98040       {
98041         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::PresentInfoKHR::PresentInfoKHR: !results_.empty() && ( swapchains_.size() != results_.size() )" );
98042       }
98043       if ( !results_.empty() && ( imageIndices_.size() != results_.size() ) )
98044       {
98045         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::PresentInfoKHR::PresentInfoKHR: !results_.empty() && ( imageIndices_.size() != results_.size() )" );
98046       }
98047 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
98048     }
98049 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
98050 
98051     PresentInfoKHR & operator=( PresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98052 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
98053 
operator =VULKAN_HPP_NAMESPACE::PresentInfoKHR98054     PresentInfoKHR & operator=( VkPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
98055     {
98056       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentInfoKHR const *>( &rhs );
98057       return *this;
98058     }
98059 
98060 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PresentInfoKHR98061     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
98062     {
98063       pNext = pNext_;
98064       return *this;
98065     }
98066 
setWaitSemaphoreCountVULKAN_HPP_NAMESPACE::PresentInfoKHR98067     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
98068     {
98069       waitSemaphoreCount = waitSemaphoreCount_;
98070       return *this;
98071     }
98072 
setPWaitSemaphoresVULKAN_HPP_NAMESPACE::PresentInfoKHR98073     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPWaitSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores_ ) VULKAN_HPP_NOEXCEPT
98074     {
98075       pWaitSemaphores = pWaitSemaphores_;
98076       return *this;
98077     }
98078 
98079 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
98080     PresentInfoKHR &
setWaitSemaphoresVULKAN_HPP_NAMESPACE::PresentInfoKHR98081       setWaitSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & waitSemaphores_ ) VULKAN_HPP_NOEXCEPT
98082     {
98083       waitSemaphoreCount = static_cast<uint32_t>( waitSemaphores_.size() );
98084       pWaitSemaphores    = waitSemaphores_.data();
98085       return *this;
98086     }
98087 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
98088 
setSwapchainCountVULKAN_HPP_NAMESPACE::PresentInfoKHR98089     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
98090     {
98091       swapchainCount = swapchainCount_;
98092       return *this;
98093     }
98094 
setPSwapchainsVULKAN_HPP_NAMESPACE::PresentInfoKHR98095     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPSwapchains( const VULKAN_HPP_NAMESPACE::SwapchainKHR * pSwapchains_ ) VULKAN_HPP_NOEXCEPT
98096     {
98097       pSwapchains = pSwapchains_;
98098       return *this;
98099     }
98100 
98101 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
98102     PresentInfoKHR &
setSwapchainsVULKAN_HPP_NAMESPACE::PresentInfoKHR98103       setSwapchains( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SwapchainKHR> const & swapchains_ ) VULKAN_HPP_NOEXCEPT
98104     {
98105       swapchainCount = static_cast<uint32_t>( swapchains_.size() );
98106       pSwapchains    = swapchains_.data();
98107       return *this;
98108     }
98109 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
98110 
setPImageIndicesVULKAN_HPP_NAMESPACE::PresentInfoKHR98111     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPImageIndices( const uint32_t * pImageIndices_ ) VULKAN_HPP_NOEXCEPT
98112     {
98113       pImageIndices = pImageIndices_;
98114       return *this;
98115     }
98116 
98117 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImageIndicesVULKAN_HPP_NAMESPACE::PresentInfoKHR98118     PresentInfoKHR & setImageIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & imageIndices_ ) VULKAN_HPP_NOEXCEPT
98119     {
98120       swapchainCount = static_cast<uint32_t>( imageIndices_.size() );
98121       pImageIndices  = imageIndices_.data();
98122       return *this;
98123     }
98124 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
98125 
setPResultsVULKAN_HPP_NAMESPACE::PresentInfoKHR98126     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPResults( VULKAN_HPP_NAMESPACE::Result * pResults_ ) VULKAN_HPP_NOEXCEPT
98127     {
98128       pResults = pResults_;
98129       return *this;
98130     }
98131 
98132 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setResultsVULKAN_HPP_NAMESPACE::PresentInfoKHR98133     PresentInfoKHR & setResults( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::Result> const & results_ ) VULKAN_HPP_NOEXCEPT
98134     {
98135       swapchainCount = static_cast<uint32_t>( results_.size() );
98136       pResults       = results_.data();
98137       return *this;
98138     }
98139 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
98140 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
98141 
operator VkPresentInfoKHR const&VULKAN_HPP_NAMESPACE::PresentInfoKHR98142     operator VkPresentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
98143     {
98144       return *reinterpret_cast<const VkPresentInfoKHR *>( this );
98145     }
98146 
operator VkPresentInfoKHR&VULKAN_HPP_NAMESPACE::PresentInfoKHR98147     operator VkPresentInfoKHR &() VULKAN_HPP_NOEXCEPT
98148     {
98149       return *reinterpret_cast<VkPresentInfoKHR *>( this );
98150     }
98151 
98152 #if defined( VULKAN_HPP_USE_REFLECT )
98153 #  if 14 <= VULKAN_HPP_CPP_VERSION
98154     auto
98155 #  else
98156     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
98157                const void * const &,
98158                uint32_t const &,
98159                const VULKAN_HPP_NAMESPACE::Semaphore * const &,
98160                uint32_t const &,
98161                const VULKAN_HPP_NAMESPACE::SwapchainKHR * const &,
98162                const uint32_t * const &,
98163                VULKAN_HPP_NAMESPACE::Result * const &>
98164 #  endif
reflectVULKAN_HPP_NAMESPACE::PresentInfoKHR98165       reflect() const VULKAN_HPP_NOEXCEPT
98166     {
98167       return std::tie( sType, pNext, waitSemaphoreCount, pWaitSemaphores, swapchainCount, pSwapchains, pImageIndices, pResults );
98168     }
98169 #endif
98170 
98171 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
98172     auto operator<=>( PresentInfoKHR const & ) const = default;
98173 #else
operator ==VULKAN_HPP_NAMESPACE::PresentInfoKHR98174     bool operator==( PresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
98175     {
98176 #  if defined( VULKAN_HPP_USE_REFLECT )
98177       return this->reflect() == rhs.reflect();
98178 #  else
98179       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreCount == rhs.waitSemaphoreCount ) &&
98180              ( pWaitSemaphores == rhs.pWaitSemaphores ) && ( swapchainCount == rhs.swapchainCount ) && ( pSwapchains == rhs.pSwapchains ) &&
98181              ( pImageIndices == rhs.pImageIndices ) && ( pResults == rhs.pResults );
98182 #  endif
98183     }
98184 
operator !=VULKAN_HPP_NAMESPACE::PresentInfoKHR98185     bool operator!=( PresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
98186     {
98187       return !operator==( rhs );
98188     }
98189 #endif
98190 
98191   public:
98192     VULKAN_HPP_NAMESPACE::StructureType        sType              = StructureType::ePresentInfoKHR;
98193     const void *                               pNext              = {};
98194     uint32_t                                   waitSemaphoreCount = {};
98195     const VULKAN_HPP_NAMESPACE::Semaphore *    pWaitSemaphores    = {};
98196     uint32_t                                   swapchainCount     = {};
98197     const VULKAN_HPP_NAMESPACE::SwapchainKHR * pSwapchains        = {};
98198     const uint32_t *                           pImageIndices      = {};
98199     VULKAN_HPP_NAMESPACE::Result *             pResults           = {};
98200   };
98201 
98202   template <>
98203   struct CppType<StructureType, StructureType::ePresentInfoKHR>
98204   {
98205     using Type = PresentInfoKHR;
98206   };
98207 
98208   struct RectLayerKHR
98209   {
98210     using NativeType = VkRectLayerKHR;
98211 
98212 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
98213     VULKAN_HPP_CONSTEXPR
RectLayerKHRVULKAN_HPP_NAMESPACE::RectLayerKHR98214       RectLayerKHR( VULKAN_HPP_NAMESPACE::Offset2D offset_ = {}, VULKAN_HPP_NAMESPACE::Extent2D extent_ = {}, uint32_t layer_ = {} ) VULKAN_HPP_NOEXCEPT
98215       : offset{ offset_ }
98216       , extent{ extent_ }
98217       , layer{ layer_ }
98218     {
98219     }
98220 
98221     VULKAN_HPP_CONSTEXPR RectLayerKHR( RectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98222 
RectLayerKHRVULKAN_HPP_NAMESPACE::RectLayerKHR98223     RectLayerKHR( VkRectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT : RectLayerKHR( *reinterpret_cast<RectLayerKHR const *>( &rhs ) ) {}
98224 
RectLayerKHRVULKAN_HPP_NAMESPACE::RectLayerKHR98225     explicit RectLayerKHR( Rect2D const & rect2D, uint32_t layer_ = {} ) : offset( rect2D.offset ), extent( rect2D.extent ), layer( layer_ ) {}
98226 
98227     RectLayerKHR & operator=( RectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98228 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
98229 
operator =VULKAN_HPP_NAMESPACE::RectLayerKHR98230     RectLayerKHR & operator=( VkRectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT
98231     {
98232       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RectLayerKHR const *>( &rhs );
98233       return *this;
98234     }
98235 
98236 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setOffsetVULKAN_HPP_NAMESPACE::RectLayerKHR98237     VULKAN_HPP_CONSTEXPR_14 RectLayerKHR & setOffset( VULKAN_HPP_NAMESPACE::Offset2D const & offset_ ) VULKAN_HPP_NOEXCEPT
98238     {
98239       offset = offset_;
98240       return *this;
98241     }
98242 
setExtentVULKAN_HPP_NAMESPACE::RectLayerKHR98243     VULKAN_HPP_CONSTEXPR_14 RectLayerKHR & setExtent( VULKAN_HPP_NAMESPACE::Extent2D const & extent_ ) VULKAN_HPP_NOEXCEPT
98244     {
98245       extent = extent_;
98246       return *this;
98247     }
98248 
setLayerVULKAN_HPP_NAMESPACE::RectLayerKHR98249     VULKAN_HPP_CONSTEXPR_14 RectLayerKHR & setLayer( uint32_t layer_ ) VULKAN_HPP_NOEXCEPT
98250     {
98251       layer = layer_;
98252       return *this;
98253     }
98254 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
98255 
operator VkRectLayerKHR const&VULKAN_HPP_NAMESPACE::RectLayerKHR98256     operator VkRectLayerKHR const &() const VULKAN_HPP_NOEXCEPT
98257     {
98258       return *reinterpret_cast<const VkRectLayerKHR *>( this );
98259     }
98260 
operator VkRectLayerKHR&VULKAN_HPP_NAMESPACE::RectLayerKHR98261     operator VkRectLayerKHR &() VULKAN_HPP_NOEXCEPT
98262     {
98263       return *reinterpret_cast<VkRectLayerKHR *>( this );
98264     }
98265 
98266 #if defined( VULKAN_HPP_USE_REFLECT )
98267 #  if 14 <= VULKAN_HPP_CPP_VERSION
98268     auto
98269 #  else
98270     std::tuple<VULKAN_HPP_NAMESPACE::Offset2D const &, VULKAN_HPP_NAMESPACE::Extent2D const &, uint32_t const &>
98271 #  endif
reflectVULKAN_HPP_NAMESPACE::RectLayerKHR98272       reflect() const VULKAN_HPP_NOEXCEPT
98273     {
98274       return std::tie( offset, extent, layer );
98275     }
98276 #endif
98277 
98278 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
98279     auto operator<=>( RectLayerKHR const & ) const = default;
98280 #else
operator ==VULKAN_HPP_NAMESPACE::RectLayerKHR98281     bool operator==( RectLayerKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
98282     {
98283 #  if defined( VULKAN_HPP_USE_REFLECT )
98284       return this->reflect() == rhs.reflect();
98285 #  else
98286       return ( offset == rhs.offset ) && ( extent == rhs.extent ) && ( layer == rhs.layer );
98287 #  endif
98288     }
98289 
operator !=VULKAN_HPP_NAMESPACE::RectLayerKHR98290     bool operator!=( RectLayerKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
98291     {
98292       return !operator==( rhs );
98293     }
98294 #endif
98295 
98296   public:
98297     VULKAN_HPP_NAMESPACE::Offset2D offset = {};
98298     VULKAN_HPP_NAMESPACE::Extent2D extent = {};
98299     uint32_t                       layer  = {};
98300   };
98301 
98302   struct PresentRegionKHR
98303   {
98304     using NativeType = VkPresentRegionKHR;
98305 
98306 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PresentRegionKHRVULKAN_HPP_NAMESPACE::PresentRegionKHR98307     VULKAN_HPP_CONSTEXPR PresentRegionKHR( uint32_t rectangleCount_ = {}, const VULKAN_HPP_NAMESPACE::RectLayerKHR * pRectangles_ = {} ) VULKAN_HPP_NOEXCEPT
98308       : rectangleCount{ rectangleCount_ }
98309       , pRectangles{ pRectangles_ }
98310     {
98311     }
98312 
98313     VULKAN_HPP_CONSTEXPR PresentRegionKHR( PresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98314 
PresentRegionKHRVULKAN_HPP_NAMESPACE::PresentRegionKHR98315     PresentRegionKHR( VkPresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT : PresentRegionKHR( *reinterpret_cast<PresentRegionKHR const *>( &rhs ) ) {}
98316 
98317 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PresentRegionKHRVULKAN_HPP_NAMESPACE::PresentRegionKHR98318     PresentRegionKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RectLayerKHR> const & rectangles_ )
98319       : rectangleCount( static_cast<uint32_t>( rectangles_.size() ) ), pRectangles( rectangles_.data() )
98320     {
98321     }
98322 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
98323 
98324     PresentRegionKHR & operator=( PresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98325 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
98326 
operator =VULKAN_HPP_NAMESPACE::PresentRegionKHR98327     PresentRegionKHR & operator=( VkPresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
98328     {
98329       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentRegionKHR const *>( &rhs );
98330       return *this;
98331     }
98332 
98333 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setRectangleCountVULKAN_HPP_NAMESPACE::PresentRegionKHR98334     VULKAN_HPP_CONSTEXPR_14 PresentRegionKHR & setRectangleCount( uint32_t rectangleCount_ ) VULKAN_HPP_NOEXCEPT
98335     {
98336       rectangleCount = rectangleCount_;
98337       return *this;
98338     }
98339 
setPRectanglesVULKAN_HPP_NAMESPACE::PresentRegionKHR98340     VULKAN_HPP_CONSTEXPR_14 PresentRegionKHR & setPRectangles( const VULKAN_HPP_NAMESPACE::RectLayerKHR * pRectangles_ ) VULKAN_HPP_NOEXCEPT
98341     {
98342       pRectangles = pRectangles_;
98343       return *this;
98344     }
98345 
98346 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
98347     PresentRegionKHR &
setRectanglesVULKAN_HPP_NAMESPACE::PresentRegionKHR98348       setRectangles( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RectLayerKHR> const & rectangles_ ) VULKAN_HPP_NOEXCEPT
98349     {
98350       rectangleCount = static_cast<uint32_t>( rectangles_.size() );
98351       pRectangles    = rectangles_.data();
98352       return *this;
98353     }
98354 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
98355 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
98356 
operator VkPresentRegionKHR const&VULKAN_HPP_NAMESPACE::PresentRegionKHR98357     operator VkPresentRegionKHR const &() const VULKAN_HPP_NOEXCEPT
98358     {
98359       return *reinterpret_cast<const VkPresentRegionKHR *>( this );
98360     }
98361 
operator VkPresentRegionKHR&VULKAN_HPP_NAMESPACE::PresentRegionKHR98362     operator VkPresentRegionKHR &() VULKAN_HPP_NOEXCEPT
98363     {
98364       return *reinterpret_cast<VkPresentRegionKHR *>( this );
98365     }
98366 
98367 #if defined( VULKAN_HPP_USE_REFLECT )
98368 #  if 14 <= VULKAN_HPP_CPP_VERSION
98369     auto
98370 #  else
98371     std::tuple<uint32_t const &, const VULKAN_HPP_NAMESPACE::RectLayerKHR * const &>
98372 #  endif
reflectVULKAN_HPP_NAMESPACE::PresentRegionKHR98373       reflect() const VULKAN_HPP_NOEXCEPT
98374     {
98375       return std::tie( rectangleCount, pRectangles );
98376     }
98377 #endif
98378 
98379 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
98380     auto operator<=>( PresentRegionKHR const & ) const = default;
98381 #else
operator ==VULKAN_HPP_NAMESPACE::PresentRegionKHR98382     bool operator==( PresentRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
98383     {
98384 #  if defined( VULKAN_HPP_USE_REFLECT )
98385       return this->reflect() == rhs.reflect();
98386 #  else
98387       return ( rectangleCount == rhs.rectangleCount ) && ( pRectangles == rhs.pRectangles );
98388 #  endif
98389     }
98390 
operator !=VULKAN_HPP_NAMESPACE::PresentRegionKHR98391     bool operator!=( PresentRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
98392     {
98393       return !operator==( rhs );
98394     }
98395 #endif
98396 
98397   public:
98398     uint32_t                                   rectangleCount = {};
98399     const VULKAN_HPP_NAMESPACE::RectLayerKHR * pRectangles    = {};
98400   };
98401 
98402   struct PresentRegionsKHR
98403   {
98404     using NativeType = VkPresentRegionsKHR;
98405 
98406     static const bool                                  allowDuplicate = false;
98407     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePresentRegionsKHR;
98408 
98409 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PresentRegionsKHRVULKAN_HPP_NAMESPACE::PresentRegionsKHR98410     VULKAN_HPP_CONSTEXPR PresentRegionsKHR( uint32_t                                       swapchainCount_ = {},
98411                                             const VULKAN_HPP_NAMESPACE::PresentRegionKHR * pRegions_       = {},
98412                                             const void *                                   pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
98413       : pNext{ pNext_ }
98414       , swapchainCount{ swapchainCount_ }
98415       , pRegions{ pRegions_ }
98416     {
98417     }
98418 
98419     VULKAN_HPP_CONSTEXPR PresentRegionsKHR( PresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98420 
PresentRegionsKHRVULKAN_HPP_NAMESPACE::PresentRegionsKHR98421     PresentRegionsKHR( VkPresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT : PresentRegionsKHR( *reinterpret_cast<PresentRegionsKHR const *>( &rhs ) ) {}
98422 
98423 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PresentRegionsKHRVULKAN_HPP_NAMESPACE::PresentRegionsKHR98424     PresentRegionsKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentRegionKHR> const & regions_,
98425                        const void *                                                                                        pNext_ = nullptr )
98426       : pNext( pNext_ ), swapchainCount( static_cast<uint32_t>( regions_.size() ) ), pRegions( regions_.data() )
98427     {
98428     }
98429 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
98430 
98431     PresentRegionsKHR & operator=( PresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98432 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
98433 
operator =VULKAN_HPP_NAMESPACE::PresentRegionsKHR98434     PresentRegionsKHR & operator=( VkPresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
98435     {
98436       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentRegionsKHR const *>( &rhs );
98437       return *this;
98438     }
98439 
98440 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PresentRegionsKHR98441     VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
98442     {
98443       pNext = pNext_;
98444       return *this;
98445     }
98446 
setSwapchainCountVULKAN_HPP_NAMESPACE::PresentRegionsKHR98447     VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
98448     {
98449       swapchainCount = swapchainCount_;
98450       return *this;
98451     }
98452 
setPRegionsVULKAN_HPP_NAMESPACE::PresentRegionsKHR98453     VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR & setPRegions( const VULKAN_HPP_NAMESPACE::PresentRegionKHR * pRegions_ ) VULKAN_HPP_NOEXCEPT
98454     {
98455       pRegions = pRegions_;
98456       return *this;
98457     }
98458 
98459 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
98460     PresentRegionsKHR &
setRegionsVULKAN_HPP_NAMESPACE::PresentRegionsKHR98461       setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentRegionKHR> const & regions_ ) VULKAN_HPP_NOEXCEPT
98462     {
98463       swapchainCount = static_cast<uint32_t>( regions_.size() );
98464       pRegions       = regions_.data();
98465       return *this;
98466     }
98467 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
98468 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
98469 
operator VkPresentRegionsKHR const&VULKAN_HPP_NAMESPACE::PresentRegionsKHR98470     operator VkPresentRegionsKHR const &() const VULKAN_HPP_NOEXCEPT
98471     {
98472       return *reinterpret_cast<const VkPresentRegionsKHR *>( this );
98473     }
98474 
operator VkPresentRegionsKHR&VULKAN_HPP_NAMESPACE::PresentRegionsKHR98475     operator VkPresentRegionsKHR &() VULKAN_HPP_NOEXCEPT
98476     {
98477       return *reinterpret_cast<VkPresentRegionsKHR *>( this );
98478     }
98479 
98480 #if defined( VULKAN_HPP_USE_REFLECT )
98481 #  if 14 <= VULKAN_HPP_CPP_VERSION
98482     auto
98483 #  else
98484     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::PresentRegionKHR * const &>
98485 #  endif
reflectVULKAN_HPP_NAMESPACE::PresentRegionsKHR98486       reflect() const VULKAN_HPP_NOEXCEPT
98487     {
98488       return std::tie( sType, pNext, swapchainCount, pRegions );
98489     }
98490 #endif
98491 
98492 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
98493     auto operator<=>( PresentRegionsKHR const & ) const = default;
98494 #else
operator ==VULKAN_HPP_NAMESPACE::PresentRegionsKHR98495     bool operator==( PresentRegionsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
98496     {
98497 #  if defined( VULKAN_HPP_USE_REFLECT )
98498       return this->reflect() == rhs.reflect();
98499 #  else
98500       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && ( pRegions == rhs.pRegions );
98501 #  endif
98502     }
98503 
operator !=VULKAN_HPP_NAMESPACE::PresentRegionsKHR98504     bool operator!=( PresentRegionsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
98505     {
98506       return !operator==( rhs );
98507     }
98508 #endif
98509 
98510   public:
98511     VULKAN_HPP_NAMESPACE::StructureType            sType          = StructureType::ePresentRegionsKHR;
98512     const void *                                   pNext          = {};
98513     uint32_t                                       swapchainCount = {};
98514     const VULKAN_HPP_NAMESPACE::PresentRegionKHR * pRegions       = {};
98515   };
98516 
98517   template <>
98518   struct CppType<StructureType, StructureType::ePresentRegionsKHR>
98519   {
98520     using Type = PresentRegionsKHR;
98521   };
98522 
98523   struct PresentTimeGOOGLE
98524   {
98525     using NativeType = VkPresentTimeGOOGLE;
98526 
98527 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PresentTimeGOOGLEVULKAN_HPP_NAMESPACE::PresentTimeGOOGLE98528     VULKAN_HPP_CONSTEXPR PresentTimeGOOGLE( uint32_t presentID_ = {}, uint64_t desiredPresentTime_ = {} ) VULKAN_HPP_NOEXCEPT
98529       : presentID{ presentID_ }
98530       , desiredPresentTime{ desiredPresentTime_ }
98531     {
98532     }
98533 
98534     VULKAN_HPP_CONSTEXPR PresentTimeGOOGLE( PresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98535 
PresentTimeGOOGLEVULKAN_HPP_NAMESPACE::PresentTimeGOOGLE98536     PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT : PresentTimeGOOGLE( *reinterpret_cast<PresentTimeGOOGLE const *>( &rhs ) ) {}
98537 
98538     PresentTimeGOOGLE & operator=( PresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98539 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
98540 
operator =VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE98541     PresentTimeGOOGLE & operator=( VkPresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
98542     {
98543       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE const *>( &rhs );
98544       return *this;
98545     }
98546 
98547 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPresentIDVULKAN_HPP_NAMESPACE::PresentTimeGOOGLE98548     VULKAN_HPP_CONSTEXPR_14 PresentTimeGOOGLE & setPresentID( uint32_t presentID_ ) VULKAN_HPP_NOEXCEPT
98549     {
98550       presentID = presentID_;
98551       return *this;
98552     }
98553 
setDesiredPresentTimeVULKAN_HPP_NAMESPACE::PresentTimeGOOGLE98554     VULKAN_HPP_CONSTEXPR_14 PresentTimeGOOGLE & setDesiredPresentTime( uint64_t desiredPresentTime_ ) VULKAN_HPP_NOEXCEPT
98555     {
98556       desiredPresentTime = desiredPresentTime_;
98557       return *this;
98558     }
98559 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
98560 
operator VkPresentTimeGOOGLE const&VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE98561     operator VkPresentTimeGOOGLE const &() const VULKAN_HPP_NOEXCEPT
98562     {
98563       return *reinterpret_cast<const VkPresentTimeGOOGLE *>( this );
98564     }
98565 
operator VkPresentTimeGOOGLE&VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE98566     operator VkPresentTimeGOOGLE &() VULKAN_HPP_NOEXCEPT
98567     {
98568       return *reinterpret_cast<VkPresentTimeGOOGLE *>( this );
98569     }
98570 
98571 #if defined( VULKAN_HPP_USE_REFLECT )
98572 #  if 14 <= VULKAN_HPP_CPP_VERSION
98573     auto
98574 #  else
98575     std::tuple<uint32_t const &, uint64_t const &>
98576 #  endif
reflectVULKAN_HPP_NAMESPACE::PresentTimeGOOGLE98577       reflect() const VULKAN_HPP_NOEXCEPT
98578     {
98579       return std::tie( presentID, desiredPresentTime );
98580     }
98581 #endif
98582 
98583 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
98584     auto operator<=>( PresentTimeGOOGLE const & ) const = default;
98585 #else
operator ==VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE98586     bool operator==( PresentTimeGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
98587     {
98588 #  if defined( VULKAN_HPP_USE_REFLECT )
98589       return this->reflect() == rhs.reflect();
98590 #  else
98591       return ( presentID == rhs.presentID ) && ( desiredPresentTime == rhs.desiredPresentTime );
98592 #  endif
98593     }
98594 
operator !=VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE98595     bool operator!=( PresentTimeGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
98596     {
98597       return !operator==( rhs );
98598     }
98599 #endif
98600 
98601   public:
98602     uint32_t presentID          = {};
98603     uint64_t desiredPresentTime = {};
98604   };
98605 
98606   struct PresentTimesInfoGOOGLE
98607   {
98608     using NativeType = VkPresentTimesInfoGOOGLE;
98609 
98610     static const bool                                  allowDuplicate = false;
98611     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePresentTimesInfoGOOGLE;
98612 
98613 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PresentTimesInfoGOOGLEVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE98614     VULKAN_HPP_CONSTEXPR PresentTimesInfoGOOGLE( uint32_t                                        swapchainCount_ = {},
98615                                                  const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE * pTimes_         = {},
98616                                                  const void *                                    pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
98617       : pNext{ pNext_ }
98618       , swapchainCount{ swapchainCount_ }
98619       , pTimes{ pTimes_ }
98620     {
98621     }
98622 
98623     VULKAN_HPP_CONSTEXPR PresentTimesInfoGOOGLE( PresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98624 
PresentTimesInfoGOOGLEVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE98625     PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
98626       : PresentTimesInfoGOOGLE( *reinterpret_cast<PresentTimesInfoGOOGLE const *>( &rhs ) )
98627     {
98628     }
98629 
98630 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PresentTimesInfoGOOGLEVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE98631     PresentTimesInfoGOOGLE( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE> const & times_,
98632                             const void *                                                                                         pNext_ = nullptr )
98633       : pNext( pNext_ ), swapchainCount( static_cast<uint32_t>( times_.size() ) ), pTimes( times_.data() )
98634     {
98635     }
98636 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
98637 
98638     PresentTimesInfoGOOGLE & operator=( PresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98639 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
98640 
operator =VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE98641     PresentTimesInfoGOOGLE & operator=( VkPresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
98642     {
98643       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE const *>( &rhs );
98644       return *this;
98645     }
98646 
98647 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE98648     VULKAN_HPP_CONSTEXPR_14 PresentTimesInfoGOOGLE & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
98649     {
98650       pNext = pNext_;
98651       return *this;
98652     }
98653 
setSwapchainCountVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE98654     VULKAN_HPP_CONSTEXPR_14 PresentTimesInfoGOOGLE & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
98655     {
98656       swapchainCount = swapchainCount_;
98657       return *this;
98658     }
98659 
setPTimesVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE98660     VULKAN_HPP_CONSTEXPR_14 PresentTimesInfoGOOGLE & setPTimes( const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE * pTimes_ ) VULKAN_HPP_NOEXCEPT
98661     {
98662       pTimes = pTimes_;
98663       return *this;
98664     }
98665 
98666 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
98667     PresentTimesInfoGOOGLE &
setTimesVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE98668       setTimes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE> const & times_ ) VULKAN_HPP_NOEXCEPT
98669     {
98670       swapchainCount = static_cast<uint32_t>( times_.size() );
98671       pTimes         = times_.data();
98672       return *this;
98673     }
98674 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
98675 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
98676 
operator VkPresentTimesInfoGOOGLE const&VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE98677     operator VkPresentTimesInfoGOOGLE const &() const VULKAN_HPP_NOEXCEPT
98678     {
98679       return *reinterpret_cast<const VkPresentTimesInfoGOOGLE *>( this );
98680     }
98681 
operator VkPresentTimesInfoGOOGLE&VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE98682     operator VkPresentTimesInfoGOOGLE &() VULKAN_HPP_NOEXCEPT
98683     {
98684       return *reinterpret_cast<VkPresentTimesInfoGOOGLE *>( this );
98685     }
98686 
98687 #if defined( VULKAN_HPP_USE_REFLECT )
98688 #  if 14 <= VULKAN_HPP_CPP_VERSION
98689     auto
98690 #  else
98691     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE * const &>
98692 #  endif
reflectVULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE98693       reflect() const VULKAN_HPP_NOEXCEPT
98694     {
98695       return std::tie( sType, pNext, swapchainCount, pTimes );
98696     }
98697 #endif
98698 
98699 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
98700     auto operator<=>( PresentTimesInfoGOOGLE const & ) const = default;
98701 #else
operator ==VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE98702     bool operator==( PresentTimesInfoGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
98703     {
98704 #  if defined( VULKAN_HPP_USE_REFLECT )
98705       return this->reflect() == rhs.reflect();
98706 #  else
98707       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && ( pTimes == rhs.pTimes );
98708 #  endif
98709     }
98710 
operator !=VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE98711     bool operator!=( PresentTimesInfoGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
98712     {
98713       return !operator==( rhs );
98714     }
98715 #endif
98716 
98717   public:
98718     VULKAN_HPP_NAMESPACE::StructureType             sType          = StructureType::ePresentTimesInfoGOOGLE;
98719     const void *                                    pNext          = {};
98720     uint32_t                                        swapchainCount = {};
98721     const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE * pTimes         = {};
98722   };
98723 
98724   template <>
98725   struct CppType<StructureType, StructureType::ePresentTimesInfoGOOGLE>
98726   {
98727     using Type = PresentTimesInfoGOOGLE;
98728   };
98729 
98730   struct PrivateDataSlotCreateInfo
98731   {
98732     using NativeType = VkPrivateDataSlotCreateInfo;
98733 
98734     static const bool                                  allowDuplicate = false;
98735     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePrivateDataSlotCreateInfo;
98736 
98737 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PrivateDataSlotCreateInfoVULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo98738     VULKAN_HPP_CONSTEXPR PrivateDataSlotCreateInfo( VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlags flags_ = {},
98739                                                     const void *                                     pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
98740       : pNext{ pNext_ }
98741       , flags{ flags_ }
98742     {
98743     }
98744 
98745     VULKAN_HPP_CONSTEXPR PrivateDataSlotCreateInfo( PrivateDataSlotCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98746 
PrivateDataSlotCreateInfoVULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo98747     PrivateDataSlotCreateInfo( VkPrivateDataSlotCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
98748       : PrivateDataSlotCreateInfo( *reinterpret_cast<PrivateDataSlotCreateInfo const *>( &rhs ) )
98749     {
98750     }
98751 
98752     PrivateDataSlotCreateInfo & operator=( PrivateDataSlotCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98753 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
98754 
operator =VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo98755     PrivateDataSlotCreateInfo & operator=( VkPrivateDataSlotCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
98756     {
98757       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo const *>( &rhs );
98758       return *this;
98759     }
98760 
98761 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo98762     VULKAN_HPP_CONSTEXPR_14 PrivateDataSlotCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
98763     {
98764       pNext = pNext_;
98765       return *this;
98766     }
98767 
setFlagsVULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo98768     VULKAN_HPP_CONSTEXPR_14 PrivateDataSlotCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
98769     {
98770       flags = flags_;
98771       return *this;
98772     }
98773 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
98774 
operator VkPrivateDataSlotCreateInfo const&VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo98775     operator VkPrivateDataSlotCreateInfo const &() const VULKAN_HPP_NOEXCEPT
98776     {
98777       return *reinterpret_cast<const VkPrivateDataSlotCreateInfo *>( this );
98778     }
98779 
operator VkPrivateDataSlotCreateInfo&VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo98780     operator VkPrivateDataSlotCreateInfo &() VULKAN_HPP_NOEXCEPT
98781     {
98782       return *reinterpret_cast<VkPrivateDataSlotCreateInfo *>( this );
98783     }
98784 
98785 #if defined( VULKAN_HPP_USE_REFLECT )
98786 #  if 14 <= VULKAN_HPP_CPP_VERSION
98787     auto
98788 #  else
98789     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlags const &>
98790 #  endif
reflectVULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo98791       reflect() const VULKAN_HPP_NOEXCEPT
98792     {
98793       return std::tie( sType, pNext, flags );
98794     }
98795 #endif
98796 
98797 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
98798     auto operator<=>( PrivateDataSlotCreateInfo const & ) const = default;
98799 #else
operator ==VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo98800     bool operator==( PrivateDataSlotCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
98801     {
98802 #  if defined( VULKAN_HPP_USE_REFLECT )
98803       return this->reflect() == rhs.reflect();
98804 #  else
98805       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
98806 #  endif
98807     }
98808 
operator !=VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo98809     bool operator!=( PrivateDataSlotCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
98810     {
98811       return !operator==( rhs );
98812     }
98813 #endif
98814 
98815   public:
98816     VULKAN_HPP_NAMESPACE::StructureType              sType = StructureType::ePrivateDataSlotCreateInfo;
98817     const void *                                     pNext = {};
98818     VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlags flags = {};
98819   };
98820 
98821   template <>
98822   struct CppType<StructureType, StructureType::ePrivateDataSlotCreateInfo>
98823   {
98824     using Type = PrivateDataSlotCreateInfo;
98825   };
98826 
98827   using PrivateDataSlotCreateInfoEXT = PrivateDataSlotCreateInfo;
98828 
98829   struct ProtectedSubmitInfo
98830   {
98831     using NativeType = VkProtectedSubmitInfo;
98832 
98833     static const bool                                  allowDuplicate = false;
98834     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eProtectedSubmitInfo;
98835 
98836 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ProtectedSubmitInfoVULKAN_HPP_NAMESPACE::ProtectedSubmitInfo98837     VULKAN_HPP_CONSTEXPR ProtectedSubmitInfo( VULKAN_HPP_NAMESPACE::Bool32 protectedSubmit_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
98838       : pNext{ pNext_ }
98839       , protectedSubmit{ protectedSubmit_ }
98840     {
98841     }
98842 
98843     VULKAN_HPP_CONSTEXPR ProtectedSubmitInfo( ProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98844 
ProtectedSubmitInfoVULKAN_HPP_NAMESPACE::ProtectedSubmitInfo98845     ProtectedSubmitInfo( VkProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT : ProtectedSubmitInfo( *reinterpret_cast<ProtectedSubmitInfo const *>( &rhs ) )
98846     {
98847     }
98848 
98849     ProtectedSubmitInfo & operator=( ProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98850 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
98851 
operator =VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo98852     ProtectedSubmitInfo & operator=( VkProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
98853     {
98854       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo const *>( &rhs );
98855       return *this;
98856     }
98857 
98858 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ProtectedSubmitInfo98859     VULKAN_HPP_CONSTEXPR_14 ProtectedSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
98860     {
98861       pNext = pNext_;
98862       return *this;
98863     }
98864 
setProtectedSubmitVULKAN_HPP_NAMESPACE::ProtectedSubmitInfo98865     VULKAN_HPP_CONSTEXPR_14 ProtectedSubmitInfo & setProtectedSubmit( VULKAN_HPP_NAMESPACE::Bool32 protectedSubmit_ ) VULKAN_HPP_NOEXCEPT
98866     {
98867       protectedSubmit = protectedSubmit_;
98868       return *this;
98869     }
98870 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
98871 
operator VkProtectedSubmitInfo const&VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo98872     operator VkProtectedSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
98873     {
98874       return *reinterpret_cast<const VkProtectedSubmitInfo *>( this );
98875     }
98876 
operator VkProtectedSubmitInfo&VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo98877     operator VkProtectedSubmitInfo &() VULKAN_HPP_NOEXCEPT
98878     {
98879       return *reinterpret_cast<VkProtectedSubmitInfo *>( this );
98880     }
98881 
98882 #if defined( VULKAN_HPP_USE_REFLECT )
98883 #  if 14 <= VULKAN_HPP_CPP_VERSION
98884     auto
98885 #  else
98886     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
98887 #  endif
reflectVULKAN_HPP_NAMESPACE::ProtectedSubmitInfo98888       reflect() const VULKAN_HPP_NOEXCEPT
98889     {
98890       return std::tie( sType, pNext, protectedSubmit );
98891     }
98892 #endif
98893 
98894 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
98895     auto operator<=>( ProtectedSubmitInfo const & ) const = default;
98896 #else
operator ==VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo98897     bool operator==( ProtectedSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
98898     {
98899 #  if defined( VULKAN_HPP_USE_REFLECT )
98900       return this->reflect() == rhs.reflect();
98901 #  else
98902       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( protectedSubmit == rhs.protectedSubmit );
98903 #  endif
98904     }
98905 
operator !=VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo98906     bool operator!=( ProtectedSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
98907     {
98908       return !operator==( rhs );
98909     }
98910 #endif
98911 
98912   public:
98913     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eProtectedSubmitInfo;
98914     const void *                        pNext           = {};
98915     VULKAN_HPP_NAMESPACE::Bool32        protectedSubmit = {};
98916   };
98917 
98918   template <>
98919   struct CppType<StructureType, StructureType::eProtectedSubmitInfo>
98920   {
98921     using Type = ProtectedSubmitInfo;
98922   };
98923 
98924   struct PushConstantsInfoKHR
98925   {
98926     using NativeType = VkPushConstantsInfoKHR;
98927 
98928     static const bool                                  allowDuplicate = false;
98929     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePushConstantsInfoKHR;
98930 
98931 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PushConstantsInfoKHRVULKAN_HPP_NAMESPACE::PushConstantsInfoKHR98932     VULKAN_HPP_CONSTEXPR PushConstantsInfoKHR( VULKAN_HPP_NAMESPACE::PipelineLayout   layout_     = {},
98933                                                VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ = {},
98934                                                uint32_t                               offset_     = {},
98935                                                uint32_t                               size_       = {},
98936                                                const void *                           pValues_    = {},
98937                                                const void *                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
98938       : pNext{ pNext_ }
98939       , layout{ layout_ }
98940       , stageFlags{ stageFlags_ }
98941       , offset{ offset_ }
98942       , size{ size_ }
98943       , pValues{ pValues_ }
98944     {
98945     }
98946 
98947     VULKAN_HPP_CONSTEXPR PushConstantsInfoKHR( PushConstantsInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98948 
PushConstantsInfoKHRVULKAN_HPP_NAMESPACE::PushConstantsInfoKHR98949     PushConstantsInfoKHR( VkPushConstantsInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
98950       : PushConstantsInfoKHR( *reinterpret_cast<PushConstantsInfoKHR const *>( &rhs ) )
98951     {
98952     }
98953 
98954 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
98955     template <typename T>
PushConstantsInfoKHRVULKAN_HPP_NAMESPACE::PushConstantsInfoKHR98956     PushConstantsInfoKHR( VULKAN_HPP_NAMESPACE::PipelineLayout                           layout_,
98957                           VULKAN_HPP_NAMESPACE::ShaderStageFlags                         stageFlags_,
98958                           uint32_t                                                       offset_,
98959                           VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & values_,
98960                           const void *                                                   pNext_ = nullptr )
98961       : pNext( pNext_ )
98962       , layout( layout_ )
98963       , stageFlags( stageFlags_ )
98964       , offset( offset_ )
98965       , size( static_cast<uint32_t>( values_.size() * sizeof( T ) ) )
98966       , pValues( values_.data() )
98967     {
98968     }
98969 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
98970 
98971     PushConstantsInfoKHR & operator=( PushConstantsInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
98972 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
98973 
operator =VULKAN_HPP_NAMESPACE::PushConstantsInfoKHR98974     PushConstantsInfoKHR & operator=( VkPushConstantsInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
98975     {
98976       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PushConstantsInfoKHR const *>( &rhs );
98977       return *this;
98978     }
98979 
98980 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PushConstantsInfoKHR98981     VULKAN_HPP_CONSTEXPR_14 PushConstantsInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
98982     {
98983       pNext = pNext_;
98984       return *this;
98985     }
98986 
setLayoutVULKAN_HPP_NAMESPACE::PushConstantsInfoKHR98987     VULKAN_HPP_CONSTEXPR_14 PushConstantsInfoKHR & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
98988     {
98989       layout = layout_;
98990       return *this;
98991     }
98992 
setStageFlagsVULKAN_HPP_NAMESPACE::PushConstantsInfoKHR98993     VULKAN_HPP_CONSTEXPR_14 PushConstantsInfoKHR & setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT
98994     {
98995       stageFlags = stageFlags_;
98996       return *this;
98997     }
98998 
setOffsetVULKAN_HPP_NAMESPACE::PushConstantsInfoKHR98999     VULKAN_HPP_CONSTEXPR_14 PushConstantsInfoKHR & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT
99000     {
99001       offset = offset_;
99002       return *this;
99003     }
99004 
setSizeVULKAN_HPP_NAMESPACE::PushConstantsInfoKHR99005     VULKAN_HPP_CONSTEXPR_14 PushConstantsInfoKHR & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT
99006     {
99007       size = size_;
99008       return *this;
99009     }
99010 
setPValuesVULKAN_HPP_NAMESPACE::PushConstantsInfoKHR99011     VULKAN_HPP_CONSTEXPR_14 PushConstantsInfoKHR & setPValues( const void * pValues_ ) VULKAN_HPP_NOEXCEPT
99012     {
99013       pValues = pValues_;
99014       return *this;
99015     }
99016 
99017 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
99018     template <typename T>
setValuesVULKAN_HPP_NAMESPACE::PushConstantsInfoKHR99019     PushConstantsInfoKHR & setValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & values_ ) VULKAN_HPP_NOEXCEPT
99020     {
99021       size    = static_cast<uint32_t>( values_.size() * sizeof( T ) );
99022       pValues = values_.data();
99023       return *this;
99024     }
99025 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
99026 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
99027 
operator VkPushConstantsInfoKHR const&VULKAN_HPP_NAMESPACE::PushConstantsInfoKHR99028     operator VkPushConstantsInfoKHR const &() const VULKAN_HPP_NOEXCEPT
99029     {
99030       return *reinterpret_cast<const VkPushConstantsInfoKHR *>( this );
99031     }
99032 
operator VkPushConstantsInfoKHR&VULKAN_HPP_NAMESPACE::PushConstantsInfoKHR99033     operator VkPushConstantsInfoKHR &() VULKAN_HPP_NOEXCEPT
99034     {
99035       return *reinterpret_cast<VkPushConstantsInfoKHR *>( this );
99036     }
99037 
99038 #if defined( VULKAN_HPP_USE_REFLECT )
99039 #  if 14 <= VULKAN_HPP_CPP_VERSION
99040     auto
99041 #  else
99042     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
99043                const void * const &,
99044                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
99045                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
99046                uint32_t const &,
99047                uint32_t const &,
99048                const void * const &>
99049 #  endif
reflectVULKAN_HPP_NAMESPACE::PushConstantsInfoKHR99050       reflect() const VULKAN_HPP_NOEXCEPT
99051     {
99052       return std::tie( sType, pNext, layout, stageFlags, offset, size, pValues );
99053     }
99054 #endif
99055 
99056 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
99057     auto operator<=>( PushConstantsInfoKHR const & ) const = default;
99058 #else
operator ==VULKAN_HPP_NAMESPACE::PushConstantsInfoKHR99059     bool operator==( PushConstantsInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
99060     {
99061 #  if defined( VULKAN_HPP_USE_REFLECT )
99062       return this->reflect() == rhs.reflect();
99063 #  else
99064       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( layout == rhs.layout ) && ( stageFlags == rhs.stageFlags ) && ( offset == rhs.offset ) &&
99065              ( size == rhs.size ) && ( pValues == rhs.pValues );
99066 #  endif
99067     }
99068 
operator !=VULKAN_HPP_NAMESPACE::PushConstantsInfoKHR99069     bool operator!=( PushConstantsInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
99070     {
99071       return !operator==( rhs );
99072     }
99073 #endif
99074 
99075   public:
99076     VULKAN_HPP_NAMESPACE::StructureType    sType      = StructureType::ePushConstantsInfoKHR;
99077     const void *                           pNext      = {};
99078     VULKAN_HPP_NAMESPACE::PipelineLayout   layout     = {};
99079     VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags = {};
99080     uint32_t                               offset     = {};
99081     uint32_t                               size       = {};
99082     const void *                           pValues    = {};
99083   };
99084 
99085   template <>
99086   struct CppType<StructureType, StructureType::ePushConstantsInfoKHR>
99087   {
99088     using Type = PushConstantsInfoKHR;
99089   };
99090 
99091   struct WriteDescriptorSet
99092   {
99093     using NativeType = VkWriteDescriptorSet;
99094 
99095     static const bool                                  allowDuplicate = false;
99096     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eWriteDescriptorSet;
99097 
99098 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
WriteDescriptorSetVULKAN_HPP_NAMESPACE::WriteDescriptorSet99099     VULKAN_HPP_CONSTEXPR WriteDescriptorSet( VULKAN_HPP_NAMESPACE::DescriptorSet               dstSet_          = {},
99100                                              uint32_t                                          dstBinding_      = {},
99101                                              uint32_t                                          dstArrayElement_ = {},
99102                                              uint32_t                                          descriptorCount_ = {},
99103                                              VULKAN_HPP_NAMESPACE::DescriptorType              descriptorType_ = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler,
99104                                              const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pImageInfo_     = {},
99105                                              const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo * pBufferInfo_   = {},
99106                                              const VULKAN_HPP_NAMESPACE::BufferView *           pTexelBufferView_ = {},
99107                                              const void *                                       pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
99108       : pNext{ pNext_ }
99109       , dstSet{ dstSet_ }
99110       , dstBinding{ dstBinding_ }
99111       , dstArrayElement{ dstArrayElement_ }
99112       , descriptorCount{ descriptorCount_ }
99113       , descriptorType{ descriptorType_ }
99114       , pImageInfo{ pImageInfo_ }
99115       , pBufferInfo{ pBufferInfo_ }
99116       , pTexelBufferView{ pTexelBufferView_ }
99117     {
99118     }
99119 
99120     VULKAN_HPP_CONSTEXPR WriteDescriptorSet( WriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99121 
WriteDescriptorSetVULKAN_HPP_NAMESPACE::WriteDescriptorSet99122     WriteDescriptorSet( VkWriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT : WriteDescriptorSet( *reinterpret_cast<WriteDescriptorSet const *>( &rhs ) ) {}
99123 
99124 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
WriteDescriptorSetVULKAN_HPP_NAMESPACE::WriteDescriptorSet99125     WriteDescriptorSet( VULKAN_HPP_NAMESPACE::DescriptorSet                                                                     dstSet_,
99126                         uint32_t                                                                                                dstBinding_,
99127                         uint32_t                                                                                                dstArrayElement_,
99128                         VULKAN_HPP_NAMESPACE::DescriptorType                                                                    descriptorType_,
99129                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorImageInfo> const &  imageInfo_,
99130                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo> const & bufferInfo_      = {},
99131                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferView> const &           texelBufferView_ = {},
99132                         const void *                                                                                            pNext_           = nullptr )
99133       : pNext( pNext_ )
99134       , dstSet( dstSet_ )
99135       , dstBinding( dstBinding_ )
99136       , dstArrayElement( dstArrayElement_ )
99137       , descriptorCount( static_cast<uint32_t>( !imageInfo_.empty()    ? imageInfo_.size()
99138                                                 : !bufferInfo_.empty() ? bufferInfo_.size()
99139                                                                        : texelBufferView_.size() ) )
99140       , descriptorType( descriptorType_ )
99141       , pImageInfo( imageInfo_.data() )
99142       , pBufferInfo( bufferInfo_.data() )
99143       , pTexelBufferView( texelBufferView_.data() )
99144     {
99145 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
99146       VULKAN_HPP_ASSERT( ( !imageInfo_.empty() + !bufferInfo_.empty() + !texelBufferView_.empty() ) <= 1 );
99147 #    else
99148       if ( 1 < ( !imageInfo_.empty() + !bufferInfo_.empty() + !texelBufferView_.empty() ) )
99149       {
99150         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
99151                           "::WriteDescriptorSet::WriteDescriptorSet: 1 < ( !imageInfo_.empty() + !bufferInfo_.empty() + !texelBufferView_.empty() )" );
99152       }
99153 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
99154     }
99155 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
99156 
99157     WriteDescriptorSet & operator=( WriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99158 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
99159 
operator =VULKAN_HPP_NAMESPACE::WriteDescriptorSet99160     WriteDescriptorSet & operator=( VkWriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT
99161     {
99162       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WriteDescriptorSet const *>( &rhs );
99163       return *this;
99164     }
99165 
99166 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::WriteDescriptorSet99167     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
99168     {
99169       pNext = pNext_;
99170       return *this;
99171     }
99172 
setDstSetVULKAN_HPP_NAMESPACE::WriteDescriptorSet99173     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDstSet( VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_ ) VULKAN_HPP_NOEXCEPT
99174     {
99175       dstSet = dstSet_;
99176       return *this;
99177     }
99178 
setDstBindingVULKAN_HPP_NAMESPACE::WriteDescriptorSet99179     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDstBinding( uint32_t dstBinding_ ) VULKAN_HPP_NOEXCEPT
99180     {
99181       dstBinding = dstBinding_;
99182       return *this;
99183     }
99184 
setDstArrayElementVULKAN_HPP_NAMESPACE::WriteDescriptorSet99185     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDstArrayElement( uint32_t dstArrayElement_ ) VULKAN_HPP_NOEXCEPT
99186     {
99187       dstArrayElement = dstArrayElement_;
99188       return *this;
99189     }
99190 
setDescriptorCountVULKAN_HPP_NAMESPACE::WriteDescriptorSet99191     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT
99192     {
99193       descriptorCount = descriptorCount_;
99194       return *this;
99195     }
99196 
setDescriptorTypeVULKAN_HPP_NAMESPACE::WriteDescriptorSet99197     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT
99198     {
99199       descriptorType = descriptorType_;
99200       return *this;
99201     }
99202 
setPImageInfoVULKAN_HPP_NAMESPACE::WriteDescriptorSet99203     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setPImageInfo( const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pImageInfo_ ) VULKAN_HPP_NOEXCEPT
99204     {
99205       pImageInfo = pImageInfo_;
99206       return *this;
99207     }
99208 
99209 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
99210     WriteDescriptorSet &
setImageInfoVULKAN_HPP_NAMESPACE::WriteDescriptorSet99211       setImageInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorImageInfo> const & imageInfo_ ) VULKAN_HPP_NOEXCEPT
99212     {
99213       descriptorCount = static_cast<uint32_t>( imageInfo_.size() );
99214       pImageInfo      = imageInfo_.data();
99215       return *this;
99216     }
99217 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
99218 
setPBufferInfoVULKAN_HPP_NAMESPACE::WriteDescriptorSet99219     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setPBufferInfo( const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo * pBufferInfo_ ) VULKAN_HPP_NOEXCEPT
99220     {
99221       pBufferInfo = pBufferInfo_;
99222       return *this;
99223     }
99224 
99225 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
99226     WriteDescriptorSet &
setBufferInfoVULKAN_HPP_NAMESPACE::WriteDescriptorSet99227       setBufferInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo> const & bufferInfo_ ) VULKAN_HPP_NOEXCEPT
99228     {
99229       descriptorCount = static_cast<uint32_t>( bufferInfo_.size() );
99230       pBufferInfo     = bufferInfo_.data();
99231       return *this;
99232     }
99233 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
99234 
setPTexelBufferViewVULKAN_HPP_NAMESPACE::WriteDescriptorSet99235     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setPTexelBufferView( const VULKAN_HPP_NAMESPACE::BufferView * pTexelBufferView_ ) VULKAN_HPP_NOEXCEPT
99236     {
99237       pTexelBufferView = pTexelBufferView_;
99238       return *this;
99239     }
99240 
99241 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
99242     WriteDescriptorSet &
setTexelBufferViewVULKAN_HPP_NAMESPACE::WriteDescriptorSet99243       setTexelBufferView( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferView> const & texelBufferView_ ) VULKAN_HPP_NOEXCEPT
99244     {
99245       descriptorCount  = static_cast<uint32_t>( texelBufferView_.size() );
99246       pTexelBufferView = texelBufferView_.data();
99247       return *this;
99248     }
99249 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
99250 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
99251 
operator VkWriteDescriptorSet const&VULKAN_HPP_NAMESPACE::WriteDescriptorSet99252     operator VkWriteDescriptorSet const &() const VULKAN_HPP_NOEXCEPT
99253     {
99254       return *reinterpret_cast<const VkWriteDescriptorSet *>( this );
99255     }
99256 
operator VkWriteDescriptorSet&VULKAN_HPP_NAMESPACE::WriteDescriptorSet99257     operator VkWriteDescriptorSet &() VULKAN_HPP_NOEXCEPT
99258     {
99259       return *reinterpret_cast<VkWriteDescriptorSet *>( this );
99260     }
99261 
99262 #if defined( VULKAN_HPP_USE_REFLECT )
99263 #  if 14 <= VULKAN_HPP_CPP_VERSION
99264     auto
99265 #  else
99266     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
99267                const void * const &,
99268                VULKAN_HPP_NAMESPACE::DescriptorSet const &,
99269                uint32_t const &,
99270                uint32_t const &,
99271                uint32_t const &,
99272                VULKAN_HPP_NAMESPACE::DescriptorType const &,
99273                const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * const &,
99274                const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo * const &,
99275                const VULKAN_HPP_NAMESPACE::BufferView * const &>
99276 #  endif
reflectVULKAN_HPP_NAMESPACE::WriteDescriptorSet99277       reflect() const VULKAN_HPP_NOEXCEPT
99278     {
99279       return std::tie( sType, pNext, dstSet, dstBinding, dstArrayElement, descriptorCount, descriptorType, pImageInfo, pBufferInfo, pTexelBufferView );
99280     }
99281 #endif
99282 
99283 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
99284     auto operator<=>( WriteDescriptorSet const & ) const = default;
99285 #else
operator ==VULKAN_HPP_NAMESPACE::WriteDescriptorSet99286     bool operator==( WriteDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT
99287     {
99288 #  if defined( VULKAN_HPP_USE_REFLECT )
99289       return this->reflect() == rhs.reflect();
99290 #  else
99291       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dstSet == rhs.dstSet ) && ( dstBinding == rhs.dstBinding ) &&
99292              ( dstArrayElement == rhs.dstArrayElement ) && ( descriptorCount == rhs.descriptorCount ) && ( descriptorType == rhs.descriptorType ) &&
99293              ( pImageInfo == rhs.pImageInfo ) && ( pBufferInfo == rhs.pBufferInfo ) && ( pTexelBufferView == rhs.pTexelBufferView );
99294 #  endif
99295     }
99296 
operator !=VULKAN_HPP_NAMESPACE::WriteDescriptorSet99297     bool operator!=( WriteDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT
99298     {
99299       return !operator==( rhs );
99300     }
99301 #endif
99302 
99303   public:
99304     VULKAN_HPP_NAMESPACE::StructureType                sType            = StructureType::eWriteDescriptorSet;
99305     const void *                                       pNext            = {};
99306     VULKAN_HPP_NAMESPACE::DescriptorSet                dstSet           = {};
99307     uint32_t                                           dstBinding       = {};
99308     uint32_t                                           dstArrayElement  = {};
99309     uint32_t                                           descriptorCount  = {};
99310     VULKAN_HPP_NAMESPACE::DescriptorType               descriptorType   = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler;
99311     const VULKAN_HPP_NAMESPACE::DescriptorImageInfo *  pImageInfo       = {};
99312     const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo * pBufferInfo      = {};
99313     const VULKAN_HPP_NAMESPACE::BufferView *           pTexelBufferView = {};
99314   };
99315 
99316   template <>
99317   struct CppType<StructureType, StructureType::eWriteDescriptorSet>
99318   {
99319     using Type = WriteDescriptorSet;
99320   };
99321 
99322   struct PushDescriptorSetInfoKHR
99323   {
99324     using NativeType = VkPushDescriptorSetInfoKHR;
99325 
99326     static const bool                                  allowDuplicate = false;
99327     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePushDescriptorSetInfoKHR;
99328 
99329 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PushDescriptorSetInfoKHRVULKAN_HPP_NAMESPACE::PushDescriptorSetInfoKHR99330     VULKAN_HPP_CONSTEXPR PushDescriptorSetInfoKHR( VULKAN_HPP_NAMESPACE::ShaderStageFlags           stageFlags_           = {},
99331                                                    VULKAN_HPP_NAMESPACE::PipelineLayout             layout_               = {},
99332                                                    uint32_t                                         set_                  = {},
99333                                                    uint32_t                                         descriptorWriteCount_ = {},
99334                                                    const VULKAN_HPP_NAMESPACE::WriteDescriptorSet * pDescriptorWrites_    = {},
99335                                                    const void *                                     pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
99336       : pNext{ pNext_ }
99337       , stageFlags{ stageFlags_ }
99338       , layout{ layout_ }
99339       , set{ set_ }
99340       , descriptorWriteCount{ descriptorWriteCount_ }
99341       , pDescriptorWrites{ pDescriptorWrites_ }
99342     {
99343     }
99344 
99345     VULKAN_HPP_CONSTEXPR PushDescriptorSetInfoKHR( PushDescriptorSetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99346 
PushDescriptorSetInfoKHRVULKAN_HPP_NAMESPACE::PushDescriptorSetInfoKHR99347     PushDescriptorSetInfoKHR( VkPushDescriptorSetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
99348       : PushDescriptorSetInfoKHR( *reinterpret_cast<PushDescriptorSetInfoKHR const *>( &rhs ) )
99349     {
99350     }
99351 
99352 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PushDescriptorSetInfoKHRVULKAN_HPP_NAMESPACE::PushDescriptorSetInfoKHR99353     PushDescriptorSetInfoKHR( VULKAN_HPP_NAMESPACE::ShaderStageFlags                                                                stageFlags_,
99354                               VULKAN_HPP_NAMESPACE::PipelineLayout                                                                  layout_,
99355                               uint32_t                                                                                              set_,
99356                               VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites_,
99357                               const void *                                                                                          pNext_ = nullptr )
99358       : pNext( pNext_ )
99359       , stageFlags( stageFlags_ )
99360       , layout( layout_ )
99361       , set( set_ )
99362       , descriptorWriteCount( static_cast<uint32_t>( descriptorWrites_.size() ) )
99363       , pDescriptorWrites( descriptorWrites_.data() )
99364     {
99365     }
99366 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
99367 
99368     PushDescriptorSetInfoKHR & operator=( PushDescriptorSetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99369 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
99370 
operator =VULKAN_HPP_NAMESPACE::PushDescriptorSetInfoKHR99371     PushDescriptorSetInfoKHR & operator=( VkPushDescriptorSetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
99372     {
99373       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PushDescriptorSetInfoKHR const *>( &rhs );
99374       return *this;
99375     }
99376 
99377 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PushDescriptorSetInfoKHR99378     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
99379     {
99380       pNext = pNext_;
99381       return *this;
99382     }
99383 
setStageFlagsVULKAN_HPP_NAMESPACE::PushDescriptorSetInfoKHR99384     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfoKHR & setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT
99385     {
99386       stageFlags = stageFlags_;
99387       return *this;
99388     }
99389 
setLayoutVULKAN_HPP_NAMESPACE::PushDescriptorSetInfoKHR99390     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfoKHR & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
99391     {
99392       layout = layout_;
99393       return *this;
99394     }
99395 
setSetVULKAN_HPP_NAMESPACE::PushDescriptorSetInfoKHR99396     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfoKHR & setSet( uint32_t set_ ) VULKAN_HPP_NOEXCEPT
99397     {
99398       set = set_;
99399       return *this;
99400     }
99401 
setDescriptorWriteCountVULKAN_HPP_NAMESPACE::PushDescriptorSetInfoKHR99402     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfoKHR & setDescriptorWriteCount( uint32_t descriptorWriteCount_ ) VULKAN_HPP_NOEXCEPT
99403     {
99404       descriptorWriteCount = descriptorWriteCount_;
99405       return *this;
99406     }
99407 
99408     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfoKHR &
setPDescriptorWritesVULKAN_HPP_NAMESPACE::PushDescriptorSetInfoKHR99409       setPDescriptorWrites( const VULKAN_HPP_NAMESPACE::WriteDescriptorSet * pDescriptorWrites_ ) VULKAN_HPP_NOEXCEPT
99410     {
99411       pDescriptorWrites = pDescriptorWrites_;
99412       return *this;
99413     }
99414 
99415 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDescriptorWritesVULKAN_HPP_NAMESPACE::PushDescriptorSetInfoKHR99416     PushDescriptorSetInfoKHR & setDescriptorWrites(
99417       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites_ ) VULKAN_HPP_NOEXCEPT
99418     {
99419       descriptorWriteCount = static_cast<uint32_t>( descriptorWrites_.size() );
99420       pDescriptorWrites    = descriptorWrites_.data();
99421       return *this;
99422     }
99423 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
99424 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
99425 
operator VkPushDescriptorSetInfoKHR const&VULKAN_HPP_NAMESPACE::PushDescriptorSetInfoKHR99426     operator VkPushDescriptorSetInfoKHR const &() const VULKAN_HPP_NOEXCEPT
99427     {
99428       return *reinterpret_cast<const VkPushDescriptorSetInfoKHR *>( this );
99429     }
99430 
operator VkPushDescriptorSetInfoKHR&VULKAN_HPP_NAMESPACE::PushDescriptorSetInfoKHR99431     operator VkPushDescriptorSetInfoKHR &() VULKAN_HPP_NOEXCEPT
99432     {
99433       return *reinterpret_cast<VkPushDescriptorSetInfoKHR *>( this );
99434     }
99435 
99436 #if defined( VULKAN_HPP_USE_REFLECT )
99437 #  if 14 <= VULKAN_HPP_CPP_VERSION
99438     auto
99439 #  else
99440     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
99441                const void * const &,
99442                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
99443                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
99444                uint32_t const &,
99445                uint32_t const &,
99446                const VULKAN_HPP_NAMESPACE::WriteDescriptorSet * const &>
99447 #  endif
reflectVULKAN_HPP_NAMESPACE::PushDescriptorSetInfoKHR99448       reflect() const VULKAN_HPP_NOEXCEPT
99449     {
99450       return std::tie( sType, pNext, stageFlags, layout, set, descriptorWriteCount, pDescriptorWrites );
99451     }
99452 #endif
99453 
99454 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
99455     auto operator<=>( PushDescriptorSetInfoKHR const & ) const = default;
99456 #else
operator ==VULKAN_HPP_NAMESPACE::PushDescriptorSetInfoKHR99457     bool operator==( PushDescriptorSetInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
99458     {
99459 #  if defined( VULKAN_HPP_USE_REFLECT )
99460       return this->reflect() == rhs.reflect();
99461 #  else
99462       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stageFlags == rhs.stageFlags ) && ( layout == rhs.layout ) && ( set == rhs.set ) &&
99463              ( descriptorWriteCount == rhs.descriptorWriteCount ) && ( pDescriptorWrites == rhs.pDescriptorWrites );
99464 #  endif
99465     }
99466 
operator !=VULKAN_HPP_NAMESPACE::PushDescriptorSetInfoKHR99467     bool operator!=( PushDescriptorSetInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
99468     {
99469       return !operator==( rhs );
99470     }
99471 #endif
99472 
99473   public:
99474     VULKAN_HPP_NAMESPACE::StructureType              sType                = StructureType::ePushDescriptorSetInfoKHR;
99475     const void *                                     pNext                = {};
99476     VULKAN_HPP_NAMESPACE::ShaderStageFlags           stageFlags           = {};
99477     VULKAN_HPP_NAMESPACE::PipelineLayout             layout               = {};
99478     uint32_t                                         set                  = {};
99479     uint32_t                                         descriptorWriteCount = {};
99480     const VULKAN_HPP_NAMESPACE::WriteDescriptorSet * pDescriptorWrites    = {};
99481   };
99482 
99483   template <>
99484   struct CppType<StructureType, StructureType::ePushDescriptorSetInfoKHR>
99485   {
99486     using Type = PushDescriptorSetInfoKHR;
99487   };
99488 
99489   struct PushDescriptorSetWithTemplateInfoKHR
99490   {
99491     using NativeType = VkPushDescriptorSetWithTemplateInfoKHR;
99492 
99493     static const bool                                  allowDuplicate = false;
99494     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::ePushDescriptorSetWithTemplateInfoKHR;
99495 
99496 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PushDescriptorSetWithTemplateInfoKHRVULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfoKHR99497     VULKAN_HPP_CONSTEXPR PushDescriptorSetWithTemplateInfoKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate_ = {},
99498                                                                VULKAN_HPP_NAMESPACE::PipelineLayout           layout_                   = {},
99499                                                                uint32_t                                       set_                      = {},
99500                                                                const void *                                   pData_                    = {},
99501                                                                const void *                                   pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
99502       : pNext{ pNext_ }
99503       , descriptorUpdateTemplate{ descriptorUpdateTemplate_ }
99504       , layout{ layout_ }
99505       , set{ set_ }
99506       , pData{ pData_ }
99507     {
99508     }
99509 
99510     VULKAN_HPP_CONSTEXPR PushDescriptorSetWithTemplateInfoKHR( PushDescriptorSetWithTemplateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99511 
PushDescriptorSetWithTemplateInfoKHRVULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfoKHR99512     PushDescriptorSetWithTemplateInfoKHR( VkPushDescriptorSetWithTemplateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
99513       : PushDescriptorSetWithTemplateInfoKHR( *reinterpret_cast<PushDescriptorSetWithTemplateInfoKHR const *>( &rhs ) )
99514     {
99515     }
99516 
99517     PushDescriptorSetWithTemplateInfoKHR & operator=( PushDescriptorSetWithTemplateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99518 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
99519 
operator =VULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfoKHR99520     PushDescriptorSetWithTemplateInfoKHR & operator=( VkPushDescriptorSetWithTemplateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
99521     {
99522       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfoKHR const *>( &rhs );
99523       return *this;
99524     }
99525 
99526 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfoKHR99527     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetWithTemplateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
99528     {
99529       pNext = pNext_;
99530       return *this;
99531     }
99532 
99533     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetWithTemplateInfoKHR &
setDescriptorUpdateTemplateVULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfoKHR99534       setDescriptorUpdateTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate_ ) VULKAN_HPP_NOEXCEPT
99535     {
99536       descriptorUpdateTemplate = descriptorUpdateTemplate_;
99537       return *this;
99538     }
99539 
setLayoutVULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfoKHR99540     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetWithTemplateInfoKHR & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
99541     {
99542       layout = layout_;
99543       return *this;
99544     }
99545 
setSetVULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfoKHR99546     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetWithTemplateInfoKHR & setSet( uint32_t set_ ) VULKAN_HPP_NOEXCEPT
99547     {
99548       set = set_;
99549       return *this;
99550     }
99551 
setPDataVULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfoKHR99552     VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetWithTemplateInfoKHR & setPData( const void * pData_ ) VULKAN_HPP_NOEXCEPT
99553     {
99554       pData = pData_;
99555       return *this;
99556     }
99557 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
99558 
operator VkPushDescriptorSetWithTemplateInfoKHR const&VULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfoKHR99559     operator VkPushDescriptorSetWithTemplateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
99560     {
99561       return *reinterpret_cast<const VkPushDescriptorSetWithTemplateInfoKHR *>( this );
99562     }
99563 
operator VkPushDescriptorSetWithTemplateInfoKHR&VULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfoKHR99564     operator VkPushDescriptorSetWithTemplateInfoKHR &() VULKAN_HPP_NOEXCEPT
99565     {
99566       return *reinterpret_cast<VkPushDescriptorSetWithTemplateInfoKHR *>( this );
99567     }
99568 
99569 #if defined( VULKAN_HPP_USE_REFLECT )
99570 #  if 14 <= VULKAN_HPP_CPP_VERSION
99571     auto
99572 #  else
99573     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
99574                const void * const &,
99575                VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate const &,
99576                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
99577                uint32_t const &,
99578                const void * const &>
99579 #  endif
reflectVULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfoKHR99580       reflect() const VULKAN_HPP_NOEXCEPT
99581     {
99582       return std::tie( sType, pNext, descriptorUpdateTemplate, layout, set, pData );
99583     }
99584 #endif
99585 
99586 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
99587     auto operator<=>( PushDescriptorSetWithTemplateInfoKHR const & ) const = default;
99588 #else
operator ==VULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfoKHR99589     bool operator==( PushDescriptorSetWithTemplateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
99590     {
99591 #  if defined( VULKAN_HPP_USE_REFLECT )
99592       return this->reflect() == rhs.reflect();
99593 #  else
99594       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorUpdateTemplate == rhs.descriptorUpdateTemplate ) && ( layout == rhs.layout ) &&
99595              ( set == rhs.set ) && ( pData == rhs.pData );
99596 #  endif
99597     }
99598 
operator !=VULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfoKHR99599     bool operator!=( PushDescriptorSetWithTemplateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
99600     {
99601       return !operator==( rhs );
99602     }
99603 #endif
99604 
99605   public:
99606     VULKAN_HPP_NAMESPACE::StructureType            sType                    = StructureType::ePushDescriptorSetWithTemplateInfoKHR;
99607     const void *                                   pNext                    = {};
99608     VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate = {};
99609     VULKAN_HPP_NAMESPACE::PipelineLayout           layout                   = {};
99610     uint32_t                                       set                      = {};
99611     const void *                                   pData                    = {};
99612   };
99613 
99614   template <>
99615   struct CppType<StructureType, StructureType::ePushDescriptorSetWithTemplateInfoKHR>
99616   {
99617     using Type = PushDescriptorSetWithTemplateInfoKHR;
99618   };
99619 
99620   struct QueryLowLatencySupportNV
99621   {
99622     using NativeType = VkQueryLowLatencySupportNV;
99623 
99624     static const bool                                  allowDuplicate = false;
99625     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueryLowLatencySupportNV;
99626 
99627 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueryLowLatencySupportNVVULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV99628     VULKAN_HPP_CONSTEXPR QueryLowLatencySupportNV( void * pQueriedLowLatencyData_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
99629       : pNext{ pNext_ }
99630       , pQueriedLowLatencyData{ pQueriedLowLatencyData_ }
99631     {
99632     }
99633 
99634     VULKAN_HPP_CONSTEXPR QueryLowLatencySupportNV( QueryLowLatencySupportNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99635 
QueryLowLatencySupportNVVULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV99636     QueryLowLatencySupportNV( VkQueryLowLatencySupportNV const & rhs ) VULKAN_HPP_NOEXCEPT
99637       : QueryLowLatencySupportNV( *reinterpret_cast<QueryLowLatencySupportNV const *>( &rhs ) )
99638     {
99639     }
99640 
99641     QueryLowLatencySupportNV & operator=( QueryLowLatencySupportNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99642 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
99643 
operator =VULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV99644     QueryLowLatencySupportNV & operator=( VkQueryLowLatencySupportNV const & rhs ) VULKAN_HPP_NOEXCEPT
99645     {
99646       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV const *>( &rhs );
99647       return *this;
99648     }
99649 
99650 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV99651     VULKAN_HPP_CONSTEXPR_14 QueryLowLatencySupportNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
99652     {
99653       pNext = pNext_;
99654       return *this;
99655     }
99656 
setPQueriedLowLatencyDataVULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV99657     VULKAN_HPP_CONSTEXPR_14 QueryLowLatencySupportNV & setPQueriedLowLatencyData( void * pQueriedLowLatencyData_ ) VULKAN_HPP_NOEXCEPT
99658     {
99659       pQueriedLowLatencyData = pQueriedLowLatencyData_;
99660       return *this;
99661     }
99662 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
99663 
operator VkQueryLowLatencySupportNV const&VULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV99664     operator VkQueryLowLatencySupportNV const &() const VULKAN_HPP_NOEXCEPT
99665     {
99666       return *reinterpret_cast<const VkQueryLowLatencySupportNV *>( this );
99667     }
99668 
operator VkQueryLowLatencySupportNV&VULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV99669     operator VkQueryLowLatencySupportNV &() VULKAN_HPP_NOEXCEPT
99670     {
99671       return *reinterpret_cast<VkQueryLowLatencySupportNV *>( this );
99672     }
99673 
99674 #if defined( VULKAN_HPP_USE_REFLECT )
99675 #  if 14 <= VULKAN_HPP_CPP_VERSION
99676     auto
99677 #  else
99678     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, void * const &>
99679 #  endif
reflectVULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV99680       reflect() const VULKAN_HPP_NOEXCEPT
99681     {
99682       return std::tie( sType, pNext, pQueriedLowLatencyData );
99683     }
99684 #endif
99685 
99686 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
99687     auto operator<=>( QueryLowLatencySupportNV const & ) const = default;
99688 #else
operator ==VULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV99689     bool operator==( QueryLowLatencySupportNV const & rhs ) const VULKAN_HPP_NOEXCEPT
99690     {
99691 #  if defined( VULKAN_HPP_USE_REFLECT )
99692       return this->reflect() == rhs.reflect();
99693 #  else
99694       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pQueriedLowLatencyData == rhs.pQueriedLowLatencyData );
99695 #  endif
99696     }
99697 
operator !=VULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV99698     bool operator!=( QueryLowLatencySupportNV const & rhs ) const VULKAN_HPP_NOEXCEPT
99699     {
99700       return !operator==( rhs );
99701     }
99702 #endif
99703 
99704   public:
99705     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::eQueryLowLatencySupportNV;
99706     const void *                        pNext                  = {};
99707     void *                              pQueriedLowLatencyData = {};
99708   };
99709 
99710   template <>
99711   struct CppType<StructureType, StructureType::eQueryLowLatencySupportNV>
99712   {
99713     using Type = QueryLowLatencySupportNV;
99714   };
99715 
99716   struct QueryPoolCreateInfo
99717   {
99718     using NativeType = VkQueryPoolCreateInfo;
99719 
99720     static const bool                                  allowDuplicate = false;
99721     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueryPoolCreateInfo;
99722 
99723 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueryPoolCreateInfoVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo99724     VULKAN_HPP_CONSTEXPR QueryPoolCreateInfo( VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags        flags_      = {},
99725                                               VULKAN_HPP_NAMESPACE::QueryType                   queryType_  = VULKAN_HPP_NAMESPACE::QueryType::eOcclusion,
99726                                               uint32_t                                          queryCount_ = {},
99727                                               VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_ = {},
99728                                               const void *                                      pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
99729       : pNext{ pNext_ }
99730       , flags{ flags_ }
99731       , queryType{ queryType_ }
99732       , queryCount{ queryCount_ }
99733       , pipelineStatistics{ pipelineStatistics_ }
99734     {
99735     }
99736 
99737     VULKAN_HPP_CONSTEXPR QueryPoolCreateInfo( QueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99738 
QueryPoolCreateInfoVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo99739     QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : QueryPoolCreateInfo( *reinterpret_cast<QueryPoolCreateInfo const *>( &rhs ) )
99740     {
99741     }
99742 
99743     QueryPoolCreateInfo & operator=( QueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99744 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
99745 
operator =VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo99746     QueryPoolCreateInfo & operator=( VkQueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
99747     {
99748       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo const *>( &rhs );
99749       return *this;
99750     }
99751 
99752 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo99753     VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
99754     {
99755       pNext = pNext_;
99756       return *this;
99757     }
99758 
setFlagsVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo99759     VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
99760     {
99761       flags = flags_;
99762       return *this;
99763     }
99764 
setQueryTypeVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo99765     VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setQueryType( VULKAN_HPP_NAMESPACE::QueryType queryType_ ) VULKAN_HPP_NOEXCEPT
99766     {
99767       queryType = queryType_;
99768       return *this;
99769     }
99770 
setQueryCountVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo99771     VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setQueryCount( uint32_t queryCount_ ) VULKAN_HPP_NOEXCEPT
99772     {
99773       queryCount = queryCount_;
99774       return *this;
99775     }
99776 
99777     VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo &
setPipelineStatisticsVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo99778       setPipelineStatistics( VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_ ) VULKAN_HPP_NOEXCEPT
99779     {
99780       pipelineStatistics = pipelineStatistics_;
99781       return *this;
99782     }
99783 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
99784 
operator VkQueryPoolCreateInfo const&VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo99785     operator VkQueryPoolCreateInfo const &() const VULKAN_HPP_NOEXCEPT
99786     {
99787       return *reinterpret_cast<const VkQueryPoolCreateInfo *>( this );
99788     }
99789 
operator VkQueryPoolCreateInfo&VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo99790     operator VkQueryPoolCreateInfo &() VULKAN_HPP_NOEXCEPT
99791     {
99792       return *reinterpret_cast<VkQueryPoolCreateInfo *>( this );
99793     }
99794 
99795 #if defined( VULKAN_HPP_USE_REFLECT )
99796 #  if 14 <= VULKAN_HPP_CPP_VERSION
99797     auto
99798 #  else
99799     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
99800                const void * const &,
99801                VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags const &,
99802                VULKAN_HPP_NAMESPACE::QueryType const &,
99803                uint32_t const &,
99804                VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags const &>
99805 #  endif
reflectVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo99806       reflect() const VULKAN_HPP_NOEXCEPT
99807     {
99808       return std::tie( sType, pNext, flags, queryType, queryCount, pipelineStatistics );
99809     }
99810 #endif
99811 
99812 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
99813     auto operator<=>( QueryPoolCreateInfo const & ) const = default;
99814 #else
operator ==VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo99815     bool operator==( QueryPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
99816     {
99817 #  if defined( VULKAN_HPP_USE_REFLECT )
99818       return this->reflect() == rhs.reflect();
99819 #  else
99820       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( queryType == rhs.queryType ) && ( queryCount == rhs.queryCount ) &&
99821              ( pipelineStatistics == rhs.pipelineStatistics );
99822 #  endif
99823     }
99824 
operator !=VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo99825     bool operator!=( QueryPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
99826     {
99827       return !operator==( rhs );
99828     }
99829 #endif
99830 
99831   public:
99832     VULKAN_HPP_NAMESPACE::StructureType               sType              = StructureType::eQueryPoolCreateInfo;
99833     const void *                                      pNext              = {};
99834     VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags        flags              = {};
99835     VULKAN_HPP_NAMESPACE::QueryType                   queryType          = VULKAN_HPP_NAMESPACE::QueryType::eOcclusion;
99836     uint32_t                                          queryCount         = {};
99837     VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics = {};
99838   };
99839 
99840   template <>
99841   struct CppType<StructureType, StructureType::eQueryPoolCreateInfo>
99842   {
99843     using Type = QueryPoolCreateInfo;
99844   };
99845 
99846   struct QueryPoolPerformanceCreateInfoKHR
99847   {
99848     using NativeType = VkQueryPoolPerformanceCreateInfoKHR;
99849 
99850     static const bool                                  allowDuplicate = false;
99851     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueryPoolPerformanceCreateInfoKHR;
99852 
99853 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueryPoolPerformanceCreateInfoKHRVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR99854     VULKAN_HPP_CONSTEXPR QueryPoolPerformanceCreateInfoKHR( uint32_t         queueFamilyIndex_  = {},
99855                                                             uint32_t         counterIndexCount_ = {},
99856                                                             const uint32_t * pCounterIndices_   = {},
99857                                                             const void *     pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
99858       : pNext{ pNext_ }
99859       , queueFamilyIndex{ queueFamilyIndex_ }
99860       , counterIndexCount{ counterIndexCount_ }
99861       , pCounterIndices{ pCounterIndices_ }
99862     {
99863     }
99864 
99865     VULKAN_HPP_CONSTEXPR QueryPoolPerformanceCreateInfoKHR( QueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99866 
QueryPoolPerformanceCreateInfoKHRVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR99867     QueryPoolPerformanceCreateInfoKHR( VkQueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
99868       : QueryPoolPerformanceCreateInfoKHR( *reinterpret_cast<QueryPoolPerformanceCreateInfoKHR const *>( &rhs ) )
99869     {
99870     }
99871 
99872 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
QueryPoolPerformanceCreateInfoKHRVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR99873     QueryPoolPerformanceCreateInfoKHR( uint32_t                                                              queueFamilyIndex_,
99874                                        VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & counterIndices_,
99875                                        const void *                                                          pNext_ = nullptr )
99876       : pNext( pNext_ )
99877       , queueFamilyIndex( queueFamilyIndex_ )
99878       , counterIndexCount( static_cast<uint32_t>( counterIndices_.size() ) )
99879       , pCounterIndices( counterIndices_.data() )
99880     {
99881     }
99882 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
99883 
99884     QueryPoolPerformanceCreateInfoKHR & operator=( QueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
99885 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
99886 
operator =VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR99887     QueryPoolPerformanceCreateInfoKHR & operator=( VkQueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
99888     {
99889       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR const *>( &rhs );
99890       return *this;
99891     }
99892 
99893 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR99894     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
99895     {
99896       pNext = pNext_;
99897       return *this;
99898     }
99899 
setQueueFamilyIndexVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR99900     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
99901     {
99902       queueFamilyIndex = queueFamilyIndex_;
99903       return *this;
99904     }
99905 
setCounterIndexCountVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR99906     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & setCounterIndexCount( uint32_t counterIndexCount_ ) VULKAN_HPP_NOEXCEPT
99907     {
99908       counterIndexCount = counterIndexCount_;
99909       return *this;
99910     }
99911 
setPCounterIndicesVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR99912     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & setPCounterIndices( const uint32_t * pCounterIndices_ ) VULKAN_HPP_NOEXCEPT
99913     {
99914       pCounterIndices = pCounterIndices_;
99915       return *this;
99916     }
99917 
99918 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
99919     QueryPoolPerformanceCreateInfoKHR &
setCounterIndicesVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR99920       setCounterIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & counterIndices_ ) VULKAN_HPP_NOEXCEPT
99921     {
99922       counterIndexCount = static_cast<uint32_t>( counterIndices_.size() );
99923       pCounterIndices   = counterIndices_.data();
99924       return *this;
99925     }
99926 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
99927 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
99928 
operator VkQueryPoolPerformanceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR99929     operator VkQueryPoolPerformanceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
99930     {
99931       return *reinterpret_cast<const VkQueryPoolPerformanceCreateInfoKHR *>( this );
99932     }
99933 
operator VkQueryPoolPerformanceCreateInfoKHR&VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR99934     operator VkQueryPoolPerformanceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
99935     {
99936       return *reinterpret_cast<VkQueryPoolPerformanceCreateInfoKHR *>( this );
99937     }
99938 
99939 #if defined( VULKAN_HPP_USE_REFLECT )
99940 #  if 14 <= VULKAN_HPP_CPP_VERSION
99941     auto
99942 #  else
99943     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, uint32_t const &, const uint32_t * const &>
99944 #  endif
reflectVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR99945       reflect() const VULKAN_HPP_NOEXCEPT
99946     {
99947       return std::tie( sType, pNext, queueFamilyIndex, counterIndexCount, pCounterIndices );
99948     }
99949 #endif
99950 
99951 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
99952     auto operator<=>( QueryPoolPerformanceCreateInfoKHR const & ) const = default;
99953 #else
operator ==VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR99954     bool operator==( QueryPoolPerformanceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
99955     {
99956 #  if defined( VULKAN_HPP_USE_REFLECT )
99957       return this->reflect() == rhs.reflect();
99958 #  else
99959       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queueFamilyIndex == rhs.queueFamilyIndex ) &&
99960              ( counterIndexCount == rhs.counterIndexCount ) && ( pCounterIndices == rhs.pCounterIndices );
99961 #  endif
99962     }
99963 
operator !=VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR99964     bool operator!=( QueryPoolPerformanceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
99965     {
99966       return !operator==( rhs );
99967     }
99968 #endif
99969 
99970   public:
99971     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::eQueryPoolPerformanceCreateInfoKHR;
99972     const void *                        pNext             = {};
99973     uint32_t                            queueFamilyIndex  = {};
99974     uint32_t                            counterIndexCount = {};
99975     const uint32_t *                    pCounterIndices   = {};
99976   };
99977 
99978   template <>
99979   struct CppType<StructureType, StructureType::eQueryPoolPerformanceCreateInfoKHR>
99980   {
99981     using Type = QueryPoolPerformanceCreateInfoKHR;
99982   };
99983 
99984   struct QueryPoolPerformanceQueryCreateInfoINTEL
99985   {
99986     using NativeType = VkQueryPoolPerformanceQueryCreateInfoINTEL;
99987 
99988     static const bool                                  allowDuplicate = false;
99989     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueryPoolPerformanceQueryCreateInfoINTEL;
99990 
99991 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueryPoolPerformanceQueryCreateInfoINTELVULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL99992     VULKAN_HPP_CONSTEXPR QueryPoolPerformanceQueryCreateInfoINTEL(
99993       VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL performanceCountersSampling_ = VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL::eManual,
99994       const void *                                     pNext_                       = nullptr ) VULKAN_HPP_NOEXCEPT
99995       : pNext{ pNext_ }
99996       , performanceCountersSampling{ performanceCountersSampling_ }
99997     {
99998     }
99999 
100000     VULKAN_HPP_CONSTEXPR QueryPoolPerformanceQueryCreateInfoINTEL( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100001 
QueryPoolPerformanceQueryCreateInfoINTELVULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL100002     QueryPoolPerformanceQueryCreateInfoINTEL( VkQueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
100003       : QueryPoolPerformanceQueryCreateInfoINTEL( *reinterpret_cast<QueryPoolPerformanceQueryCreateInfoINTEL const *>( &rhs ) )
100004     {
100005     }
100006 
100007     QueryPoolPerformanceQueryCreateInfoINTEL & operator=( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100008 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
100009 
operator =VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL100010     QueryPoolPerformanceQueryCreateInfoINTEL & operator=( VkQueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
100011     {
100012       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL const *>( &rhs );
100013       return *this;
100014     }
100015 
100016 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL100017     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceQueryCreateInfoINTEL & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
100018     {
100019       pNext = pNext_;
100020       return *this;
100021     }
100022 
100023     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceQueryCreateInfoINTEL &
setPerformanceCountersSamplingVULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL100024       setPerformanceCountersSampling( VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL performanceCountersSampling_ ) VULKAN_HPP_NOEXCEPT
100025     {
100026       performanceCountersSampling = performanceCountersSampling_;
100027       return *this;
100028     }
100029 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
100030 
operator VkQueryPoolPerformanceQueryCreateInfoINTEL const&VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL100031     operator VkQueryPoolPerformanceQueryCreateInfoINTEL const &() const VULKAN_HPP_NOEXCEPT
100032     {
100033       return *reinterpret_cast<const VkQueryPoolPerformanceQueryCreateInfoINTEL *>( this );
100034     }
100035 
operator VkQueryPoolPerformanceQueryCreateInfoINTEL&VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL100036     operator VkQueryPoolPerformanceQueryCreateInfoINTEL &() VULKAN_HPP_NOEXCEPT
100037     {
100038       return *reinterpret_cast<VkQueryPoolPerformanceQueryCreateInfoINTEL *>( this );
100039     }
100040 
100041 #if defined( VULKAN_HPP_USE_REFLECT )
100042 #  if 14 <= VULKAN_HPP_CPP_VERSION
100043     auto
100044 #  else
100045     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL const &>
100046 #  endif
reflectVULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL100047       reflect() const VULKAN_HPP_NOEXCEPT
100048     {
100049       return std::tie( sType, pNext, performanceCountersSampling );
100050     }
100051 #endif
100052 
100053 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
100054     auto operator<=>( QueryPoolPerformanceQueryCreateInfoINTEL const & ) const = default;
100055 #else
operator ==VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL100056     bool operator==( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
100057     {
100058 #  if defined( VULKAN_HPP_USE_REFLECT )
100059       return this->reflect() == rhs.reflect();
100060 #  else
100061       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( performanceCountersSampling == rhs.performanceCountersSampling );
100062 #  endif
100063     }
100064 
operator !=VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL100065     bool operator!=( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT
100066     {
100067       return !operator==( rhs );
100068     }
100069 #endif
100070 
100071   public:
100072     VULKAN_HPP_NAMESPACE::StructureType              sType                       = StructureType::eQueryPoolPerformanceQueryCreateInfoINTEL;
100073     const void *                                     pNext                       = {};
100074     VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL performanceCountersSampling = VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL::eManual;
100075   };
100076 
100077   template <>
100078   struct CppType<StructureType, StructureType::eQueryPoolPerformanceQueryCreateInfoINTEL>
100079   {
100080     using Type = QueryPoolPerformanceQueryCreateInfoINTEL;
100081   };
100082 
100083   using QueryPoolCreateInfoINTEL = QueryPoolPerformanceQueryCreateInfoINTEL;
100084 
100085   struct QueryPoolVideoEncodeFeedbackCreateInfoKHR
100086   {
100087     using NativeType = VkQueryPoolVideoEncodeFeedbackCreateInfoKHR;
100088 
100089     static const bool                                  allowDuplicate = false;
100090     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueryPoolVideoEncodeFeedbackCreateInfoKHR;
100091 
100092 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueryPoolVideoEncodeFeedbackCreateInfoKHRVULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR100093     VULKAN_HPP_CONSTEXPR QueryPoolVideoEncodeFeedbackCreateInfoKHR( VULKAN_HPP_NAMESPACE::VideoEncodeFeedbackFlagsKHR encodeFeedbackFlags_ = {},
100094                                                                     const void *                                      pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
100095       : pNext{ pNext_ }
100096       , encodeFeedbackFlags{ encodeFeedbackFlags_ }
100097     {
100098     }
100099 
100100     VULKAN_HPP_CONSTEXPR QueryPoolVideoEncodeFeedbackCreateInfoKHR( QueryPoolVideoEncodeFeedbackCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100101 
QueryPoolVideoEncodeFeedbackCreateInfoKHRVULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR100102     QueryPoolVideoEncodeFeedbackCreateInfoKHR( VkQueryPoolVideoEncodeFeedbackCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
100103       : QueryPoolVideoEncodeFeedbackCreateInfoKHR( *reinterpret_cast<QueryPoolVideoEncodeFeedbackCreateInfoKHR const *>( &rhs ) )
100104     {
100105     }
100106 
100107     QueryPoolVideoEncodeFeedbackCreateInfoKHR & operator=( QueryPoolVideoEncodeFeedbackCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100108 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
100109 
operator =VULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR100110     QueryPoolVideoEncodeFeedbackCreateInfoKHR & operator=( VkQueryPoolVideoEncodeFeedbackCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
100111     {
100112       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR const *>( &rhs );
100113       return *this;
100114     }
100115 
100116 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR100117     VULKAN_HPP_CONSTEXPR_14 QueryPoolVideoEncodeFeedbackCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
100118     {
100119       pNext = pNext_;
100120       return *this;
100121     }
100122 
100123     VULKAN_HPP_CONSTEXPR_14 QueryPoolVideoEncodeFeedbackCreateInfoKHR &
setEncodeFeedbackFlagsVULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR100124       setEncodeFeedbackFlags( VULKAN_HPP_NAMESPACE::VideoEncodeFeedbackFlagsKHR encodeFeedbackFlags_ ) VULKAN_HPP_NOEXCEPT
100125     {
100126       encodeFeedbackFlags = encodeFeedbackFlags_;
100127       return *this;
100128     }
100129 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
100130 
operator VkQueryPoolVideoEncodeFeedbackCreateInfoKHR const&VULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR100131     operator VkQueryPoolVideoEncodeFeedbackCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
100132     {
100133       return *reinterpret_cast<const VkQueryPoolVideoEncodeFeedbackCreateInfoKHR *>( this );
100134     }
100135 
operator VkQueryPoolVideoEncodeFeedbackCreateInfoKHR&VULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR100136     operator VkQueryPoolVideoEncodeFeedbackCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
100137     {
100138       return *reinterpret_cast<VkQueryPoolVideoEncodeFeedbackCreateInfoKHR *>( this );
100139     }
100140 
100141 #if defined( VULKAN_HPP_USE_REFLECT )
100142 #  if 14 <= VULKAN_HPP_CPP_VERSION
100143     auto
100144 #  else
100145     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::VideoEncodeFeedbackFlagsKHR const &>
100146 #  endif
reflectVULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR100147       reflect() const VULKAN_HPP_NOEXCEPT
100148     {
100149       return std::tie( sType, pNext, encodeFeedbackFlags );
100150     }
100151 #endif
100152 
100153 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
100154     auto operator<=>( QueryPoolVideoEncodeFeedbackCreateInfoKHR const & ) const = default;
100155 #else
operator ==VULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR100156     bool operator==( QueryPoolVideoEncodeFeedbackCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
100157     {
100158 #  if defined( VULKAN_HPP_USE_REFLECT )
100159       return this->reflect() == rhs.reflect();
100160 #  else
100161       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( encodeFeedbackFlags == rhs.encodeFeedbackFlags );
100162 #  endif
100163     }
100164 
operator !=VULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR100165     bool operator!=( QueryPoolVideoEncodeFeedbackCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
100166     {
100167       return !operator==( rhs );
100168     }
100169 #endif
100170 
100171   public:
100172     VULKAN_HPP_NAMESPACE::StructureType               sType               = StructureType::eQueryPoolVideoEncodeFeedbackCreateInfoKHR;
100173     const void *                                      pNext               = {};
100174     VULKAN_HPP_NAMESPACE::VideoEncodeFeedbackFlagsKHR encodeFeedbackFlags = {};
100175   };
100176 
100177   template <>
100178   struct CppType<StructureType, StructureType::eQueryPoolVideoEncodeFeedbackCreateInfoKHR>
100179   {
100180     using Type = QueryPoolVideoEncodeFeedbackCreateInfoKHR;
100181   };
100182 
100183   struct QueueFamilyCheckpointProperties2NV
100184   {
100185     using NativeType = VkQueueFamilyCheckpointProperties2NV;
100186 
100187     static const bool                                  allowDuplicate = false;
100188     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueueFamilyCheckpointProperties2NV;
100189 
100190 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueueFamilyCheckpointProperties2NVVULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV100191     VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointProperties2NV( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 checkpointExecutionStageMask_ = {},
100192                                                              void *                                    pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
100193       : pNext{ pNext_ }
100194       , checkpointExecutionStageMask{ checkpointExecutionStageMask_ }
100195     {
100196     }
100197 
100198     VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointProperties2NV( QueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100199 
QueueFamilyCheckpointProperties2NVVULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV100200     QueueFamilyCheckpointProperties2NV( VkQueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT
100201       : QueueFamilyCheckpointProperties2NV( *reinterpret_cast<QueueFamilyCheckpointProperties2NV const *>( &rhs ) )
100202     {
100203     }
100204 
100205     QueueFamilyCheckpointProperties2NV & operator=( QueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100206 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
100207 
operator =VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV100208     QueueFamilyCheckpointProperties2NV & operator=( VkQueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT
100209     {
100210       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV const *>( &rhs );
100211       return *this;
100212     }
100213 
operator VkQueueFamilyCheckpointProperties2NV const&VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV100214     operator VkQueueFamilyCheckpointProperties2NV const &() const VULKAN_HPP_NOEXCEPT
100215     {
100216       return *reinterpret_cast<const VkQueueFamilyCheckpointProperties2NV *>( this );
100217     }
100218 
operator VkQueueFamilyCheckpointProperties2NV&VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV100219     operator VkQueueFamilyCheckpointProperties2NV &() VULKAN_HPP_NOEXCEPT
100220     {
100221       return *reinterpret_cast<VkQueueFamilyCheckpointProperties2NV *>( this );
100222     }
100223 
100224 #if defined( VULKAN_HPP_USE_REFLECT )
100225 #  if 14 <= VULKAN_HPP_CPP_VERSION
100226     auto
100227 #  else
100228     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &>
100229 #  endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV100230       reflect() const VULKAN_HPP_NOEXCEPT
100231     {
100232       return std::tie( sType, pNext, checkpointExecutionStageMask );
100233     }
100234 #endif
100235 
100236 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
100237     auto operator<=>( QueueFamilyCheckpointProperties2NV const & ) const = default;
100238 #else
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV100239     bool operator==( QueueFamilyCheckpointProperties2NV const & rhs ) const VULKAN_HPP_NOEXCEPT
100240     {
100241 #  if defined( VULKAN_HPP_USE_REFLECT )
100242       return this->reflect() == rhs.reflect();
100243 #  else
100244       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( checkpointExecutionStageMask == rhs.checkpointExecutionStageMask );
100245 #  endif
100246     }
100247 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV100248     bool operator!=( QueueFamilyCheckpointProperties2NV const & rhs ) const VULKAN_HPP_NOEXCEPT
100249     {
100250       return !operator==( rhs );
100251     }
100252 #endif
100253 
100254   public:
100255     VULKAN_HPP_NAMESPACE::StructureType       sType                        = StructureType::eQueueFamilyCheckpointProperties2NV;
100256     void *                                    pNext                        = {};
100257     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 checkpointExecutionStageMask = {};
100258   };
100259 
100260   template <>
100261   struct CppType<StructureType, StructureType::eQueueFamilyCheckpointProperties2NV>
100262   {
100263     using Type = QueueFamilyCheckpointProperties2NV;
100264   };
100265 
100266   struct QueueFamilyCheckpointPropertiesNV
100267   {
100268     using NativeType = VkQueueFamilyCheckpointPropertiesNV;
100269 
100270     static const bool                                  allowDuplicate = false;
100271     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueueFamilyCheckpointPropertiesNV;
100272 
100273 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueueFamilyCheckpointPropertiesNVVULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV100274     VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointPropertiesNV( VULKAN_HPP_NAMESPACE::PipelineStageFlags checkpointExecutionStageMask_ = {},
100275                                                             void *                                   pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
100276       : pNext{ pNext_ }
100277       , checkpointExecutionStageMask{ checkpointExecutionStageMask_ }
100278     {
100279     }
100280 
100281     VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointPropertiesNV( QueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100282 
QueueFamilyCheckpointPropertiesNVVULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV100283     QueueFamilyCheckpointPropertiesNV( VkQueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
100284       : QueueFamilyCheckpointPropertiesNV( *reinterpret_cast<QueueFamilyCheckpointPropertiesNV const *>( &rhs ) )
100285     {
100286     }
100287 
100288     QueueFamilyCheckpointPropertiesNV & operator=( QueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100289 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
100290 
operator =VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV100291     QueueFamilyCheckpointPropertiesNV & operator=( VkQueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
100292     {
100293       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV const *>( &rhs );
100294       return *this;
100295     }
100296 
operator VkQueueFamilyCheckpointPropertiesNV const&VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV100297     operator VkQueueFamilyCheckpointPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
100298     {
100299       return *reinterpret_cast<const VkQueueFamilyCheckpointPropertiesNV *>( this );
100300     }
100301 
operator VkQueueFamilyCheckpointPropertiesNV&VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV100302     operator VkQueueFamilyCheckpointPropertiesNV &() VULKAN_HPP_NOEXCEPT
100303     {
100304       return *reinterpret_cast<VkQueueFamilyCheckpointPropertiesNV *>( this );
100305     }
100306 
100307 #if defined( VULKAN_HPP_USE_REFLECT )
100308 #  if 14 <= VULKAN_HPP_CPP_VERSION
100309     auto
100310 #  else
100311     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PipelineStageFlags const &>
100312 #  endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV100313       reflect() const VULKAN_HPP_NOEXCEPT
100314     {
100315       return std::tie( sType, pNext, checkpointExecutionStageMask );
100316     }
100317 #endif
100318 
100319 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
100320     auto operator<=>( QueueFamilyCheckpointPropertiesNV const & ) const = default;
100321 #else
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV100322     bool operator==( QueueFamilyCheckpointPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
100323     {
100324 #  if defined( VULKAN_HPP_USE_REFLECT )
100325       return this->reflect() == rhs.reflect();
100326 #  else
100327       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( checkpointExecutionStageMask == rhs.checkpointExecutionStageMask );
100328 #  endif
100329     }
100330 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV100331     bool operator!=( QueueFamilyCheckpointPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
100332     {
100333       return !operator==( rhs );
100334     }
100335 #endif
100336 
100337   public:
100338     VULKAN_HPP_NAMESPACE::StructureType      sType                        = StructureType::eQueueFamilyCheckpointPropertiesNV;
100339     void *                                   pNext                        = {};
100340     VULKAN_HPP_NAMESPACE::PipelineStageFlags checkpointExecutionStageMask = {};
100341   };
100342 
100343   template <>
100344   struct CppType<StructureType, StructureType::eQueueFamilyCheckpointPropertiesNV>
100345   {
100346     using Type = QueueFamilyCheckpointPropertiesNV;
100347   };
100348 
100349   struct QueueFamilyGlobalPriorityPropertiesKHR
100350   {
100351     using NativeType = VkQueueFamilyGlobalPriorityPropertiesKHR;
100352 
100353     static const bool                                  allowDuplicate = false;
100354     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueueFamilyGlobalPriorityPropertiesKHR;
100355 
100356 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
100357     VULKAN_HPP_CONSTEXPR_14
QueueFamilyGlobalPriorityPropertiesKHRVULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesKHR100358       QueueFamilyGlobalPriorityPropertiesKHR( uint32_t priorityCount_ = {},
100359                                               std::array<VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR, VK_MAX_GLOBAL_PRIORITY_SIZE_KHR> const &
100360                                                      priorities_ = { { VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow,
100361                                                                        VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow,
100362                                                                        VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow,
100363                                                                        VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow,
100364                                                                        VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow,
100365                                                                        VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow,
100366                                                                        VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow,
100367                                                                        VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow,
100368                                                                        VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow,
100369                                                                        VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow,
100370                                                                        VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow,
100371                                                                        VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow,
100372                                                                        VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow,
100373                                                                        VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow,
100374                                                                        VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow,
100375                                                                        VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR::eLow } },
100376                                               void * pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
100377       : pNext{ pNext_ }
100378       , priorityCount{ priorityCount_ }
100379       , priorities{ priorities_ }
100380     {
100381     }
100382 
100383     VULKAN_HPP_CONSTEXPR_14 QueueFamilyGlobalPriorityPropertiesKHR( QueueFamilyGlobalPriorityPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100384 
QueueFamilyGlobalPriorityPropertiesKHRVULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesKHR100385     QueueFamilyGlobalPriorityPropertiesKHR( VkQueueFamilyGlobalPriorityPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
100386       : QueueFamilyGlobalPriorityPropertiesKHR( *reinterpret_cast<QueueFamilyGlobalPriorityPropertiesKHR const *>( &rhs ) )
100387     {
100388     }
100389 
100390 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
QueueFamilyGlobalPriorityPropertiesKHRVULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesKHR100391     QueueFamilyGlobalPriorityPropertiesKHR( VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR> const & priorities_,
100392                                             void *                                                                                 pNext_ = nullptr )
100393       : pNext( pNext_ ), priorityCount( std::min( static_cast<uint32_t>( priorities_.size() ), VK_MAX_GLOBAL_PRIORITY_SIZE_KHR ) )
100394     {
100395       VULKAN_HPP_ASSERT( priorities_.size() < VK_MAX_GLOBAL_PRIORITY_SIZE_KHR );
100396       memcpy( priorities, priorities_.data(), priorityCount * sizeof( VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR ) );
100397     }
100398 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
100399 
100400     QueueFamilyGlobalPriorityPropertiesKHR & operator=( QueueFamilyGlobalPriorityPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100401 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
100402 
operator =VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesKHR100403     QueueFamilyGlobalPriorityPropertiesKHR & operator=( VkQueueFamilyGlobalPriorityPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
100404     {
100405       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesKHR const *>( &rhs );
100406       return *this;
100407     }
100408 
operator VkQueueFamilyGlobalPriorityPropertiesKHR const&VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesKHR100409     operator VkQueueFamilyGlobalPriorityPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
100410     {
100411       return *reinterpret_cast<const VkQueueFamilyGlobalPriorityPropertiesKHR *>( this );
100412     }
100413 
operator VkQueueFamilyGlobalPriorityPropertiesKHR&VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesKHR100414     operator VkQueueFamilyGlobalPriorityPropertiesKHR &() VULKAN_HPP_NOEXCEPT
100415     {
100416       return *reinterpret_cast<VkQueueFamilyGlobalPriorityPropertiesKHR *>( this );
100417     }
100418 
100419 #if defined( VULKAN_HPP_USE_REFLECT )
100420 #  if 14 <= VULKAN_HPP_CPP_VERSION
100421     auto
100422 #  else
100423     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
100424                void * const &,
100425                uint32_t const &,
100426                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR, VK_MAX_GLOBAL_PRIORITY_SIZE_KHR> const &>
100427 #  endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesKHR100428       reflect() const VULKAN_HPP_NOEXCEPT
100429     {
100430       return std::tie( sType, pNext, priorityCount, priorities );
100431     }
100432 #endif
100433 
100434 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesKHR100435     std::strong_ordering operator<=>( QueueFamilyGlobalPriorityPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
100436     {
100437       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
100438         return cmp;
100439       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
100440         return cmp;
100441       if ( auto cmp = priorityCount <=> rhs.priorityCount; cmp != 0 )
100442         return cmp;
100443       for ( size_t i = 0; i < priorityCount; ++i )
100444       {
100445         if ( auto cmp = priorities[i] <=> rhs.priorities[i]; cmp != 0 )
100446           return cmp;
100447       }
100448 
100449       return std::strong_ordering::equivalent;
100450     }
100451 #endif
100452 
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesKHR100453     bool operator==( QueueFamilyGlobalPriorityPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
100454     {
100455       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( priorityCount == rhs.priorityCount ) &&
100456              ( memcmp( priorities, rhs.priorities, priorityCount * sizeof( VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR ) ) == 0 );
100457     }
100458 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesKHR100459     bool operator!=( QueueFamilyGlobalPriorityPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
100460     {
100461       return !operator==( rhs );
100462     }
100463 
100464   public:
100465     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eQueueFamilyGlobalPriorityPropertiesKHR;
100466     void *                              pNext         = {};
100467     uint32_t                            priorityCount = {};
100468     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::QueueGlobalPriorityKHR, VK_MAX_GLOBAL_PRIORITY_SIZE_KHR> priorities = {};
100469   };
100470 
100471   template <>
100472   struct CppType<StructureType, StructureType::eQueueFamilyGlobalPriorityPropertiesKHR>
100473   {
100474     using Type = QueueFamilyGlobalPriorityPropertiesKHR;
100475   };
100476 
100477   using QueueFamilyGlobalPriorityPropertiesEXT = QueueFamilyGlobalPriorityPropertiesKHR;
100478 
100479   struct QueueFamilyProperties
100480   {
100481     using NativeType = VkQueueFamilyProperties;
100482 
100483 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueueFamilyPropertiesVULKAN_HPP_NAMESPACE::QueueFamilyProperties100484     VULKAN_HPP_CONSTEXPR QueueFamilyProperties( VULKAN_HPP_NAMESPACE::QueueFlags queueFlags_                  = {},
100485                                                 uint32_t                         queueCount_                  = {},
100486                                                 uint32_t                         timestampValidBits_          = {},
100487                                                 VULKAN_HPP_NAMESPACE::Extent3D   minImageTransferGranularity_ = {} ) VULKAN_HPP_NOEXCEPT
100488       : queueFlags{ queueFlags_ }
100489       , queueCount{ queueCount_ }
100490       , timestampValidBits{ timestampValidBits_ }
100491       , minImageTransferGranularity{ minImageTransferGranularity_ }
100492     {
100493     }
100494 
100495     VULKAN_HPP_CONSTEXPR QueueFamilyProperties( QueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100496 
QueueFamilyPropertiesVULKAN_HPP_NAMESPACE::QueueFamilyProperties100497     QueueFamilyProperties( VkQueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT
100498       : QueueFamilyProperties( *reinterpret_cast<QueueFamilyProperties const *>( &rhs ) )
100499     {
100500     }
100501 
100502     QueueFamilyProperties & operator=( QueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100503 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
100504 
operator =VULKAN_HPP_NAMESPACE::QueueFamilyProperties100505     QueueFamilyProperties & operator=( VkQueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT
100506     {
100507       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyProperties const *>( &rhs );
100508       return *this;
100509     }
100510 
operator VkQueueFamilyProperties const&VULKAN_HPP_NAMESPACE::QueueFamilyProperties100511     operator VkQueueFamilyProperties const &() const VULKAN_HPP_NOEXCEPT
100512     {
100513       return *reinterpret_cast<const VkQueueFamilyProperties *>( this );
100514     }
100515 
operator VkQueueFamilyProperties&VULKAN_HPP_NAMESPACE::QueueFamilyProperties100516     operator VkQueueFamilyProperties &() VULKAN_HPP_NOEXCEPT
100517     {
100518       return *reinterpret_cast<VkQueueFamilyProperties *>( this );
100519     }
100520 
100521 #if defined( VULKAN_HPP_USE_REFLECT )
100522 #  if 14 <= VULKAN_HPP_CPP_VERSION
100523     auto
100524 #  else
100525     std::tuple<VULKAN_HPP_NAMESPACE::QueueFlags const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Extent3D const &>
100526 #  endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyProperties100527       reflect() const VULKAN_HPP_NOEXCEPT
100528     {
100529       return std::tie( queueFlags, queueCount, timestampValidBits, minImageTransferGranularity );
100530     }
100531 #endif
100532 
100533 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
100534     auto operator<=>( QueueFamilyProperties const & ) const = default;
100535 #else
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyProperties100536     bool operator==( QueueFamilyProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
100537     {
100538 #  if defined( VULKAN_HPP_USE_REFLECT )
100539       return this->reflect() == rhs.reflect();
100540 #  else
100541       return ( queueFlags == rhs.queueFlags ) && ( queueCount == rhs.queueCount ) && ( timestampValidBits == rhs.timestampValidBits ) &&
100542              ( minImageTransferGranularity == rhs.minImageTransferGranularity );
100543 #  endif
100544     }
100545 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyProperties100546     bool operator!=( QueueFamilyProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
100547     {
100548       return !operator==( rhs );
100549     }
100550 #endif
100551 
100552   public:
100553     VULKAN_HPP_NAMESPACE::QueueFlags queueFlags                  = {};
100554     uint32_t                         queueCount                  = {};
100555     uint32_t                         timestampValidBits          = {};
100556     VULKAN_HPP_NAMESPACE::Extent3D   minImageTransferGranularity = {};
100557   };
100558 
100559   struct QueueFamilyProperties2
100560   {
100561     using NativeType = VkQueueFamilyProperties2;
100562 
100563     static const bool                                  allowDuplicate = false;
100564     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueueFamilyProperties2;
100565 
100566 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueueFamilyProperties2VULKAN_HPP_NAMESPACE::QueueFamilyProperties2100567     VULKAN_HPP_CONSTEXPR QueueFamilyProperties2( VULKAN_HPP_NAMESPACE::QueueFamilyProperties queueFamilyProperties_ = {},
100568                                                  void *                                      pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
100569       : pNext{ pNext_ }
100570       , queueFamilyProperties{ queueFamilyProperties_ }
100571     {
100572     }
100573 
100574     VULKAN_HPP_CONSTEXPR QueueFamilyProperties2( QueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100575 
QueueFamilyProperties2VULKAN_HPP_NAMESPACE::QueueFamilyProperties2100576     QueueFamilyProperties2( VkQueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
100577       : QueueFamilyProperties2( *reinterpret_cast<QueueFamilyProperties2 const *>( &rhs ) )
100578     {
100579     }
100580 
100581     QueueFamilyProperties2 & operator=( QueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100582 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
100583 
operator =VULKAN_HPP_NAMESPACE::QueueFamilyProperties2100584     QueueFamilyProperties2 & operator=( VkQueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
100585     {
100586       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2 const *>( &rhs );
100587       return *this;
100588     }
100589 
operator VkQueueFamilyProperties2 const&VULKAN_HPP_NAMESPACE::QueueFamilyProperties2100590     operator VkQueueFamilyProperties2 const &() const VULKAN_HPP_NOEXCEPT
100591     {
100592       return *reinterpret_cast<const VkQueueFamilyProperties2 *>( this );
100593     }
100594 
operator VkQueueFamilyProperties2&VULKAN_HPP_NAMESPACE::QueueFamilyProperties2100595     operator VkQueueFamilyProperties2 &() VULKAN_HPP_NOEXCEPT
100596     {
100597       return *reinterpret_cast<VkQueueFamilyProperties2 *>( this );
100598     }
100599 
100600 #if defined( VULKAN_HPP_USE_REFLECT )
100601 #  if 14 <= VULKAN_HPP_CPP_VERSION
100602     auto
100603 #  else
100604     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::QueueFamilyProperties const &>
100605 #  endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyProperties2100606       reflect() const VULKAN_HPP_NOEXCEPT
100607     {
100608       return std::tie( sType, pNext, queueFamilyProperties );
100609     }
100610 #endif
100611 
100612 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
100613     auto operator<=>( QueueFamilyProperties2 const & ) const = default;
100614 #else
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyProperties2100615     bool operator==( QueueFamilyProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
100616     {
100617 #  if defined( VULKAN_HPP_USE_REFLECT )
100618       return this->reflect() == rhs.reflect();
100619 #  else
100620       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queueFamilyProperties == rhs.queueFamilyProperties );
100621 #  endif
100622     }
100623 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyProperties2100624     bool operator!=( QueueFamilyProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
100625     {
100626       return !operator==( rhs );
100627     }
100628 #endif
100629 
100630   public:
100631     VULKAN_HPP_NAMESPACE::StructureType         sType                 = StructureType::eQueueFamilyProperties2;
100632     void *                                      pNext                 = {};
100633     VULKAN_HPP_NAMESPACE::QueueFamilyProperties queueFamilyProperties = {};
100634   };
100635 
100636   template <>
100637   struct CppType<StructureType, StructureType::eQueueFamilyProperties2>
100638   {
100639     using Type = QueueFamilyProperties2;
100640   };
100641 
100642   using QueueFamilyProperties2KHR = QueueFamilyProperties2;
100643 
100644   struct QueueFamilyQueryResultStatusPropertiesKHR
100645   {
100646     using NativeType = VkQueueFamilyQueryResultStatusPropertiesKHR;
100647 
100648     static const bool                                  allowDuplicate = false;
100649     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueueFamilyQueryResultStatusPropertiesKHR;
100650 
100651 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueueFamilyQueryResultStatusPropertiesKHRVULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR100652     VULKAN_HPP_CONSTEXPR QueueFamilyQueryResultStatusPropertiesKHR( VULKAN_HPP_NAMESPACE::Bool32 queryResultStatusSupport_ = {},
100653                                                                     void *                       pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
100654       : pNext{ pNext_ }
100655       , queryResultStatusSupport{ queryResultStatusSupport_ }
100656     {
100657     }
100658 
100659     VULKAN_HPP_CONSTEXPR QueueFamilyQueryResultStatusPropertiesKHR( QueueFamilyQueryResultStatusPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100660 
QueueFamilyQueryResultStatusPropertiesKHRVULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR100661     QueueFamilyQueryResultStatusPropertiesKHR( VkQueueFamilyQueryResultStatusPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
100662       : QueueFamilyQueryResultStatusPropertiesKHR( *reinterpret_cast<QueueFamilyQueryResultStatusPropertiesKHR const *>( &rhs ) )
100663     {
100664     }
100665 
100666     QueueFamilyQueryResultStatusPropertiesKHR & operator=( QueueFamilyQueryResultStatusPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100667 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
100668 
operator =VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR100669     QueueFamilyQueryResultStatusPropertiesKHR & operator=( VkQueueFamilyQueryResultStatusPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
100670     {
100671       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR const *>( &rhs );
100672       return *this;
100673     }
100674 
operator VkQueueFamilyQueryResultStatusPropertiesKHR const&VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR100675     operator VkQueueFamilyQueryResultStatusPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
100676     {
100677       return *reinterpret_cast<const VkQueueFamilyQueryResultStatusPropertiesKHR *>( this );
100678     }
100679 
operator VkQueueFamilyQueryResultStatusPropertiesKHR&VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR100680     operator VkQueueFamilyQueryResultStatusPropertiesKHR &() VULKAN_HPP_NOEXCEPT
100681     {
100682       return *reinterpret_cast<VkQueueFamilyQueryResultStatusPropertiesKHR *>( this );
100683     }
100684 
100685 #if defined( VULKAN_HPP_USE_REFLECT )
100686 #  if 14 <= VULKAN_HPP_CPP_VERSION
100687     auto
100688 #  else
100689     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
100690 #  endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR100691       reflect() const VULKAN_HPP_NOEXCEPT
100692     {
100693       return std::tie( sType, pNext, queryResultStatusSupport );
100694     }
100695 #endif
100696 
100697 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
100698     auto operator<=>( QueueFamilyQueryResultStatusPropertiesKHR const & ) const = default;
100699 #else
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR100700     bool operator==( QueueFamilyQueryResultStatusPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
100701     {
100702 #  if defined( VULKAN_HPP_USE_REFLECT )
100703       return this->reflect() == rhs.reflect();
100704 #  else
100705       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queryResultStatusSupport == rhs.queryResultStatusSupport );
100706 #  endif
100707     }
100708 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR100709     bool operator!=( QueueFamilyQueryResultStatusPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
100710     {
100711       return !operator==( rhs );
100712     }
100713 #endif
100714 
100715   public:
100716     VULKAN_HPP_NAMESPACE::StructureType sType                    = StructureType::eQueueFamilyQueryResultStatusPropertiesKHR;
100717     void *                              pNext                    = {};
100718     VULKAN_HPP_NAMESPACE::Bool32        queryResultStatusSupport = {};
100719   };
100720 
100721   template <>
100722   struct CppType<StructureType, StructureType::eQueueFamilyQueryResultStatusPropertiesKHR>
100723   {
100724     using Type = QueueFamilyQueryResultStatusPropertiesKHR;
100725   };
100726 
100727   struct QueueFamilyVideoPropertiesKHR
100728   {
100729     using NativeType = VkQueueFamilyVideoPropertiesKHR;
100730 
100731     static const bool                                  allowDuplicate = false;
100732     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eQueueFamilyVideoPropertiesKHR;
100733 
100734 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueueFamilyVideoPropertiesKHRVULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR100735     VULKAN_HPP_CONSTEXPR QueueFamilyVideoPropertiesKHR( VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagsKHR videoCodecOperations_ = {},
100736                                                         void *                                            pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
100737       : pNext{ pNext_ }
100738       , videoCodecOperations{ videoCodecOperations_ }
100739     {
100740     }
100741 
100742     VULKAN_HPP_CONSTEXPR QueueFamilyVideoPropertiesKHR( QueueFamilyVideoPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100743 
QueueFamilyVideoPropertiesKHRVULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR100744     QueueFamilyVideoPropertiesKHR( VkQueueFamilyVideoPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
100745       : QueueFamilyVideoPropertiesKHR( *reinterpret_cast<QueueFamilyVideoPropertiesKHR const *>( &rhs ) )
100746     {
100747     }
100748 
100749     QueueFamilyVideoPropertiesKHR & operator=( QueueFamilyVideoPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100750 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
100751 
operator =VULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR100752     QueueFamilyVideoPropertiesKHR & operator=( VkQueueFamilyVideoPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
100753     {
100754       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR const *>( &rhs );
100755       return *this;
100756     }
100757 
operator VkQueueFamilyVideoPropertiesKHR const&VULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR100758     operator VkQueueFamilyVideoPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
100759     {
100760       return *reinterpret_cast<const VkQueueFamilyVideoPropertiesKHR *>( this );
100761     }
100762 
operator VkQueueFamilyVideoPropertiesKHR&VULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR100763     operator VkQueueFamilyVideoPropertiesKHR &() VULKAN_HPP_NOEXCEPT
100764     {
100765       return *reinterpret_cast<VkQueueFamilyVideoPropertiesKHR *>( this );
100766     }
100767 
100768 #if defined( VULKAN_HPP_USE_REFLECT )
100769 #  if 14 <= VULKAN_HPP_CPP_VERSION
100770     auto
100771 #  else
100772     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagsKHR const &>
100773 #  endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR100774       reflect() const VULKAN_HPP_NOEXCEPT
100775     {
100776       return std::tie( sType, pNext, videoCodecOperations );
100777     }
100778 #endif
100779 
100780 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
100781     auto operator<=>( QueueFamilyVideoPropertiesKHR const & ) const = default;
100782 #else
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR100783     bool operator==( QueueFamilyVideoPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
100784     {
100785 #  if defined( VULKAN_HPP_USE_REFLECT )
100786       return this->reflect() == rhs.reflect();
100787 #  else
100788       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoCodecOperations == rhs.videoCodecOperations );
100789 #  endif
100790     }
100791 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR100792     bool operator!=( QueueFamilyVideoPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
100793     {
100794       return !operator==( rhs );
100795     }
100796 #endif
100797 
100798   public:
100799     VULKAN_HPP_NAMESPACE::StructureType               sType                = StructureType::eQueueFamilyVideoPropertiesKHR;
100800     void *                                            pNext                = {};
100801     VULKAN_HPP_NAMESPACE::VideoCodecOperationFlagsKHR videoCodecOperations = {};
100802   };
100803 
100804   template <>
100805   struct CppType<StructureType, StructureType::eQueueFamilyVideoPropertiesKHR>
100806   {
100807     using Type = QueueFamilyVideoPropertiesKHR;
100808   };
100809 
100810   struct RayTracingShaderGroupCreateInfoKHR
100811   {
100812     using NativeType = VkRayTracingShaderGroupCreateInfoKHR;
100813 
100814     static const bool                                  allowDuplicate = false;
100815     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRayTracingShaderGroupCreateInfoKHR;
100816 
100817 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RayTracingShaderGroupCreateInfoKHRVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR100818     VULKAN_HPP_CONSTEXPR RayTracingShaderGroupCreateInfoKHR(
100819       VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type_                            = VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral,
100820       uint32_t                                           generalShader_                   = VULKAN_HPP_NAMESPACE::ShaderUnusedKHR,
100821       uint32_t                                           closestHitShader_                = VULKAN_HPP_NAMESPACE::ShaderUnusedKHR,
100822       uint32_t                                           anyHitShader_                    = VULKAN_HPP_NAMESPACE::ShaderUnusedKHR,
100823       uint32_t                                           intersectionShader_              = VULKAN_HPP_NAMESPACE::ShaderUnusedKHR,
100824       const void *                                       pShaderGroupCaptureReplayHandle_ = {},
100825       const void *                                       pNext_                           = nullptr ) VULKAN_HPP_NOEXCEPT
100826       : pNext{ pNext_ }
100827       , type{ type_ }
100828       , generalShader{ generalShader_ }
100829       , closestHitShader{ closestHitShader_ }
100830       , anyHitShader{ anyHitShader_ }
100831       , intersectionShader{ intersectionShader_ }
100832       , pShaderGroupCaptureReplayHandle{ pShaderGroupCaptureReplayHandle_ }
100833     {
100834     }
100835 
100836     VULKAN_HPP_CONSTEXPR RayTracingShaderGroupCreateInfoKHR( RayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100837 
RayTracingShaderGroupCreateInfoKHRVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR100838     RayTracingShaderGroupCreateInfoKHR( VkRayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
100839       : RayTracingShaderGroupCreateInfoKHR( *reinterpret_cast<RayTracingShaderGroupCreateInfoKHR const *>( &rhs ) )
100840     {
100841     }
100842 
100843     RayTracingShaderGroupCreateInfoKHR & operator=( RayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100844 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
100845 
operator =VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR100846     RayTracingShaderGroupCreateInfoKHR & operator=( VkRayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
100847     {
100848       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR const *>( &rhs );
100849       return *this;
100850     }
100851 
100852 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR100853     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
100854     {
100855       pNext = pNext_;
100856       return *this;
100857     }
100858 
setTypeVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR100859     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & setType( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type_ ) VULKAN_HPP_NOEXCEPT
100860     {
100861       type = type_;
100862       return *this;
100863     }
100864 
setGeneralShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR100865     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & setGeneralShader( uint32_t generalShader_ ) VULKAN_HPP_NOEXCEPT
100866     {
100867       generalShader = generalShader_;
100868       return *this;
100869     }
100870 
setClosestHitShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR100871     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & setClosestHitShader( uint32_t closestHitShader_ ) VULKAN_HPP_NOEXCEPT
100872     {
100873       closestHitShader = closestHitShader_;
100874       return *this;
100875     }
100876 
setAnyHitShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR100877     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & setAnyHitShader( uint32_t anyHitShader_ ) VULKAN_HPP_NOEXCEPT
100878     {
100879       anyHitShader = anyHitShader_;
100880       return *this;
100881     }
100882 
setIntersectionShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR100883     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & setIntersectionShader( uint32_t intersectionShader_ ) VULKAN_HPP_NOEXCEPT
100884     {
100885       intersectionShader = intersectionShader_;
100886       return *this;
100887     }
100888 
100889     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR &
setPShaderGroupCaptureReplayHandleVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR100890       setPShaderGroupCaptureReplayHandle( const void * pShaderGroupCaptureReplayHandle_ ) VULKAN_HPP_NOEXCEPT
100891     {
100892       pShaderGroupCaptureReplayHandle = pShaderGroupCaptureReplayHandle_;
100893       return *this;
100894     }
100895 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
100896 
operator VkRayTracingShaderGroupCreateInfoKHR const&VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR100897     operator VkRayTracingShaderGroupCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
100898     {
100899       return *reinterpret_cast<const VkRayTracingShaderGroupCreateInfoKHR *>( this );
100900     }
100901 
operator VkRayTracingShaderGroupCreateInfoKHR&VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR100902     operator VkRayTracingShaderGroupCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
100903     {
100904       return *reinterpret_cast<VkRayTracingShaderGroupCreateInfoKHR *>( this );
100905     }
100906 
100907 #if defined( VULKAN_HPP_USE_REFLECT )
100908 #  if 14 <= VULKAN_HPP_CPP_VERSION
100909     auto
100910 #  else
100911     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
100912                const void * const &,
100913                VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR const &,
100914                uint32_t const &,
100915                uint32_t const &,
100916                uint32_t const &,
100917                uint32_t const &,
100918                const void * const &>
100919 #  endif
reflectVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR100920       reflect() const VULKAN_HPP_NOEXCEPT
100921     {
100922       return std::tie( sType, pNext, type, generalShader, closestHitShader, anyHitShader, intersectionShader, pShaderGroupCaptureReplayHandle );
100923     }
100924 #endif
100925 
100926 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
100927     auto operator<=>( RayTracingShaderGroupCreateInfoKHR const & ) const = default;
100928 #else
operator ==VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR100929     bool operator==( RayTracingShaderGroupCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
100930     {
100931 #  if defined( VULKAN_HPP_USE_REFLECT )
100932       return this->reflect() == rhs.reflect();
100933 #  else
100934       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ) && ( generalShader == rhs.generalShader ) &&
100935              ( closestHitShader == rhs.closestHitShader ) && ( anyHitShader == rhs.anyHitShader ) && ( intersectionShader == rhs.intersectionShader ) &&
100936              ( pShaderGroupCaptureReplayHandle == rhs.pShaderGroupCaptureReplayHandle );
100937 #  endif
100938     }
100939 
operator !=VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR100940     bool operator!=( RayTracingShaderGroupCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
100941     {
100942       return !operator==( rhs );
100943     }
100944 #endif
100945 
100946   public:
100947     VULKAN_HPP_NAMESPACE::StructureType                sType                           = StructureType::eRayTracingShaderGroupCreateInfoKHR;
100948     const void *                                       pNext                           = {};
100949     VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type                            = VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral;
100950     uint32_t                                           generalShader                   = VULKAN_HPP_NAMESPACE::ShaderUnusedKHR;
100951     uint32_t                                           closestHitShader                = VULKAN_HPP_NAMESPACE::ShaderUnusedKHR;
100952     uint32_t                                           anyHitShader                    = VULKAN_HPP_NAMESPACE::ShaderUnusedKHR;
100953     uint32_t                                           intersectionShader              = VULKAN_HPP_NAMESPACE::ShaderUnusedKHR;
100954     const void *                                       pShaderGroupCaptureReplayHandle = {};
100955   };
100956 
100957   template <>
100958   struct CppType<StructureType, StructureType::eRayTracingShaderGroupCreateInfoKHR>
100959   {
100960     using Type = RayTracingShaderGroupCreateInfoKHR;
100961   };
100962 
100963   struct RayTracingPipelineInterfaceCreateInfoKHR
100964   {
100965     using NativeType = VkRayTracingPipelineInterfaceCreateInfoKHR;
100966 
100967     static const bool                                  allowDuplicate = false;
100968     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRayTracingPipelineInterfaceCreateInfoKHR;
100969 
100970 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RayTracingPipelineInterfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR100971     VULKAN_HPP_CONSTEXPR RayTracingPipelineInterfaceCreateInfoKHR( uint32_t     maxPipelineRayPayloadSize_      = {},
100972                                                                    uint32_t     maxPipelineRayHitAttributeSize_ = {},
100973                                                                    const void * pNext_                          = nullptr ) VULKAN_HPP_NOEXCEPT
100974       : pNext{ pNext_ }
100975       , maxPipelineRayPayloadSize{ maxPipelineRayPayloadSize_ }
100976       , maxPipelineRayHitAttributeSize{ maxPipelineRayHitAttributeSize_ }
100977     {
100978     }
100979 
100980     VULKAN_HPP_CONSTEXPR RayTracingPipelineInterfaceCreateInfoKHR( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100981 
RayTracingPipelineInterfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR100982     RayTracingPipelineInterfaceCreateInfoKHR( VkRayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
100983       : RayTracingPipelineInterfaceCreateInfoKHR( *reinterpret_cast<RayTracingPipelineInterfaceCreateInfoKHR const *>( &rhs ) )
100984     {
100985     }
100986 
100987     RayTracingPipelineInterfaceCreateInfoKHR & operator=( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
100988 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
100989 
operator =VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR100990     RayTracingPipelineInterfaceCreateInfoKHR & operator=( VkRayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
100991     {
100992       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR const *>( &rhs );
100993       return *this;
100994     }
100995 
100996 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR100997     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineInterfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
100998     {
100999       pNext = pNext_;
101000       return *this;
101001     }
101002 
setMaxPipelineRayPayloadSizeVULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR101003     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineInterfaceCreateInfoKHR & setMaxPipelineRayPayloadSize( uint32_t maxPipelineRayPayloadSize_ ) VULKAN_HPP_NOEXCEPT
101004     {
101005       maxPipelineRayPayloadSize = maxPipelineRayPayloadSize_;
101006       return *this;
101007     }
101008 
101009     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineInterfaceCreateInfoKHR &
setMaxPipelineRayHitAttributeSizeVULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR101010       setMaxPipelineRayHitAttributeSize( uint32_t maxPipelineRayHitAttributeSize_ ) VULKAN_HPP_NOEXCEPT
101011     {
101012       maxPipelineRayHitAttributeSize = maxPipelineRayHitAttributeSize_;
101013       return *this;
101014     }
101015 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
101016 
operator VkRayTracingPipelineInterfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR101017     operator VkRayTracingPipelineInterfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
101018     {
101019       return *reinterpret_cast<const VkRayTracingPipelineInterfaceCreateInfoKHR *>( this );
101020     }
101021 
operator VkRayTracingPipelineInterfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR101022     operator VkRayTracingPipelineInterfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
101023     {
101024       return *reinterpret_cast<VkRayTracingPipelineInterfaceCreateInfoKHR *>( this );
101025     }
101026 
101027 #if defined( VULKAN_HPP_USE_REFLECT )
101028 #  if 14 <= VULKAN_HPP_CPP_VERSION
101029     auto
101030 #  else
101031     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, uint32_t const &>
101032 #  endif
reflectVULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR101033       reflect() const VULKAN_HPP_NOEXCEPT
101034     {
101035       return std::tie( sType, pNext, maxPipelineRayPayloadSize, maxPipelineRayHitAttributeSize );
101036     }
101037 #endif
101038 
101039 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
101040     auto operator<=>( RayTracingPipelineInterfaceCreateInfoKHR const & ) const = default;
101041 #else
operator ==VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR101042     bool operator==( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
101043     {
101044 #  if defined( VULKAN_HPP_USE_REFLECT )
101045       return this->reflect() == rhs.reflect();
101046 #  else
101047       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxPipelineRayPayloadSize == rhs.maxPipelineRayPayloadSize ) &&
101048              ( maxPipelineRayHitAttributeSize == rhs.maxPipelineRayHitAttributeSize );
101049 #  endif
101050     }
101051 
operator !=VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR101052     bool operator!=( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
101053     {
101054       return !operator==( rhs );
101055     }
101056 #endif
101057 
101058   public:
101059     VULKAN_HPP_NAMESPACE::StructureType sType                          = StructureType::eRayTracingPipelineInterfaceCreateInfoKHR;
101060     const void *                        pNext                          = {};
101061     uint32_t                            maxPipelineRayPayloadSize      = {};
101062     uint32_t                            maxPipelineRayHitAttributeSize = {};
101063   };
101064 
101065   template <>
101066   struct CppType<StructureType, StructureType::eRayTracingPipelineInterfaceCreateInfoKHR>
101067   {
101068     using Type = RayTracingPipelineInterfaceCreateInfoKHR;
101069   };
101070 
101071   struct RayTracingPipelineCreateInfoKHR
101072   {
101073     using NativeType = VkRayTracingPipelineCreateInfoKHR;
101074 
101075     static const bool                                  allowDuplicate = false;
101076     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRayTracingPipelineCreateInfoKHR;
101077 
101078 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RayTracingPipelineCreateInfoKHRVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101079     VULKAN_HPP_CONSTEXPR RayTracingPipelineCreateInfoKHR( VULKAN_HPP_NAMESPACE::PipelineCreateFlags                        flags_                        = {},
101080                                                           uint32_t                                                         stageCount_                   = {},
101081                                                           const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo *      pStages_                      = {},
101082                                                           uint32_t                                                         groupCount_                   = {},
101083                                                           const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR * pGroups_                      = {},
101084                                                           uint32_t                                                         maxPipelineRayRecursionDepth_ = {},
101085                                                           const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR *       pLibraryInfo_                 = {},
101086                                                           const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR * pLibraryInterface_      = {},
101087                                                           const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo *           pDynamicState_          = {},
101088                                                           VULKAN_HPP_NAMESPACE::PipelineLayout                                   layout_                 = {},
101089                                                           VULKAN_HPP_NAMESPACE::Pipeline                                         basePipelineHandle_     = {},
101090                                                           int32_t                                                                basePipelineIndex_      = {},
101091                                                           const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
101092       : pNext{ pNext_ }
101093       , flags{ flags_ }
101094       , stageCount{ stageCount_ }
101095       , pStages{ pStages_ }
101096       , groupCount{ groupCount_ }
101097       , pGroups{ pGroups_ }
101098       , maxPipelineRayRecursionDepth{ maxPipelineRayRecursionDepth_ }
101099       , pLibraryInfo{ pLibraryInfo_ }
101100       , pLibraryInterface{ pLibraryInterface_ }
101101       , pDynamicState{ pDynamicState_ }
101102       , layout{ layout_ }
101103       , basePipelineHandle{ basePipelineHandle_ }
101104       , basePipelineIndex{ basePipelineIndex_ }
101105     {
101106     }
101107 
101108     VULKAN_HPP_CONSTEXPR RayTracingPipelineCreateInfoKHR( RayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101109 
RayTracingPipelineCreateInfoKHRVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101110     RayTracingPipelineCreateInfoKHR( VkRayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
101111       : RayTracingPipelineCreateInfoKHR( *reinterpret_cast<RayTracingPipelineCreateInfoKHR const *>( &rhs ) )
101112     {
101113     }
101114 
101115 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RayTracingPipelineCreateInfoKHRVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101116     RayTracingPipelineCreateInfoKHR(
101117       VULKAN_HPP_NAMESPACE::PipelineCreateFlags                                                                             flags_,
101118       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const &      stages_,
101119       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR> const & groups_                       = {},
101120       uint32_t                                                                                                              maxPipelineRayRecursionDepth_ = {},
101121       const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR *                                                            pLibraryInfo_                 = {},
101122       const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR *                                                pLibraryInterface_            = {},
101123       const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo *                                                          pDynamicState_                = {},
101124       VULKAN_HPP_NAMESPACE::PipelineLayout                                                                                  layout_                       = {},
101125       VULKAN_HPP_NAMESPACE::Pipeline                                                                                        basePipelineHandle_           = {},
101126       int32_t                                                                                                               basePipelineIndex_            = {},
101127       const void *                                                                                                          pNext_ = nullptr )
101128       : pNext( pNext_ )
101129       , flags( flags_ )
101130       , stageCount( static_cast<uint32_t>( stages_.size() ) )
101131       , pStages( stages_.data() )
101132       , groupCount( static_cast<uint32_t>( groups_.size() ) )
101133       , pGroups( groups_.data() )
101134       , maxPipelineRayRecursionDepth( maxPipelineRayRecursionDepth_ )
101135       , pLibraryInfo( pLibraryInfo_ )
101136       , pLibraryInterface( pLibraryInterface_ )
101137       , pDynamicState( pDynamicState_ )
101138       , layout( layout_ )
101139       , basePipelineHandle( basePipelineHandle_ )
101140       , basePipelineIndex( basePipelineIndex_ )
101141     {
101142     }
101143 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
101144 
101145     RayTracingPipelineCreateInfoKHR & operator=( RayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101146 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
101147 
operator =VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101148     RayTracingPipelineCreateInfoKHR & operator=( VkRayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
101149     {
101150       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR const *>( &rhs );
101151       return *this;
101152     }
101153 
101154 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101155     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
101156     {
101157       pNext = pNext_;
101158       return *this;
101159     }
101160 
setFlagsVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101161     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
101162     {
101163       flags = flags_;
101164       return *this;
101165     }
101166 
setStageCountVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101167     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT
101168     {
101169       stageCount = stageCount_;
101170       return *this;
101171     }
101172 
101173     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR &
setPStagesVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101174       setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ ) VULKAN_HPP_NOEXCEPT
101175     {
101176       pStages = pStages_;
101177       return *this;
101178     }
101179 
101180 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
101181     RayTracingPipelineCreateInfoKHR &
setStagesVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101182       setStages( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_ ) VULKAN_HPP_NOEXCEPT
101183     {
101184       stageCount = static_cast<uint32_t>( stages_.size() );
101185       pStages    = stages_.data();
101186       return *this;
101187     }
101188 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
101189 
setGroupCountVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101190     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setGroupCount( uint32_t groupCount_ ) VULKAN_HPP_NOEXCEPT
101191     {
101192       groupCount = groupCount_;
101193       return *this;
101194     }
101195 
101196     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR &
setPGroupsVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101197       setPGroups( const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR * pGroups_ ) VULKAN_HPP_NOEXCEPT
101198     {
101199       pGroups = pGroups_;
101200       return *this;
101201     }
101202 
101203 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setGroupsVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101204     RayTracingPipelineCreateInfoKHR & setGroups(
101205       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR> const & groups_ ) VULKAN_HPP_NOEXCEPT
101206     {
101207       groupCount = static_cast<uint32_t>( groups_.size() );
101208       pGroups    = groups_.data();
101209       return *this;
101210     }
101211 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
101212 
setMaxPipelineRayRecursionDepthVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101213     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setMaxPipelineRayRecursionDepth( uint32_t maxPipelineRayRecursionDepth_ ) VULKAN_HPP_NOEXCEPT
101214     {
101215       maxPipelineRayRecursionDepth = maxPipelineRayRecursionDepth_;
101216       return *this;
101217     }
101218 
101219     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR &
setPLibraryInfoVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101220       setPLibraryInfo( const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR * pLibraryInfo_ ) VULKAN_HPP_NOEXCEPT
101221     {
101222       pLibraryInfo = pLibraryInfo_;
101223       return *this;
101224     }
101225 
101226     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR &
setPLibraryInterfaceVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101227       setPLibraryInterface( const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR * pLibraryInterface_ ) VULKAN_HPP_NOEXCEPT
101228     {
101229       pLibraryInterface = pLibraryInterface_;
101230       return *this;
101231     }
101232 
101233     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR &
setPDynamicStateVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101234       setPDynamicState( const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * pDynamicState_ ) VULKAN_HPP_NOEXCEPT
101235     {
101236       pDynamicState = pDynamicState_;
101237       return *this;
101238     }
101239 
setLayoutVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101240     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
101241     {
101242       layout = layout_;
101243       return *this;
101244     }
101245 
setBasePipelineHandleVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101246     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT
101247     {
101248       basePipelineHandle = basePipelineHandle_;
101249       return *this;
101250     }
101251 
setBasePipelineIndexVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101252     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT
101253     {
101254       basePipelineIndex = basePipelineIndex_;
101255       return *this;
101256     }
101257 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
101258 
operator VkRayTracingPipelineCreateInfoKHR const&VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101259     operator VkRayTracingPipelineCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
101260     {
101261       return *reinterpret_cast<const VkRayTracingPipelineCreateInfoKHR *>( this );
101262     }
101263 
operator VkRayTracingPipelineCreateInfoKHR&VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101264     operator VkRayTracingPipelineCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
101265     {
101266       return *reinterpret_cast<VkRayTracingPipelineCreateInfoKHR *>( this );
101267     }
101268 
101269 #if defined( VULKAN_HPP_USE_REFLECT )
101270 #  if 14 <= VULKAN_HPP_CPP_VERSION
101271     auto
101272 #  else
101273     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
101274                const void * const &,
101275                VULKAN_HPP_NAMESPACE::PipelineCreateFlags const &,
101276                uint32_t const &,
101277                const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * const &,
101278                uint32_t const &,
101279                const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR * const &,
101280                uint32_t const &,
101281                const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR * const &,
101282                const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR * const &,
101283                const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * const &,
101284                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
101285                VULKAN_HPP_NAMESPACE::Pipeline const &,
101286                int32_t const &>
101287 #  endif
reflectVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101288       reflect() const VULKAN_HPP_NOEXCEPT
101289     {
101290       return std::tie( sType,
101291                        pNext,
101292                        flags,
101293                        stageCount,
101294                        pStages,
101295                        groupCount,
101296                        pGroups,
101297                        maxPipelineRayRecursionDepth,
101298                        pLibraryInfo,
101299                        pLibraryInterface,
101300                        pDynamicState,
101301                        layout,
101302                        basePipelineHandle,
101303                        basePipelineIndex );
101304     }
101305 #endif
101306 
101307 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
101308     auto operator<=>( RayTracingPipelineCreateInfoKHR const & ) const = default;
101309 #else
operator ==VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101310     bool operator==( RayTracingPipelineCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
101311     {
101312 #  if defined( VULKAN_HPP_USE_REFLECT )
101313       return this->reflect() == rhs.reflect();
101314 #  else
101315       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stageCount == rhs.stageCount ) && ( pStages == rhs.pStages ) &&
101316              ( groupCount == rhs.groupCount ) && ( pGroups == rhs.pGroups ) && ( maxPipelineRayRecursionDepth == rhs.maxPipelineRayRecursionDepth ) &&
101317              ( pLibraryInfo == rhs.pLibraryInfo ) && ( pLibraryInterface == rhs.pLibraryInterface ) && ( pDynamicState == rhs.pDynamicState ) &&
101318              ( layout == rhs.layout ) && ( basePipelineHandle == rhs.basePipelineHandle ) && ( basePipelineIndex == rhs.basePipelineIndex );
101319 #  endif
101320     }
101321 
operator !=VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR101322     bool operator!=( RayTracingPipelineCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
101323     {
101324       return !operator==( rhs );
101325     }
101326 #endif
101327 
101328   public:
101329     VULKAN_HPP_NAMESPACE::StructureType                                    sType                        = StructureType::eRayTracingPipelineCreateInfoKHR;
101330     const void *                                                           pNext                        = {};
101331     VULKAN_HPP_NAMESPACE::PipelineCreateFlags                              flags                        = {};
101332     uint32_t                                                               stageCount                   = {};
101333     const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo *            pStages                      = {};
101334     uint32_t                                                               groupCount                   = {};
101335     const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR *       pGroups                      = {};
101336     uint32_t                                                               maxPipelineRayRecursionDepth = {};
101337     const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR *             pLibraryInfo                 = {};
101338     const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR * pLibraryInterface            = {};
101339     const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo *           pDynamicState                = {};
101340     VULKAN_HPP_NAMESPACE::PipelineLayout                                   layout                       = {};
101341     VULKAN_HPP_NAMESPACE::Pipeline                                         basePipelineHandle           = {};
101342     int32_t                                                                basePipelineIndex            = {};
101343   };
101344 
101345   template <>
101346   struct CppType<StructureType, StructureType::eRayTracingPipelineCreateInfoKHR>
101347   {
101348     using Type = RayTracingPipelineCreateInfoKHR;
101349   };
101350 
101351   struct RayTracingShaderGroupCreateInfoNV
101352   {
101353     using NativeType = VkRayTracingShaderGroupCreateInfoNV;
101354 
101355     static const bool                                  allowDuplicate = false;
101356     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRayTracingShaderGroupCreateInfoNV;
101357 
101358 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RayTracingShaderGroupCreateInfoNVVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV101359     VULKAN_HPP_CONSTEXPR RayTracingShaderGroupCreateInfoNV(
101360       VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type_               = VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral,
101361       uint32_t                                           generalShader_      = VULKAN_HPP_NAMESPACE::ShaderUnusedNV,
101362       uint32_t                                           closestHitShader_   = VULKAN_HPP_NAMESPACE::ShaderUnusedNV,
101363       uint32_t                                           anyHitShader_       = VULKAN_HPP_NAMESPACE::ShaderUnusedNV,
101364       uint32_t                                           intersectionShader_ = VULKAN_HPP_NAMESPACE::ShaderUnusedNV,
101365       const void *                                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
101366       : pNext{ pNext_ }
101367       , type{ type_ }
101368       , generalShader{ generalShader_ }
101369       , closestHitShader{ closestHitShader_ }
101370       , anyHitShader{ anyHitShader_ }
101371       , intersectionShader{ intersectionShader_ }
101372     {
101373     }
101374 
101375     VULKAN_HPP_CONSTEXPR RayTracingShaderGroupCreateInfoNV( RayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101376 
RayTracingShaderGroupCreateInfoNVVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV101377     RayTracingShaderGroupCreateInfoNV( VkRayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
101378       : RayTracingShaderGroupCreateInfoNV( *reinterpret_cast<RayTracingShaderGroupCreateInfoNV const *>( &rhs ) )
101379     {
101380     }
101381 
101382     RayTracingShaderGroupCreateInfoNV & operator=( RayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101383 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
101384 
operator =VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV101385     RayTracingShaderGroupCreateInfoNV & operator=( VkRayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
101386     {
101387       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV const *>( &rhs );
101388       return *this;
101389     }
101390 
101391 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV101392     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
101393     {
101394       pNext = pNext_;
101395       return *this;
101396     }
101397 
setTypeVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV101398     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & setType( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type_ ) VULKAN_HPP_NOEXCEPT
101399     {
101400       type = type_;
101401       return *this;
101402     }
101403 
setGeneralShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV101404     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & setGeneralShader( uint32_t generalShader_ ) VULKAN_HPP_NOEXCEPT
101405     {
101406       generalShader = generalShader_;
101407       return *this;
101408     }
101409 
setClosestHitShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV101410     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & setClosestHitShader( uint32_t closestHitShader_ ) VULKAN_HPP_NOEXCEPT
101411     {
101412       closestHitShader = closestHitShader_;
101413       return *this;
101414     }
101415 
setAnyHitShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV101416     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & setAnyHitShader( uint32_t anyHitShader_ ) VULKAN_HPP_NOEXCEPT
101417     {
101418       anyHitShader = anyHitShader_;
101419       return *this;
101420     }
101421 
setIntersectionShaderVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV101422     VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & setIntersectionShader( uint32_t intersectionShader_ ) VULKAN_HPP_NOEXCEPT
101423     {
101424       intersectionShader = intersectionShader_;
101425       return *this;
101426     }
101427 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
101428 
operator VkRayTracingShaderGroupCreateInfoNV const&VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV101429     operator VkRayTracingShaderGroupCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
101430     {
101431       return *reinterpret_cast<const VkRayTracingShaderGroupCreateInfoNV *>( this );
101432     }
101433 
operator VkRayTracingShaderGroupCreateInfoNV&VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV101434     operator VkRayTracingShaderGroupCreateInfoNV &() VULKAN_HPP_NOEXCEPT
101435     {
101436       return *reinterpret_cast<VkRayTracingShaderGroupCreateInfoNV *>( this );
101437     }
101438 
101439 #if defined( VULKAN_HPP_USE_REFLECT )
101440 #  if 14 <= VULKAN_HPP_CPP_VERSION
101441     auto
101442 #  else
101443     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
101444                const void * const &,
101445                VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR const &,
101446                uint32_t const &,
101447                uint32_t const &,
101448                uint32_t const &,
101449                uint32_t const &>
101450 #  endif
reflectVULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV101451       reflect() const VULKAN_HPP_NOEXCEPT
101452     {
101453       return std::tie( sType, pNext, type, generalShader, closestHitShader, anyHitShader, intersectionShader );
101454     }
101455 #endif
101456 
101457 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
101458     auto operator<=>( RayTracingShaderGroupCreateInfoNV const & ) const = default;
101459 #else
operator ==VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV101460     bool operator==( RayTracingShaderGroupCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
101461     {
101462 #  if defined( VULKAN_HPP_USE_REFLECT )
101463       return this->reflect() == rhs.reflect();
101464 #  else
101465       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ) && ( generalShader == rhs.generalShader ) &&
101466              ( closestHitShader == rhs.closestHitShader ) && ( anyHitShader == rhs.anyHitShader ) && ( intersectionShader == rhs.intersectionShader );
101467 #  endif
101468     }
101469 
operator !=VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV101470     bool operator!=( RayTracingShaderGroupCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
101471     {
101472       return !operator==( rhs );
101473     }
101474 #endif
101475 
101476   public:
101477     VULKAN_HPP_NAMESPACE::StructureType                sType              = StructureType::eRayTracingShaderGroupCreateInfoNV;
101478     const void *                                       pNext              = {};
101479     VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type               = VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral;
101480     uint32_t                                           generalShader      = VULKAN_HPP_NAMESPACE::ShaderUnusedNV;
101481     uint32_t                                           closestHitShader   = VULKAN_HPP_NAMESPACE::ShaderUnusedNV;
101482     uint32_t                                           anyHitShader       = VULKAN_HPP_NAMESPACE::ShaderUnusedNV;
101483     uint32_t                                           intersectionShader = VULKAN_HPP_NAMESPACE::ShaderUnusedNV;
101484   };
101485 
101486   template <>
101487   struct CppType<StructureType, StructureType::eRayTracingShaderGroupCreateInfoNV>
101488   {
101489     using Type = RayTracingShaderGroupCreateInfoNV;
101490   };
101491 
101492   struct RayTracingPipelineCreateInfoNV
101493   {
101494     using NativeType = VkRayTracingPipelineCreateInfoNV;
101495 
101496     static const bool                                  allowDuplicate = false;
101497     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRayTracingPipelineCreateInfoNV;
101498 
101499 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RayTracingPipelineCreateInfoNVVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV101500     VULKAN_HPP_CONSTEXPR RayTracingPipelineCreateInfoNV( VULKAN_HPP_NAMESPACE::PipelineCreateFlags                       flags_              = {},
101501                                                          uint32_t                                                        stageCount_         = {},
101502                                                          const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo *     pStages_            = {},
101503                                                          uint32_t                                                        groupCount_         = {},
101504                                                          const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV * pGroups_            = {},
101505                                                          uint32_t                                                        maxRecursionDepth_  = {},
101506                                                          VULKAN_HPP_NAMESPACE::PipelineLayout                            layout_             = {},
101507                                                          VULKAN_HPP_NAMESPACE::Pipeline                                  basePipelineHandle_ = {},
101508                                                          int32_t                                                         basePipelineIndex_  = {},
101509                                                          const void *                                                    pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
101510       : pNext{ pNext_ }
101511       , flags{ flags_ }
101512       , stageCount{ stageCount_ }
101513       , pStages{ pStages_ }
101514       , groupCount{ groupCount_ }
101515       , pGroups{ pGroups_ }
101516       , maxRecursionDepth{ maxRecursionDepth_ }
101517       , layout{ layout_ }
101518       , basePipelineHandle{ basePipelineHandle_ }
101519       , basePipelineIndex{ basePipelineIndex_ }
101520     {
101521     }
101522 
101523     VULKAN_HPP_CONSTEXPR RayTracingPipelineCreateInfoNV( RayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101524 
RayTracingPipelineCreateInfoNVVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV101525     RayTracingPipelineCreateInfoNV( VkRayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
101526       : RayTracingPipelineCreateInfoNV( *reinterpret_cast<RayTracingPipelineCreateInfoNV const *>( &rhs ) )
101527     {
101528     }
101529 
101530 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RayTracingPipelineCreateInfoNVVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV101531     RayTracingPipelineCreateInfoNV(
101532       VULKAN_HPP_NAMESPACE::PipelineCreateFlags                                                                            flags_,
101533       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const &     stages_,
101534       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV> const & groups_             = {},
101535       uint32_t                                                                                                             maxRecursionDepth_  = {},
101536       VULKAN_HPP_NAMESPACE::PipelineLayout                                                                                 layout_             = {},
101537       VULKAN_HPP_NAMESPACE::Pipeline                                                                                       basePipelineHandle_ = {},
101538       int32_t                                                                                                              basePipelineIndex_  = {},
101539       const void *                                                                                                         pNext_              = nullptr )
101540       : pNext( pNext_ )
101541       , flags( flags_ )
101542       , stageCount( static_cast<uint32_t>( stages_.size() ) )
101543       , pStages( stages_.data() )
101544       , groupCount( static_cast<uint32_t>( groups_.size() ) )
101545       , pGroups( groups_.data() )
101546       , maxRecursionDepth( maxRecursionDepth_ )
101547       , layout( layout_ )
101548       , basePipelineHandle( basePipelineHandle_ )
101549       , basePipelineIndex( basePipelineIndex_ )
101550     {
101551     }
101552 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
101553 
101554     RayTracingPipelineCreateInfoNV & operator=( RayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101555 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
101556 
operator =VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV101557     RayTracingPipelineCreateInfoNV & operator=( VkRayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
101558     {
101559       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV const *>( &rhs );
101560       return *this;
101561     }
101562 
101563 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV101564     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
101565     {
101566       pNext = pNext_;
101567       return *this;
101568     }
101569 
setFlagsVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV101570     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
101571     {
101572       flags = flags_;
101573       return *this;
101574     }
101575 
setStageCountVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV101576     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT
101577     {
101578       stageCount = stageCount_;
101579       return *this;
101580     }
101581 
101582     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV &
setPStagesVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV101583       setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ ) VULKAN_HPP_NOEXCEPT
101584     {
101585       pStages = pStages_;
101586       return *this;
101587     }
101588 
101589 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
101590     RayTracingPipelineCreateInfoNV &
setStagesVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV101591       setStages( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_ ) VULKAN_HPP_NOEXCEPT
101592     {
101593       stageCount = static_cast<uint32_t>( stages_.size() );
101594       pStages    = stages_.data();
101595       return *this;
101596     }
101597 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
101598 
setGroupCountVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV101599     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setGroupCount( uint32_t groupCount_ ) VULKAN_HPP_NOEXCEPT
101600     {
101601       groupCount = groupCount_;
101602       return *this;
101603     }
101604 
101605     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV &
setPGroupsVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV101606       setPGroups( const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV * pGroups_ ) VULKAN_HPP_NOEXCEPT
101607     {
101608       pGroups = pGroups_;
101609       return *this;
101610     }
101611 
101612 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setGroupsVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV101613     RayTracingPipelineCreateInfoNV & setGroups(
101614       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV> const & groups_ ) VULKAN_HPP_NOEXCEPT
101615     {
101616       groupCount = static_cast<uint32_t>( groups_.size() );
101617       pGroups    = groups_.data();
101618       return *this;
101619     }
101620 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
101621 
setMaxRecursionDepthVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV101622     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setMaxRecursionDepth( uint32_t maxRecursionDepth_ ) VULKAN_HPP_NOEXCEPT
101623     {
101624       maxRecursionDepth = maxRecursionDepth_;
101625       return *this;
101626     }
101627 
setLayoutVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV101628     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
101629     {
101630       layout = layout_;
101631       return *this;
101632     }
101633 
setBasePipelineHandleVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV101634     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT
101635     {
101636       basePipelineHandle = basePipelineHandle_;
101637       return *this;
101638     }
101639 
setBasePipelineIndexVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV101640     VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT
101641     {
101642       basePipelineIndex = basePipelineIndex_;
101643       return *this;
101644     }
101645 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
101646 
operator VkRayTracingPipelineCreateInfoNV const&VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV101647     operator VkRayTracingPipelineCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
101648     {
101649       return *reinterpret_cast<const VkRayTracingPipelineCreateInfoNV *>( this );
101650     }
101651 
operator VkRayTracingPipelineCreateInfoNV&VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV101652     operator VkRayTracingPipelineCreateInfoNV &() VULKAN_HPP_NOEXCEPT
101653     {
101654       return *reinterpret_cast<VkRayTracingPipelineCreateInfoNV *>( this );
101655     }
101656 
101657 #if defined( VULKAN_HPP_USE_REFLECT )
101658 #  if 14 <= VULKAN_HPP_CPP_VERSION
101659     auto
101660 #  else
101661     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
101662                const void * const &,
101663                VULKAN_HPP_NAMESPACE::PipelineCreateFlags const &,
101664                uint32_t const &,
101665                const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * const &,
101666                uint32_t const &,
101667                const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV * const &,
101668                uint32_t const &,
101669                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
101670                VULKAN_HPP_NAMESPACE::Pipeline const &,
101671                int32_t const &>
101672 #  endif
reflectVULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV101673       reflect() const VULKAN_HPP_NOEXCEPT
101674     {
101675       return std::tie( sType, pNext, flags, stageCount, pStages, groupCount, pGroups, maxRecursionDepth, layout, basePipelineHandle, basePipelineIndex );
101676     }
101677 #endif
101678 
101679 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
101680     auto operator<=>( RayTracingPipelineCreateInfoNV const & ) const = default;
101681 #else
operator ==VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV101682     bool operator==( RayTracingPipelineCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
101683     {
101684 #  if defined( VULKAN_HPP_USE_REFLECT )
101685       return this->reflect() == rhs.reflect();
101686 #  else
101687       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stageCount == rhs.stageCount ) && ( pStages == rhs.pStages ) &&
101688              ( groupCount == rhs.groupCount ) && ( pGroups == rhs.pGroups ) && ( maxRecursionDepth == rhs.maxRecursionDepth ) && ( layout == rhs.layout ) &&
101689              ( basePipelineHandle == rhs.basePipelineHandle ) && ( basePipelineIndex == rhs.basePipelineIndex );
101690 #  endif
101691     }
101692 
operator !=VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV101693     bool operator!=( RayTracingPipelineCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
101694     {
101695       return !operator==( rhs );
101696     }
101697 #endif
101698 
101699   public:
101700     VULKAN_HPP_NAMESPACE::StructureType                             sType              = StructureType::eRayTracingPipelineCreateInfoNV;
101701     const void *                                                    pNext              = {};
101702     VULKAN_HPP_NAMESPACE::PipelineCreateFlags                       flags              = {};
101703     uint32_t                                                        stageCount         = {};
101704     const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo *     pStages            = {};
101705     uint32_t                                                        groupCount         = {};
101706     const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV * pGroups            = {};
101707     uint32_t                                                        maxRecursionDepth  = {};
101708     VULKAN_HPP_NAMESPACE::PipelineLayout                            layout             = {};
101709     VULKAN_HPP_NAMESPACE::Pipeline                                  basePipelineHandle = {};
101710     int32_t                                                         basePipelineIndex  = {};
101711   };
101712 
101713   template <>
101714   struct CppType<StructureType, StructureType::eRayTracingPipelineCreateInfoNV>
101715   {
101716     using Type = RayTracingPipelineCreateInfoNV;
101717   };
101718 
101719   struct RefreshCycleDurationGOOGLE
101720   {
101721     using NativeType = VkRefreshCycleDurationGOOGLE;
101722 
101723 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RefreshCycleDurationGOOGLEVULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE101724     VULKAN_HPP_CONSTEXPR RefreshCycleDurationGOOGLE( uint64_t refreshDuration_ = {} ) VULKAN_HPP_NOEXCEPT : refreshDuration{ refreshDuration_ } {}
101725 
101726     VULKAN_HPP_CONSTEXPR RefreshCycleDurationGOOGLE( RefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101727 
RefreshCycleDurationGOOGLEVULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE101728     RefreshCycleDurationGOOGLE( VkRefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
101729       : RefreshCycleDurationGOOGLE( *reinterpret_cast<RefreshCycleDurationGOOGLE const *>( &rhs ) )
101730     {
101731     }
101732 
101733     RefreshCycleDurationGOOGLE & operator=( RefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101734 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
101735 
operator =VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE101736     RefreshCycleDurationGOOGLE & operator=( VkRefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
101737     {
101738       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE const *>( &rhs );
101739       return *this;
101740     }
101741 
operator VkRefreshCycleDurationGOOGLE const&VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE101742     operator VkRefreshCycleDurationGOOGLE const &() const VULKAN_HPP_NOEXCEPT
101743     {
101744       return *reinterpret_cast<const VkRefreshCycleDurationGOOGLE *>( this );
101745     }
101746 
operator VkRefreshCycleDurationGOOGLE&VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE101747     operator VkRefreshCycleDurationGOOGLE &() VULKAN_HPP_NOEXCEPT
101748     {
101749       return *reinterpret_cast<VkRefreshCycleDurationGOOGLE *>( this );
101750     }
101751 
101752 #if defined( VULKAN_HPP_USE_REFLECT )
101753 #  if 14 <= VULKAN_HPP_CPP_VERSION
101754     auto
101755 #  else
101756     std::tuple<uint64_t const &>
101757 #  endif
reflectVULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE101758       reflect() const VULKAN_HPP_NOEXCEPT
101759     {
101760       return std::tie( refreshDuration );
101761     }
101762 #endif
101763 
101764 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
101765     auto operator<=>( RefreshCycleDurationGOOGLE const & ) const = default;
101766 #else
operator ==VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE101767     bool operator==( RefreshCycleDurationGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
101768     {
101769 #  if defined( VULKAN_HPP_USE_REFLECT )
101770       return this->reflect() == rhs.reflect();
101771 #  else
101772       return ( refreshDuration == rhs.refreshDuration );
101773 #  endif
101774     }
101775 
operator !=VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE101776     bool operator!=( RefreshCycleDurationGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT
101777     {
101778       return !operator==( rhs );
101779     }
101780 #endif
101781 
101782   public:
101783     uint64_t refreshDuration = {};
101784   };
101785 
101786   struct ReleaseSwapchainImagesInfoEXT
101787   {
101788     using NativeType = VkReleaseSwapchainImagesInfoEXT;
101789 
101790     static const bool                                  allowDuplicate = false;
101791     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eReleaseSwapchainImagesInfoEXT;
101792 
101793 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ReleaseSwapchainImagesInfoEXTVULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT101794     VULKAN_HPP_CONSTEXPR ReleaseSwapchainImagesInfoEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_       = {},
101795                                                         uint32_t                           imageIndexCount_ = {},
101796                                                         const uint32_t *                   pImageIndices_   = {},
101797                                                         const void *                       pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
101798       : pNext{ pNext_ }
101799       , swapchain{ swapchain_ }
101800       , imageIndexCount{ imageIndexCount_ }
101801       , pImageIndices{ pImageIndices_ }
101802     {
101803     }
101804 
101805     VULKAN_HPP_CONSTEXPR ReleaseSwapchainImagesInfoEXT( ReleaseSwapchainImagesInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101806 
ReleaseSwapchainImagesInfoEXTVULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT101807     ReleaseSwapchainImagesInfoEXT( VkReleaseSwapchainImagesInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
101808       : ReleaseSwapchainImagesInfoEXT( *reinterpret_cast<ReleaseSwapchainImagesInfoEXT const *>( &rhs ) )
101809     {
101810     }
101811 
101812 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ReleaseSwapchainImagesInfoEXTVULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT101813     ReleaseSwapchainImagesInfoEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR                                    swapchain_,
101814                                    VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & imageIndices_,
101815                                    const void *                                                          pNext_ = nullptr )
101816       : pNext( pNext_ ), swapchain( swapchain_ ), imageIndexCount( static_cast<uint32_t>( imageIndices_.size() ) ), pImageIndices( imageIndices_.data() )
101817     {
101818     }
101819 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
101820 
101821     ReleaseSwapchainImagesInfoEXT & operator=( ReleaseSwapchainImagesInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101822 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
101823 
operator =VULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT101824     ReleaseSwapchainImagesInfoEXT & operator=( VkReleaseSwapchainImagesInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
101825     {
101826       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT const *>( &rhs );
101827       return *this;
101828     }
101829 
101830 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT101831     VULKAN_HPP_CONSTEXPR_14 ReleaseSwapchainImagesInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
101832     {
101833       pNext = pNext_;
101834       return *this;
101835     }
101836 
setSwapchainVULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT101837     VULKAN_HPP_CONSTEXPR_14 ReleaseSwapchainImagesInfoEXT & setSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ ) VULKAN_HPP_NOEXCEPT
101838     {
101839       swapchain = swapchain_;
101840       return *this;
101841     }
101842 
setImageIndexCountVULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT101843     VULKAN_HPP_CONSTEXPR_14 ReleaseSwapchainImagesInfoEXT & setImageIndexCount( uint32_t imageIndexCount_ ) VULKAN_HPP_NOEXCEPT
101844     {
101845       imageIndexCount = imageIndexCount_;
101846       return *this;
101847     }
101848 
setPImageIndicesVULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT101849     VULKAN_HPP_CONSTEXPR_14 ReleaseSwapchainImagesInfoEXT & setPImageIndices( const uint32_t * pImageIndices_ ) VULKAN_HPP_NOEXCEPT
101850     {
101851       pImageIndices = pImageIndices_;
101852       return *this;
101853     }
101854 
101855 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImageIndicesVULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT101856     ReleaseSwapchainImagesInfoEXT & setImageIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & imageIndices_ ) VULKAN_HPP_NOEXCEPT
101857     {
101858       imageIndexCount = static_cast<uint32_t>( imageIndices_.size() );
101859       pImageIndices   = imageIndices_.data();
101860       return *this;
101861     }
101862 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
101863 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
101864 
operator VkReleaseSwapchainImagesInfoEXT const&VULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT101865     operator VkReleaseSwapchainImagesInfoEXT const &() const VULKAN_HPP_NOEXCEPT
101866     {
101867       return *reinterpret_cast<const VkReleaseSwapchainImagesInfoEXT *>( this );
101868     }
101869 
operator VkReleaseSwapchainImagesInfoEXT&VULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT101870     operator VkReleaseSwapchainImagesInfoEXT &() VULKAN_HPP_NOEXCEPT
101871     {
101872       return *reinterpret_cast<VkReleaseSwapchainImagesInfoEXT *>( this );
101873     }
101874 
101875 #if defined( VULKAN_HPP_USE_REFLECT )
101876 #  if 14 <= VULKAN_HPP_CPP_VERSION
101877     auto
101878 #  else
101879     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
101880                const void * const &,
101881                VULKAN_HPP_NAMESPACE::SwapchainKHR const &,
101882                uint32_t const &,
101883                const uint32_t * const &>
101884 #  endif
reflectVULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT101885       reflect() const VULKAN_HPP_NOEXCEPT
101886     {
101887       return std::tie( sType, pNext, swapchain, imageIndexCount, pImageIndices );
101888     }
101889 #endif
101890 
101891 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
101892     auto operator<=>( ReleaseSwapchainImagesInfoEXT const & ) const = default;
101893 #else
operator ==VULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT101894     bool operator==( ReleaseSwapchainImagesInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
101895     {
101896 #  if defined( VULKAN_HPP_USE_REFLECT )
101897       return this->reflect() == rhs.reflect();
101898 #  else
101899       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchain == rhs.swapchain ) && ( imageIndexCount == rhs.imageIndexCount ) &&
101900              ( pImageIndices == rhs.pImageIndices );
101901 #  endif
101902     }
101903 
operator !=VULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT101904     bool operator!=( ReleaseSwapchainImagesInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
101905     {
101906       return !operator==( rhs );
101907     }
101908 #endif
101909 
101910   public:
101911     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eReleaseSwapchainImagesInfoEXT;
101912     const void *                        pNext           = {};
101913     VULKAN_HPP_NAMESPACE::SwapchainKHR  swapchain       = {};
101914     uint32_t                            imageIndexCount = {};
101915     const uint32_t *                    pImageIndices   = {};
101916   };
101917 
101918   template <>
101919   struct CppType<StructureType, StructureType::eReleaseSwapchainImagesInfoEXT>
101920   {
101921     using Type = ReleaseSwapchainImagesInfoEXT;
101922   };
101923 
101924   struct RenderPassAttachmentBeginInfo
101925   {
101926     using NativeType = VkRenderPassAttachmentBeginInfo;
101927 
101928     static const bool                                  allowDuplicate = false;
101929     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassAttachmentBeginInfo;
101930 
101931 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassAttachmentBeginInfoVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo101932     VULKAN_HPP_CONSTEXPR RenderPassAttachmentBeginInfo( uint32_t                                attachmentCount_ = {},
101933                                                         const VULKAN_HPP_NAMESPACE::ImageView * pAttachments_    = {},
101934                                                         const void *                            pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
101935       : pNext{ pNext_ }
101936       , attachmentCount{ attachmentCount_ }
101937       , pAttachments{ pAttachments_ }
101938     {
101939     }
101940 
101941     VULKAN_HPP_CONSTEXPR RenderPassAttachmentBeginInfo( RenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101942 
RenderPassAttachmentBeginInfoVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo101943     RenderPassAttachmentBeginInfo( VkRenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
101944       : RenderPassAttachmentBeginInfo( *reinterpret_cast<RenderPassAttachmentBeginInfo const *>( &rhs ) )
101945     {
101946     }
101947 
101948 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassAttachmentBeginInfoVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo101949     RenderPassAttachmentBeginInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageView> const & attachments_,
101950                                    const void *                                                                                 pNext_ = nullptr )
101951       : pNext( pNext_ ), attachmentCount( static_cast<uint32_t>( attachments_.size() ) ), pAttachments( attachments_.data() )
101952     {
101953     }
101954 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
101955 
101956     RenderPassAttachmentBeginInfo & operator=( RenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
101957 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
101958 
operator =VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo101959     RenderPassAttachmentBeginInfo & operator=( VkRenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
101960     {
101961       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo const *>( &rhs );
101962       return *this;
101963     }
101964 
101965 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo101966     VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
101967     {
101968       pNext = pNext_;
101969       return *this;
101970     }
101971 
setAttachmentCountVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo101972     VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
101973     {
101974       attachmentCount = attachmentCount_;
101975       return *this;
101976     }
101977 
setPAttachmentsVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo101978     VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo & setPAttachments( const VULKAN_HPP_NAMESPACE::ImageView * pAttachments_ ) VULKAN_HPP_NOEXCEPT
101979     {
101980       pAttachments = pAttachments_;
101981       return *this;
101982     }
101983 
101984 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
101985     RenderPassAttachmentBeginInfo &
setAttachmentsVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo101986       setAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageView> const & attachments_ ) VULKAN_HPP_NOEXCEPT
101987     {
101988       attachmentCount = static_cast<uint32_t>( attachments_.size() );
101989       pAttachments    = attachments_.data();
101990       return *this;
101991     }
101992 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
101993 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
101994 
operator VkRenderPassAttachmentBeginInfo const&VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo101995     operator VkRenderPassAttachmentBeginInfo const &() const VULKAN_HPP_NOEXCEPT
101996     {
101997       return *reinterpret_cast<const VkRenderPassAttachmentBeginInfo *>( this );
101998     }
101999 
operator VkRenderPassAttachmentBeginInfo&VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo102000     operator VkRenderPassAttachmentBeginInfo &() VULKAN_HPP_NOEXCEPT
102001     {
102002       return *reinterpret_cast<VkRenderPassAttachmentBeginInfo *>( this );
102003     }
102004 
102005 #if defined( VULKAN_HPP_USE_REFLECT )
102006 #  if 14 <= VULKAN_HPP_CPP_VERSION
102007     auto
102008 #  else
102009     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::ImageView * const &>
102010 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo102011       reflect() const VULKAN_HPP_NOEXCEPT
102012     {
102013       return std::tie( sType, pNext, attachmentCount, pAttachments );
102014     }
102015 #endif
102016 
102017 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
102018     auto operator<=>( RenderPassAttachmentBeginInfo const & ) const = default;
102019 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo102020     bool operator==( RenderPassAttachmentBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
102021     {
102022 #  if defined( VULKAN_HPP_USE_REFLECT )
102023       return this->reflect() == rhs.reflect();
102024 #  else
102025       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachmentCount == rhs.attachmentCount ) && ( pAttachments == rhs.pAttachments );
102026 #  endif
102027     }
102028 
operator !=VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo102029     bool operator!=( RenderPassAttachmentBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
102030     {
102031       return !operator==( rhs );
102032     }
102033 #endif
102034 
102035   public:
102036     VULKAN_HPP_NAMESPACE::StructureType     sType           = StructureType::eRenderPassAttachmentBeginInfo;
102037     const void *                            pNext           = {};
102038     uint32_t                                attachmentCount = {};
102039     const VULKAN_HPP_NAMESPACE::ImageView * pAttachments    = {};
102040   };
102041 
102042   template <>
102043   struct CppType<StructureType, StructureType::eRenderPassAttachmentBeginInfo>
102044   {
102045     using Type = RenderPassAttachmentBeginInfo;
102046   };
102047 
102048   using RenderPassAttachmentBeginInfoKHR = RenderPassAttachmentBeginInfo;
102049 
102050   struct RenderPassBeginInfo
102051   {
102052     using NativeType = VkRenderPassBeginInfo;
102053 
102054     static const bool                                  allowDuplicate = false;
102055     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassBeginInfo;
102056 
102057 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassBeginInfoVULKAN_HPP_NAMESPACE::RenderPassBeginInfo102058     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo( VULKAN_HPP_NAMESPACE::RenderPass         renderPass_      = {},
102059                                                  VULKAN_HPP_NAMESPACE::Framebuffer        framebuffer_     = {},
102060                                                  VULKAN_HPP_NAMESPACE::Rect2D             renderArea_      = {},
102061                                                  uint32_t                                 clearValueCount_ = {},
102062                                                  const VULKAN_HPP_NAMESPACE::ClearValue * pClearValues_    = {},
102063                                                  const void *                             pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
102064       : pNext{ pNext_ }
102065       , renderPass{ renderPass_ }
102066       , framebuffer{ framebuffer_ }
102067       , renderArea{ renderArea_ }
102068       , clearValueCount{ clearValueCount_ }
102069       , pClearValues{ pClearValues_ }
102070     {
102071     }
102072 
102073     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo( RenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102074 
RenderPassBeginInfoVULKAN_HPP_NAMESPACE::RenderPassBeginInfo102075     RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT : RenderPassBeginInfo( *reinterpret_cast<RenderPassBeginInfo const *>( &rhs ) )
102076     {
102077     }
102078 
102079 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassBeginInfoVULKAN_HPP_NAMESPACE::RenderPassBeginInfo102080     RenderPassBeginInfo( VULKAN_HPP_NAMESPACE::RenderPass                                                              renderPass_,
102081                          VULKAN_HPP_NAMESPACE::Framebuffer                                                             framebuffer_,
102082                          VULKAN_HPP_NAMESPACE::Rect2D                                                                  renderArea_,
102083                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ClearValue> const & clearValues_,
102084                          const void *                                                                                  pNext_ = nullptr )
102085       : pNext( pNext_ )
102086       , renderPass( renderPass_ )
102087       , framebuffer( framebuffer_ )
102088       , renderArea( renderArea_ )
102089       , clearValueCount( static_cast<uint32_t>( clearValues_.size() ) )
102090       , pClearValues( clearValues_.data() )
102091     {
102092     }
102093 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
102094 
102095     RenderPassBeginInfo & operator=( RenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102096 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
102097 
operator =VULKAN_HPP_NAMESPACE::RenderPassBeginInfo102098     RenderPassBeginInfo & operator=( VkRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
102099     {
102100       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassBeginInfo const *>( &rhs );
102101       return *this;
102102     }
102103 
102104 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassBeginInfo102105     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
102106     {
102107       pNext = pNext_;
102108       return *this;
102109     }
102110 
setRenderPassVULKAN_HPP_NAMESPACE::RenderPassBeginInfo102111     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT
102112     {
102113       renderPass = renderPass_;
102114       return *this;
102115     }
102116 
setFramebufferVULKAN_HPP_NAMESPACE::RenderPassBeginInfo102117     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setFramebuffer( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_ ) VULKAN_HPP_NOEXCEPT
102118     {
102119       framebuffer = framebuffer_;
102120       return *this;
102121     }
102122 
setRenderAreaVULKAN_HPP_NAMESPACE::RenderPassBeginInfo102123     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setRenderArea( VULKAN_HPP_NAMESPACE::Rect2D const & renderArea_ ) VULKAN_HPP_NOEXCEPT
102124     {
102125       renderArea = renderArea_;
102126       return *this;
102127     }
102128 
setClearValueCountVULKAN_HPP_NAMESPACE::RenderPassBeginInfo102129     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setClearValueCount( uint32_t clearValueCount_ ) VULKAN_HPP_NOEXCEPT
102130     {
102131       clearValueCount = clearValueCount_;
102132       return *this;
102133     }
102134 
setPClearValuesVULKAN_HPP_NAMESPACE::RenderPassBeginInfo102135     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setPClearValues( const VULKAN_HPP_NAMESPACE::ClearValue * pClearValues_ ) VULKAN_HPP_NOEXCEPT
102136     {
102137       pClearValues = pClearValues_;
102138       return *this;
102139     }
102140 
102141 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
102142     RenderPassBeginInfo &
setClearValuesVULKAN_HPP_NAMESPACE::RenderPassBeginInfo102143       setClearValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ClearValue> const & clearValues_ ) VULKAN_HPP_NOEXCEPT
102144     {
102145       clearValueCount = static_cast<uint32_t>( clearValues_.size() );
102146       pClearValues    = clearValues_.data();
102147       return *this;
102148     }
102149 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
102150 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
102151 
operator VkRenderPassBeginInfo const&VULKAN_HPP_NAMESPACE::RenderPassBeginInfo102152     operator VkRenderPassBeginInfo const &() const VULKAN_HPP_NOEXCEPT
102153     {
102154       return *reinterpret_cast<const VkRenderPassBeginInfo *>( this );
102155     }
102156 
operator VkRenderPassBeginInfo&VULKAN_HPP_NAMESPACE::RenderPassBeginInfo102157     operator VkRenderPassBeginInfo &() VULKAN_HPP_NOEXCEPT
102158     {
102159       return *reinterpret_cast<VkRenderPassBeginInfo *>( this );
102160     }
102161 
102162 #if defined( VULKAN_HPP_USE_REFLECT )
102163 #  if 14 <= VULKAN_HPP_CPP_VERSION
102164     auto
102165 #  else
102166     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
102167                const void * const &,
102168                VULKAN_HPP_NAMESPACE::RenderPass const &,
102169                VULKAN_HPP_NAMESPACE::Framebuffer const &,
102170                VULKAN_HPP_NAMESPACE::Rect2D const &,
102171                uint32_t const &,
102172                const VULKAN_HPP_NAMESPACE::ClearValue * const &>
102173 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassBeginInfo102174       reflect() const VULKAN_HPP_NOEXCEPT
102175     {
102176       return std::tie( sType, pNext, renderPass, framebuffer, renderArea, clearValueCount, pClearValues );
102177     }
102178 #endif
102179 
102180 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
102181     auto operator<=>( RenderPassBeginInfo const & ) const = default;
102182 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassBeginInfo102183     bool operator==( RenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
102184     {
102185 #  if defined( VULKAN_HPP_USE_REFLECT )
102186       return this->reflect() == rhs.reflect();
102187 #  else
102188       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( renderPass == rhs.renderPass ) && ( framebuffer == rhs.framebuffer ) &&
102189              ( renderArea == rhs.renderArea ) && ( clearValueCount == rhs.clearValueCount ) && ( pClearValues == rhs.pClearValues );
102190 #  endif
102191     }
102192 
operator !=VULKAN_HPP_NAMESPACE::RenderPassBeginInfo102193     bool operator!=( RenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
102194     {
102195       return !operator==( rhs );
102196     }
102197 #endif
102198 
102199   public:
102200     VULKAN_HPP_NAMESPACE::StructureType      sType           = StructureType::eRenderPassBeginInfo;
102201     const void *                             pNext           = {};
102202     VULKAN_HPP_NAMESPACE::RenderPass         renderPass      = {};
102203     VULKAN_HPP_NAMESPACE::Framebuffer        framebuffer     = {};
102204     VULKAN_HPP_NAMESPACE::Rect2D             renderArea      = {};
102205     uint32_t                                 clearValueCount = {};
102206     const VULKAN_HPP_NAMESPACE::ClearValue * pClearValues    = {};
102207   };
102208 
102209   template <>
102210   struct CppType<StructureType, StructureType::eRenderPassBeginInfo>
102211   {
102212     using Type = RenderPassBeginInfo;
102213   };
102214 
102215   struct SubpassDescription
102216   {
102217     using NativeType = VkSubpassDescription;
102218 
102219 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassDescriptionVULKAN_HPP_NAMESPACE::SubpassDescription102220     VULKAN_HPP_CONSTEXPR SubpassDescription( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_          = {},
102221                                              VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_    = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
102222                                              uint32_t                                inputAttachmentCount_ = {},
102223                                              const VULKAN_HPP_NAMESPACE::AttachmentReference * pInputAttachments_       = {},
102224                                              uint32_t                                          colorAttachmentCount_    = {},
102225                                              const VULKAN_HPP_NAMESPACE::AttachmentReference * pColorAttachments_       = {},
102226                                              const VULKAN_HPP_NAMESPACE::AttachmentReference * pResolveAttachments_     = {},
102227                                              const VULKAN_HPP_NAMESPACE::AttachmentReference * pDepthStencilAttachment_ = {},
102228                                              uint32_t                                          preserveAttachmentCount_ = {},
102229                                              const uint32_t *                                  pPreserveAttachments_    = {} ) VULKAN_HPP_NOEXCEPT
102230       : flags{ flags_ }
102231       , pipelineBindPoint{ pipelineBindPoint_ }
102232       , inputAttachmentCount{ inputAttachmentCount_ }
102233       , pInputAttachments{ pInputAttachments_ }
102234       , colorAttachmentCount{ colorAttachmentCount_ }
102235       , pColorAttachments{ pColorAttachments_ }
102236       , pResolveAttachments{ pResolveAttachments_ }
102237       , pDepthStencilAttachment{ pDepthStencilAttachment_ }
102238       , preserveAttachmentCount{ preserveAttachmentCount_ }
102239       , pPreserveAttachments{ pPreserveAttachments_ }
102240     {
102241     }
102242 
102243     VULKAN_HPP_CONSTEXPR SubpassDescription( SubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102244 
SubpassDescriptionVULKAN_HPP_NAMESPACE::SubpassDescription102245     SubpassDescription( VkSubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT : SubpassDescription( *reinterpret_cast<SubpassDescription const *>( &rhs ) ) {}
102246 
102247 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SubpassDescriptionVULKAN_HPP_NAMESPACE::SubpassDescription102248     SubpassDescription( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags                                                          flags_,
102249                         VULKAN_HPP_NAMESPACE::PipelineBindPoint                                                                pipelineBindPoint_,
102250                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const & inputAttachments_,
102251                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const & colorAttachments_        = {},
102252                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const & resolveAttachments_      = {},
102253                         const VULKAN_HPP_NAMESPACE::AttachmentReference *                                                      pDepthStencilAttachment_ = {},
102254                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &                                  preserveAttachments_     = {} )
102255       : flags( flags_ )
102256       , pipelineBindPoint( pipelineBindPoint_ )
102257       , inputAttachmentCount( static_cast<uint32_t>( inputAttachments_.size() ) )
102258       , pInputAttachments( inputAttachments_.data() )
102259       , colorAttachmentCount( static_cast<uint32_t>( colorAttachments_.size() ) )
102260       , pColorAttachments( colorAttachments_.data() )
102261       , pResolveAttachments( resolveAttachments_.data() )
102262       , pDepthStencilAttachment( pDepthStencilAttachment_ )
102263       , preserveAttachmentCount( static_cast<uint32_t>( preserveAttachments_.size() ) )
102264       , pPreserveAttachments( preserveAttachments_.data() )
102265     {
102266 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
102267       VULKAN_HPP_ASSERT( resolveAttachments_.empty() || ( colorAttachments_.size() == resolveAttachments_.size() ) );
102268 #    else
102269       if ( !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() ) )
102270       {
102271         throw LogicError(
102272           VULKAN_HPP_NAMESPACE_STRING
102273           "::SubpassDescription::SubpassDescription: !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() )" );
102274       }
102275 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
102276     }
102277 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
102278 
102279     SubpassDescription & operator=( SubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102280 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
102281 
operator =VULKAN_HPP_NAMESPACE::SubpassDescription102282     SubpassDescription & operator=( VkSubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT
102283     {
102284       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDescription const *>( &rhs );
102285       return *this;
102286     }
102287 
102288 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFlagsVULKAN_HPP_NAMESPACE::SubpassDescription102289     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setFlags( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT
102290     {
102291       flags = flags_;
102292       return *this;
102293     }
102294 
setPipelineBindPointVULKAN_HPP_NAMESPACE::SubpassDescription102295     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
102296     {
102297       pipelineBindPoint = pipelineBindPoint_;
102298       return *this;
102299     }
102300 
setInputAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription102301     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setInputAttachmentCount( uint32_t inputAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
102302     {
102303       inputAttachmentCount = inputAttachmentCount_;
102304       return *this;
102305     }
102306 
102307     VULKAN_HPP_CONSTEXPR_14 SubpassDescription &
setPInputAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription102308       setPInputAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference * pInputAttachments_ ) VULKAN_HPP_NOEXCEPT
102309     {
102310       pInputAttachments = pInputAttachments_;
102311       return *this;
102312     }
102313 
102314 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setInputAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription102315     SubpassDescription & setInputAttachments(
102316       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const & inputAttachments_ ) VULKAN_HPP_NOEXCEPT
102317     {
102318       inputAttachmentCount = static_cast<uint32_t>( inputAttachments_.size() );
102319       pInputAttachments    = inputAttachments_.data();
102320       return *this;
102321     }
102322 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
102323 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription102324     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
102325     {
102326       colorAttachmentCount = colorAttachmentCount_;
102327       return *this;
102328     }
102329 
102330     VULKAN_HPP_CONSTEXPR_14 SubpassDescription &
setPColorAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription102331       setPColorAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference * pColorAttachments_ ) VULKAN_HPP_NOEXCEPT
102332     {
102333       pColorAttachments = pColorAttachments_;
102334       return *this;
102335     }
102336 
102337 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription102338     SubpassDescription & setColorAttachments(
102339       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const & colorAttachments_ ) VULKAN_HPP_NOEXCEPT
102340     {
102341       colorAttachmentCount = static_cast<uint32_t>( colorAttachments_.size() );
102342       pColorAttachments    = colorAttachments_.data();
102343       return *this;
102344     }
102345 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
102346 
102347     VULKAN_HPP_CONSTEXPR_14 SubpassDescription &
setPResolveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription102348       setPResolveAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference * pResolveAttachments_ ) VULKAN_HPP_NOEXCEPT
102349     {
102350       pResolveAttachments = pResolveAttachments_;
102351       return *this;
102352     }
102353 
102354 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setResolveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription102355     SubpassDescription & setResolveAttachments(
102356       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const & resolveAttachments_ ) VULKAN_HPP_NOEXCEPT
102357     {
102358       colorAttachmentCount = static_cast<uint32_t>( resolveAttachments_.size() );
102359       pResolveAttachments  = resolveAttachments_.data();
102360       return *this;
102361     }
102362 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
102363 
102364     VULKAN_HPP_CONSTEXPR_14 SubpassDescription &
setPDepthStencilAttachmentVULKAN_HPP_NAMESPACE::SubpassDescription102365       setPDepthStencilAttachment( const VULKAN_HPP_NAMESPACE::AttachmentReference * pDepthStencilAttachment_ ) VULKAN_HPP_NOEXCEPT
102366     {
102367       pDepthStencilAttachment = pDepthStencilAttachment_;
102368       return *this;
102369     }
102370 
setPreserveAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription102371     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
102372     {
102373       preserveAttachmentCount = preserveAttachmentCount_;
102374       return *this;
102375     }
102376 
setPPreserveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription102377     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPPreserveAttachments( const uint32_t * pPreserveAttachments_ ) VULKAN_HPP_NOEXCEPT
102378     {
102379       pPreserveAttachments = pPreserveAttachments_;
102380       return *this;
102381     }
102382 
102383 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
102384     SubpassDescription &
setPreserveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription102385       setPreserveAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & preserveAttachments_ ) VULKAN_HPP_NOEXCEPT
102386     {
102387       preserveAttachmentCount = static_cast<uint32_t>( preserveAttachments_.size() );
102388       pPreserveAttachments    = preserveAttachments_.data();
102389       return *this;
102390     }
102391 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
102392 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
102393 
operator VkSubpassDescription const&VULKAN_HPP_NAMESPACE::SubpassDescription102394     operator VkSubpassDescription const &() const VULKAN_HPP_NOEXCEPT
102395     {
102396       return *reinterpret_cast<const VkSubpassDescription *>( this );
102397     }
102398 
operator VkSubpassDescription&VULKAN_HPP_NAMESPACE::SubpassDescription102399     operator VkSubpassDescription &() VULKAN_HPP_NOEXCEPT
102400     {
102401       return *reinterpret_cast<VkSubpassDescription *>( this );
102402     }
102403 
102404 #if defined( VULKAN_HPP_USE_REFLECT )
102405 #  if 14 <= VULKAN_HPP_CPP_VERSION
102406     auto
102407 #  else
102408     std::tuple<VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags const &,
102409                VULKAN_HPP_NAMESPACE::PipelineBindPoint const &,
102410                uint32_t const &,
102411                const VULKAN_HPP_NAMESPACE::AttachmentReference * const &,
102412                uint32_t const &,
102413                const VULKAN_HPP_NAMESPACE::AttachmentReference * const &,
102414                const VULKAN_HPP_NAMESPACE::AttachmentReference * const &,
102415                const VULKAN_HPP_NAMESPACE::AttachmentReference * const &,
102416                uint32_t const &,
102417                const uint32_t * const &>
102418 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassDescription102419       reflect() const VULKAN_HPP_NOEXCEPT
102420     {
102421       return std::tie( flags,
102422                        pipelineBindPoint,
102423                        inputAttachmentCount,
102424                        pInputAttachments,
102425                        colorAttachmentCount,
102426                        pColorAttachments,
102427                        pResolveAttachments,
102428                        pDepthStencilAttachment,
102429                        preserveAttachmentCount,
102430                        pPreserveAttachments );
102431     }
102432 #endif
102433 
102434 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
102435     auto operator<=>( SubpassDescription const & ) const = default;
102436 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassDescription102437     bool operator==( SubpassDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
102438     {
102439 #  if defined( VULKAN_HPP_USE_REFLECT )
102440       return this->reflect() == rhs.reflect();
102441 #  else
102442       return ( flags == rhs.flags ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) && ( inputAttachmentCount == rhs.inputAttachmentCount ) &&
102443              ( pInputAttachments == rhs.pInputAttachments ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) &&
102444              ( pColorAttachments == rhs.pColorAttachments ) && ( pResolveAttachments == rhs.pResolveAttachments ) &&
102445              ( pDepthStencilAttachment == rhs.pDepthStencilAttachment ) && ( preserveAttachmentCount == rhs.preserveAttachmentCount ) &&
102446              ( pPreserveAttachments == rhs.pPreserveAttachments );
102447 #  endif
102448     }
102449 
operator !=VULKAN_HPP_NAMESPACE::SubpassDescription102450     bool operator!=( SubpassDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
102451     {
102452       return !operator==( rhs );
102453     }
102454 #endif
102455 
102456   public:
102457     VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags     flags                   = {};
102458     VULKAN_HPP_NAMESPACE::PipelineBindPoint           pipelineBindPoint       = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
102459     uint32_t                                          inputAttachmentCount    = {};
102460     const VULKAN_HPP_NAMESPACE::AttachmentReference * pInputAttachments       = {};
102461     uint32_t                                          colorAttachmentCount    = {};
102462     const VULKAN_HPP_NAMESPACE::AttachmentReference * pColorAttachments       = {};
102463     const VULKAN_HPP_NAMESPACE::AttachmentReference * pResolveAttachments     = {};
102464     const VULKAN_HPP_NAMESPACE::AttachmentReference * pDepthStencilAttachment = {};
102465     uint32_t                                          preserveAttachmentCount = {};
102466     const uint32_t *                                  pPreserveAttachments    = {};
102467   };
102468 
102469   struct SubpassDependency
102470   {
102471     using NativeType = VkSubpassDependency;
102472 
102473 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassDependencyVULKAN_HPP_NAMESPACE::SubpassDependency102474     VULKAN_HPP_CONSTEXPR SubpassDependency( uint32_t                                 srcSubpass_      = {},
102475                                             uint32_t                                 dstSubpass_      = {},
102476                                             VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_    = {},
102477                                             VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_    = {},
102478                                             VULKAN_HPP_NAMESPACE::AccessFlags        srcAccessMask_   = {},
102479                                             VULKAN_HPP_NAMESPACE::AccessFlags        dstAccessMask_   = {},
102480                                             VULKAN_HPP_NAMESPACE::DependencyFlags    dependencyFlags_ = {} ) VULKAN_HPP_NOEXCEPT
102481       : srcSubpass{ srcSubpass_ }
102482       , dstSubpass{ dstSubpass_ }
102483       , srcStageMask{ srcStageMask_ }
102484       , dstStageMask{ dstStageMask_ }
102485       , srcAccessMask{ srcAccessMask_ }
102486       , dstAccessMask{ dstAccessMask_ }
102487       , dependencyFlags{ dependencyFlags_ }
102488     {
102489     }
102490 
102491     VULKAN_HPP_CONSTEXPR SubpassDependency( SubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102492 
SubpassDependencyVULKAN_HPP_NAMESPACE::SubpassDependency102493     SubpassDependency( VkSubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT : SubpassDependency( *reinterpret_cast<SubpassDependency const *>( &rhs ) ) {}
102494 
102495     SubpassDependency & operator=( SubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102496 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
102497 
operator =VULKAN_HPP_NAMESPACE::SubpassDependency102498     SubpassDependency & operator=( VkSubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT
102499     {
102500       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDependency const *>( &rhs );
102501       return *this;
102502     }
102503 
102504 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcSubpassVULKAN_HPP_NAMESPACE::SubpassDependency102505     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setSrcSubpass( uint32_t srcSubpass_ ) VULKAN_HPP_NOEXCEPT
102506     {
102507       srcSubpass = srcSubpass_;
102508       return *this;
102509     }
102510 
setDstSubpassVULKAN_HPP_NAMESPACE::SubpassDependency102511     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setDstSubpass( uint32_t dstSubpass_ ) VULKAN_HPP_NOEXCEPT
102512     {
102513       dstSubpass = dstSubpass_;
102514       return *this;
102515     }
102516 
setSrcStageMaskVULKAN_HPP_NAMESPACE::SubpassDependency102517     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_ ) VULKAN_HPP_NOEXCEPT
102518     {
102519       srcStageMask = srcStageMask_;
102520       return *this;
102521     }
102522 
setDstStageMaskVULKAN_HPP_NAMESPACE::SubpassDependency102523     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_ ) VULKAN_HPP_NOEXCEPT
102524     {
102525       dstStageMask = dstStageMask_;
102526       return *this;
102527     }
102528 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::SubpassDependency102529     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
102530     {
102531       srcAccessMask = srcAccessMask_;
102532       return *this;
102533     }
102534 
setDstAccessMaskVULKAN_HPP_NAMESPACE::SubpassDependency102535     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
102536     {
102537       dstAccessMask = dstAccessMask_;
102538       return *this;
102539     }
102540 
setDependencyFlagsVULKAN_HPP_NAMESPACE::SubpassDependency102541     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setDependencyFlags( VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ ) VULKAN_HPP_NOEXCEPT
102542     {
102543       dependencyFlags = dependencyFlags_;
102544       return *this;
102545     }
102546 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
102547 
operator VkSubpassDependency const&VULKAN_HPP_NAMESPACE::SubpassDependency102548     operator VkSubpassDependency const &() const VULKAN_HPP_NOEXCEPT
102549     {
102550       return *reinterpret_cast<const VkSubpassDependency *>( this );
102551     }
102552 
operator VkSubpassDependency&VULKAN_HPP_NAMESPACE::SubpassDependency102553     operator VkSubpassDependency &() VULKAN_HPP_NOEXCEPT
102554     {
102555       return *reinterpret_cast<VkSubpassDependency *>( this );
102556     }
102557 
102558 #if defined( VULKAN_HPP_USE_REFLECT )
102559 #  if 14 <= VULKAN_HPP_CPP_VERSION
102560     auto
102561 #  else
102562     std::tuple<uint32_t const &,
102563                uint32_t const &,
102564                VULKAN_HPP_NAMESPACE::PipelineStageFlags const &,
102565                VULKAN_HPP_NAMESPACE::PipelineStageFlags const &,
102566                VULKAN_HPP_NAMESPACE::AccessFlags const &,
102567                VULKAN_HPP_NAMESPACE::AccessFlags const &,
102568                VULKAN_HPP_NAMESPACE::DependencyFlags const &>
102569 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassDependency102570       reflect() const VULKAN_HPP_NOEXCEPT
102571     {
102572       return std::tie( srcSubpass, dstSubpass, srcStageMask, dstStageMask, srcAccessMask, dstAccessMask, dependencyFlags );
102573     }
102574 #endif
102575 
102576 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
102577     auto operator<=>( SubpassDependency const & ) const = default;
102578 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassDependency102579     bool operator==( SubpassDependency const & rhs ) const VULKAN_HPP_NOEXCEPT
102580     {
102581 #  if defined( VULKAN_HPP_USE_REFLECT )
102582       return this->reflect() == rhs.reflect();
102583 #  else
102584       return ( srcSubpass == rhs.srcSubpass ) && ( dstSubpass == rhs.dstSubpass ) && ( srcStageMask == rhs.srcStageMask ) &&
102585              ( dstStageMask == rhs.dstStageMask ) && ( srcAccessMask == rhs.srcAccessMask ) && ( dstAccessMask == rhs.dstAccessMask ) &&
102586              ( dependencyFlags == rhs.dependencyFlags );
102587 #  endif
102588     }
102589 
operator !=VULKAN_HPP_NAMESPACE::SubpassDependency102590     bool operator!=( SubpassDependency const & rhs ) const VULKAN_HPP_NOEXCEPT
102591     {
102592       return !operator==( rhs );
102593     }
102594 #endif
102595 
102596   public:
102597     uint32_t                                 srcSubpass      = {};
102598     uint32_t                                 dstSubpass      = {};
102599     VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask    = {};
102600     VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask    = {};
102601     VULKAN_HPP_NAMESPACE::AccessFlags        srcAccessMask   = {};
102602     VULKAN_HPP_NAMESPACE::AccessFlags        dstAccessMask   = {};
102603     VULKAN_HPP_NAMESPACE::DependencyFlags    dependencyFlags = {};
102604   };
102605 
102606   struct RenderPassCreateInfo
102607   {
102608     using NativeType = VkRenderPassCreateInfo;
102609 
102610     static const bool                                  allowDuplicate = false;
102611     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassCreateInfo;
102612 
102613 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassCreateInfoVULKAN_HPP_NAMESPACE::RenderPassCreateInfo102614     VULKAN_HPP_CONSTEXPR RenderPassCreateInfo( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags         flags_           = {},
102615                                                uint32_t                                            attachmentCount_ = {},
102616                                                const VULKAN_HPP_NAMESPACE::AttachmentDescription * pAttachments_    = {},
102617                                                uint32_t                                            subpassCount_    = {},
102618                                                const VULKAN_HPP_NAMESPACE::SubpassDescription *    pSubpasses_      = {},
102619                                                uint32_t                                            dependencyCount_ = {},
102620                                                const VULKAN_HPP_NAMESPACE::SubpassDependency *     pDependencies_   = {},
102621                                                const void *                                        pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
102622       : pNext{ pNext_ }
102623       , flags{ flags_ }
102624       , attachmentCount{ attachmentCount_ }
102625       , pAttachments{ pAttachments_ }
102626       , subpassCount{ subpassCount_ }
102627       , pSubpasses{ pSubpasses_ }
102628       , dependencyCount{ dependencyCount_ }
102629       , pDependencies{ pDependencies_ }
102630     {
102631     }
102632 
102633     VULKAN_HPP_CONSTEXPR RenderPassCreateInfo( RenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102634 
RenderPassCreateInfoVULKAN_HPP_NAMESPACE::RenderPassCreateInfo102635     RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
102636       : RenderPassCreateInfo( *reinterpret_cast<RenderPassCreateInfo const *>( &rhs ) )
102637     {
102638     }
102639 
102640 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassCreateInfoVULKAN_HPP_NAMESPACE::RenderPassCreateInfo102641     RenderPassCreateInfo( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags                                                              flags_,
102642                           VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentDescription> const & attachments_,
102643                           VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDescription> const &    subpasses_    = {},
102644                           VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDependency> const &     dependencies_ = {},
102645                           const void *                                                                                             pNext_        = nullptr )
102646       : pNext( pNext_ )
102647       , flags( flags_ )
102648       , attachmentCount( static_cast<uint32_t>( attachments_.size() ) )
102649       , pAttachments( attachments_.data() )
102650       , subpassCount( static_cast<uint32_t>( subpasses_.size() ) )
102651       , pSubpasses( subpasses_.data() )
102652       , dependencyCount( static_cast<uint32_t>( dependencies_.size() ) )
102653       , pDependencies( dependencies_.data() )
102654     {
102655     }
102656 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
102657 
102658     RenderPassCreateInfo & operator=( RenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102659 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
102660 
operator =VULKAN_HPP_NAMESPACE::RenderPassCreateInfo102661     RenderPassCreateInfo & operator=( VkRenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
102662     {
102663       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassCreateInfo const *>( &rhs );
102664       return *this;
102665     }
102666 
102667 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassCreateInfo102668     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
102669     {
102670       pNext = pNext_;
102671       return *this;
102672     }
102673 
setFlagsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo102674     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
102675     {
102676       flags = flags_;
102677       return *this;
102678     }
102679 
setAttachmentCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo102680     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
102681     {
102682       attachmentCount = attachmentCount_;
102683       return *this;
102684     }
102685 
setPAttachmentsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo102686     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setPAttachments( const VULKAN_HPP_NAMESPACE::AttachmentDescription * pAttachments_ ) VULKAN_HPP_NOEXCEPT
102687     {
102688       pAttachments = pAttachments_;
102689       return *this;
102690     }
102691 
102692 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo102693     RenderPassCreateInfo & setAttachments(
102694       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentDescription> const & attachments_ ) VULKAN_HPP_NOEXCEPT
102695     {
102696       attachmentCount = static_cast<uint32_t>( attachments_.size() );
102697       pAttachments    = attachments_.data();
102698       return *this;
102699     }
102700 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
102701 
setSubpassCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo102702     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setSubpassCount( uint32_t subpassCount_ ) VULKAN_HPP_NOEXCEPT
102703     {
102704       subpassCount = subpassCount_;
102705       return *this;
102706     }
102707 
setPSubpassesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo102708     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setPSubpasses( const VULKAN_HPP_NAMESPACE::SubpassDescription * pSubpasses_ ) VULKAN_HPP_NOEXCEPT
102709     {
102710       pSubpasses = pSubpasses_;
102711       return *this;
102712     }
102713 
102714 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
102715     RenderPassCreateInfo &
setSubpassesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo102716       setSubpasses( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDescription> const & subpasses_ ) VULKAN_HPP_NOEXCEPT
102717     {
102718       subpassCount = static_cast<uint32_t>( subpasses_.size() );
102719       pSubpasses   = subpasses_.data();
102720       return *this;
102721     }
102722 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
102723 
setDependencyCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo102724     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setDependencyCount( uint32_t dependencyCount_ ) VULKAN_HPP_NOEXCEPT
102725     {
102726       dependencyCount = dependencyCount_;
102727       return *this;
102728     }
102729 
setPDependenciesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo102730     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setPDependencies( const VULKAN_HPP_NAMESPACE::SubpassDependency * pDependencies_ ) VULKAN_HPP_NOEXCEPT
102731     {
102732       pDependencies = pDependencies_;
102733       return *this;
102734     }
102735 
102736 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
102737     RenderPassCreateInfo &
setDependenciesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo102738       setDependencies( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDependency> const & dependencies_ ) VULKAN_HPP_NOEXCEPT
102739     {
102740       dependencyCount = static_cast<uint32_t>( dependencies_.size() );
102741       pDependencies   = dependencies_.data();
102742       return *this;
102743     }
102744 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
102745 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
102746 
operator VkRenderPassCreateInfo const&VULKAN_HPP_NAMESPACE::RenderPassCreateInfo102747     operator VkRenderPassCreateInfo const &() const VULKAN_HPP_NOEXCEPT
102748     {
102749       return *reinterpret_cast<const VkRenderPassCreateInfo *>( this );
102750     }
102751 
operator VkRenderPassCreateInfo&VULKAN_HPP_NAMESPACE::RenderPassCreateInfo102752     operator VkRenderPassCreateInfo &() VULKAN_HPP_NOEXCEPT
102753     {
102754       return *reinterpret_cast<VkRenderPassCreateInfo *>( this );
102755     }
102756 
102757 #if defined( VULKAN_HPP_USE_REFLECT )
102758 #  if 14 <= VULKAN_HPP_CPP_VERSION
102759     auto
102760 #  else
102761     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
102762                const void * const &,
102763                VULKAN_HPP_NAMESPACE::RenderPassCreateFlags const &,
102764                uint32_t const &,
102765                const VULKAN_HPP_NAMESPACE::AttachmentDescription * const &,
102766                uint32_t const &,
102767                const VULKAN_HPP_NAMESPACE::SubpassDescription * const &,
102768                uint32_t const &,
102769                const VULKAN_HPP_NAMESPACE::SubpassDependency * const &>
102770 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassCreateInfo102771       reflect() const VULKAN_HPP_NOEXCEPT
102772     {
102773       return std::tie( sType, pNext, flags, attachmentCount, pAttachments, subpassCount, pSubpasses, dependencyCount, pDependencies );
102774     }
102775 #endif
102776 
102777 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
102778     auto operator<=>( RenderPassCreateInfo const & ) const = default;
102779 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassCreateInfo102780     bool operator==( RenderPassCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
102781     {
102782 #  if defined( VULKAN_HPP_USE_REFLECT )
102783       return this->reflect() == rhs.reflect();
102784 #  else
102785       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( attachmentCount == rhs.attachmentCount ) &&
102786              ( pAttachments == rhs.pAttachments ) && ( subpassCount == rhs.subpassCount ) && ( pSubpasses == rhs.pSubpasses ) &&
102787              ( dependencyCount == rhs.dependencyCount ) && ( pDependencies == rhs.pDependencies );
102788 #  endif
102789     }
102790 
operator !=VULKAN_HPP_NAMESPACE::RenderPassCreateInfo102791     bool operator!=( RenderPassCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
102792     {
102793       return !operator==( rhs );
102794     }
102795 #endif
102796 
102797   public:
102798     VULKAN_HPP_NAMESPACE::StructureType                 sType           = StructureType::eRenderPassCreateInfo;
102799     const void *                                        pNext           = {};
102800     VULKAN_HPP_NAMESPACE::RenderPassCreateFlags         flags           = {};
102801     uint32_t                                            attachmentCount = {};
102802     const VULKAN_HPP_NAMESPACE::AttachmentDescription * pAttachments    = {};
102803     uint32_t                                            subpassCount    = {};
102804     const VULKAN_HPP_NAMESPACE::SubpassDescription *    pSubpasses      = {};
102805     uint32_t                                            dependencyCount = {};
102806     const VULKAN_HPP_NAMESPACE::SubpassDependency *     pDependencies   = {};
102807   };
102808 
102809   template <>
102810   struct CppType<StructureType, StructureType::eRenderPassCreateInfo>
102811   {
102812     using Type = RenderPassCreateInfo;
102813   };
102814 
102815   struct SubpassDescription2
102816   {
102817     using NativeType = VkSubpassDescription2;
102818 
102819     static const bool                                  allowDuplicate = false;
102820     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubpassDescription2;
102821 
102822 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassDescription2VULKAN_HPP_NAMESPACE::SubpassDescription2102823     VULKAN_HPP_CONSTEXPR SubpassDescription2( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_       = {},
102824                                               VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics,
102825                                               uint32_t                                viewMask_          = {},
102826                                               uint32_t                                inputAttachmentCount_               = {},
102827                                               const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pInputAttachments_       = {},
102828                                               uint32_t                                           colorAttachmentCount_    = {},
102829                                               const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pColorAttachments_       = {},
102830                                               const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pResolveAttachments_     = {},
102831                                               const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilAttachment_ = {},
102832                                               uint32_t                                           preserveAttachmentCount_ = {},
102833                                               const uint32_t *                                   pPreserveAttachments_    = {},
102834                                               const void *                                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
102835       : pNext{ pNext_ }
102836       , flags{ flags_ }
102837       , pipelineBindPoint{ pipelineBindPoint_ }
102838       , viewMask{ viewMask_ }
102839       , inputAttachmentCount{ inputAttachmentCount_ }
102840       , pInputAttachments{ pInputAttachments_ }
102841       , colorAttachmentCount{ colorAttachmentCount_ }
102842       , pColorAttachments{ pColorAttachments_ }
102843       , pResolveAttachments{ pResolveAttachments_ }
102844       , pDepthStencilAttachment{ pDepthStencilAttachment_ }
102845       , preserveAttachmentCount{ preserveAttachmentCount_ }
102846       , pPreserveAttachments{ pPreserveAttachments_ }
102847     {
102848     }
102849 
102850     VULKAN_HPP_CONSTEXPR SubpassDescription2( SubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102851 
SubpassDescription2VULKAN_HPP_NAMESPACE::SubpassDescription2102852     SubpassDescription2( VkSubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT : SubpassDescription2( *reinterpret_cast<SubpassDescription2 const *>( &rhs ) )
102853     {
102854     }
102855 
102856 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SubpassDescription2VULKAN_HPP_NAMESPACE::SubpassDescription2102857     SubpassDescription2( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags                                                           flags_,
102858                          VULKAN_HPP_NAMESPACE::PipelineBindPoint                                                                 pipelineBindPoint_,
102859                          uint32_t                                                                                                viewMask_,
102860                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const & inputAttachments_,
102861                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const & colorAttachments_        = {},
102862                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const & resolveAttachments_      = {},
102863                          const VULKAN_HPP_NAMESPACE::AttachmentReference2 *                                                      pDepthStencilAttachment_ = {},
102864                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &                                   preserveAttachments_     = {},
102865                          const void *                                                                                            pNext_ = nullptr )
102866       : pNext( pNext_ )
102867       , flags( flags_ )
102868       , pipelineBindPoint( pipelineBindPoint_ )
102869       , viewMask( viewMask_ )
102870       , inputAttachmentCount( static_cast<uint32_t>( inputAttachments_.size() ) )
102871       , pInputAttachments( inputAttachments_.data() )
102872       , colorAttachmentCount( static_cast<uint32_t>( colorAttachments_.size() ) )
102873       , pColorAttachments( colorAttachments_.data() )
102874       , pResolveAttachments( resolveAttachments_.data() )
102875       , pDepthStencilAttachment( pDepthStencilAttachment_ )
102876       , preserveAttachmentCount( static_cast<uint32_t>( preserveAttachments_.size() ) )
102877       , pPreserveAttachments( preserveAttachments_.data() )
102878     {
102879 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
102880       VULKAN_HPP_ASSERT( resolveAttachments_.empty() || ( colorAttachments_.size() == resolveAttachments_.size() ) );
102881 #    else
102882       if ( !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() ) )
102883       {
102884         throw LogicError(
102885           VULKAN_HPP_NAMESPACE_STRING
102886           "::SubpassDescription2::SubpassDescription2: !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() )" );
102887       }
102888 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
102889     }
102890 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
102891 
102892     SubpassDescription2 & operator=( SubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
102893 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
102894 
operator =VULKAN_HPP_NAMESPACE::SubpassDescription2102895     SubpassDescription2 & operator=( VkSubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT
102896     {
102897       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDescription2 const *>( &rhs );
102898       return *this;
102899     }
102900 
102901 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassDescription2102902     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
102903     {
102904       pNext = pNext_;
102905       return *this;
102906     }
102907 
setFlagsVULKAN_HPP_NAMESPACE::SubpassDescription2102908     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setFlags( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT
102909     {
102910       flags = flags_;
102911       return *this;
102912     }
102913 
setPipelineBindPointVULKAN_HPP_NAMESPACE::SubpassDescription2102914     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
102915     {
102916       pipelineBindPoint = pipelineBindPoint_;
102917       return *this;
102918     }
102919 
setViewMaskVULKAN_HPP_NAMESPACE::SubpassDescription2102920     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT
102921     {
102922       viewMask = viewMask_;
102923       return *this;
102924     }
102925 
setInputAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription2102926     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setInputAttachmentCount( uint32_t inputAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
102927     {
102928       inputAttachmentCount = inputAttachmentCount_;
102929       return *this;
102930     }
102931 
102932     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 &
setPInputAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription2102933       setPInputAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pInputAttachments_ ) VULKAN_HPP_NOEXCEPT
102934     {
102935       pInputAttachments = pInputAttachments_;
102936       return *this;
102937     }
102938 
102939 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setInputAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription2102940     SubpassDescription2 & setInputAttachments(
102941       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const & inputAttachments_ ) VULKAN_HPP_NOEXCEPT
102942     {
102943       inputAttachmentCount = static_cast<uint32_t>( inputAttachments_.size() );
102944       pInputAttachments    = inputAttachments_.data();
102945       return *this;
102946     }
102947 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
102948 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription2102949     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
102950     {
102951       colorAttachmentCount = colorAttachmentCount_;
102952       return *this;
102953     }
102954 
102955     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 &
setPColorAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription2102956       setPColorAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pColorAttachments_ ) VULKAN_HPP_NOEXCEPT
102957     {
102958       pColorAttachments = pColorAttachments_;
102959       return *this;
102960     }
102961 
102962 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription2102963     SubpassDescription2 & setColorAttachments(
102964       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const & colorAttachments_ ) VULKAN_HPP_NOEXCEPT
102965     {
102966       colorAttachmentCount = static_cast<uint32_t>( colorAttachments_.size() );
102967       pColorAttachments    = colorAttachments_.data();
102968       return *this;
102969     }
102970 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
102971 
102972     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 &
setPResolveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription2102973       setPResolveAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pResolveAttachments_ ) VULKAN_HPP_NOEXCEPT
102974     {
102975       pResolveAttachments = pResolveAttachments_;
102976       return *this;
102977     }
102978 
102979 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setResolveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription2102980     SubpassDescription2 & setResolveAttachments(
102981       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const & resolveAttachments_ ) VULKAN_HPP_NOEXCEPT
102982     {
102983       colorAttachmentCount = static_cast<uint32_t>( resolveAttachments_.size() );
102984       pResolveAttachments  = resolveAttachments_.data();
102985       return *this;
102986     }
102987 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
102988 
102989     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 &
setPDepthStencilAttachmentVULKAN_HPP_NAMESPACE::SubpassDescription2102990       setPDepthStencilAttachment( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilAttachment_ ) VULKAN_HPP_NOEXCEPT
102991     {
102992       pDepthStencilAttachment = pDepthStencilAttachment_;
102993       return *this;
102994     }
102995 
setPreserveAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription2102996     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
102997     {
102998       preserveAttachmentCount = preserveAttachmentCount_;
102999       return *this;
103000     }
103001 
setPPreserveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription2103002     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPPreserveAttachments( const uint32_t * pPreserveAttachments_ ) VULKAN_HPP_NOEXCEPT
103003     {
103004       pPreserveAttachments = pPreserveAttachments_;
103005       return *this;
103006     }
103007 
103008 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
103009     SubpassDescription2 &
setPreserveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription2103010       setPreserveAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & preserveAttachments_ ) VULKAN_HPP_NOEXCEPT
103011     {
103012       preserveAttachmentCount = static_cast<uint32_t>( preserveAttachments_.size() );
103013       pPreserveAttachments    = preserveAttachments_.data();
103014       return *this;
103015     }
103016 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
103017 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
103018 
operator VkSubpassDescription2 const&VULKAN_HPP_NAMESPACE::SubpassDescription2103019     operator VkSubpassDescription2 const &() const VULKAN_HPP_NOEXCEPT
103020     {
103021       return *reinterpret_cast<const VkSubpassDescription2 *>( this );
103022     }
103023 
operator VkSubpassDescription2&VULKAN_HPP_NAMESPACE::SubpassDescription2103024     operator VkSubpassDescription2 &() VULKAN_HPP_NOEXCEPT
103025     {
103026       return *reinterpret_cast<VkSubpassDescription2 *>( this );
103027     }
103028 
103029 #if defined( VULKAN_HPP_USE_REFLECT )
103030 #  if 14 <= VULKAN_HPP_CPP_VERSION
103031     auto
103032 #  else
103033     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
103034                const void * const &,
103035                VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags const &,
103036                VULKAN_HPP_NAMESPACE::PipelineBindPoint const &,
103037                uint32_t const &,
103038                uint32_t const &,
103039                const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &,
103040                uint32_t const &,
103041                const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &,
103042                const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &,
103043                const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &,
103044                uint32_t const &,
103045                const uint32_t * const &>
103046 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassDescription2103047       reflect() const VULKAN_HPP_NOEXCEPT
103048     {
103049       return std::tie( sType,
103050                        pNext,
103051                        flags,
103052                        pipelineBindPoint,
103053                        viewMask,
103054                        inputAttachmentCount,
103055                        pInputAttachments,
103056                        colorAttachmentCount,
103057                        pColorAttachments,
103058                        pResolveAttachments,
103059                        pDepthStencilAttachment,
103060                        preserveAttachmentCount,
103061                        pPreserveAttachments );
103062     }
103063 #endif
103064 
103065 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
103066     auto operator<=>( SubpassDescription2 const & ) const = default;
103067 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassDescription2103068     bool operator==( SubpassDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT
103069     {
103070 #  if defined( VULKAN_HPP_USE_REFLECT )
103071       return this->reflect() == rhs.reflect();
103072 #  else
103073       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) &&
103074              ( viewMask == rhs.viewMask ) && ( inputAttachmentCount == rhs.inputAttachmentCount ) && ( pInputAttachments == rhs.pInputAttachments ) &&
103075              ( colorAttachmentCount == rhs.colorAttachmentCount ) && ( pColorAttachments == rhs.pColorAttachments ) &&
103076              ( pResolveAttachments == rhs.pResolveAttachments ) && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment ) &&
103077              ( preserveAttachmentCount == rhs.preserveAttachmentCount ) && ( pPreserveAttachments == rhs.pPreserveAttachments );
103078 #  endif
103079     }
103080 
operator !=VULKAN_HPP_NAMESPACE::SubpassDescription2103081     bool operator!=( SubpassDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT
103082     {
103083       return !operator==( rhs );
103084     }
103085 #endif
103086 
103087   public:
103088     VULKAN_HPP_NAMESPACE::StructureType                sType                   = StructureType::eSubpassDescription2;
103089     const void *                                       pNext                   = {};
103090     VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags      flags                   = {};
103091     VULKAN_HPP_NAMESPACE::PipelineBindPoint            pipelineBindPoint       = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
103092     uint32_t                                           viewMask                = {};
103093     uint32_t                                           inputAttachmentCount    = {};
103094     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pInputAttachments       = {};
103095     uint32_t                                           colorAttachmentCount    = {};
103096     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pColorAttachments       = {};
103097     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pResolveAttachments     = {};
103098     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilAttachment = {};
103099     uint32_t                                           preserveAttachmentCount = {};
103100     const uint32_t *                                   pPreserveAttachments    = {};
103101   };
103102 
103103   template <>
103104   struct CppType<StructureType, StructureType::eSubpassDescription2>
103105   {
103106     using Type = SubpassDescription2;
103107   };
103108 
103109   using SubpassDescription2KHR = SubpassDescription2;
103110 
103111   struct SubpassDependency2
103112   {
103113     using NativeType = VkSubpassDependency2;
103114 
103115     static const bool                                  allowDuplicate = false;
103116     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubpassDependency2;
103117 
103118 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassDependency2VULKAN_HPP_NAMESPACE::SubpassDependency2103119     VULKAN_HPP_CONSTEXPR SubpassDependency2( uint32_t                                 srcSubpass_      = {},
103120                                              uint32_t                                 dstSubpass_      = {},
103121                                              VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_    = {},
103122                                              VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_    = {},
103123                                              VULKAN_HPP_NAMESPACE::AccessFlags        srcAccessMask_   = {},
103124                                              VULKAN_HPP_NAMESPACE::AccessFlags        dstAccessMask_   = {},
103125                                              VULKAN_HPP_NAMESPACE::DependencyFlags    dependencyFlags_ = {},
103126                                              int32_t                                  viewOffset_      = {},
103127                                              const void *                             pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
103128       : pNext{ pNext_ }
103129       , srcSubpass{ srcSubpass_ }
103130       , dstSubpass{ dstSubpass_ }
103131       , srcStageMask{ srcStageMask_ }
103132       , dstStageMask{ dstStageMask_ }
103133       , srcAccessMask{ srcAccessMask_ }
103134       , dstAccessMask{ dstAccessMask_ }
103135       , dependencyFlags{ dependencyFlags_ }
103136       , viewOffset{ viewOffset_ }
103137     {
103138     }
103139 
103140     VULKAN_HPP_CONSTEXPR SubpassDependency2( SubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103141 
SubpassDependency2VULKAN_HPP_NAMESPACE::SubpassDependency2103142     SubpassDependency2( VkSubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT : SubpassDependency2( *reinterpret_cast<SubpassDependency2 const *>( &rhs ) ) {}
103143 
103144     SubpassDependency2 & operator=( SubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103145 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
103146 
operator =VULKAN_HPP_NAMESPACE::SubpassDependency2103147     SubpassDependency2 & operator=( VkSubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT
103148     {
103149       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDependency2 const *>( &rhs );
103150       return *this;
103151     }
103152 
103153 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassDependency2103154     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
103155     {
103156       pNext = pNext_;
103157       return *this;
103158     }
103159 
setSrcSubpassVULKAN_HPP_NAMESPACE::SubpassDependency2103160     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setSrcSubpass( uint32_t srcSubpass_ ) VULKAN_HPP_NOEXCEPT
103161     {
103162       srcSubpass = srcSubpass_;
103163       return *this;
103164     }
103165 
setDstSubpassVULKAN_HPP_NAMESPACE::SubpassDependency2103166     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setDstSubpass( uint32_t dstSubpass_ ) VULKAN_HPP_NOEXCEPT
103167     {
103168       dstSubpass = dstSubpass_;
103169       return *this;
103170     }
103171 
setSrcStageMaskVULKAN_HPP_NAMESPACE::SubpassDependency2103172     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_ ) VULKAN_HPP_NOEXCEPT
103173     {
103174       srcStageMask = srcStageMask_;
103175       return *this;
103176     }
103177 
setDstStageMaskVULKAN_HPP_NAMESPACE::SubpassDependency2103178     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_ ) VULKAN_HPP_NOEXCEPT
103179     {
103180       dstStageMask = dstStageMask_;
103181       return *this;
103182     }
103183 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::SubpassDependency2103184     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
103185     {
103186       srcAccessMask = srcAccessMask_;
103187       return *this;
103188     }
103189 
setDstAccessMaskVULKAN_HPP_NAMESPACE::SubpassDependency2103190     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
103191     {
103192       dstAccessMask = dstAccessMask_;
103193       return *this;
103194     }
103195 
setDependencyFlagsVULKAN_HPP_NAMESPACE::SubpassDependency2103196     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setDependencyFlags( VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ ) VULKAN_HPP_NOEXCEPT
103197     {
103198       dependencyFlags = dependencyFlags_;
103199       return *this;
103200     }
103201 
setViewOffsetVULKAN_HPP_NAMESPACE::SubpassDependency2103202     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setViewOffset( int32_t viewOffset_ ) VULKAN_HPP_NOEXCEPT
103203     {
103204       viewOffset = viewOffset_;
103205       return *this;
103206     }
103207 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
103208 
operator VkSubpassDependency2 const&VULKAN_HPP_NAMESPACE::SubpassDependency2103209     operator VkSubpassDependency2 const &() const VULKAN_HPP_NOEXCEPT
103210     {
103211       return *reinterpret_cast<const VkSubpassDependency2 *>( this );
103212     }
103213 
operator VkSubpassDependency2&VULKAN_HPP_NAMESPACE::SubpassDependency2103214     operator VkSubpassDependency2 &() VULKAN_HPP_NOEXCEPT
103215     {
103216       return *reinterpret_cast<VkSubpassDependency2 *>( this );
103217     }
103218 
103219 #if defined( VULKAN_HPP_USE_REFLECT )
103220 #  if 14 <= VULKAN_HPP_CPP_VERSION
103221     auto
103222 #  else
103223     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
103224                const void * const &,
103225                uint32_t const &,
103226                uint32_t const &,
103227                VULKAN_HPP_NAMESPACE::PipelineStageFlags const &,
103228                VULKAN_HPP_NAMESPACE::PipelineStageFlags const &,
103229                VULKAN_HPP_NAMESPACE::AccessFlags const &,
103230                VULKAN_HPP_NAMESPACE::AccessFlags const &,
103231                VULKAN_HPP_NAMESPACE::DependencyFlags const &,
103232                int32_t const &>
103233 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassDependency2103234       reflect() const VULKAN_HPP_NOEXCEPT
103235     {
103236       return std::tie( sType, pNext, srcSubpass, dstSubpass, srcStageMask, dstStageMask, srcAccessMask, dstAccessMask, dependencyFlags, viewOffset );
103237     }
103238 #endif
103239 
103240 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
103241     auto operator<=>( SubpassDependency2 const & ) const = default;
103242 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassDependency2103243     bool operator==( SubpassDependency2 const & rhs ) const VULKAN_HPP_NOEXCEPT
103244     {
103245 #  if defined( VULKAN_HPP_USE_REFLECT )
103246       return this->reflect() == rhs.reflect();
103247 #  else
103248       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcSubpass == rhs.srcSubpass ) && ( dstSubpass == rhs.dstSubpass ) &&
103249              ( srcStageMask == rhs.srcStageMask ) && ( dstStageMask == rhs.dstStageMask ) && ( srcAccessMask == rhs.srcAccessMask ) &&
103250              ( dstAccessMask == rhs.dstAccessMask ) && ( dependencyFlags == rhs.dependencyFlags ) && ( viewOffset == rhs.viewOffset );
103251 #  endif
103252     }
103253 
operator !=VULKAN_HPP_NAMESPACE::SubpassDependency2103254     bool operator!=( SubpassDependency2 const & rhs ) const VULKAN_HPP_NOEXCEPT
103255     {
103256       return !operator==( rhs );
103257     }
103258 #endif
103259 
103260   public:
103261     VULKAN_HPP_NAMESPACE::StructureType      sType           = StructureType::eSubpassDependency2;
103262     const void *                             pNext           = {};
103263     uint32_t                                 srcSubpass      = {};
103264     uint32_t                                 dstSubpass      = {};
103265     VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask    = {};
103266     VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask    = {};
103267     VULKAN_HPP_NAMESPACE::AccessFlags        srcAccessMask   = {};
103268     VULKAN_HPP_NAMESPACE::AccessFlags        dstAccessMask   = {};
103269     VULKAN_HPP_NAMESPACE::DependencyFlags    dependencyFlags = {};
103270     int32_t                                  viewOffset      = {};
103271   };
103272 
103273   template <>
103274   struct CppType<StructureType, StructureType::eSubpassDependency2>
103275   {
103276     using Type = SubpassDependency2;
103277   };
103278 
103279   using SubpassDependency2KHR = SubpassDependency2;
103280 
103281   struct RenderPassCreateInfo2
103282   {
103283     using NativeType = VkRenderPassCreateInfo2;
103284 
103285     static const bool                                  allowDuplicate = false;
103286     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassCreateInfo2;
103287 
103288 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassCreateInfo2VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103289     VULKAN_HPP_CONSTEXPR RenderPassCreateInfo2( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags          flags_                   = {},
103290                                                 uint32_t                                             attachmentCount_         = {},
103291                                                 const VULKAN_HPP_NAMESPACE::AttachmentDescription2 * pAttachments_            = {},
103292                                                 uint32_t                                             subpassCount_            = {},
103293                                                 const VULKAN_HPP_NAMESPACE::SubpassDescription2 *    pSubpasses_              = {},
103294                                                 uint32_t                                             dependencyCount_         = {},
103295                                                 const VULKAN_HPP_NAMESPACE::SubpassDependency2 *     pDependencies_           = {},
103296                                                 uint32_t                                             correlatedViewMaskCount_ = {},
103297                                                 const uint32_t *                                     pCorrelatedViewMasks_    = {},
103298                                                 const void *                                         pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
103299       : pNext{ pNext_ }
103300       , flags{ flags_ }
103301       , attachmentCount{ attachmentCount_ }
103302       , pAttachments{ pAttachments_ }
103303       , subpassCount{ subpassCount_ }
103304       , pSubpasses{ pSubpasses_ }
103305       , dependencyCount{ dependencyCount_ }
103306       , pDependencies{ pDependencies_ }
103307       , correlatedViewMaskCount{ correlatedViewMaskCount_ }
103308       , pCorrelatedViewMasks{ pCorrelatedViewMasks_ }
103309     {
103310     }
103311 
103312     VULKAN_HPP_CONSTEXPR RenderPassCreateInfo2( RenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103313 
RenderPassCreateInfo2VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103314     RenderPassCreateInfo2( VkRenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
103315       : RenderPassCreateInfo2( *reinterpret_cast<RenderPassCreateInfo2 const *>( &rhs ) )
103316     {
103317     }
103318 
103319 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassCreateInfo2VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103320     RenderPassCreateInfo2( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags                                                               flags_,
103321                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentDescription2> const & attachments_,
103322                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDescription2> const &    subpasses_           = {},
103323                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDependency2> const &     dependencies_        = {},
103324                            VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &                                     correlatedViewMasks_ = {},
103325                            const void *                                                                                              pNext_ = nullptr )
103326       : pNext( pNext_ )
103327       , flags( flags_ )
103328       , attachmentCount( static_cast<uint32_t>( attachments_.size() ) )
103329       , pAttachments( attachments_.data() )
103330       , subpassCount( static_cast<uint32_t>( subpasses_.size() ) )
103331       , pSubpasses( subpasses_.data() )
103332       , dependencyCount( static_cast<uint32_t>( dependencies_.size() ) )
103333       , pDependencies( dependencies_.data() )
103334       , correlatedViewMaskCount( static_cast<uint32_t>( correlatedViewMasks_.size() ) )
103335       , pCorrelatedViewMasks( correlatedViewMasks_.data() )
103336     {
103337     }
103338 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
103339 
103340     RenderPassCreateInfo2 & operator=( RenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103341 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
103342 
operator =VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103343     RenderPassCreateInfo2 & operator=( VkRenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
103344     {
103345       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const *>( &rhs );
103346       return *this;
103347     }
103348 
103349 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103350     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
103351     {
103352       pNext = pNext_;
103353       return *this;
103354     }
103355 
setFlagsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103356     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setFlags( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
103357     {
103358       flags = flags_;
103359       return *this;
103360     }
103361 
setAttachmentCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103362     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
103363     {
103364       attachmentCount = attachmentCount_;
103365       return *this;
103366     }
103367 
setPAttachmentsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103368     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPAttachments( const VULKAN_HPP_NAMESPACE::AttachmentDescription2 * pAttachments_ ) VULKAN_HPP_NOEXCEPT
103369     {
103370       pAttachments = pAttachments_;
103371       return *this;
103372     }
103373 
103374 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103375     RenderPassCreateInfo2 & setAttachments(
103376       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentDescription2> const & attachments_ ) VULKAN_HPP_NOEXCEPT
103377     {
103378       attachmentCount = static_cast<uint32_t>( attachments_.size() );
103379       pAttachments    = attachments_.data();
103380       return *this;
103381     }
103382 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
103383 
setSubpassCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103384     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setSubpassCount( uint32_t subpassCount_ ) VULKAN_HPP_NOEXCEPT
103385     {
103386       subpassCount = subpassCount_;
103387       return *this;
103388     }
103389 
setPSubpassesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103390     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPSubpasses( const VULKAN_HPP_NAMESPACE::SubpassDescription2 * pSubpasses_ ) VULKAN_HPP_NOEXCEPT
103391     {
103392       pSubpasses = pSubpasses_;
103393       return *this;
103394     }
103395 
103396 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
103397     RenderPassCreateInfo2 &
setSubpassesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103398       setSubpasses( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDescription2> const & subpasses_ ) VULKAN_HPP_NOEXCEPT
103399     {
103400       subpassCount = static_cast<uint32_t>( subpasses_.size() );
103401       pSubpasses   = subpasses_.data();
103402       return *this;
103403     }
103404 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
103405 
setDependencyCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103406     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setDependencyCount( uint32_t dependencyCount_ ) VULKAN_HPP_NOEXCEPT
103407     {
103408       dependencyCount = dependencyCount_;
103409       return *this;
103410     }
103411 
setPDependenciesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103412     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPDependencies( const VULKAN_HPP_NAMESPACE::SubpassDependency2 * pDependencies_ ) VULKAN_HPP_NOEXCEPT
103413     {
103414       pDependencies = pDependencies_;
103415       return *this;
103416     }
103417 
103418 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
103419     RenderPassCreateInfo2 &
setDependenciesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103420       setDependencies( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDependency2> const & dependencies_ ) VULKAN_HPP_NOEXCEPT
103421     {
103422       dependencyCount = static_cast<uint32_t>( dependencies_.size() );
103423       pDependencies   = dependencies_.data();
103424       return *this;
103425     }
103426 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
103427 
setCorrelatedViewMaskCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103428     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setCorrelatedViewMaskCount( uint32_t correlatedViewMaskCount_ ) VULKAN_HPP_NOEXCEPT
103429     {
103430       correlatedViewMaskCount = correlatedViewMaskCount_;
103431       return *this;
103432     }
103433 
setPCorrelatedViewMasksVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103434     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPCorrelatedViewMasks( const uint32_t * pCorrelatedViewMasks_ ) VULKAN_HPP_NOEXCEPT
103435     {
103436       pCorrelatedViewMasks = pCorrelatedViewMasks_;
103437       return *this;
103438     }
103439 
103440 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
103441     RenderPassCreateInfo2 &
setCorrelatedViewMasksVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103442       setCorrelatedViewMasks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & correlatedViewMasks_ ) VULKAN_HPP_NOEXCEPT
103443     {
103444       correlatedViewMaskCount = static_cast<uint32_t>( correlatedViewMasks_.size() );
103445       pCorrelatedViewMasks    = correlatedViewMasks_.data();
103446       return *this;
103447     }
103448 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
103449 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
103450 
operator VkRenderPassCreateInfo2 const&VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103451     operator VkRenderPassCreateInfo2 const &() const VULKAN_HPP_NOEXCEPT
103452     {
103453       return *reinterpret_cast<const VkRenderPassCreateInfo2 *>( this );
103454     }
103455 
operator VkRenderPassCreateInfo2&VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103456     operator VkRenderPassCreateInfo2 &() VULKAN_HPP_NOEXCEPT
103457     {
103458       return *reinterpret_cast<VkRenderPassCreateInfo2 *>( this );
103459     }
103460 
103461 #if defined( VULKAN_HPP_USE_REFLECT )
103462 #  if 14 <= VULKAN_HPP_CPP_VERSION
103463     auto
103464 #  else
103465     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
103466                const void * const &,
103467                VULKAN_HPP_NAMESPACE::RenderPassCreateFlags const &,
103468                uint32_t const &,
103469                const VULKAN_HPP_NAMESPACE::AttachmentDescription2 * const &,
103470                uint32_t const &,
103471                const VULKAN_HPP_NAMESPACE::SubpassDescription2 * const &,
103472                uint32_t const &,
103473                const VULKAN_HPP_NAMESPACE::SubpassDependency2 * const &,
103474                uint32_t const &,
103475                const uint32_t * const &>
103476 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103477       reflect() const VULKAN_HPP_NOEXCEPT
103478     {
103479       return std::tie( sType,
103480                        pNext,
103481                        flags,
103482                        attachmentCount,
103483                        pAttachments,
103484                        subpassCount,
103485                        pSubpasses,
103486                        dependencyCount,
103487                        pDependencies,
103488                        correlatedViewMaskCount,
103489                        pCorrelatedViewMasks );
103490     }
103491 #endif
103492 
103493 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
103494     auto operator<=>( RenderPassCreateInfo2 const & ) const = default;
103495 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103496     bool operator==( RenderPassCreateInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
103497     {
103498 #  if defined( VULKAN_HPP_USE_REFLECT )
103499       return this->reflect() == rhs.reflect();
103500 #  else
103501       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( attachmentCount == rhs.attachmentCount ) &&
103502              ( pAttachments == rhs.pAttachments ) && ( subpassCount == rhs.subpassCount ) && ( pSubpasses == rhs.pSubpasses ) &&
103503              ( dependencyCount == rhs.dependencyCount ) && ( pDependencies == rhs.pDependencies ) &&
103504              ( correlatedViewMaskCount == rhs.correlatedViewMaskCount ) && ( pCorrelatedViewMasks == rhs.pCorrelatedViewMasks );
103505 #  endif
103506     }
103507 
operator !=VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2103508     bool operator!=( RenderPassCreateInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
103509     {
103510       return !operator==( rhs );
103511     }
103512 #endif
103513 
103514   public:
103515     VULKAN_HPP_NAMESPACE::StructureType                  sType                   = StructureType::eRenderPassCreateInfo2;
103516     const void *                                         pNext                   = {};
103517     VULKAN_HPP_NAMESPACE::RenderPassCreateFlags          flags                   = {};
103518     uint32_t                                             attachmentCount         = {};
103519     const VULKAN_HPP_NAMESPACE::AttachmentDescription2 * pAttachments            = {};
103520     uint32_t                                             subpassCount            = {};
103521     const VULKAN_HPP_NAMESPACE::SubpassDescription2 *    pSubpasses              = {};
103522     uint32_t                                             dependencyCount         = {};
103523     const VULKAN_HPP_NAMESPACE::SubpassDependency2 *     pDependencies           = {};
103524     uint32_t                                             correlatedViewMaskCount = {};
103525     const uint32_t *                                     pCorrelatedViewMasks    = {};
103526   };
103527 
103528   template <>
103529   struct CppType<StructureType, StructureType::eRenderPassCreateInfo2>
103530   {
103531     using Type = RenderPassCreateInfo2;
103532   };
103533 
103534   using RenderPassCreateInfo2KHR = RenderPassCreateInfo2;
103535 
103536   struct RenderPassCreationControlEXT
103537   {
103538     using NativeType = VkRenderPassCreationControlEXT;
103539 
103540     static const bool                                  allowDuplicate = false;
103541     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassCreationControlEXT;
103542 
103543 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassCreationControlEXTVULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT103544     VULKAN_HPP_CONSTEXPR RenderPassCreationControlEXT( VULKAN_HPP_NAMESPACE::Bool32 disallowMerging_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
103545       : pNext{ pNext_ }
103546       , disallowMerging{ disallowMerging_ }
103547     {
103548     }
103549 
103550     VULKAN_HPP_CONSTEXPR RenderPassCreationControlEXT( RenderPassCreationControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103551 
RenderPassCreationControlEXTVULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT103552     RenderPassCreationControlEXT( VkRenderPassCreationControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT
103553       : RenderPassCreationControlEXT( *reinterpret_cast<RenderPassCreationControlEXT const *>( &rhs ) )
103554     {
103555     }
103556 
103557     RenderPassCreationControlEXT & operator=( RenderPassCreationControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103558 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
103559 
operator =VULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT103560     RenderPassCreationControlEXT & operator=( VkRenderPassCreationControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT
103561     {
103562       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT const *>( &rhs );
103563       return *this;
103564     }
103565 
103566 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT103567     VULKAN_HPP_CONSTEXPR_14 RenderPassCreationControlEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
103568     {
103569       pNext = pNext_;
103570       return *this;
103571     }
103572 
setDisallowMergingVULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT103573     VULKAN_HPP_CONSTEXPR_14 RenderPassCreationControlEXT & setDisallowMerging( VULKAN_HPP_NAMESPACE::Bool32 disallowMerging_ ) VULKAN_HPP_NOEXCEPT
103574     {
103575       disallowMerging = disallowMerging_;
103576       return *this;
103577     }
103578 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
103579 
operator VkRenderPassCreationControlEXT const&VULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT103580     operator VkRenderPassCreationControlEXT const &() const VULKAN_HPP_NOEXCEPT
103581     {
103582       return *reinterpret_cast<const VkRenderPassCreationControlEXT *>( this );
103583     }
103584 
operator VkRenderPassCreationControlEXT&VULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT103585     operator VkRenderPassCreationControlEXT &() VULKAN_HPP_NOEXCEPT
103586     {
103587       return *reinterpret_cast<VkRenderPassCreationControlEXT *>( this );
103588     }
103589 
103590 #if defined( VULKAN_HPP_USE_REFLECT )
103591 #  if 14 <= VULKAN_HPP_CPP_VERSION
103592     auto
103593 #  else
103594     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
103595 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT103596       reflect() const VULKAN_HPP_NOEXCEPT
103597     {
103598       return std::tie( sType, pNext, disallowMerging );
103599     }
103600 #endif
103601 
103602 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
103603     auto operator<=>( RenderPassCreationControlEXT const & ) const = default;
103604 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT103605     bool operator==( RenderPassCreationControlEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
103606     {
103607 #  if defined( VULKAN_HPP_USE_REFLECT )
103608       return this->reflect() == rhs.reflect();
103609 #  else
103610       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( disallowMerging == rhs.disallowMerging );
103611 #  endif
103612     }
103613 
operator !=VULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT103614     bool operator!=( RenderPassCreationControlEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
103615     {
103616       return !operator==( rhs );
103617     }
103618 #endif
103619 
103620   public:
103621     VULKAN_HPP_NAMESPACE::StructureType sType           = StructureType::eRenderPassCreationControlEXT;
103622     const void *                        pNext           = {};
103623     VULKAN_HPP_NAMESPACE::Bool32        disallowMerging = {};
103624   };
103625 
103626   template <>
103627   struct CppType<StructureType, StructureType::eRenderPassCreationControlEXT>
103628   {
103629     using Type = RenderPassCreationControlEXT;
103630   };
103631 
103632   struct RenderPassCreationFeedbackInfoEXT
103633   {
103634     using NativeType = VkRenderPassCreationFeedbackInfoEXT;
103635 
103636 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassCreationFeedbackInfoEXTVULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT103637     VULKAN_HPP_CONSTEXPR RenderPassCreationFeedbackInfoEXT( uint32_t postMergeSubpassCount_ = {} ) VULKAN_HPP_NOEXCEPT
103638       : postMergeSubpassCount{ postMergeSubpassCount_ }
103639     {
103640     }
103641 
103642     VULKAN_HPP_CONSTEXPR RenderPassCreationFeedbackInfoEXT( RenderPassCreationFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103643 
RenderPassCreationFeedbackInfoEXTVULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT103644     RenderPassCreationFeedbackInfoEXT( VkRenderPassCreationFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
103645       : RenderPassCreationFeedbackInfoEXT( *reinterpret_cast<RenderPassCreationFeedbackInfoEXT const *>( &rhs ) )
103646     {
103647     }
103648 
103649     RenderPassCreationFeedbackInfoEXT & operator=( RenderPassCreationFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103650 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
103651 
operator =VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT103652     RenderPassCreationFeedbackInfoEXT & operator=( VkRenderPassCreationFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
103653     {
103654       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT const *>( &rhs );
103655       return *this;
103656     }
103657 
operator VkRenderPassCreationFeedbackInfoEXT const&VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT103658     operator VkRenderPassCreationFeedbackInfoEXT const &() const VULKAN_HPP_NOEXCEPT
103659     {
103660       return *reinterpret_cast<const VkRenderPassCreationFeedbackInfoEXT *>( this );
103661     }
103662 
operator VkRenderPassCreationFeedbackInfoEXT&VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT103663     operator VkRenderPassCreationFeedbackInfoEXT &() VULKAN_HPP_NOEXCEPT
103664     {
103665       return *reinterpret_cast<VkRenderPassCreationFeedbackInfoEXT *>( this );
103666     }
103667 
103668 #if defined( VULKAN_HPP_USE_REFLECT )
103669 #  if 14 <= VULKAN_HPP_CPP_VERSION
103670     auto
103671 #  else
103672     std::tuple<uint32_t const &>
103673 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT103674       reflect() const VULKAN_HPP_NOEXCEPT
103675     {
103676       return std::tie( postMergeSubpassCount );
103677     }
103678 #endif
103679 
103680 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
103681     auto operator<=>( RenderPassCreationFeedbackInfoEXT const & ) const = default;
103682 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT103683     bool operator==( RenderPassCreationFeedbackInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
103684     {
103685 #  if defined( VULKAN_HPP_USE_REFLECT )
103686       return this->reflect() == rhs.reflect();
103687 #  else
103688       return ( postMergeSubpassCount == rhs.postMergeSubpassCount );
103689 #  endif
103690     }
103691 
operator !=VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT103692     bool operator!=( RenderPassCreationFeedbackInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
103693     {
103694       return !operator==( rhs );
103695     }
103696 #endif
103697 
103698   public:
103699     uint32_t postMergeSubpassCount = {};
103700   };
103701 
103702   struct RenderPassCreationFeedbackCreateInfoEXT
103703   {
103704     using NativeType = VkRenderPassCreationFeedbackCreateInfoEXT;
103705 
103706     static const bool                                  allowDuplicate = false;
103707     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassCreationFeedbackCreateInfoEXT;
103708 
103709 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassCreationFeedbackCreateInfoEXTVULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT103710     VULKAN_HPP_CONSTEXPR RenderPassCreationFeedbackCreateInfoEXT( VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT * pRenderPassFeedback_ = {},
103711                                                                   const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
103712       : pNext{ pNext_ }
103713       , pRenderPassFeedback{ pRenderPassFeedback_ }
103714     {
103715     }
103716 
103717     VULKAN_HPP_CONSTEXPR RenderPassCreationFeedbackCreateInfoEXT( RenderPassCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103718 
RenderPassCreationFeedbackCreateInfoEXTVULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT103719     RenderPassCreationFeedbackCreateInfoEXT( VkRenderPassCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
103720       : RenderPassCreationFeedbackCreateInfoEXT( *reinterpret_cast<RenderPassCreationFeedbackCreateInfoEXT const *>( &rhs ) )
103721     {
103722     }
103723 
103724     RenderPassCreationFeedbackCreateInfoEXT & operator=( RenderPassCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103725 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
103726 
operator =VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT103727     RenderPassCreationFeedbackCreateInfoEXT & operator=( VkRenderPassCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
103728     {
103729       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT const *>( &rhs );
103730       return *this;
103731     }
103732 
103733 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT103734     VULKAN_HPP_CONSTEXPR_14 RenderPassCreationFeedbackCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
103735     {
103736       pNext = pNext_;
103737       return *this;
103738     }
103739 
103740     VULKAN_HPP_CONSTEXPR_14 RenderPassCreationFeedbackCreateInfoEXT &
setPRenderPassFeedbackVULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT103741       setPRenderPassFeedback( VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT * pRenderPassFeedback_ ) VULKAN_HPP_NOEXCEPT
103742     {
103743       pRenderPassFeedback = pRenderPassFeedback_;
103744       return *this;
103745     }
103746 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
103747 
operator VkRenderPassCreationFeedbackCreateInfoEXT const&VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT103748     operator VkRenderPassCreationFeedbackCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
103749     {
103750       return *reinterpret_cast<const VkRenderPassCreationFeedbackCreateInfoEXT *>( this );
103751     }
103752 
operator VkRenderPassCreationFeedbackCreateInfoEXT&VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT103753     operator VkRenderPassCreationFeedbackCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
103754     {
103755       return *reinterpret_cast<VkRenderPassCreationFeedbackCreateInfoEXT *>( this );
103756     }
103757 
103758 #if defined( VULKAN_HPP_USE_REFLECT )
103759 #  if 14 <= VULKAN_HPP_CPP_VERSION
103760     auto
103761 #  else
103762     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT * const &>
103763 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT103764       reflect() const VULKAN_HPP_NOEXCEPT
103765     {
103766       return std::tie( sType, pNext, pRenderPassFeedback );
103767     }
103768 #endif
103769 
103770 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
103771     auto operator<=>( RenderPassCreationFeedbackCreateInfoEXT const & ) const = default;
103772 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT103773     bool operator==( RenderPassCreationFeedbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
103774     {
103775 #  if defined( VULKAN_HPP_USE_REFLECT )
103776       return this->reflect() == rhs.reflect();
103777 #  else
103778       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pRenderPassFeedback == rhs.pRenderPassFeedback );
103779 #  endif
103780     }
103781 
operator !=VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT103782     bool operator!=( RenderPassCreationFeedbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
103783     {
103784       return !operator==( rhs );
103785     }
103786 #endif
103787 
103788   public:
103789     VULKAN_HPP_NAMESPACE::StructureType                       sType               = StructureType::eRenderPassCreationFeedbackCreateInfoEXT;
103790     const void *                                              pNext               = {};
103791     VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT * pRenderPassFeedback = {};
103792   };
103793 
103794   template <>
103795   struct CppType<StructureType, StructureType::eRenderPassCreationFeedbackCreateInfoEXT>
103796   {
103797     using Type = RenderPassCreationFeedbackCreateInfoEXT;
103798   };
103799 
103800   struct RenderPassFragmentDensityMapCreateInfoEXT
103801   {
103802     using NativeType = VkRenderPassFragmentDensityMapCreateInfoEXT;
103803 
103804     static const bool                                  allowDuplicate = false;
103805     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassFragmentDensityMapCreateInfoEXT;
103806 
103807 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassFragmentDensityMapCreateInfoEXTVULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT103808     VULKAN_HPP_CONSTEXPR RenderPassFragmentDensityMapCreateInfoEXT( VULKAN_HPP_NAMESPACE::AttachmentReference fragmentDensityMapAttachment_ = {},
103809                                                                     const void *                              pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
103810       : pNext{ pNext_ }
103811       , fragmentDensityMapAttachment{ fragmentDensityMapAttachment_ }
103812     {
103813     }
103814 
103815     VULKAN_HPP_CONSTEXPR RenderPassFragmentDensityMapCreateInfoEXT( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103816 
RenderPassFragmentDensityMapCreateInfoEXTVULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT103817     RenderPassFragmentDensityMapCreateInfoEXT( VkRenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
103818       : RenderPassFragmentDensityMapCreateInfoEXT( *reinterpret_cast<RenderPassFragmentDensityMapCreateInfoEXT const *>( &rhs ) )
103819     {
103820     }
103821 
103822     RenderPassFragmentDensityMapCreateInfoEXT & operator=( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103823 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
103824 
operator =VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT103825     RenderPassFragmentDensityMapCreateInfoEXT & operator=( VkRenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
103826     {
103827       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT const *>( &rhs );
103828       return *this;
103829     }
103830 
103831 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT103832     VULKAN_HPP_CONSTEXPR_14 RenderPassFragmentDensityMapCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
103833     {
103834       pNext = pNext_;
103835       return *this;
103836     }
103837 
103838     VULKAN_HPP_CONSTEXPR_14 RenderPassFragmentDensityMapCreateInfoEXT &
setFragmentDensityMapAttachmentVULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT103839       setFragmentDensityMapAttachment( VULKAN_HPP_NAMESPACE::AttachmentReference const & fragmentDensityMapAttachment_ ) VULKAN_HPP_NOEXCEPT
103840     {
103841       fragmentDensityMapAttachment = fragmentDensityMapAttachment_;
103842       return *this;
103843     }
103844 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
103845 
operator VkRenderPassFragmentDensityMapCreateInfoEXT const&VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT103846     operator VkRenderPassFragmentDensityMapCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
103847     {
103848       return *reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT *>( this );
103849     }
103850 
operator VkRenderPassFragmentDensityMapCreateInfoEXT&VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT103851     operator VkRenderPassFragmentDensityMapCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
103852     {
103853       return *reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT *>( this );
103854     }
103855 
103856 #if defined( VULKAN_HPP_USE_REFLECT )
103857 #  if 14 <= VULKAN_HPP_CPP_VERSION
103858     auto
103859 #  else
103860     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::AttachmentReference const &>
103861 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT103862       reflect() const VULKAN_HPP_NOEXCEPT
103863     {
103864       return std::tie( sType, pNext, fragmentDensityMapAttachment );
103865     }
103866 #endif
103867 
103868 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
103869     auto operator<=>( RenderPassFragmentDensityMapCreateInfoEXT const & ) const = default;
103870 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT103871     bool operator==( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
103872     {
103873 #  if defined( VULKAN_HPP_USE_REFLECT )
103874       return this->reflect() == rhs.reflect();
103875 #  else
103876       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentDensityMapAttachment == rhs.fragmentDensityMapAttachment );
103877 #  endif
103878     }
103879 
operator !=VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT103880     bool operator!=( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
103881     {
103882       return !operator==( rhs );
103883     }
103884 #endif
103885 
103886   public:
103887     VULKAN_HPP_NAMESPACE::StructureType       sType                        = StructureType::eRenderPassFragmentDensityMapCreateInfoEXT;
103888     const void *                              pNext                        = {};
103889     VULKAN_HPP_NAMESPACE::AttachmentReference fragmentDensityMapAttachment = {};
103890   };
103891 
103892   template <>
103893   struct CppType<StructureType, StructureType::eRenderPassFragmentDensityMapCreateInfoEXT>
103894   {
103895     using Type = RenderPassFragmentDensityMapCreateInfoEXT;
103896   };
103897 
103898   struct RenderPassInputAttachmentAspectCreateInfo
103899   {
103900     using NativeType = VkRenderPassInputAttachmentAspectCreateInfo;
103901 
103902     static const bool                                  allowDuplicate = false;
103903     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassInputAttachmentAspectCreateInfo;
103904 
103905 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassInputAttachmentAspectCreateInfoVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo103906     VULKAN_HPP_CONSTEXPR RenderPassInputAttachmentAspectCreateInfo( uint32_t                                                     aspectReferenceCount_ = {},
103907                                                                     const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference * pAspectReferences_    = {},
103908                                                                     const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
103909       : pNext{ pNext_ }
103910       , aspectReferenceCount{ aspectReferenceCount_ }
103911       , pAspectReferences{ pAspectReferences_ }
103912     {
103913     }
103914 
103915     VULKAN_HPP_CONSTEXPR RenderPassInputAttachmentAspectCreateInfo( RenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103916 
RenderPassInputAttachmentAspectCreateInfoVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo103917     RenderPassInputAttachmentAspectCreateInfo( VkRenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
103918       : RenderPassInputAttachmentAspectCreateInfo( *reinterpret_cast<RenderPassInputAttachmentAspectCreateInfo const *>( &rhs ) )
103919     {
103920     }
103921 
103922 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassInputAttachmentAspectCreateInfoVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo103923     RenderPassInputAttachmentAspectCreateInfo(
103924       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference> const & aspectReferences_,
103925       const void *                                                                                                      pNext_ = nullptr )
103926       : pNext( pNext_ ), aspectReferenceCount( static_cast<uint32_t>( aspectReferences_.size() ) ), pAspectReferences( aspectReferences_.data() )
103927     {
103928     }
103929 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
103930 
103931     RenderPassInputAttachmentAspectCreateInfo & operator=( RenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
103932 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
103933 
operator =VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo103934     RenderPassInputAttachmentAspectCreateInfo & operator=( VkRenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
103935     {
103936       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo const *>( &rhs );
103937       return *this;
103938     }
103939 
103940 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo103941     VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
103942     {
103943       pNext = pNext_;
103944       return *this;
103945     }
103946 
setAspectReferenceCountVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo103947     VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo & setAspectReferenceCount( uint32_t aspectReferenceCount_ ) VULKAN_HPP_NOEXCEPT
103948     {
103949       aspectReferenceCount = aspectReferenceCount_;
103950       return *this;
103951     }
103952 
103953     VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo &
setPAspectReferencesVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo103954       setPAspectReferences( const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference * pAspectReferences_ ) VULKAN_HPP_NOEXCEPT
103955     {
103956       pAspectReferences = pAspectReferences_;
103957       return *this;
103958     }
103959 
103960 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAspectReferencesVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo103961     RenderPassInputAttachmentAspectCreateInfo & setAspectReferences(
103962       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference> const & aspectReferences_ ) VULKAN_HPP_NOEXCEPT
103963     {
103964       aspectReferenceCount = static_cast<uint32_t>( aspectReferences_.size() );
103965       pAspectReferences    = aspectReferences_.data();
103966       return *this;
103967     }
103968 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
103969 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
103970 
operator VkRenderPassInputAttachmentAspectCreateInfo const&VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo103971     operator VkRenderPassInputAttachmentAspectCreateInfo const &() const VULKAN_HPP_NOEXCEPT
103972     {
103973       return *reinterpret_cast<const VkRenderPassInputAttachmentAspectCreateInfo *>( this );
103974     }
103975 
operator VkRenderPassInputAttachmentAspectCreateInfo&VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo103976     operator VkRenderPassInputAttachmentAspectCreateInfo &() VULKAN_HPP_NOEXCEPT
103977     {
103978       return *reinterpret_cast<VkRenderPassInputAttachmentAspectCreateInfo *>( this );
103979     }
103980 
103981 #if defined( VULKAN_HPP_USE_REFLECT )
103982 #  if 14 <= VULKAN_HPP_CPP_VERSION
103983     auto
103984 #  else
103985     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
103986                const void * const &,
103987                uint32_t const &,
103988                const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference * const &>
103989 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo103990       reflect() const VULKAN_HPP_NOEXCEPT
103991     {
103992       return std::tie( sType, pNext, aspectReferenceCount, pAspectReferences );
103993     }
103994 #endif
103995 
103996 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
103997     auto operator<=>( RenderPassInputAttachmentAspectCreateInfo const & ) const = default;
103998 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo103999     bool operator==( RenderPassInputAttachmentAspectCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
104000     {
104001 #  if defined( VULKAN_HPP_USE_REFLECT )
104002       return this->reflect() == rhs.reflect();
104003 #  else
104004       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( aspectReferenceCount == rhs.aspectReferenceCount ) &&
104005              ( pAspectReferences == rhs.pAspectReferences );
104006 #  endif
104007     }
104008 
operator !=VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo104009     bool operator!=( RenderPassInputAttachmentAspectCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
104010     {
104011       return !operator==( rhs );
104012     }
104013 #endif
104014 
104015   public:
104016     VULKAN_HPP_NAMESPACE::StructureType                          sType                = StructureType::eRenderPassInputAttachmentAspectCreateInfo;
104017     const void *                                                 pNext                = {};
104018     uint32_t                                                     aspectReferenceCount = {};
104019     const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference * pAspectReferences    = {};
104020   };
104021 
104022   template <>
104023   struct CppType<StructureType, StructureType::eRenderPassInputAttachmentAspectCreateInfo>
104024   {
104025     using Type = RenderPassInputAttachmentAspectCreateInfo;
104026   };
104027 
104028   using RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo;
104029 
104030   struct RenderPassMultiviewCreateInfo
104031   {
104032     using NativeType = VkRenderPassMultiviewCreateInfo;
104033 
104034     static const bool                                  allowDuplicate = false;
104035     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassMultiviewCreateInfo;
104036 
104037 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassMultiviewCreateInfoVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo104038     VULKAN_HPP_CONSTEXPR RenderPassMultiviewCreateInfo( uint32_t         subpassCount_         = {},
104039                                                         const uint32_t * pViewMasks_           = {},
104040                                                         uint32_t         dependencyCount_      = {},
104041                                                         const int32_t *  pViewOffsets_         = {},
104042                                                         uint32_t         correlationMaskCount_ = {},
104043                                                         const uint32_t * pCorrelationMasks_    = {},
104044                                                         const void *     pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
104045       : pNext{ pNext_ }
104046       , subpassCount{ subpassCount_ }
104047       , pViewMasks{ pViewMasks_ }
104048       , dependencyCount{ dependencyCount_ }
104049       , pViewOffsets{ pViewOffsets_ }
104050       , correlationMaskCount{ correlationMaskCount_ }
104051       , pCorrelationMasks{ pCorrelationMasks_ }
104052     {
104053     }
104054 
104055     VULKAN_HPP_CONSTEXPR RenderPassMultiviewCreateInfo( RenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104056 
RenderPassMultiviewCreateInfoVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo104057     RenderPassMultiviewCreateInfo( VkRenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
104058       : RenderPassMultiviewCreateInfo( *reinterpret_cast<RenderPassMultiviewCreateInfo const *>( &rhs ) )
104059     {
104060     }
104061 
104062 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassMultiviewCreateInfoVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo104063     RenderPassMultiviewCreateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & viewMasks_,
104064                                    VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const int32_t> const &  viewOffsets_      = {},
104065                                    VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & correlationMasks_ = {},
104066                                    const void *                                                          pNext_            = nullptr )
104067       : pNext( pNext_ )
104068       , subpassCount( static_cast<uint32_t>( viewMasks_.size() ) )
104069       , pViewMasks( viewMasks_.data() )
104070       , dependencyCount( static_cast<uint32_t>( viewOffsets_.size() ) )
104071       , pViewOffsets( viewOffsets_.data() )
104072       , correlationMaskCount( static_cast<uint32_t>( correlationMasks_.size() ) )
104073       , pCorrelationMasks( correlationMasks_.data() )
104074     {
104075     }
104076 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
104077 
104078     RenderPassMultiviewCreateInfo & operator=( RenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104079 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
104080 
operator =VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo104081     RenderPassMultiviewCreateInfo & operator=( VkRenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
104082     {
104083       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo const *>( &rhs );
104084       return *this;
104085     }
104086 
104087 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo104088     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
104089     {
104090       pNext = pNext_;
104091       return *this;
104092     }
104093 
setSubpassCountVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo104094     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setSubpassCount( uint32_t subpassCount_ ) VULKAN_HPP_NOEXCEPT
104095     {
104096       subpassCount = subpassCount_;
104097       return *this;
104098     }
104099 
setPViewMasksVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo104100     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setPViewMasks( const uint32_t * pViewMasks_ ) VULKAN_HPP_NOEXCEPT
104101     {
104102       pViewMasks = pViewMasks_;
104103       return *this;
104104     }
104105 
104106 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setViewMasksVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo104107     RenderPassMultiviewCreateInfo & setViewMasks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & viewMasks_ ) VULKAN_HPP_NOEXCEPT
104108     {
104109       subpassCount = static_cast<uint32_t>( viewMasks_.size() );
104110       pViewMasks   = viewMasks_.data();
104111       return *this;
104112     }
104113 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
104114 
setDependencyCountVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo104115     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setDependencyCount( uint32_t dependencyCount_ ) VULKAN_HPP_NOEXCEPT
104116     {
104117       dependencyCount = dependencyCount_;
104118       return *this;
104119     }
104120 
setPViewOffsetsVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo104121     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setPViewOffsets( const int32_t * pViewOffsets_ ) VULKAN_HPP_NOEXCEPT
104122     {
104123       pViewOffsets = pViewOffsets_;
104124       return *this;
104125     }
104126 
104127 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setViewOffsetsVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo104128     RenderPassMultiviewCreateInfo & setViewOffsets( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const int32_t> const & viewOffsets_ ) VULKAN_HPP_NOEXCEPT
104129     {
104130       dependencyCount = static_cast<uint32_t>( viewOffsets_.size() );
104131       pViewOffsets    = viewOffsets_.data();
104132       return *this;
104133     }
104134 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
104135 
setCorrelationMaskCountVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo104136     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setCorrelationMaskCount( uint32_t correlationMaskCount_ ) VULKAN_HPP_NOEXCEPT
104137     {
104138       correlationMaskCount = correlationMaskCount_;
104139       return *this;
104140     }
104141 
setPCorrelationMasksVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo104142     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setPCorrelationMasks( const uint32_t * pCorrelationMasks_ ) VULKAN_HPP_NOEXCEPT
104143     {
104144       pCorrelationMasks = pCorrelationMasks_;
104145       return *this;
104146     }
104147 
104148 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
104149     RenderPassMultiviewCreateInfo &
setCorrelationMasksVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo104150       setCorrelationMasks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & correlationMasks_ ) VULKAN_HPP_NOEXCEPT
104151     {
104152       correlationMaskCount = static_cast<uint32_t>( correlationMasks_.size() );
104153       pCorrelationMasks    = correlationMasks_.data();
104154       return *this;
104155     }
104156 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
104157 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
104158 
operator VkRenderPassMultiviewCreateInfo const&VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo104159     operator VkRenderPassMultiviewCreateInfo const &() const VULKAN_HPP_NOEXCEPT
104160     {
104161       return *reinterpret_cast<const VkRenderPassMultiviewCreateInfo *>( this );
104162     }
104163 
operator VkRenderPassMultiviewCreateInfo&VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo104164     operator VkRenderPassMultiviewCreateInfo &() VULKAN_HPP_NOEXCEPT
104165     {
104166       return *reinterpret_cast<VkRenderPassMultiviewCreateInfo *>( this );
104167     }
104168 
104169 #if defined( VULKAN_HPP_USE_REFLECT )
104170 #  if 14 <= VULKAN_HPP_CPP_VERSION
104171     auto
104172 #  else
104173     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
104174                const void * const &,
104175                uint32_t const &,
104176                const uint32_t * const &,
104177                uint32_t const &,
104178                const int32_t * const &,
104179                uint32_t const &,
104180                const uint32_t * const &>
104181 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo104182       reflect() const VULKAN_HPP_NOEXCEPT
104183     {
104184       return std::tie( sType, pNext, subpassCount, pViewMasks, dependencyCount, pViewOffsets, correlationMaskCount, pCorrelationMasks );
104185     }
104186 #endif
104187 
104188 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
104189     auto operator<=>( RenderPassMultiviewCreateInfo const & ) const = default;
104190 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo104191     bool operator==( RenderPassMultiviewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
104192     {
104193 #  if defined( VULKAN_HPP_USE_REFLECT )
104194       return this->reflect() == rhs.reflect();
104195 #  else
104196       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subpassCount == rhs.subpassCount ) && ( pViewMasks == rhs.pViewMasks ) &&
104197              ( dependencyCount == rhs.dependencyCount ) && ( pViewOffsets == rhs.pViewOffsets ) && ( correlationMaskCount == rhs.correlationMaskCount ) &&
104198              ( pCorrelationMasks == rhs.pCorrelationMasks );
104199 #  endif
104200     }
104201 
operator !=VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo104202     bool operator!=( RenderPassMultiviewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
104203     {
104204       return !operator==( rhs );
104205     }
104206 #endif
104207 
104208   public:
104209     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::eRenderPassMultiviewCreateInfo;
104210     const void *                        pNext                = {};
104211     uint32_t                            subpassCount         = {};
104212     const uint32_t *                    pViewMasks           = {};
104213     uint32_t                            dependencyCount      = {};
104214     const int32_t *                     pViewOffsets         = {};
104215     uint32_t                            correlationMaskCount = {};
104216     const uint32_t *                    pCorrelationMasks    = {};
104217   };
104218 
104219   template <>
104220   struct CppType<StructureType, StructureType::eRenderPassMultiviewCreateInfo>
104221   {
104222     using Type = RenderPassMultiviewCreateInfo;
104223   };
104224 
104225   using RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo;
104226 
104227   struct SubpassSampleLocationsEXT
104228   {
104229     using NativeType = VkSubpassSampleLocationsEXT;
104230 
104231 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassSampleLocationsEXTVULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT104232     VULKAN_HPP_CONSTEXPR SubpassSampleLocationsEXT( uint32_t                                     subpassIndex_        = {},
104233                                                     VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo_ = {} ) VULKAN_HPP_NOEXCEPT
104234       : subpassIndex{ subpassIndex_ }
104235       , sampleLocationsInfo{ sampleLocationsInfo_ }
104236     {
104237     }
104238 
104239     VULKAN_HPP_CONSTEXPR SubpassSampleLocationsEXT( SubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104240 
SubpassSampleLocationsEXTVULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT104241     SubpassSampleLocationsEXT( VkSubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
104242       : SubpassSampleLocationsEXT( *reinterpret_cast<SubpassSampleLocationsEXT const *>( &rhs ) )
104243     {
104244     }
104245 
104246     SubpassSampleLocationsEXT & operator=( SubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104247 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
104248 
operator =VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT104249     SubpassSampleLocationsEXT & operator=( VkSubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
104250     {
104251       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT const *>( &rhs );
104252       return *this;
104253     }
104254 
104255 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSubpassIndexVULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT104256     VULKAN_HPP_CONSTEXPR_14 SubpassSampleLocationsEXT & setSubpassIndex( uint32_t subpassIndex_ ) VULKAN_HPP_NOEXCEPT
104257     {
104258       subpassIndex = subpassIndex_;
104259       return *this;
104260     }
104261 
104262     VULKAN_HPP_CONSTEXPR_14 SubpassSampleLocationsEXT &
setSampleLocationsInfoVULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT104263       setSampleLocationsInfo( VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const & sampleLocationsInfo_ ) VULKAN_HPP_NOEXCEPT
104264     {
104265       sampleLocationsInfo = sampleLocationsInfo_;
104266       return *this;
104267     }
104268 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
104269 
operator VkSubpassSampleLocationsEXT const&VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT104270     operator VkSubpassSampleLocationsEXT const &() const VULKAN_HPP_NOEXCEPT
104271     {
104272       return *reinterpret_cast<const VkSubpassSampleLocationsEXT *>( this );
104273     }
104274 
operator VkSubpassSampleLocationsEXT&VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT104275     operator VkSubpassSampleLocationsEXT &() VULKAN_HPP_NOEXCEPT
104276     {
104277       return *reinterpret_cast<VkSubpassSampleLocationsEXT *>( this );
104278     }
104279 
104280 #if defined( VULKAN_HPP_USE_REFLECT )
104281 #  if 14 <= VULKAN_HPP_CPP_VERSION
104282     auto
104283 #  else
104284     std::tuple<uint32_t const &, VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const &>
104285 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT104286       reflect() const VULKAN_HPP_NOEXCEPT
104287     {
104288       return std::tie( subpassIndex, sampleLocationsInfo );
104289     }
104290 #endif
104291 
104292 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
104293     auto operator<=>( SubpassSampleLocationsEXT const & ) const = default;
104294 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT104295     bool operator==( SubpassSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
104296     {
104297 #  if defined( VULKAN_HPP_USE_REFLECT )
104298       return this->reflect() == rhs.reflect();
104299 #  else
104300       return ( subpassIndex == rhs.subpassIndex ) && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
104301 #  endif
104302     }
104303 
operator !=VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT104304     bool operator!=( SubpassSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
104305     {
104306       return !operator==( rhs );
104307     }
104308 #endif
104309 
104310   public:
104311     uint32_t                                     subpassIndex        = {};
104312     VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo = {};
104313   };
104314 
104315   struct RenderPassSampleLocationsBeginInfoEXT
104316   {
104317     using NativeType = VkRenderPassSampleLocationsBeginInfoEXT;
104318 
104319     static const bool                                  allowDuplicate = false;
104320     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassSampleLocationsBeginInfoEXT;
104321 
104322 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
104323     VULKAN_HPP_CONSTEXPR
RenderPassSampleLocationsBeginInfoEXTVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT104324       RenderPassSampleLocationsBeginInfoEXT( uint32_t                                                   attachmentInitialSampleLocationsCount_ = {},
104325                                              const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT * pAttachmentInitialSampleLocations_     = {},
104326                                              uint32_t                                                   postSubpassSampleLocationsCount_       = {},
104327                                              const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT *    pPostSubpassSampleLocations_           = {},
104328                                              const void *                                               pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
104329       : pNext{ pNext_ }
104330       , attachmentInitialSampleLocationsCount{ attachmentInitialSampleLocationsCount_ }
104331       , pAttachmentInitialSampleLocations{ pAttachmentInitialSampleLocations_ }
104332       , postSubpassSampleLocationsCount{ postSubpassSampleLocationsCount_ }
104333       , pPostSubpassSampleLocations{ pPostSubpassSampleLocations_ }
104334     {
104335     }
104336 
104337     VULKAN_HPP_CONSTEXPR RenderPassSampleLocationsBeginInfoEXT( RenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104338 
RenderPassSampleLocationsBeginInfoEXTVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT104339     RenderPassSampleLocationsBeginInfoEXT( VkRenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
104340       : RenderPassSampleLocationsBeginInfoEXT( *reinterpret_cast<RenderPassSampleLocationsBeginInfoEXT const *>( &rhs ) )
104341     {
104342     }
104343 
104344 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassSampleLocationsBeginInfoEXTVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT104345     RenderPassSampleLocationsBeginInfoEXT(
104346       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT> const & attachmentInitialSampleLocations_,
104347       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT> const &    postSubpassSampleLocations_ = {},
104348       const void *                                                                                                    pNext_                      = nullptr )
104349       : pNext( pNext_ )
104350       , attachmentInitialSampleLocationsCount( static_cast<uint32_t>( attachmentInitialSampleLocations_.size() ) )
104351       , pAttachmentInitialSampleLocations( attachmentInitialSampleLocations_.data() )
104352       , postSubpassSampleLocationsCount( static_cast<uint32_t>( postSubpassSampleLocations_.size() ) )
104353       , pPostSubpassSampleLocations( postSubpassSampleLocations_.data() )
104354     {
104355     }
104356 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
104357 
104358     RenderPassSampleLocationsBeginInfoEXT & operator=( RenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104359 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
104360 
operator =VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT104361     RenderPassSampleLocationsBeginInfoEXT & operator=( VkRenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
104362     {
104363       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT const *>( &rhs );
104364       return *this;
104365     }
104366 
104367 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT104368     VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
104369     {
104370       pNext = pNext_;
104371       return *this;
104372     }
104373 
104374     VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT &
setAttachmentInitialSampleLocationsCountVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT104375       setAttachmentInitialSampleLocationsCount( uint32_t attachmentInitialSampleLocationsCount_ ) VULKAN_HPP_NOEXCEPT
104376     {
104377       attachmentInitialSampleLocationsCount = attachmentInitialSampleLocationsCount_;
104378       return *this;
104379     }
104380 
104381     VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT &
setPAttachmentInitialSampleLocationsVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT104382       setPAttachmentInitialSampleLocations( const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT * pAttachmentInitialSampleLocations_ ) VULKAN_HPP_NOEXCEPT
104383     {
104384       pAttachmentInitialSampleLocations = pAttachmentInitialSampleLocations_;
104385       return *this;
104386     }
104387 
104388 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentInitialSampleLocationsVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT104389     RenderPassSampleLocationsBeginInfoEXT & setAttachmentInitialSampleLocations(
104390       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT> const & attachmentInitialSampleLocations_ )
104391       VULKAN_HPP_NOEXCEPT
104392     {
104393       attachmentInitialSampleLocationsCount = static_cast<uint32_t>( attachmentInitialSampleLocations_.size() );
104394       pAttachmentInitialSampleLocations     = attachmentInitialSampleLocations_.data();
104395       return *this;
104396     }
104397 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
104398 
104399     VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT &
setPostSubpassSampleLocationsCountVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT104400       setPostSubpassSampleLocationsCount( uint32_t postSubpassSampleLocationsCount_ ) VULKAN_HPP_NOEXCEPT
104401     {
104402       postSubpassSampleLocationsCount = postSubpassSampleLocationsCount_;
104403       return *this;
104404     }
104405 
104406     VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT &
setPPostSubpassSampleLocationsVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT104407       setPPostSubpassSampleLocations( const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT * pPostSubpassSampleLocations_ ) VULKAN_HPP_NOEXCEPT
104408     {
104409       pPostSubpassSampleLocations = pPostSubpassSampleLocations_;
104410       return *this;
104411     }
104412 
104413 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPostSubpassSampleLocationsVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT104414     RenderPassSampleLocationsBeginInfoEXT & setPostSubpassSampleLocations(
104415       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT> const & postSubpassSampleLocations_ )
104416       VULKAN_HPP_NOEXCEPT
104417     {
104418       postSubpassSampleLocationsCount = static_cast<uint32_t>( postSubpassSampleLocations_.size() );
104419       pPostSubpassSampleLocations     = postSubpassSampleLocations_.data();
104420       return *this;
104421     }
104422 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
104423 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
104424 
operator VkRenderPassSampleLocationsBeginInfoEXT const&VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT104425     operator VkRenderPassSampleLocationsBeginInfoEXT const &() const VULKAN_HPP_NOEXCEPT
104426     {
104427       return *reinterpret_cast<const VkRenderPassSampleLocationsBeginInfoEXT *>( this );
104428     }
104429 
operator VkRenderPassSampleLocationsBeginInfoEXT&VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT104430     operator VkRenderPassSampleLocationsBeginInfoEXT &() VULKAN_HPP_NOEXCEPT
104431     {
104432       return *reinterpret_cast<VkRenderPassSampleLocationsBeginInfoEXT *>( this );
104433     }
104434 
104435 #if defined( VULKAN_HPP_USE_REFLECT )
104436 #  if 14 <= VULKAN_HPP_CPP_VERSION
104437     auto
104438 #  else
104439     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
104440                const void * const &,
104441                uint32_t const &,
104442                const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT * const &,
104443                uint32_t const &,
104444                const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT * const &>
104445 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT104446       reflect() const VULKAN_HPP_NOEXCEPT
104447     {
104448       return std::tie(
104449         sType, pNext, attachmentInitialSampleLocationsCount, pAttachmentInitialSampleLocations, postSubpassSampleLocationsCount, pPostSubpassSampleLocations );
104450     }
104451 #endif
104452 
104453 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
104454     auto operator<=>( RenderPassSampleLocationsBeginInfoEXT const & ) const = default;
104455 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT104456     bool operator==( RenderPassSampleLocationsBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
104457     {
104458 #  if defined( VULKAN_HPP_USE_REFLECT )
104459       return this->reflect() == rhs.reflect();
104460 #  else
104461       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachmentInitialSampleLocationsCount == rhs.attachmentInitialSampleLocationsCount ) &&
104462              ( pAttachmentInitialSampleLocations == rhs.pAttachmentInitialSampleLocations ) &&
104463              ( postSubpassSampleLocationsCount == rhs.postSubpassSampleLocationsCount ) && ( pPostSubpassSampleLocations == rhs.pPostSubpassSampleLocations );
104464 #  endif
104465     }
104466 
operator !=VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT104467     bool operator!=( RenderPassSampleLocationsBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
104468     {
104469       return !operator==( rhs );
104470     }
104471 #endif
104472 
104473   public:
104474     VULKAN_HPP_NAMESPACE::StructureType                        sType                                 = StructureType::eRenderPassSampleLocationsBeginInfoEXT;
104475     const void *                                               pNext                                 = {};
104476     uint32_t                                                   attachmentInitialSampleLocationsCount = {};
104477     const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT * pAttachmentInitialSampleLocations     = {};
104478     uint32_t                                                   postSubpassSampleLocationsCount       = {};
104479     const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT *    pPostSubpassSampleLocations           = {};
104480   };
104481 
104482   template <>
104483   struct CppType<StructureType, StructureType::eRenderPassSampleLocationsBeginInfoEXT>
104484   {
104485     using Type = RenderPassSampleLocationsBeginInfoEXT;
104486   };
104487 
104488   struct RenderPassStripeInfoARM
104489   {
104490     using NativeType = VkRenderPassStripeInfoARM;
104491 
104492     static const bool                                  allowDuplicate = false;
104493     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassStripeInfoARM;
104494 
104495 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassStripeInfoARMVULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM104496     VULKAN_HPP_CONSTEXPR RenderPassStripeInfoARM( VULKAN_HPP_NAMESPACE::Rect2D stripeArea_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
104497       : pNext{ pNext_ }
104498       , stripeArea{ stripeArea_ }
104499     {
104500     }
104501 
104502     VULKAN_HPP_CONSTEXPR RenderPassStripeInfoARM( RenderPassStripeInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104503 
RenderPassStripeInfoARMVULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM104504     RenderPassStripeInfoARM( VkRenderPassStripeInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
104505       : RenderPassStripeInfoARM( *reinterpret_cast<RenderPassStripeInfoARM const *>( &rhs ) )
104506     {
104507     }
104508 
104509     RenderPassStripeInfoARM & operator=( RenderPassStripeInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104510 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
104511 
operator =VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM104512     RenderPassStripeInfoARM & operator=( VkRenderPassStripeInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
104513     {
104514       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM const *>( &rhs );
104515       return *this;
104516     }
104517 
104518 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM104519     VULKAN_HPP_CONSTEXPR_14 RenderPassStripeInfoARM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
104520     {
104521       pNext = pNext_;
104522       return *this;
104523     }
104524 
setStripeAreaVULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM104525     VULKAN_HPP_CONSTEXPR_14 RenderPassStripeInfoARM & setStripeArea( VULKAN_HPP_NAMESPACE::Rect2D const & stripeArea_ ) VULKAN_HPP_NOEXCEPT
104526     {
104527       stripeArea = stripeArea_;
104528       return *this;
104529     }
104530 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
104531 
operator VkRenderPassStripeInfoARM const&VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM104532     operator VkRenderPassStripeInfoARM const &() const VULKAN_HPP_NOEXCEPT
104533     {
104534       return *reinterpret_cast<const VkRenderPassStripeInfoARM *>( this );
104535     }
104536 
operator VkRenderPassStripeInfoARM&VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM104537     operator VkRenderPassStripeInfoARM &() VULKAN_HPP_NOEXCEPT
104538     {
104539       return *reinterpret_cast<VkRenderPassStripeInfoARM *>( this );
104540     }
104541 
104542 #if defined( VULKAN_HPP_USE_REFLECT )
104543 #  if 14 <= VULKAN_HPP_CPP_VERSION
104544     auto
104545 #  else
104546     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Rect2D const &>
104547 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM104548       reflect() const VULKAN_HPP_NOEXCEPT
104549     {
104550       return std::tie( sType, pNext, stripeArea );
104551     }
104552 #endif
104553 
104554 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
104555     auto operator<=>( RenderPassStripeInfoARM const & ) const = default;
104556 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM104557     bool operator==( RenderPassStripeInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
104558     {
104559 #  if defined( VULKAN_HPP_USE_REFLECT )
104560       return this->reflect() == rhs.reflect();
104561 #  else
104562       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stripeArea == rhs.stripeArea );
104563 #  endif
104564     }
104565 
operator !=VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM104566     bool operator!=( RenderPassStripeInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
104567     {
104568       return !operator==( rhs );
104569     }
104570 #endif
104571 
104572   public:
104573     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eRenderPassStripeInfoARM;
104574     const void *                        pNext      = {};
104575     VULKAN_HPP_NAMESPACE::Rect2D        stripeArea = {};
104576   };
104577 
104578   template <>
104579   struct CppType<StructureType, StructureType::eRenderPassStripeInfoARM>
104580   {
104581     using Type = RenderPassStripeInfoARM;
104582   };
104583 
104584   struct RenderPassStripeBeginInfoARM
104585   {
104586     using NativeType = VkRenderPassStripeBeginInfoARM;
104587 
104588     static const bool                                  allowDuplicate = false;
104589     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassStripeBeginInfoARM;
104590 
104591 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassStripeBeginInfoARMVULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM104592     VULKAN_HPP_CONSTEXPR RenderPassStripeBeginInfoARM( uint32_t                                              stripeInfoCount_ = {},
104593                                                        const VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM * pStripeInfos_    = {},
104594                                                        const void *                                          pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
104595       : pNext{ pNext_ }
104596       , stripeInfoCount{ stripeInfoCount_ }
104597       , pStripeInfos{ pStripeInfos_ }
104598     {
104599     }
104600 
104601     VULKAN_HPP_CONSTEXPR RenderPassStripeBeginInfoARM( RenderPassStripeBeginInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104602 
RenderPassStripeBeginInfoARMVULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM104603     RenderPassStripeBeginInfoARM( VkRenderPassStripeBeginInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
104604       : RenderPassStripeBeginInfoARM( *reinterpret_cast<RenderPassStripeBeginInfoARM const *>( &rhs ) )
104605     {
104606     }
104607 
104608 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassStripeBeginInfoARMVULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM104609     RenderPassStripeBeginInfoARM( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM> const & stripeInfos_,
104610                                   const void *                                                                                               pNext_ = nullptr )
104611       : pNext( pNext_ ), stripeInfoCount( static_cast<uint32_t>( stripeInfos_.size() ) ), pStripeInfos( stripeInfos_.data() )
104612     {
104613     }
104614 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
104615 
104616     RenderPassStripeBeginInfoARM & operator=( RenderPassStripeBeginInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104617 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
104618 
operator =VULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM104619     RenderPassStripeBeginInfoARM & operator=( VkRenderPassStripeBeginInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
104620     {
104621       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM const *>( &rhs );
104622       return *this;
104623     }
104624 
104625 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM104626     VULKAN_HPP_CONSTEXPR_14 RenderPassStripeBeginInfoARM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
104627     {
104628       pNext = pNext_;
104629       return *this;
104630     }
104631 
setStripeInfoCountVULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM104632     VULKAN_HPP_CONSTEXPR_14 RenderPassStripeBeginInfoARM & setStripeInfoCount( uint32_t stripeInfoCount_ ) VULKAN_HPP_NOEXCEPT
104633     {
104634       stripeInfoCount = stripeInfoCount_;
104635       return *this;
104636     }
104637 
104638     VULKAN_HPP_CONSTEXPR_14 RenderPassStripeBeginInfoARM &
setPStripeInfosVULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM104639       setPStripeInfos( const VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM * pStripeInfos_ ) VULKAN_HPP_NOEXCEPT
104640     {
104641       pStripeInfos = pStripeInfos_;
104642       return *this;
104643     }
104644 
104645 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setStripeInfosVULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM104646     RenderPassStripeBeginInfoARM & setStripeInfos(
104647       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM> const & stripeInfos_ ) VULKAN_HPP_NOEXCEPT
104648     {
104649       stripeInfoCount = static_cast<uint32_t>( stripeInfos_.size() );
104650       pStripeInfos    = stripeInfos_.data();
104651       return *this;
104652     }
104653 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
104654 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
104655 
operator VkRenderPassStripeBeginInfoARM const&VULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM104656     operator VkRenderPassStripeBeginInfoARM const &() const VULKAN_HPP_NOEXCEPT
104657     {
104658       return *reinterpret_cast<const VkRenderPassStripeBeginInfoARM *>( this );
104659     }
104660 
operator VkRenderPassStripeBeginInfoARM&VULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM104661     operator VkRenderPassStripeBeginInfoARM &() VULKAN_HPP_NOEXCEPT
104662     {
104663       return *reinterpret_cast<VkRenderPassStripeBeginInfoARM *>( this );
104664     }
104665 
104666 #if defined( VULKAN_HPP_USE_REFLECT )
104667 #  if 14 <= VULKAN_HPP_CPP_VERSION
104668     auto
104669 #  else
104670     std::
104671       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM * const &>
104672 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM104673       reflect() const VULKAN_HPP_NOEXCEPT
104674     {
104675       return std::tie( sType, pNext, stripeInfoCount, pStripeInfos );
104676     }
104677 #endif
104678 
104679 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
104680     auto operator<=>( RenderPassStripeBeginInfoARM const & ) const = default;
104681 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM104682     bool operator==( RenderPassStripeBeginInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
104683     {
104684 #  if defined( VULKAN_HPP_USE_REFLECT )
104685       return this->reflect() == rhs.reflect();
104686 #  else
104687       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stripeInfoCount == rhs.stripeInfoCount ) && ( pStripeInfos == rhs.pStripeInfos );
104688 #  endif
104689     }
104690 
operator !=VULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM104691     bool operator!=( RenderPassStripeBeginInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
104692     {
104693       return !operator==( rhs );
104694     }
104695 #endif
104696 
104697   public:
104698     VULKAN_HPP_NAMESPACE::StructureType                   sType           = StructureType::eRenderPassStripeBeginInfoARM;
104699     const void *                                          pNext           = {};
104700     uint32_t                                              stripeInfoCount = {};
104701     const VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM * pStripeInfos    = {};
104702   };
104703 
104704   template <>
104705   struct CppType<StructureType, StructureType::eRenderPassStripeBeginInfoARM>
104706   {
104707     using Type = RenderPassStripeBeginInfoARM;
104708   };
104709 
104710   struct SemaphoreSubmitInfo
104711   {
104712     using NativeType = VkSemaphoreSubmitInfo;
104713 
104714     static const bool                                  allowDuplicate = false;
104715     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreSubmitInfo;
104716 
104717 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreSubmitInfoVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo104718     VULKAN_HPP_CONSTEXPR SemaphoreSubmitInfo( VULKAN_HPP_NAMESPACE::Semaphore           semaphore_   = {},
104719                                               uint64_t                                  value_       = {},
104720                                               VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask_   = {},
104721                                               uint32_t                                  deviceIndex_ = {},
104722                                               const void *                              pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
104723       : pNext{ pNext_ }
104724       , semaphore{ semaphore_ }
104725       , value{ value_ }
104726       , stageMask{ stageMask_ }
104727       , deviceIndex{ deviceIndex_ }
104728     {
104729     }
104730 
104731     VULKAN_HPP_CONSTEXPR SemaphoreSubmitInfo( SemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104732 
SemaphoreSubmitInfoVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo104733     SemaphoreSubmitInfo( VkSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SemaphoreSubmitInfo( *reinterpret_cast<SemaphoreSubmitInfo const *>( &rhs ) )
104734     {
104735     }
104736 
104737     SemaphoreSubmitInfo & operator=( SemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104738 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
104739 
operator =VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo104740     SemaphoreSubmitInfo & operator=( VkSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
104741     {
104742       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo const *>( &rhs );
104743       return *this;
104744     }
104745 
104746 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo104747     VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
104748     {
104749       pNext = pNext_;
104750       return *this;
104751     }
104752 
setSemaphoreVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo104753     VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
104754     {
104755       semaphore = semaphore_;
104756       return *this;
104757     }
104758 
setValueVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo104759     VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setValue( uint64_t value_ ) VULKAN_HPP_NOEXCEPT
104760     {
104761       value = value_;
104762       return *this;
104763     }
104764 
setStageMaskVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo104765     VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask_ ) VULKAN_HPP_NOEXCEPT
104766     {
104767       stageMask = stageMask_;
104768       return *this;
104769     }
104770 
setDeviceIndexVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo104771     VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setDeviceIndex( uint32_t deviceIndex_ ) VULKAN_HPP_NOEXCEPT
104772     {
104773       deviceIndex = deviceIndex_;
104774       return *this;
104775     }
104776 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
104777 
operator VkSemaphoreSubmitInfo const&VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo104778     operator VkSemaphoreSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
104779     {
104780       return *reinterpret_cast<const VkSemaphoreSubmitInfo *>( this );
104781     }
104782 
operator VkSemaphoreSubmitInfo&VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo104783     operator VkSemaphoreSubmitInfo &() VULKAN_HPP_NOEXCEPT
104784     {
104785       return *reinterpret_cast<VkSemaphoreSubmitInfo *>( this );
104786     }
104787 
104788 #if defined( VULKAN_HPP_USE_REFLECT )
104789 #  if 14 <= VULKAN_HPP_CPP_VERSION
104790     auto
104791 #  else
104792     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
104793                const void * const &,
104794                VULKAN_HPP_NAMESPACE::Semaphore const &,
104795                uint64_t const &,
104796                VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &,
104797                uint32_t const &>
104798 #  endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo104799       reflect() const VULKAN_HPP_NOEXCEPT
104800     {
104801       return std::tie( sType, pNext, semaphore, value, stageMask, deviceIndex );
104802     }
104803 #endif
104804 
104805 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
104806     auto operator<=>( SemaphoreSubmitInfo const & ) const = default;
104807 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo104808     bool operator==( SemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
104809     {
104810 #  if defined( VULKAN_HPP_USE_REFLECT )
104811       return this->reflect() == rhs.reflect();
104812 #  else
104813       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( value == rhs.value ) && ( stageMask == rhs.stageMask ) &&
104814              ( deviceIndex == rhs.deviceIndex );
104815 #  endif
104816     }
104817 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo104818     bool operator!=( SemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
104819     {
104820       return !operator==( rhs );
104821     }
104822 #endif
104823 
104824   public:
104825     VULKAN_HPP_NAMESPACE::StructureType       sType       = StructureType::eSemaphoreSubmitInfo;
104826     const void *                              pNext       = {};
104827     VULKAN_HPP_NAMESPACE::Semaphore           semaphore   = {};
104828     uint64_t                                  value       = {};
104829     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask   = {};
104830     uint32_t                                  deviceIndex = {};
104831   };
104832 
104833   template <>
104834   struct CppType<StructureType, StructureType::eSemaphoreSubmitInfo>
104835   {
104836     using Type = SemaphoreSubmitInfo;
104837   };
104838 
104839   using SemaphoreSubmitInfoKHR = SemaphoreSubmitInfo;
104840 
104841   struct RenderPassStripeSubmitInfoARM
104842   {
104843     using NativeType = VkRenderPassStripeSubmitInfoARM;
104844 
104845     static const bool                                  allowDuplicate = false;
104846     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassStripeSubmitInfoARM;
104847 
104848 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassStripeSubmitInfoARMVULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM104849     VULKAN_HPP_CONSTEXPR RenderPassStripeSubmitInfoARM( uint32_t                                          stripeSemaphoreInfoCount_ = {},
104850                                                         const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pStripeSemaphoreInfos_    = {},
104851                                                         const void *                                      pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
104852       : pNext{ pNext_ }
104853       , stripeSemaphoreInfoCount{ stripeSemaphoreInfoCount_ }
104854       , pStripeSemaphoreInfos{ pStripeSemaphoreInfos_ }
104855     {
104856     }
104857 
104858     VULKAN_HPP_CONSTEXPR RenderPassStripeSubmitInfoARM( RenderPassStripeSubmitInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104859 
RenderPassStripeSubmitInfoARMVULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM104860     RenderPassStripeSubmitInfoARM( VkRenderPassStripeSubmitInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
104861       : RenderPassStripeSubmitInfoARM( *reinterpret_cast<RenderPassStripeSubmitInfoARM const *>( &rhs ) )
104862     {
104863     }
104864 
104865 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassStripeSubmitInfoARMVULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM104866     RenderPassStripeSubmitInfoARM( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo> const & stripeSemaphoreInfos_,
104867                                    const void *                                                                                           pNext_ = nullptr )
104868       : pNext( pNext_ )
104869       , stripeSemaphoreInfoCount( static_cast<uint32_t>( stripeSemaphoreInfos_.size() ) )
104870       , pStripeSemaphoreInfos( stripeSemaphoreInfos_.data() )
104871     {
104872     }
104873 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
104874 
104875     RenderPassStripeSubmitInfoARM & operator=( RenderPassStripeSubmitInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104876 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
104877 
operator =VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM104878     RenderPassStripeSubmitInfoARM & operator=( VkRenderPassStripeSubmitInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT
104879     {
104880       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM const *>( &rhs );
104881       return *this;
104882     }
104883 
104884 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM104885     VULKAN_HPP_CONSTEXPR_14 RenderPassStripeSubmitInfoARM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
104886     {
104887       pNext = pNext_;
104888       return *this;
104889     }
104890 
setStripeSemaphoreInfoCountVULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM104891     VULKAN_HPP_CONSTEXPR_14 RenderPassStripeSubmitInfoARM & setStripeSemaphoreInfoCount( uint32_t stripeSemaphoreInfoCount_ ) VULKAN_HPP_NOEXCEPT
104892     {
104893       stripeSemaphoreInfoCount = stripeSemaphoreInfoCount_;
104894       return *this;
104895     }
104896 
104897     VULKAN_HPP_CONSTEXPR_14 RenderPassStripeSubmitInfoARM &
setPStripeSemaphoreInfosVULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM104898       setPStripeSemaphoreInfos( const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pStripeSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
104899     {
104900       pStripeSemaphoreInfos = pStripeSemaphoreInfos_;
104901       return *this;
104902     }
104903 
104904 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setStripeSemaphoreInfosVULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM104905     RenderPassStripeSubmitInfoARM & setStripeSemaphoreInfos(
104906       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo> const & stripeSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
104907     {
104908       stripeSemaphoreInfoCount = static_cast<uint32_t>( stripeSemaphoreInfos_.size() );
104909       pStripeSemaphoreInfos    = stripeSemaphoreInfos_.data();
104910       return *this;
104911     }
104912 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
104913 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
104914 
operator VkRenderPassStripeSubmitInfoARM const&VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM104915     operator VkRenderPassStripeSubmitInfoARM const &() const VULKAN_HPP_NOEXCEPT
104916     {
104917       return *reinterpret_cast<const VkRenderPassStripeSubmitInfoARM *>( this );
104918     }
104919 
operator VkRenderPassStripeSubmitInfoARM&VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM104920     operator VkRenderPassStripeSubmitInfoARM &() VULKAN_HPP_NOEXCEPT
104921     {
104922       return *reinterpret_cast<VkRenderPassStripeSubmitInfoARM *>( this );
104923     }
104924 
104925 #if defined( VULKAN_HPP_USE_REFLECT )
104926 #  if 14 <= VULKAN_HPP_CPP_VERSION
104927     auto
104928 #  else
104929     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * const &>
104930 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM104931       reflect() const VULKAN_HPP_NOEXCEPT
104932     {
104933       return std::tie( sType, pNext, stripeSemaphoreInfoCount, pStripeSemaphoreInfos );
104934     }
104935 #endif
104936 
104937 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
104938     auto operator<=>( RenderPassStripeSubmitInfoARM const & ) const = default;
104939 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM104940     bool operator==( RenderPassStripeSubmitInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
104941     {
104942 #  if defined( VULKAN_HPP_USE_REFLECT )
104943       return this->reflect() == rhs.reflect();
104944 #  else
104945       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stripeSemaphoreInfoCount == rhs.stripeSemaphoreInfoCount ) &&
104946              ( pStripeSemaphoreInfos == rhs.pStripeSemaphoreInfos );
104947 #  endif
104948     }
104949 
operator !=VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM104950     bool operator!=( RenderPassStripeSubmitInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT
104951     {
104952       return !operator==( rhs );
104953     }
104954 #endif
104955 
104956   public:
104957     VULKAN_HPP_NAMESPACE::StructureType               sType                    = StructureType::eRenderPassStripeSubmitInfoARM;
104958     const void *                                      pNext                    = {};
104959     uint32_t                                          stripeSemaphoreInfoCount = {};
104960     const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pStripeSemaphoreInfos    = {};
104961   };
104962 
104963   template <>
104964   struct CppType<StructureType, StructureType::eRenderPassStripeSubmitInfoARM>
104965   {
104966     using Type = RenderPassStripeSubmitInfoARM;
104967   };
104968 
104969   struct RenderPassSubpassFeedbackInfoEXT
104970   {
104971     using NativeType = VkRenderPassSubpassFeedbackInfoEXT;
104972 
104973 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
104974     VULKAN_HPP_CONSTEXPR_14
RenderPassSubpassFeedbackInfoEXTVULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT104975       RenderPassSubpassFeedbackInfoEXT( VULKAN_HPP_NAMESPACE::SubpassMergeStatusEXT subpassMergeStatus_ = VULKAN_HPP_NAMESPACE::SubpassMergeStatusEXT::eMerged,
104976                                         std::array<char, VK_MAX_DESCRIPTION_SIZE> const & description_  = {},
104977                                         uint32_t                                          postMergeIndex_ = {} ) VULKAN_HPP_NOEXCEPT
104978       : subpassMergeStatus{ subpassMergeStatus_ }
104979       , description{ description_ }
104980       , postMergeIndex{ postMergeIndex_ }
104981     {
104982     }
104983 
104984     VULKAN_HPP_CONSTEXPR_14 RenderPassSubpassFeedbackInfoEXT( RenderPassSubpassFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
104985 
RenderPassSubpassFeedbackInfoEXTVULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT104986     RenderPassSubpassFeedbackInfoEXT( VkRenderPassSubpassFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
104987       : RenderPassSubpassFeedbackInfoEXT( *reinterpret_cast<RenderPassSubpassFeedbackInfoEXT const *>( &rhs ) )
104988     {
104989     }
104990 
104991 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassSubpassFeedbackInfoEXTVULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT104992     RenderPassSubpassFeedbackInfoEXT( VULKAN_HPP_NAMESPACE::SubpassMergeStatusEXT subpassMergeStatus_,
104993                                       std::string const &                         description_,
104994                                       uint32_t                                    postMergeIndex_ = {} )
104995       : subpassMergeStatus( subpassMergeStatus_ ), postMergeIndex( postMergeIndex_ )
104996     {
104997       VULKAN_HPP_ASSERT( description_.size() < VK_MAX_DESCRIPTION_SIZE );
104998 #    if defined( WIN32 )
104999       strncpy_s( description, VK_MAX_DESCRIPTION_SIZE, description_.data(), description_.size() );
105000 #    else
105001       strncpy( description, description_.data(), std::min<size_t>( VK_MAX_DESCRIPTION_SIZE, description_.size() ) );
105002 #    endif
105003     }
105004 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
105005 
105006     RenderPassSubpassFeedbackInfoEXT & operator=( RenderPassSubpassFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105007 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
105008 
operator =VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT105009     RenderPassSubpassFeedbackInfoEXT & operator=( VkRenderPassSubpassFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
105010     {
105011       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT const *>( &rhs );
105012       return *this;
105013     }
105014 
operator VkRenderPassSubpassFeedbackInfoEXT const&VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT105015     operator VkRenderPassSubpassFeedbackInfoEXT const &() const VULKAN_HPP_NOEXCEPT
105016     {
105017       return *reinterpret_cast<const VkRenderPassSubpassFeedbackInfoEXT *>( this );
105018     }
105019 
operator VkRenderPassSubpassFeedbackInfoEXT&VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT105020     operator VkRenderPassSubpassFeedbackInfoEXT &() VULKAN_HPP_NOEXCEPT
105021     {
105022       return *reinterpret_cast<VkRenderPassSubpassFeedbackInfoEXT *>( this );
105023     }
105024 
105025 #if defined( VULKAN_HPP_USE_REFLECT )
105026 #  if 14 <= VULKAN_HPP_CPP_VERSION
105027     auto
105028 #  else
105029     std::
105030       tuple<VULKAN_HPP_NAMESPACE::SubpassMergeStatusEXT const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &, uint32_t const &>
105031 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT105032       reflect() const VULKAN_HPP_NOEXCEPT
105033     {
105034       return std::tie( subpassMergeStatus, description, postMergeIndex );
105035     }
105036 #endif
105037 
105038 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT105039     std::strong_ordering operator<=>( RenderPassSubpassFeedbackInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
105040     {
105041       if ( auto cmp = subpassMergeStatus <=> rhs.subpassMergeStatus; cmp != 0 )
105042         return cmp;
105043       if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 )
105044         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
105045       if ( auto cmp = postMergeIndex <=> rhs.postMergeIndex; cmp != 0 )
105046         return cmp;
105047 
105048       return std::strong_ordering::equivalent;
105049     }
105050 #endif
105051 
operator ==VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT105052     bool operator==( RenderPassSubpassFeedbackInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
105053     {
105054       return ( subpassMergeStatus == rhs.subpassMergeStatus ) && ( strcmp( description, rhs.description ) == 0 ) && ( postMergeIndex == rhs.postMergeIndex );
105055     }
105056 
operator !=VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT105057     bool operator!=( RenderPassSubpassFeedbackInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
105058     {
105059       return !operator==( rhs );
105060     }
105061 
105062   public:
105063     VULKAN_HPP_NAMESPACE::SubpassMergeStatusEXT                         subpassMergeStatus = VULKAN_HPP_NAMESPACE::SubpassMergeStatusEXT::eMerged;
105064     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description        = {};
105065     uint32_t                                                            postMergeIndex     = {};
105066   };
105067 
105068   struct RenderPassSubpassFeedbackCreateInfoEXT
105069   {
105070     using NativeType = VkRenderPassSubpassFeedbackCreateInfoEXT;
105071 
105072     static const bool                                  allowDuplicate = false;
105073     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassSubpassFeedbackCreateInfoEXT;
105074 
105075 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassSubpassFeedbackCreateInfoEXTVULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT105076     VULKAN_HPP_CONSTEXPR_14 RenderPassSubpassFeedbackCreateInfoEXT( VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT * pSubpassFeedback_ = {},
105077                                                                     const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
105078       : pNext{ pNext_ }
105079       , pSubpassFeedback{ pSubpassFeedback_ }
105080     {
105081     }
105082 
105083     VULKAN_HPP_CONSTEXPR_14 RenderPassSubpassFeedbackCreateInfoEXT( RenderPassSubpassFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105084 
RenderPassSubpassFeedbackCreateInfoEXTVULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT105085     RenderPassSubpassFeedbackCreateInfoEXT( VkRenderPassSubpassFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
105086       : RenderPassSubpassFeedbackCreateInfoEXT( *reinterpret_cast<RenderPassSubpassFeedbackCreateInfoEXT const *>( &rhs ) )
105087     {
105088     }
105089 
105090     RenderPassSubpassFeedbackCreateInfoEXT & operator=( RenderPassSubpassFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105091 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
105092 
operator =VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT105093     RenderPassSubpassFeedbackCreateInfoEXT & operator=( VkRenderPassSubpassFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
105094     {
105095       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT const *>( &rhs );
105096       return *this;
105097     }
105098 
105099 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT105100     VULKAN_HPP_CONSTEXPR_14 RenderPassSubpassFeedbackCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
105101     {
105102       pNext = pNext_;
105103       return *this;
105104     }
105105 
105106     VULKAN_HPP_CONSTEXPR_14 RenderPassSubpassFeedbackCreateInfoEXT &
setPSubpassFeedbackVULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT105107       setPSubpassFeedback( VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT * pSubpassFeedback_ ) VULKAN_HPP_NOEXCEPT
105108     {
105109       pSubpassFeedback = pSubpassFeedback_;
105110       return *this;
105111     }
105112 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
105113 
operator VkRenderPassSubpassFeedbackCreateInfoEXT const&VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT105114     operator VkRenderPassSubpassFeedbackCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
105115     {
105116       return *reinterpret_cast<const VkRenderPassSubpassFeedbackCreateInfoEXT *>( this );
105117     }
105118 
operator VkRenderPassSubpassFeedbackCreateInfoEXT&VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT105119     operator VkRenderPassSubpassFeedbackCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
105120     {
105121       return *reinterpret_cast<VkRenderPassSubpassFeedbackCreateInfoEXT *>( this );
105122     }
105123 
105124 #if defined( VULKAN_HPP_USE_REFLECT )
105125 #  if 14 <= VULKAN_HPP_CPP_VERSION
105126     auto
105127 #  else
105128     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT * const &>
105129 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT105130       reflect() const VULKAN_HPP_NOEXCEPT
105131     {
105132       return std::tie( sType, pNext, pSubpassFeedback );
105133     }
105134 #endif
105135 
105136 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
105137     auto operator<=>( RenderPassSubpassFeedbackCreateInfoEXT const & ) const = default;
105138 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT105139     bool operator==( RenderPassSubpassFeedbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
105140     {
105141 #  if defined( VULKAN_HPP_USE_REFLECT )
105142       return this->reflect() == rhs.reflect();
105143 #  else
105144       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pSubpassFeedback == rhs.pSubpassFeedback );
105145 #  endif
105146     }
105147 
operator !=VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT105148     bool operator!=( RenderPassSubpassFeedbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
105149     {
105150       return !operator==( rhs );
105151     }
105152 #endif
105153 
105154   public:
105155     VULKAN_HPP_NAMESPACE::StructureType                      sType            = StructureType::eRenderPassSubpassFeedbackCreateInfoEXT;
105156     const void *                                             pNext            = {};
105157     VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT * pSubpassFeedback = {};
105158   };
105159 
105160   template <>
105161   struct CppType<StructureType, StructureType::eRenderPassSubpassFeedbackCreateInfoEXT>
105162   {
105163     using Type = RenderPassSubpassFeedbackCreateInfoEXT;
105164   };
105165 
105166   struct RenderPassTransformBeginInfoQCOM
105167   {
105168     using NativeType = VkRenderPassTransformBeginInfoQCOM;
105169 
105170     static const bool                                  allowDuplicate = false;
105171     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderPassTransformBeginInfoQCOM;
105172 
105173 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassTransformBeginInfoQCOMVULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM105174     VULKAN_HPP_CONSTEXPR RenderPassTransformBeginInfoQCOM(
105175       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
105176       void *                                            pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
105177       : pNext{ pNext_ }
105178       , transform{ transform_ }
105179     {
105180     }
105181 
105182     VULKAN_HPP_CONSTEXPR RenderPassTransformBeginInfoQCOM( RenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105183 
RenderPassTransformBeginInfoQCOMVULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM105184     RenderPassTransformBeginInfoQCOM( VkRenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
105185       : RenderPassTransformBeginInfoQCOM( *reinterpret_cast<RenderPassTransformBeginInfoQCOM const *>( &rhs ) )
105186     {
105187     }
105188 
105189     RenderPassTransformBeginInfoQCOM & operator=( RenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105190 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
105191 
operator =VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM105192     RenderPassTransformBeginInfoQCOM & operator=( VkRenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
105193     {
105194       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM const *>( &rhs );
105195       return *this;
105196     }
105197 
105198 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM105199     VULKAN_HPP_CONSTEXPR_14 RenderPassTransformBeginInfoQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
105200     {
105201       pNext = pNext_;
105202       return *this;
105203     }
105204 
setTransformVULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM105205     VULKAN_HPP_CONSTEXPR_14 RenderPassTransformBeginInfoQCOM & setTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ ) VULKAN_HPP_NOEXCEPT
105206     {
105207       transform = transform_;
105208       return *this;
105209     }
105210 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
105211 
operator VkRenderPassTransformBeginInfoQCOM const&VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM105212     operator VkRenderPassTransformBeginInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
105213     {
105214       return *reinterpret_cast<const VkRenderPassTransformBeginInfoQCOM *>( this );
105215     }
105216 
operator VkRenderPassTransformBeginInfoQCOM&VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM105217     operator VkRenderPassTransformBeginInfoQCOM &() VULKAN_HPP_NOEXCEPT
105218     {
105219       return *reinterpret_cast<VkRenderPassTransformBeginInfoQCOM *>( this );
105220     }
105221 
105222 #if defined( VULKAN_HPP_USE_REFLECT )
105223 #  if 14 <= VULKAN_HPP_CPP_VERSION
105224     auto
105225 #  else
105226     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &>
105227 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM105228       reflect() const VULKAN_HPP_NOEXCEPT
105229     {
105230       return std::tie( sType, pNext, transform );
105231     }
105232 #endif
105233 
105234 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
105235     auto operator<=>( RenderPassTransformBeginInfoQCOM const & ) const = default;
105236 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM105237     bool operator==( RenderPassTransformBeginInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
105238     {
105239 #  if defined( VULKAN_HPP_USE_REFLECT )
105240       return this->reflect() == rhs.reflect();
105241 #  else
105242       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( transform == rhs.transform );
105243 #  endif
105244     }
105245 
operator !=VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM105246     bool operator!=( RenderPassTransformBeginInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
105247     {
105248       return !operator==( rhs );
105249     }
105250 #endif
105251 
105252   public:
105253     VULKAN_HPP_NAMESPACE::StructureType               sType     = StructureType::eRenderPassTransformBeginInfoQCOM;
105254     void *                                            pNext     = {};
105255     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
105256   };
105257 
105258   template <>
105259   struct CppType<StructureType, StructureType::eRenderPassTransformBeginInfoQCOM>
105260   {
105261     using Type = RenderPassTransformBeginInfoQCOM;
105262   };
105263 
105264   struct RenderingAreaInfoKHR
105265   {
105266     using NativeType = VkRenderingAreaInfoKHR;
105267 
105268     static const bool                                  allowDuplicate = false;
105269     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderingAreaInfoKHR;
105270 
105271 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderingAreaInfoKHRVULKAN_HPP_NAMESPACE::RenderingAreaInfoKHR105272     VULKAN_HPP_CONSTEXPR RenderingAreaInfoKHR( uint32_t                             viewMask_                = {},
105273                                                uint32_t                             colorAttachmentCount_    = {},
105274                                                const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats_ = {},
105275                                                VULKAN_HPP_NAMESPACE::Format         depthAttachmentFormat_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
105276                                                VULKAN_HPP_NAMESPACE::Format         stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
105277                                                const void *                         pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
105278       : pNext{ pNext_ }
105279       , viewMask{ viewMask_ }
105280       , colorAttachmentCount{ colorAttachmentCount_ }
105281       , pColorAttachmentFormats{ pColorAttachmentFormats_ }
105282       , depthAttachmentFormat{ depthAttachmentFormat_ }
105283       , stencilAttachmentFormat{ stencilAttachmentFormat_ }
105284     {
105285     }
105286 
105287     VULKAN_HPP_CONSTEXPR RenderingAreaInfoKHR( RenderingAreaInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105288 
RenderingAreaInfoKHRVULKAN_HPP_NAMESPACE::RenderingAreaInfoKHR105289     RenderingAreaInfoKHR( VkRenderingAreaInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
105290       : RenderingAreaInfoKHR( *reinterpret_cast<RenderingAreaInfoKHR const *>( &rhs ) )
105291     {
105292     }
105293 
105294 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderingAreaInfoKHRVULKAN_HPP_NAMESPACE::RenderingAreaInfoKHR105295     RenderingAreaInfoKHR( uint32_t                                                                                  viewMask_,
105296                           VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & colorAttachmentFormats_,
105297                           VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
105298                           VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
105299                           const void *                 pNext_                   = nullptr )
105300       : pNext( pNext_ )
105301       , viewMask( viewMask_ )
105302       , colorAttachmentCount( static_cast<uint32_t>( colorAttachmentFormats_.size() ) )
105303       , pColorAttachmentFormats( colorAttachmentFormats_.data() )
105304       , depthAttachmentFormat( depthAttachmentFormat_ )
105305       , stencilAttachmentFormat( stencilAttachmentFormat_ )
105306     {
105307     }
105308 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
105309 
105310     RenderingAreaInfoKHR & operator=( RenderingAreaInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105311 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
105312 
operator =VULKAN_HPP_NAMESPACE::RenderingAreaInfoKHR105313     RenderingAreaInfoKHR & operator=( VkRenderingAreaInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
105314     {
105315       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderingAreaInfoKHR const *>( &rhs );
105316       return *this;
105317     }
105318 
105319 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderingAreaInfoKHR105320     VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
105321     {
105322       pNext = pNext_;
105323       return *this;
105324     }
105325 
setViewMaskVULKAN_HPP_NAMESPACE::RenderingAreaInfoKHR105326     VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfoKHR & setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT
105327     {
105328       viewMask = viewMask_;
105329       return *this;
105330     }
105331 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::RenderingAreaInfoKHR105332     VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfoKHR & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
105333     {
105334       colorAttachmentCount = colorAttachmentCount_;
105335       return *this;
105336     }
105337 
105338     VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfoKHR &
setPColorAttachmentFormatsVULKAN_HPP_NAMESPACE::RenderingAreaInfoKHR105339       setPColorAttachmentFormats( const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT
105340     {
105341       pColorAttachmentFormats = pColorAttachmentFormats_;
105342       return *this;
105343     }
105344 
105345 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentFormatsVULKAN_HPP_NAMESPACE::RenderingAreaInfoKHR105346     RenderingAreaInfoKHR & setColorAttachmentFormats(
105347       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & colorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT
105348     {
105349       colorAttachmentCount    = static_cast<uint32_t>( colorAttachmentFormats_.size() );
105350       pColorAttachmentFormats = colorAttachmentFormats_.data();
105351       return *this;
105352     }
105353 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
105354 
setDepthAttachmentFormatVULKAN_HPP_NAMESPACE::RenderingAreaInfoKHR105355     VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfoKHR & setDepthAttachmentFormat( VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT
105356     {
105357       depthAttachmentFormat = depthAttachmentFormat_;
105358       return *this;
105359     }
105360 
setStencilAttachmentFormatVULKAN_HPP_NAMESPACE::RenderingAreaInfoKHR105361     VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfoKHR & setStencilAttachmentFormat( VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT
105362     {
105363       stencilAttachmentFormat = stencilAttachmentFormat_;
105364       return *this;
105365     }
105366 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
105367 
operator VkRenderingAreaInfoKHR const&VULKAN_HPP_NAMESPACE::RenderingAreaInfoKHR105368     operator VkRenderingAreaInfoKHR const &() const VULKAN_HPP_NOEXCEPT
105369     {
105370       return *reinterpret_cast<const VkRenderingAreaInfoKHR *>( this );
105371     }
105372 
operator VkRenderingAreaInfoKHR&VULKAN_HPP_NAMESPACE::RenderingAreaInfoKHR105373     operator VkRenderingAreaInfoKHR &() VULKAN_HPP_NOEXCEPT
105374     {
105375       return *reinterpret_cast<VkRenderingAreaInfoKHR *>( this );
105376     }
105377 
105378 #if defined( VULKAN_HPP_USE_REFLECT )
105379 #  if 14 <= VULKAN_HPP_CPP_VERSION
105380     auto
105381 #  else
105382     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
105383                const void * const &,
105384                uint32_t const &,
105385                uint32_t const &,
105386                const VULKAN_HPP_NAMESPACE::Format * const &,
105387                VULKAN_HPP_NAMESPACE::Format const &,
105388                VULKAN_HPP_NAMESPACE::Format const &>
105389 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderingAreaInfoKHR105390       reflect() const VULKAN_HPP_NOEXCEPT
105391     {
105392       return std::tie( sType, pNext, viewMask, colorAttachmentCount, pColorAttachmentFormats, depthAttachmentFormat, stencilAttachmentFormat );
105393     }
105394 #endif
105395 
105396 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
105397     auto operator<=>( RenderingAreaInfoKHR const & ) const = default;
105398 #else
operator ==VULKAN_HPP_NAMESPACE::RenderingAreaInfoKHR105399     bool operator==( RenderingAreaInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
105400     {
105401 #  if defined( VULKAN_HPP_USE_REFLECT )
105402       return this->reflect() == rhs.reflect();
105403 #  else
105404       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( viewMask == rhs.viewMask ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) &&
105405              ( pColorAttachmentFormats == rhs.pColorAttachmentFormats ) && ( depthAttachmentFormat == rhs.depthAttachmentFormat ) &&
105406              ( stencilAttachmentFormat == rhs.stencilAttachmentFormat );
105407 #  endif
105408     }
105409 
operator !=VULKAN_HPP_NAMESPACE::RenderingAreaInfoKHR105410     bool operator!=( RenderingAreaInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
105411     {
105412       return !operator==( rhs );
105413     }
105414 #endif
105415 
105416   public:
105417     VULKAN_HPP_NAMESPACE::StructureType  sType                   = StructureType::eRenderingAreaInfoKHR;
105418     const void *                         pNext                   = {};
105419     uint32_t                             viewMask                = {};
105420     uint32_t                             colorAttachmentCount    = {};
105421     const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats = {};
105422     VULKAN_HPP_NAMESPACE::Format         depthAttachmentFormat   = VULKAN_HPP_NAMESPACE::Format::eUndefined;
105423     VULKAN_HPP_NAMESPACE::Format         stencilAttachmentFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined;
105424   };
105425 
105426   template <>
105427   struct CppType<StructureType, StructureType::eRenderingAreaInfoKHR>
105428   {
105429     using Type = RenderingAreaInfoKHR;
105430   };
105431 
105432   struct RenderingAttachmentInfo
105433   {
105434     using NativeType = VkRenderingAttachmentInfo;
105435 
105436     static const bool                                  allowDuplicate = false;
105437     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderingAttachmentInfo;
105438 
105439 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderingAttachmentInfoVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo105440     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo( VULKAN_HPP_NAMESPACE::ImageView           imageView_   = {},
105441                                                      VULKAN_HPP_NAMESPACE::ImageLayout         imageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
105442                                                      VULKAN_HPP_NAMESPACE::ResolveModeFlagBits resolveMode_ = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone,
105443                                                      VULKAN_HPP_NAMESPACE::ImageView           resolveImageView_ = {},
105444                                                      VULKAN_HPP_NAMESPACE::ImageLayout      resolveImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
105445                                                      VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_             = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad,
105446                                                      VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_    = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore,
105447                                                      VULKAN_HPP_NAMESPACE::ClearValue        clearValue_ = {},
105448                                                      const void *                            pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
105449       : pNext{ pNext_ }
105450       , imageView{ imageView_ }
105451       , imageLayout{ imageLayout_ }
105452       , resolveMode{ resolveMode_ }
105453       , resolveImageView{ resolveImageView_ }
105454       , resolveImageLayout{ resolveImageLayout_ }
105455       , loadOp{ loadOp_ }
105456       , storeOp{ storeOp_ }
105457       , clearValue{ clearValue_ }
105458     {
105459     }
105460 
105461     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo( RenderingAttachmentInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105462 
RenderingAttachmentInfoVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo105463     RenderingAttachmentInfo( VkRenderingAttachmentInfo const & rhs ) VULKAN_HPP_NOEXCEPT
105464       : RenderingAttachmentInfo( *reinterpret_cast<RenderingAttachmentInfo const *>( &rhs ) )
105465     {
105466     }
105467 
105468     RenderingAttachmentInfo & operator=( RenderingAttachmentInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105469 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
105470 
operator =VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo105471     RenderingAttachmentInfo & operator=( VkRenderingAttachmentInfo const & rhs ) VULKAN_HPP_NOEXCEPT
105472     {
105473       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo const *>( &rhs );
105474       return *this;
105475     }
105476 
105477 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo105478     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
105479     {
105480       pNext = pNext_;
105481       return *this;
105482     }
105483 
setImageViewVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo105484     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT
105485     {
105486       imageView = imageView_;
105487       return *this;
105488     }
105489 
setImageLayoutVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo105490     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ ) VULKAN_HPP_NOEXCEPT
105491     {
105492       imageLayout = imageLayout_;
105493       return *this;
105494     }
105495 
setResolveModeVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo105496     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setResolveMode( VULKAN_HPP_NAMESPACE::ResolveModeFlagBits resolveMode_ ) VULKAN_HPP_NOEXCEPT
105497     {
105498       resolveMode = resolveMode_;
105499       return *this;
105500     }
105501 
setResolveImageViewVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo105502     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setResolveImageView( VULKAN_HPP_NAMESPACE::ImageView resolveImageView_ ) VULKAN_HPP_NOEXCEPT
105503     {
105504       resolveImageView = resolveImageView_;
105505       return *this;
105506     }
105507 
setResolveImageLayoutVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo105508     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setResolveImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout resolveImageLayout_ ) VULKAN_HPP_NOEXCEPT
105509     {
105510       resolveImageLayout = resolveImageLayout_;
105511       return *this;
105512     }
105513 
setLoadOpVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo105514     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ ) VULKAN_HPP_NOEXCEPT
105515     {
105516       loadOp = loadOp_;
105517       return *this;
105518     }
105519 
setStoreOpVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo105520     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ ) VULKAN_HPP_NOEXCEPT
105521     {
105522       storeOp = storeOp_;
105523       return *this;
105524     }
105525 
setClearValueVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo105526     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setClearValue( VULKAN_HPP_NAMESPACE::ClearValue const & clearValue_ ) VULKAN_HPP_NOEXCEPT
105527     {
105528       clearValue = clearValue_;
105529       return *this;
105530     }
105531 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
105532 
operator VkRenderingAttachmentInfo const&VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo105533     operator VkRenderingAttachmentInfo const &() const VULKAN_HPP_NOEXCEPT
105534     {
105535       return *reinterpret_cast<const VkRenderingAttachmentInfo *>( this );
105536     }
105537 
operator VkRenderingAttachmentInfo&VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo105538     operator VkRenderingAttachmentInfo &() VULKAN_HPP_NOEXCEPT
105539     {
105540       return *reinterpret_cast<VkRenderingAttachmentInfo *>( this );
105541     }
105542 
105543 #if defined( VULKAN_HPP_USE_REFLECT )
105544 #  if 14 <= VULKAN_HPP_CPP_VERSION
105545     auto
105546 #  else
105547     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
105548                const void * const &,
105549                VULKAN_HPP_NAMESPACE::ImageView const &,
105550                VULKAN_HPP_NAMESPACE::ImageLayout const &,
105551                VULKAN_HPP_NAMESPACE::ResolveModeFlagBits const &,
105552                VULKAN_HPP_NAMESPACE::ImageView const &,
105553                VULKAN_HPP_NAMESPACE::ImageLayout const &,
105554                VULKAN_HPP_NAMESPACE::AttachmentLoadOp const &,
105555                VULKAN_HPP_NAMESPACE::AttachmentStoreOp const &,
105556                VULKAN_HPP_NAMESPACE::ClearValue const &>
105557 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo105558       reflect() const VULKAN_HPP_NOEXCEPT
105559     {
105560       return std::tie( sType, pNext, imageView, imageLayout, resolveMode, resolveImageView, resolveImageLayout, loadOp, storeOp, clearValue );
105561     }
105562 #endif
105563 
105564   public:
105565     VULKAN_HPP_NAMESPACE::StructureType       sType              = StructureType::eRenderingAttachmentInfo;
105566     const void *                              pNext              = {};
105567     VULKAN_HPP_NAMESPACE::ImageView           imageView          = {};
105568     VULKAN_HPP_NAMESPACE::ImageLayout         imageLayout        = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
105569     VULKAN_HPP_NAMESPACE::ResolveModeFlagBits resolveMode        = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone;
105570     VULKAN_HPP_NAMESPACE::ImageView           resolveImageView   = {};
105571     VULKAN_HPP_NAMESPACE::ImageLayout         resolveImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
105572     VULKAN_HPP_NAMESPACE::AttachmentLoadOp    loadOp             = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad;
105573     VULKAN_HPP_NAMESPACE::AttachmentStoreOp   storeOp            = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore;
105574     VULKAN_HPP_NAMESPACE::ClearValue          clearValue         = {};
105575   };
105576 
105577   template <>
105578   struct CppType<StructureType, StructureType::eRenderingAttachmentInfo>
105579   {
105580     using Type = RenderingAttachmentInfo;
105581   };
105582 
105583   using RenderingAttachmentInfoKHR = RenderingAttachmentInfo;
105584 
105585   struct RenderingAttachmentLocationInfoKHR
105586   {
105587     using NativeType = VkRenderingAttachmentLocationInfoKHR;
105588 
105589     static const bool                                  allowDuplicate = false;
105590     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderingAttachmentLocationInfoKHR;
105591 
105592 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderingAttachmentLocationInfoKHRVULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfoKHR105593     VULKAN_HPP_CONSTEXPR RenderingAttachmentLocationInfoKHR( uint32_t         colorAttachmentCount_      = {},
105594                                                              const uint32_t * pColorAttachmentLocations_ = {},
105595                                                              const void *     pNext_                     = nullptr ) VULKAN_HPP_NOEXCEPT
105596       : pNext{ pNext_ }
105597       , colorAttachmentCount{ colorAttachmentCount_ }
105598       , pColorAttachmentLocations{ pColorAttachmentLocations_ }
105599     {
105600     }
105601 
105602     VULKAN_HPP_CONSTEXPR RenderingAttachmentLocationInfoKHR( RenderingAttachmentLocationInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105603 
RenderingAttachmentLocationInfoKHRVULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfoKHR105604     RenderingAttachmentLocationInfoKHR( VkRenderingAttachmentLocationInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
105605       : RenderingAttachmentLocationInfoKHR( *reinterpret_cast<RenderingAttachmentLocationInfoKHR const *>( &rhs ) )
105606     {
105607     }
105608 
105609 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderingAttachmentLocationInfoKHRVULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfoKHR105610     RenderingAttachmentLocationInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & colorAttachmentLocations_,
105611                                         const void *                                                          pNext_ = nullptr )
105612       : pNext( pNext_ )
105613       , colorAttachmentCount( static_cast<uint32_t>( colorAttachmentLocations_.size() ) )
105614       , pColorAttachmentLocations( colorAttachmentLocations_.data() )
105615     {
105616     }
105617 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
105618 
105619     RenderingAttachmentLocationInfoKHR & operator=( RenderingAttachmentLocationInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105620 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
105621 
operator =VULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfoKHR105622     RenderingAttachmentLocationInfoKHR & operator=( VkRenderingAttachmentLocationInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
105623     {
105624       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfoKHR const *>( &rhs );
105625       return *this;
105626     }
105627 
105628 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfoKHR105629     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentLocationInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
105630     {
105631       pNext = pNext_;
105632       return *this;
105633     }
105634 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfoKHR105635     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentLocationInfoKHR & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
105636     {
105637       colorAttachmentCount = colorAttachmentCount_;
105638       return *this;
105639     }
105640 
setPColorAttachmentLocationsVULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfoKHR105641     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentLocationInfoKHR & setPColorAttachmentLocations( const uint32_t * pColorAttachmentLocations_ ) VULKAN_HPP_NOEXCEPT
105642     {
105643       pColorAttachmentLocations = pColorAttachmentLocations_;
105644       return *this;
105645     }
105646 
105647 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
105648     RenderingAttachmentLocationInfoKHR &
setColorAttachmentLocationsVULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfoKHR105649       setColorAttachmentLocations( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & colorAttachmentLocations_ ) VULKAN_HPP_NOEXCEPT
105650     {
105651       colorAttachmentCount      = static_cast<uint32_t>( colorAttachmentLocations_.size() );
105652       pColorAttachmentLocations = colorAttachmentLocations_.data();
105653       return *this;
105654     }
105655 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
105656 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
105657 
operator VkRenderingAttachmentLocationInfoKHR const&VULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfoKHR105658     operator VkRenderingAttachmentLocationInfoKHR const &() const VULKAN_HPP_NOEXCEPT
105659     {
105660       return *reinterpret_cast<const VkRenderingAttachmentLocationInfoKHR *>( this );
105661     }
105662 
operator VkRenderingAttachmentLocationInfoKHR&VULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfoKHR105663     operator VkRenderingAttachmentLocationInfoKHR &() VULKAN_HPP_NOEXCEPT
105664     {
105665       return *reinterpret_cast<VkRenderingAttachmentLocationInfoKHR *>( this );
105666     }
105667 
105668 #if defined( VULKAN_HPP_USE_REFLECT )
105669 #  if 14 <= VULKAN_HPP_CPP_VERSION
105670     auto
105671 #  else
105672     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const uint32_t * const &>
105673 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfoKHR105674       reflect() const VULKAN_HPP_NOEXCEPT
105675     {
105676       return std::tie( sType, pNext, colorAttachmentCount, pColorAttachmentLocations );
105677     }
105678 #endif
105679 
105680 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
105681     auto operator<=>( RenderingAttachmentLocationInfoKHR const & ) const = default;
105682 #else
operator ==VULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfoKHR105683     bool operator==( RenderingAttachmentLocationInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
105684     {
105685 #  if defined( VULKAN_HPP_USE_REFLECT )
105686       return this->reflect() == rhs.reflect();
105687 #  else
105688       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) &&
105689              ( pColorAttachmentLocations == rhs.pColorAttachmentLocations );
105690 #  endif
105691     }
105692 
operator !=VULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfoKHR105693     bool operator!=( RenderingAttachmentLocationInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
105694     {
105695       return !operator==( rhs );
105696     }
105697 #endif
105698 
105699   public:
105700     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::eRenderingAttachmentLocationInfoKHR;
105701     const void *                        pNext                     = {};
105702     uint32_t                            colorAttachmentCount      = {};
105703     const uint32_t *                    pColorAttachmentLocations = {};
105704   };
105705 
105706   template <>
105707   struct CppType<StructureType, StructureType::eRenderingAttachmentLocationInfoKHR>
105708   {
105709     using Type = RenderingAttachmentLocationInfoKHR;
105710   };
105711 
105712   struct RenderingFragmentDensityMapAttachmentInfoEXT
105713   {
105714     using NativeType = VkRenderingFragmentDensityMapAttachmentInfoEXT;
105715 
105716     static const bool                                  allowDuplicate = false;
105717     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderingFragmentDensityMapAttachmentInfoEXT;
105718 
105719 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
105720     VULKAN_HPP_CONSTEXPR
RenderingFragmentDensityMapAttachmentInfoEXTVULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT105721       RenderingFragmentDensityMapAttachmentInfoEXT( VULKAN_HPP_NAMESPACE::ImageView   imageView_   = {},
105722                                                     VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
105723                                                     const void *                      pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
105724       : pNext{ pNext_ }
105725       , imageView{ imageView_ }
105726       , imageLayout{ imageLayout_ }
105727     {
105728     }
105729 
105730     VULKAN_HPP_CONSTEXPR RenderingFragmentDensityMapAttachmentInfoEXT( RenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105731 
RenderingFragmentDensityMapAttachmentInfoEXTVULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT105732     RenderingFragmentDensityMapAttachmentInfoEXT( VkRenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
105733       : RenderingFragmentDensityMapAttachmentInfoEXT( *reinterpret_cast<RenderingFragmentDensityMapAttachmentInfoEXT const *>( &rhs ) )
105734     {
105735     }
105736 
105737     RenderingFragmentDensityMapAttachmentInfoEXT & operator=( RenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105738 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
105739 
operator =VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT105740     RenderingFragmentDensityMapAttachmentInfoEXT & operator=( VkRenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
105741     {
105742       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT const *>( &rhs );
105743       return *this;
105744     }
105745 
105746 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT105747     VULKAN_HPP_CONSTEXPR_14 RenderingFragmentDensityMapAttachmentInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
105748     {
105749       pNext = pNext_;
105750       return *this;
105751     }
105752 
setImageViewVULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT105753     VULKAN_HPP_CONSTEXPR_14 RenderingFragmentDensityMapAttachmentInfoEXT & setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT
105754     {
105755       imageView = imageView_;
105756       return *this;
105757     }
105758 
setImageLayoutVULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT105759     VULKAN_HPP_CONSTEXPR_14 RenderingFragmentDensityMapAttachmentInfoEXT & setImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ ) VULKAN_HPP_NOEXCEPT
105760     {
105761       imageLayout = imageLayout_;
105762       return *this;
105763     }
105764 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
105765 
operator VkRenderingFragmentDensityMapAttachmentInfoEXT const&VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT105766     operator VkRenderingFragmentDensityMapAttachmentInfoEXT const &() const VULKAN_HPP_NOEXCEPT
105767     {
105768       return *reinterpret_cast<const VkRenderingFragmentDensityMapAttachmentInfoEXT *>( this );
105769     }
105770 
operator VkRenderingFragmentDensityMapAttachmentInfoEXT&VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT105771     operator VkRenderingFragmentDensityMapAttachmentInfoEXT &() VULKAN_HPP_NOEXCEPT
105772     {
105773       return *reinterpret_cast<VkRenderingFragmentDensityMapAttachmentInfoEXT *>( this );
105774     }
105775 
105776 #if defined( VULKAN_HPP_USE_REFLECT )
105777 #  if 14 <= VULKAN_HPP_CPP_VERSION
105778     auto
105779 #  else
105780     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
105781                const void * const &,
105782                VULKAN_HPP_NAMESPACE::ImageView const &,
105783                VULKAN_HPP_NAMESPACE::ImageLayout const &>
105784 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT105785       reflect() const VULKAN_HPP_NOEXCEPT
105786     {
105787       return std::tie( sType, pNext, imageView, imageLayout );
105788     }
105789 #endif
105790 
105791 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
105792     auto operator<=>( RenderingFragmentDensityMapAttachmentInfoEXT const & ) const = default;
105793 #else
operator ==VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT105794     bool operator==( RenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
105795     {
105796 #  if defined( VULKAN_HPP_USE_REFLECT )
105797       return this->reflect() == rhs.reflect();
105798 #  else
105799       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageView == rhs.imageView ) && ( imageLayout == rhs.imageLayout );
105800 #  endif
105801     }
105802 
operator !=VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT105803     bool operator!=( RenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
105804     {
105805       return !operator==( rhs );
105806     }
105807 #endif
105808 
105809   public:
105810     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eRenderingFragmentDensityMapAttachmentInfoEXT;
105811     const void *                        pNext       = {};
105812     VULKAN_HPP_NAMESPACE::ImageView     imageView   = {};
105813     VULKAN_HPP_NAMESPACE::ImageLayout   imageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
105814   };
105815 
105816   template <>
105817   struct CppType<StructureType, StructureType::eRenderingFragmentDensityMapAttachmentInfoEXT>
105818   {
105819     using Type = RenderingFragmentDensityMapAttachmentInfoEXT;
105820   };
105821 
105822   struct RenderingFragmentShadingRateAttachmentInfoKHR
105823   {
105824     using NativeType = VkRenderingFragmentShadingRateAttachmentInfoKHR;
105825 
105826     static const bool                                  allowDuplicate = false;
105827     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderingFragmentShadingRateAttachmentInfoKHR;
105828 
105829 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
105830     VULKAN_HPP_CONSTEXPR
RenderingFragmentShadingRateAttachmentInfoKHRVULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR105831       RenderingFragmentShadingRateAttachmentInfoKHR( VULKAN_HPP_NAMESPACE::ImageView   imageView_   = {},
105832                                                      VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
105833                                                      VULKAN_HPP_NAMESPACE::Extent2D    shadingRateAttachmentTexelSize_ = {},
105834                                                      const void *                      pNext_                          = nullptr ) VULKAN_HPP_NOEXCEPT
105835       : pNext{ pNext_ }
105836       , imageView{ imageView_ }
105837       , imageLayout{ imageLayout_ }
105838       , shadingRateAttachmentTexelSize{ shadingRateAttachmentTexelSize_ }
105839     {
105840     }
105841 
105842     VULKAN_HPP_CONSTEXPR
105843       RenderingFragmentShadingRateAttachmentInfoKHR( RenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105844 
RenderingFragmentShadingRateAttachmentInfoKHRVULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR105845     RenderingFragmentShadingRateAttachmentInfoKHR( VkRenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
105846       : RenderingFragmentShadingRateAttachmentInfoKHR( *reinterpret_cast<RenderingFragmentShadingRateAttachmentInfoKHR const *>( &rhs ) )
105847     {
105848     }
105849 
105850     RenderingFragmentShadingRateAttachmentInfoKHR & operator=( RenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105851 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
105852 
operator =VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR105853     RenderingFragmentShadingRateAttachmentInfoKHR & operator=( VkRenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
105854     {
105855       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR const *>( &rhs );
105856       return *this;
105857     }
105858 
105859 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR105860     VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
105861     {
105862       pNext = pNext_;
105863       return *this;
105864     }
105865 
setImageViewVULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR105866     VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR & setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT
105867     {
105868       imageView = imageView_;
105869       return *this;
105870     }
105871 
setImageLayoutVULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR105872     VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR & setImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ ) VULKAN_HPP_NOEXCEPT
105873     {
105874       imageLayout = imageLayout_;
105875       return *this;
105876     }
105877 
105878     VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR &
setShadingRateAttachmentTexelSizeVULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR105879       setShadingRateAttachmentTexelSize( VULKAN_HPP_NAMESPACE::Extent2D const & shadingRateAttachmentTexelSize_ ) VULKAN_HPP_NOEXCEPT
105880     {
105881       shadingRateAttachmentTexelSize = shadingRateAttachmentTexelSize_;
105882       return *this;
105883     }
105884 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
105885 
operator VkRenderingFragmentShadingRateAttachmentInfoKHR const&VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR105886     operator VkRenderingFragmentShadingRateAttachmentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
105887     {
105888       return *reinterpret_cast<const VkRenderingFragmentShadingRateAttachmentInfoKHR *>( this );
105889     }
105890 
operator VkRenderingFragmentShadingRateAttachmentInfoKHR&VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR105891     operator VkRenderingFragmentShadingRateAttachmentInfoKHR &() VULKAN_HPP_NOEXCEPT
105892     {
105893       return *reinterpret_cast<VkRenderingFragmentShadingRateAttachmentInfoKHR *>( this );
105894     }
105895 
105896 #if defined( VULKAN_HPP_USE_REFLECT )
105897 #  if 14 <= VULKAN_HPP_CPP_VERSION
105898     auto
105899 #  else
105900     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
105901                const void * const &,
105902                VULKAN_HPP_NAMESPACE::ImageView const &,
105903                VULKAN_HPP_NAMESPACE::ImageLayout const &,
105904                VULKAN_HPP_NAMESPACE::Extent2D const &>
105905 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR105906       reflect() const VULKAN_HPP_NOEXCEPT
105907     {
105908       return std::tie( sType, pNext, imageView, imageLayout, shadingRateAttachmentTexelSize );
105909     }
105910 #endif
105911 
105912 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
105913     auto operator<=>( RenderingFragmentShadingRateAttachmentInfoKHR const & ) const = default;
105914 #else
operator ==VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR105915     bool operator==( RenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
105916     {
105917 #  if defined( VULKAN_HPP_USE_REFLECT )
105918       return this->reflect() == rhs.reflect();
105919 #  else
105920       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageView == rhs.imageView ) && ( imageLayout == rhs.imageLayout ) &&
105921              ( shadingRateAttachmentTexelSize == rhs.shadingRateAttachmentTexelSize );
105922 #  endif
105923     }
105924 
operator !=VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR105925     bool operator!=( RenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
105926     {
105927       return !operator==( rhs );
105928     }
105929 #endif
105930 
105931   public:
105932     VULKAN_HPP_NAMESPACE::StructureType sType                          = StructureType::eRenderingFragmentShadingRateAttachmentInfoKHR;
105933     const void *                        pNext                          = {};
105934     VULKAN_HPP_NAMESPACE::ImageView     imageView                      = {};
105935     VULKAN_HPP_NAMESPACE::ImageLayout   imageLayout                    = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
105936     VULKAN_HPP_NAMESPACE::Extent2D      shadingRateAttachmentTexelSize = {};
105937   };
105938 
105939   template <>
105940   struct CppType<StructureType, StructureType::eRenderingFragmentShadingRateAttachmentInfoKHR>
105941   {
105942     using Type = RenderingFragmentShadingRateAttachmentInfoKHR;
105943   };
105944 
105945   struct RenderingInfo
105946   {
105947     using NativeType = VkRenderingInfo;
105948 
105949     static const bool                                  allowDuplicate = false;
105950     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderingInfo;
105951 
105952 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderingInfoVULKAN_HPP_NAMESPACE::RenderingInfo105953     VULKAN_HPP_CONSTEXPR_14 RenderingInfo( VULKAN_HPP_NAMESPACE::RenderingFlags                  flags_                = {},
105954                                            VULKAN_HPP_NAMESPACE::Rect2D                          renderArea_           = {},
105955                                            uint32_t                                              layerCount_           = {},
105956                                            uint32_t                                              viewMask_             = {},
105957                                            uint32_t                                              colorAttachmentCount_ = {},
105958                                            const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pColorAttachments_    = {},
105959                                            const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pDepthAttachment_     = {},
105960                                            const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pStencilAttachment_   = {},
105961                                            const void *                                          pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
105962       : pNext{ pNext_ }
105963       , flags{ flags_ }
105964       , renderArea{ renderArea_ }
105965       , layerCount{ layerCount_ }
105966       , viewMask{ viewMask_ }
105967       , colorAttachmentCount{ colorAttachmentCount_ }
105968       , pColorAttachments{ pColorAttachments_ }
105969       , pDepthAttachment{ pDepthAttachment_ }
105970       , pStencilAttachment{ pStencilAttachment_ }
105971     {
105972     }
105973 
105974     VULKAN_HPP_CONSTEXPR_14 RenderingInfo( RenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
105975 
RenderingInfoVULKAN_HPP_NAMESPACE::RenderingInfo105976     RenderingInfo( VkRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT : RenderingInfo( *reinterpret_cast<RenderingInfo const *>( &rhs ) ) {}
105977 
105978 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderingInfoVULKAN_HPP_NAMESPACE::RenderingInfo105979     RenderingInfo( VULKAN_HPP_NAMESPACE::RenderingFlags                                                                       flags_,
105980                    VULKAN_HPP_NAMESPACE::Rect2D                                                                               renderArea_,
105981                    uint32_t                                                                                                   layerCount_,
105982                    uint32_t                                                                                                   viewMask_,
105983                    VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo> const & colorAttachments_,
105984                    const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo *                                                      pDepthAttachment_   = {},
105985                    const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo *                                                      pStencilAttachment_ = {},
105986                    const void *                                                                                               pNext_              = nullptr )
105987       : pNext( pNext_ )
105988       , flags( flags_ )
105989       , renderArea( renderArea_ )
105990       , layerCount( layerCount_ )
105991       , viewMask( viewMask_ )
105992       , colorAttachmentCount( static_cast<uint32_t>( colorAttachments_.size() ) )
105993       , pColorAttachments( colorAttachments_.data() )
105994       , pDepthAttachment( pDepthAttachment_ )
105995       , pStencilAttachment( pStencilAttachment_ )
105996     {
105997     }
105998 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
105999 
106000     RenderingInfo & operator=( RenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106001 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
106002 
operator =VULKAN_HPP_NAMESPACE::RenderingInfo106003     RenderingInfo & operator=( VkRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT
106004     {
106005       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderingInfo const *>( &rhs );
106006       return *this;
106007     }
106008 
106009 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderingInfo106010     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
106011     {
106012       pNext = pNext_;
106013       return *this;
106014     }
106015 
setFlagsVULKAN_HPP_NAMESPACE::RenderingInfo106016     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setFlags( VULKAN_HPP_NAMESPACE::RenderingFlags flags_ ) VULKAN_HPP_NOEXCEPT
106017     {
106018       flags = flags_;
106019       return *this;
106020     }
106021 
setRenderAreaVULKAN_HPP_NAMESPACE::RenderingInfo106022     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setRenderArea( VULKAN_HPP_NAMESPACE::Rect2D const & renderArea_ ) VULKAN_HPP_NOEXCEPT
106023     {
106024       renderArea = renderArea_;
106025       return *this;
106026     }
106027 
setLayerCountVULKAN_HPP_NAMESPACE::RenderingInfo106028     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
106029     {
106030       layerCount = layerCount_;
106031       return *this;
106032     }
106033 
setViewMaskVULKAN_HPP_NAMESPACE::RenderingInfo106034     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT
106035     {
106036       viewMask = viewMask_;
106037       return *this;
106038     }
106039 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::RenderingInfo106040     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
106041     {
106042       colorAttachmentCount = colorAttachmentCount_;
106043       return *this;
106044     }
106045 
setPColorAttachmentsVULKAN_HPP_NAMESPACE::RenderingInfo106046     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setPColorAttachments( const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pColorAttachments_ ) VULKAN_HPP_NOEXCEPT
106047     {
106048       pColorAttachments = pColorAttachments_;
106049       return *this;
106050     }
106051 
106052 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentsVULKAN_HPP_NAMESPACE::RenderingInfo106053     RenderingInfo & setColorAttachments(
106054       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo> const & colorAttachments_ ) VULKAN_HPP_NOEXCEPT
106055     {
106056       colorAttachmentCount = static_cast<uint32_t>( colorAttachments_.size() );
106057       pColorAttachments    = colorAttachments_.data();
106058       return *this;
106059     }
106060 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
106061 
setPDepthAttachmentVULKAN_HPP_NAMESPACE::RenderingInfo106062     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setPDepthAttachment( const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pDepthAttachment_ ) VULKAN_HPP_NOEXCEPT
106063     {
106064       pDepthAttachment = pDepthAttachment_;
106065       return *this;
106066     }
106067 
106068     VULKAN_HPP_CONSTEXPR_14 RenderingInfo &
setPStencilAttachmentVULKAN_HPP_NAMESPACE::RenderingInfo106069       setPStencilAttachment( const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pStencilAttachment_ ) VULKAN_HPP_NOEXCEPT
106070     {
106071       pStencilAttachment = pStencilAttachment_;
106072       return *this;
106073     }
106074 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
106075 
operator VkRenderingInfo const&VULKAN_HPP_NAMESPACE::RenderingInfo106076     operator VkRenderingInfo const &() const VULKAN_HPP_NOEXCEPT
106077     {
106078       return *reinterpret_cast<const VkRenderingInfo *>( this );
106079     }
106080 
operator VkRenderingInfo&VULKAN_HPP_NAMESPACE::RenderingInfo106081     operator VkRenderingInfo &() VULKAN_HPP_NOEXCEPT
106082     {
106083       return *reinterpret_cast<VkRenderingInfo *>( this );
106084     }
106085 
106086 #if defined( VULKAN_HPP_USE_REFLECT )
106087 #  if 14 <= VULKAN_HPP_CPP_VERSION
106088     auto
106089 #  else
106090     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
106091                const void * const &,
106092                VULKAN_HPP_NAMESPACE::RenderingFlags const &,
106093                VULKAN_HPP_NAMESPACE::Rect2D const &,
106094                uint32_t const &,
106095                uint32_t const &,
106096                uint32_t const &,
106097                const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * const &,
106098                const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * const &,
106099                const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * const &>
106100 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderingInfo106101       reflect() const VULKAN_HPP_NOEXCEPT
106102     {
106103       return std::tie( sType, pNext, flags, renderArea, layerCount, viewMask, colorAttachmentCount, pColorAttachments, pDepthAttachment, pStencilAttachment );
106104     }
106105 #endif
106106 
106107 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
106108     auto operator<=>( RenderingInfo const & ) const = default;
106109 #else
operator ==VULKAN_HPP_NAMESPACE::RenderingInfo106110     bool operator==( RenderingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
106111     {
106112 #  if defined( VULKAN_HPP_USE_REFLECT )
106113       return this->reflect() == rhs.reflect();
106114 #  else
106115       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( renderArea == rhs.renderArea ) &&
106116              ( layerCount == rhs.layerCount ) && ( viewMask == rhs.viewMask ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) &&
106117              ( pColorAttachments == rhs.pColorAttachments ) && ( pDepthAttachment == rhs.pDepthAttachment ) && ( pStencilAttachment == rhs.pStencilAttachment );
106118 #  endif
106119     }
106120 
operator !=VULKAN_HPP_NAMESPACE::RenderingInfo106121     bool operator!=( RenderingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
106122     {
106123       return !operator==( rhs );
106124     }
106125 #endif
106126 
106127   public:
106128     VULKAN_HPP_NAMESPACE::StructureType                   sType                = StructureType::eRenderingInfo;
106129     const void *                                          pNext                = {};
106130     VULKAN_HPP_NAMESPACE::RenderingFlags                  flags                = {};
106131     VULKAN_HPP_NAMESPACE::Rect2D                          renderArea           = {};
106132     uint32_t                                              layerCount           = {};
106133     uint32_t                                              viewMask             = {};
106134     uint32_t                                              colorAttachmentCount = {};
106135     const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pColorAttachments    = {};
106136     const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pDepthAttachment     = {};
106137     const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pStencilAttachment   = {};
106138   };
106139 
106140   template <>
106141   struct CppType<StructureType, StructureType::eRenderingInfo>
106142   {
106143     using Type = RenderingInfo;
106144   };
106145 
106146   using RenderingInfoKHR = RenderingInfo;
106147 
106148   struct RenderingInputAttachmentIndexInfoKHR
106149   {
106150     using NativeType = VkRenderingInputAttachmentIndexInfoKHR;
106151 
106152     static const bool                                  allowDuplicate = false;
106153     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eRenderingInputAttachmentIndexInfoKHR;
106154 
106155 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderingInputAttachmentIndexInfoKHRVULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfoKHR106156     VULKAN_HPP_CONSTEXPR RenderingInputAttachmentIndexInfoKHR( uint32_t         colorAttachmentCount_         = {},
106157                                                                const uint32_t * pColorAttachmentInputIndices_ = {},
106158                                                                const uint32_t * pDepthInputAttachmentIndex_   = {},
106159                                                                const uint32_t * pStencilInputAttachmentIndex_ = {},
106160                                                                const void *     pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
106161       : pNext{ pNext_ }
106162       , colorAttachmentCount{ colorAttachmentCount_ }
106163       , pColorAttachmentInputIndices{ pColorAttachmentInputIndices_ }
106164       , pDepthInputAttachmentIndex{ pDepthInputAttachmentIndex_ }
106165       , pStencilInputAttachmentIndex{ pStencilInputAttachmentIndex_ }
106166     {
106167     }
106168 
106169     VULKAN_HPP_CONSTEXPR RenderingInputAttachmentIndexInfoKHR( RenderingInputAttachmentIndexInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106170 
RenderingInputAttachmentIndexInfoKHRVULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfoKHR106171     RenderingInputAttachmentIndexInfoKHR( VkRenderingInputAttachmentIndexInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
106172       : RenderingInputAttachmentIndexInfoKHR( *reinterpret_cast<RenderingInputAttachmentIndexInfoKHR const *>( &rhs ) )
106173     {
106174     }
106175 
106176 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderingInputAttachmentIndexInfoKHRVULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfoKHR106177     RenderingInputAttachmentIndexInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & colorAttachmentInputIndices_,
106178                                           const uint32_t *                                                      pDepthInputAttachmentIndex_   = {},
106179                                           const uint32_t *                                                      pStencilInputAttachmentIndex_ = {},
106180                                           const void *                                                          pNext_                        = nullptr )
106181       : pNext( pNext_ )
106182       , colorAttachmentCount( static_cast<uint32_t>( colorAttachmentInputIndices_.size() ) )
106183       , pColorAttachmentInputIndices( colorAttachmentInputIndices_.data() )
106184       , pDepthInputAttachmentIndex( pDepthInputAttachmentIndex_ )
106185       , pStencilInputAttachmentIndex( pStencilInputAttachmentIndex_ )
106186     {
106187     }
106188 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
106189 
106190     RenderingInputAttachmentIndexInfoKHR & operator=( RenderingInputAttachmentIndexInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106191 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
106192 
operator =VULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfoKHR106193     RenderingInputAttachmentIndexInfoKHR & operator=( VkRenderingInputAttachmentIndexInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
106194     {
106195       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfoKHR const *>( &rhs );
106196       return *this;
106197     }
106198 
106199 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfoKHR106200     VULKAN_HPP_CONSTEXPR_14 RenderingInputAttachmentIndexInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
106201     {
106202       pNext = pNext_;
106203       return *this;
106204     }
106205 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfoKHR106206     VULKAN_HPP_CONSTEXPR_14 RenderingInputAttachmentIndexInfoKHR & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
106207     {
106208       colorAttachmentCount = colorAttachmentCount_;
106209       return *this;
106210     }
106211 
106212     VULKAN_HPP_CONSTEXPR_14 RenderingInputAttachmentIndexInfoKHR &
setPColorAttachmentInputIndicesVULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfoKHR106213       setPColorAttachmentInputIndices( const uint32_t * pColorAttachmentInputIndices_ ) VULKAN_HPP_NOEXCEPT
106214     {
106215       pColorAttachmentInputIndices = pColorAttachmentInputIndices_;
106216       return *this;
106217     }
106218 
106219 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
106220     RenderingInputAttachmentIndexInfoKHR &
setColorAttachmentInputIndicesVULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfoKHR106221       setColorAttachmentInputIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & colorAttachmentInputIndices_ ) VULKAN_HPP_NOEXCEPT
106222     {
106223       colorAttachmentCount         = static_cast<uint32_t>( colorAttachmentInputIndices_.size() );
106224       pColorAttachmentInputIndices = colorAttachmentInputIndices_.data();
106225       return *this;
106226     }
106227 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
106228 
106229     VULKAN_HPP_CONSTEXPR_14 RenderingInputAttachmentIndexInfoKHR &
setPDepthInputAttachmentIndexVULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfoKHR106230       setPDepthInputAttachmentIndex( const uint32_t * pDepthInputAttachmentIndex_ ) VULKAN_HPP_NOEXCEPT
106231     {
106232       pDepthInputAttachmentIndex = pDepthInputAttachmentIndex_;
106233       return *this;
106234     }
106235 
106236     VULKAN_HPP_CONSTEXPR_14 RenderingInputAttachmentIndexInfoKHR &
setPStencilInputAttachmentIndexVULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfoKHR106237       setPStencilInputAttachmentIndex( const uint32_t * pStencilInputAttachmentIndex_ ) VULKAN_HPP_NOEXCEPT
106238     {
106239       pStencilInputAttachmentIndex = pStencilInputAttachmentIndex_;
106240       return *this;
106241     }
106242 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
106243 
operator VkRenderingInputAttachmentIndexInfoKHR const&VULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfoKHR106244     operator VkRenderingInputAttachmentIndexInfoKHR const &() const VULKAN_HPP_NOEXCEPT
106245     {
106246       return *reinterpret_cast<const VkRenderingInputAttachmentIndexInfoKHR *>( this );
106247     }
106248 
operator VkRenderingInputAttachmentIndexInfoKHR&VULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfoKHR106249     operator VkRenderingInputAttachmentIndexInfoKHR &() VULKAN_HPP_NOEXCEPT
106250     {
106251       return *reinterpret_cast<VkRenderingInputAttachmentIndexInfoKHR *>( this );
106252     }
106253 
106254 #if defined( VULKAN_HPP_USE_REFLECT )
106255 #  if 14 <= VULKAN_HPP_CPP_VERSION
106256     auto
106257 #  else
106258     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
106259                const void * const &,
106260                uint32_t const &,
106261                const uint32_t * const &,
106262                const uint32_t * const &,
106263                const uint32_t * const &>
106264 #  endif
reflectVULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfoKHR106265       reflect() const VULKAN_HPP_NOEXCEPT
106266     {
106267       return std::tie( sType, pNext, colorAttachmentCount, pColorAttachmentInputIndices, pDepthInputAttachmentIndex, pStencilInputAttachmentIndex );
106268     }
106269 #endif
106270 
106271 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
106272     auto operator<=>( RenderingInputAttachmentIndexInfoKHR const & ) const = default;
106273 #else
operator ==VULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfoKHR106274     bool operator==( RenderingInputAttachmentIndexInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
106275     {
106276 #  if defined( VULKAN_HPP_USE_REFLECT )
106277       return this->reflect() == rhs.reflect();
106278 #  else
106279       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) &&
106280              ( pColorAttachmentInputIndices == rhs.pColorAttachmentInputIndices ) && ( pDepthInputAttachmentIndex == rhs.pDepthInputAttachmentIndex ) &&
106281              ( pStencilInputAttachmentIndex == rhs.pStencilInputAttachmentIndex );
106282 #  endif
106283     }
106284 
operator !=VULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfoKHR106285     bool operator!=( RenderingInputAttachmentIndexInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
106286     {
106287       return !operator==( rhs );
106288     }
106289 #endif
106290 
106291   public:
106292     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::eRenderingInputAttachmentIndexInfoKHR;
106293     const void *                        pNext                        = {};
106294     uint32_t                            colorAttachmentCount         = {};
106295     const uint32_t *                    pColorAttachmentInputIndices = {};
106296     const uint32_t *                    pDepthInputAttachmentIndex   = {};
106297     const uint32_t *                    pStencilInputAttachmentIndex = {};
106298   };
106299 
106300   template <>
106301   struct CppType<StructureType, StructureType::eRenderingInputAttachmentIndexInfoKHR>
106302   {
106303     using Type = RenderingInputAttachmentIndexInfoKHR;
106304   };
106305 
106306   struct ResolveImageInfo2
106307   {
106308     using NativeType = VkResolveImageInfo2;
106309 
106310     static const bool                                  allowDuplicate = false;
106311     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eResolveImageInfo2;
106312 
106313 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ResolveImageInfo2VULKAN_HPP_NAMESPACE::ResolveImageInfo2106314     VULKAN_HPP_CONSTEXPR ResolveImageInfo2( VULKAN_HPP_NAMESPACE::Image                 srcImage_       = {},
106315                                             VULKAN_HPP_NAMESPACE::ImageLayout           srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
106316                                             VULKAN_HPP_NAMESPACE::Image                 dstImage_       = {},
106317                                             VULKAN_HPP_NAMESPACE::ImageLayout           dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined,
106318                                             uint32_t                                    regionCount_    = {},
106319                                             const VULKAN_HPP_NAMESPACE::ImageResolve2 * pRegions_       = {},
106320                                             const void *                                pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
106321       : pNext{ pNext_ }
106322       , srcImage{ srcImage_ }
106323       , srcImageLayout{ srcImageLayout_ }
106324       , dstImage{ dstImage_ }
106325       , dstImageLayout{ dstImageLayout_ }
106326       , regionCount{ regionCount_ }
106327       , pRegions{ pRegions_ }
106328     {
106329     }
106330 
106331     VULKAN_HPP_CONSTEXPR ResolveImageInfo2( ResolveImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106332 
ResolveImageInfo2VULKAN_HPP_NAMESPACE::ResolveImageInfo2106333     ResolveImageInfo2( VkResolveImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT : ResolveImageInfo2( *reinterpret_cast<ResolveImageInfo2 const *>( &rhs ) ) {}
106334 
106335 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ResolveImageInfo2VULKAN_HPP_NAMESPACE::ResolveImageInfo2106336     ResolveImageInfo2( VULKAN_HPP_NAMESPACE::Image                                                                      srcImage_,
106337                        VULKAN_HPP_NAMESPACE::ImageLayout                                                                srcImageLayout_,
106338                        VULKAN_HPP_NAMESPACE::Image                                                                      dstImage_,
106339                        VULKAN_HPP_NAMESPACE::ImageLayout                                                                dstImageLayout_,
106340                        VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageResolve2> const & regions_,
106341                        const void *                                                                                     pNext_ = nullptr )
106342       : pNext( pNext_ )
106343       , srcImage( srcImage_ )
106344       , srcImageLayout( srcImageLayout_ )
106345       , dstImage( dstImage_ )
106346       , dstImageLayout( dstImageLayout_ )
106347       , regionCount( static_cast<uint32_t>( regions_.size() ) )
106348       , pRegions( regions_.data() )
106349     {
106350     }
106351 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
106352 
106353     ResolveImageInfo2 & operator=( ResolveImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106354 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
106355 
operator =VULKAN_HPP_NAMESPACE::ResolveImageInfo2106356     ResolveImageInfo2 & operator=( VkResolveImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
106357     {
106358       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ResolveImageInfo2 const *>( &rhs );
106359       return *this;
106360     }
106361 
106362 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ResolveImageInfo2106363     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
106364     {
106365       pNext = pNext_;
106366       return *this;
106367     }
106368 
setSrcImageVULKAN_HPP_NAMESPACE::ResolveImageInfo2106369     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT
106370     {
106371       srcImage = srcImage_;
106372       return *this;
106373     }
106374 
setSrcImageLayoutVULKAN_HPP_NAMESPACE::ResolveImageInfo2106375     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT
106376     {
106377       srcImageLayout = srcImageLayout_;
106378       return *this;
106379     }
106380 
setDstImageVULKAN_HPP_NAMESPACE::ResolveImageInfo2106381     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT
106382     {
106383       dstImage = dstImage_;
106384       return *this;
106385     }
106386 
setDstImageLayoutVULKAN_HPP_NAMESPACE::ResolveImageInfo2106387     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT
106388     {
106389       dstImageLayout = dstImageLayout_;
106390       return *this;
106391     }
106392 
setRegionCountVULKAN_HPP_NAMESPACE::ResolveImageInfo2106393     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
106394     {
106395       regionCount = regionCount_;
106396       return *this;
106397     }
106398 
setPRegionsVULKAN_HPP_NAMESPACE::ResolveImageInfo2106399     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setPRegions( const VULKAN_HPP_NAMESPACE::ImageResolve2 * pRegions_ ) VULKAN_HPP_NOEXCEPT
106400     {
106401       pRegions = pRegions_;
106402       return *this;
106403     }
106404 
106405 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
106406     ResolveImageInfo2 &
setRegionsVULKAN_HPP_NAMESPACE::ResolveImageInfo2106407       setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageResolve2> const & regions_ ) VULKAN_HPP_NOEXCEPT
106408     {
106409       regionCount = static_cast<uint32_t>( regions_.size() );
106410       pRegions    = regions_.data();
106411       return *this;
106412     }
106413 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
106414 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
106415 
operator VkResolveImageInfo2 const&VULKAN_HPP_NAMESPACE::ResolveImageInfo2106416     operator VkResolveImageInfo2 const &() const VULKAN_HPP_NOEXCEPT
106417     {
106418       return *reinterpret_cast<const VkResolveImageInfo2 *>( this );
106419     }
106420 
operator VkResolveImageInfo2&VULKAN_HPP_NAMESPACE::ResolveImageInfo2106421     operator VkResolveImageInfo2 &() VULKAN_HPP_NOEXCEPT
106422     {
106423       return *reinterpret_cast<VkResolveImageInfo2 *>( this );
106424     }
106425 
106426 #if defined( VULKAN_HPP_USE_REFLECT )
106427 #  if 14 <= VULKAN_HPP_CPP_VERSION
106428     auto
106429 #  else
106430     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
106431                const void * const &,
106432                VULKAN_HPP_NAMESPACE::Image const &,
106433                VULKAN_HPP_NAMESPACE::ImageLayout const &,
106434                VULKAN_HPP_NAMESPACE::Image const &,
106435                VULKAN_HPP_NAMESPACE::ImageLayout const &,
106436                uint32_t const &,
106437                const VULKAN_HPP_NAMESPACE::ImageResolve2 * const &>
106438 #  endif
reflectVULKAN_HPP_NAMESPACE::ResolveImageInfo2106439       reflect() const VULKAN_HPP_NOEXCEPT
106440     {
106441       return std::tie( sType, pNext, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions );
106442     }
106443 #endif
106444 
106445 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
106446     auto operator<=>( ResolveImageInfo2 const & ) const = default;
106447 #else
operator ==VULKAN_HPP_NAMESPACE::ResolveImageInfo2106448     bool operator==( ResolveImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
106449     {
106450 #  if defined( VULKAN_HPP_USE_REFLECT )
106451       return this->reflect() == rhs.reflect();
106452 #  else
106453       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcImage == rhs.srcImage ) && ( srcImageLayout == rhs.srcImageLayout ) &&
106454              ( dstImage == rhs.dstImage ) && ( dstImageLayout == rhs.dstImageLayout ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions );
106455 #  endif
106456     }
106457 
operator !=VULKAN_HPP_NAMESPACE::ResolveImageInfo2106458     bool operator!=( ResolveImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
106459     {
106460       return !operator==( rhs );
106461     }
106462 #endif
106463 
106464   public:
106465     VULKAN_HPP_NAMESPACE::StructureType         sType          = StructureType::eResolveImageInfo2;
106466     const void *                                pNext          = {};
106467     VULKAN_HPP_NAMESPACE::Image                 srcImage       = {};
106468     VULKAN_HPP_NAMESPACE::ImageLayout           srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
106469     VULKAN_HPP_NAMESPACE::Image                 dstImage       = {};
106470     VULKAN_HPP_NAMESPACE::ImageLayout           dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
106471     uint32_t                                    regionCount    = {};
106472     const VULKAN_HPP_NAMESPACE::ImageResolve2 * pRegions       = {};
106473   };
106474 
106475   template <>
106476   struct CppType<StructureType, StructureType::eResolveImageInfo2>
106477   {
106478     using Type = ResolveImageInfo2;
106479   };
106480 
106481   using ResolveImageInfo2KHR = ResolveImageInfo2;
106482 
106483   struct SamplerBlockMatchWindowCreateInfoQCOM
106484   {
106485     using NativeType = VkSamplerBlockMatchWindowCreateInfoQCOM;
106486 
106487     static const bool                                  allowDuplicate = false;
106488     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerBlockMatchWindowCreateInfoQCOM;
106489 
106490 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerBlockMatchWindowCreateInfoQCOMVULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM106491     VULKAN_HPP_CONSTEXPR SamplerBlockMatchWindowCreateInfoQCOM(
106492       VULKAN_HPP_NAMESPACE::Extent2D                        windowExtent_      = {},
106493       VULKAN_HPP_NAMESPACE::BlockMatchWindowCompareModeQCOM windowCompareMode_ = VULKAN_HPP_NAMESPACE::BlockMatchWindowCompareModeQCOM::eMin,
106494       const void *                                          pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
106495       : pNext{ pNext_ }
106496       , windowExtent{ windowExtent_ }
106497       , windowCompareMode{ windowCompareMode_ }
106498     {
106499     }
106500 
106501     VULKAN_HPP_CONSTEXPR SamplerBlockMatchWindowCreateInfoQCOM( SamplerBlockMatchWindowCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106502 
SamplerBlockMatchWindowCreateInfoQCOMVULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM106503     SamplerBlockMatchWindowCreateInfoQCOM( VkSamplerBlockMatchWindowCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
106504       : SamplerBlockMatchWindowCreateInfoQCOM( *reinterpret_cast<SamplerBlockMatchWindowCreateInfoQCOM const *>( &rhs ) )
106505     {
106506     }
106507 
106508     SamplerBlockMatchWindowCreateInfoQCOM & operator=( SamplerBlockMatchWindowCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106509 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
106510 
operator =VULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM106511     SamplerBlockMatchWindowCreateInfoQCOM & operator=( VkSamplerBlockMatchWindowCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
106512     {
106513       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM const *>( &rhs );
106514       return *this;
106515     }
106516 
106517 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM106518     VULKAN_HPP_CONSTEXPR_14 SamplerBlockMatchWindowCreateInfoQCOM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
106519     {
106520       pNext = pNext_;
106521       return *this;
106522     }
106523 
setWindowExtentVULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM106524     VULKAN_HPP_CONSTEXPR_14 SamplerBlockMatchWindowCreateInfoQCOM & setWindowExtent( VULKAN_HPP_NAMESPACE::Extent2D const & windowExtent_ ) VULKAN_HPP_NOEXCEPT
106525     {
106526       windowExtent = windowExtent_;
106527       return *this;
106528     }
106529 
106530     VULKAN_HPP_CONSTEXPR_14 SamplerBlockMatchWindowCreateInfoQCOM &
setWindowCompareModeVULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM106531       setWindowCompareMode( VULKAN_HPP_NAMESPACE::BlockMatchWindowCompareModeQCOM windowCompareMode_ ) VULKAN_HPP_NOEXCEPT
106532     {
106533       windowCompareMode = windowCompareMode_;
106534       return *this;
106535     }
106536 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
106537 
operator VkSamplerBlockMatchWindowCreateInfoQCOM const&VULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM106538     operator VkSamplerBlockMatchWindowCreateInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
106539     {
106540       return *reinterpret_cast<const VkSamplerBlockMatchWindowCreateInfoQCOM *>( this );
106541     }
106542 
operator VkSamplerBlockMatchWindowCreateInfoQCOM&VULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM106543     operator VkSamplerBlockMatchWindowCreateInfoQCOM &() VULKAN_HPP_NOEXCEPT
106544     {
106545       return *reinterpret_cast<VkSamplerBlockMatchWindowCreateInfoQCOM *>( this );
106546     }
106547 
106548 #if defined( VULKAN_HPP_USE_REFLECT )
106549 #  if 14 <= VULKAN_HPP_CPP_VERSION
106550     auto
106551 #  else
106552     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
106553                const void * const &,
106554                VULKAN_HPP_NAMESPACE::Extent2D const &,
106555                VULKAN_HPP_NAMESPACE::BlockMatchWindowCompareModeQCOM const &>
106556 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM106557       reflect() const VULKAN_HPP_NOEXCEPT
106558     {
106559       return std::tie( sType, pNext, windowExtent, windowCompareMode );
106560     }
106561 #endif
106562 
106563 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
106564     auto operator<=>( SamplerBlockMatchWindowCreateInfoQCOM const & ) const = default;
106565 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM106566     bool operator==( SamplerBlockMatchWindowCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
106567     {
106568 #  if defined( VULKAN_HPP_USE_REFLECT )
106569       return this->reflect() == rhs.reflect();
106570 #  else
106571       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( windowExtent == rhs.windowExtent ) && ( windowCompareMode == rhs.windowCompareMode );
106572 #  endif
106573     }
106574 
operator !=VULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM106575     bool operator!=( SamplerBlockMatchWindowCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
106576     {
106577       return !operator==( rhs );
106578     }
106579 #endif
106580 
106581   public:
106582     VULKAN_HPP_NAMESPACE::StructureType                   sType             = StructureType::eSamplerBlockMatchWindowCreateInfoQCOM;
106583     const void *                                          pNext             = {};
106584     VULKAN_HPP_NAMESPACE::Extent2D                        windowExtent      = {};
106585     VULKAN_HPP_NAMESPACE::BlockMatchWindowCompareModeQCOM windowCompareMode = VULKAN_HPP_NAMESPACE::BlockMatchWindowCompareModeQCOM::eMin;
106586   };
106587 
106588   template <>
106589   struct CppType<StructureType, StructureType::eSamplerBlockMatchWindowCreateInfoQCOM>
106590   {
106591     using Type = SamplerBlockMatchWindowCreateInfoQCOM;
106592   };
106593 
106594   struct SamplerBorderColorComponentMappingCreateInfoEXT
106595   {
106596     using NativeType = VkSamplerBorderColorComponentMappingCreateInfoEXT;
106597 
106598     static const bool                                  allowDuplicate = false;
106599     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerBorderColorComponentMappingCreateInfoEXT;
106600 
106601 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerBorderColorComponentMappingCreateInfoEXTVULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT106602     VULKAN_HPP_CONSTEXPR SamplerBorderColorComponentMappingCreateInfoEXT( VULKAN_HPP_NAMESPACE::ComponentMapping components_ = {},
106603                                                                           VULKAN_HPP_NAMESPACE::Bool32           srgb_       = {},
106604                                                                           const void *                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
106605       : pNext{ pNext_ }
106606       , components{ components_ }
106607       , srgb{ srgb_ }
106608     {
106609     }
106610 
106611     VULKAN_HPP_CONSTEXPR
106612       SamplerBorderColorComponentMappingCreateInfoEXT( SamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106613 
SamplerBorderColorComponentMappingCreateInfoEXTVULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT106614     SamplerBorderColorComponentMappingCreateInfoEXT( VkSamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
106615       : SamplerBorderColorComponentMappingCreateInfoEXT( *reinterpret_cast<SamplerBorderColorComponentMappingCreateInfoEXT const *>( &rhs ) )
106616     {
106617     }
106618 
106619     SamplerBorderColorComponentMappingCreateInfoEXT & operator=( SamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106620 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
106621 
operator =VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT106622     SamplerBorderColorComponentMappingCreateInfoEXT & operator=( VkSamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
106623     {
106624       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT const *>( &rhs );
106625       return *this;
106626     }
106627 
106628 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT106629     VULKAN_HPP_CONSTEXPR_14 SamplerBorderColorComponentMappingCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
106630     {
106631       pNext = pNext_;
106632       return *this;
106633     }
106634 
106635     VULKAN_HPP_CONSTEXPR_14 SamplerBorderColorComponentMappingCreateInfoEXT &
setComponentsVULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT106636       setComponents( VULKAN_HPP_NAMESPACE::ComponentMapping const & components_ ) VULKAN_HPP_NOEXCEPT
106637     {
106638       components = components_;
106639       return *this;
106640     }
106641 
setSrgbVULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT106642     VULKAN_HPP_CONSTEXPR_14 SamplerBorderColorComponentMappingCreateInfoEXT & setSrgb( VULKAN_HPP_NAMESPACE::Bool32 srgb_ ) VULKAN_HPP_NOEXCEPT
106643     {
106644       srgb = srgb_;
106645       return *this;
106646     }
106647 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
106648 
operator VkSamplerBorderColorComponentMappingCreateInfoEXT const&VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT106649     operator VkSamplerBorderColorComponentMappingCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
106650     {
106651       return *reinterpret_cast<const VkSamplerBorderColorComponentMappingCreateInfoEXT *>( this );
106652     }
106653 
operator VkSamplerBorderColorComponentMappingCreateInfoEXT&VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT106654     operator VkSamplerBorderColorComponentMappingCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
106655     {
106656       return *reinterpret_cast<VkSamplerBorderColorComponentMappingCreateInfoEXT *>( this );
106657     }
106658 
106659 #if defined( VULKAN_HPP_USE_REFLECT )
106660 #  if 14 <= VULKAN_HPP_CPP_VERSION
106661     auto
106662 #  else
106663     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
106664                const void * const &,
106665                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
106666                VULKAN_HPP_NAMESPACE::Bool32 const &>
106667 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT106668       reflect() const VULKAN_HPP_NOEXCEPT
106669     {
106670       return std::tie( sType, pNext, components, srgb );
106671     }
106672 #endif
106673 
106674 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
106675     auto operator<=>( SamplerBorderColorComponentMappingCreateInfoEXT const & ) const = default;
106676 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT106677     bool operator==( SamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
106678     {
106679 #  if defined( VULKAN_HPP_USE_REFLECT )
106680       return this->reflect() == rhs.reflect();
106681 #  else
106682       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( components == rhs.components ) && ( srgb == rhs.srgb );
106683 #  endif
106684     }
106685 
operator !=VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT106686     bool operator!=( SamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
106687     {
106688       return !operator==( rhs );
106689     }
106690 #endif
106691 
106692   public:
106693     VULKAN_HPP_NAMESPACE::StructureType    sType      = StructureType::eSamplerBorderColorComponentMappingCreateInfoEXT;
106694     const void *                           pNext      = {};
106695     VULKAN_HPP_NAMESPACE::ComponentMapping components = {};
106696     VULKAN_HPP_NAMESPACE::Bool32           srgb       = {};
106697   };
106698 
106699   template <>
106700   struct CppType<StructureType, StructureType::eSamplerBorderColorComponentMappingCreateInfoEXT>
106701   {
106702     using Type = SamplerBorderColorComponentMappingCreateInfoEXT;
106703   };
106704 
106705   struct SamplerCaptureDescriptorDataInfoEXT
106706   {
106707     using NativeType = VkSamplerCaptureDescriptorDataInfoEXT;
106708 
106709     static const bool                                  allowDuplicate = false;
106710     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerCaptureDescriptorDataInfoEXT;
106711 
106712 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerCaptureDescriptorDataInfoEXTVULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT106713     VULKAN_HPP_CONSTEXPR SamplerCaptureDescriptorDataInfoEXT( VULKAN_HPP_NAMESPACE::Sampler sampler_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
106714       : pNext{ pNext_ }
106715       , sampler{ sampler_ }
106716     {
106717     }
106718 
106719     VULKAN_HPP_CONSTEXPR SamplerCaptureDescriptorDataInfoEXT( SamplerCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106720 
SamplerCaptureDescriptorDataInfoEXTVULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT106721     SamplerCaptureDescriptorDataInfoEXT( VkSamplerCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
106722       : SamplerCaptureDescriptorDataInfoEXT( *reinterpret_cast<SamplerCaptureDescriptorDataInfoEXT const *>( &rhs ) )
106723     {
106724     }
106725 
106726     SamplerCaptureDescriptorDataInfoEXT & operator=( SamplerCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106727 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
106728 
operator =VULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT106729     SamplerCaptureDescriptorDataInfoEXT & operator=( VkSamplerCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
106730     {
106731       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT const *>( &rhs );
106732       return *this;
106733     }
106734 
106735 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT106736     VULKAN_HPP_CONSTEXPR_14 SamplerCaptureDescriptorDataInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
106737     {
106738       pNext = pNext_;
106739       return *this;
106740     }
106741 
setSamplerVULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT106742     VULKAN_HPP_CONSTEXPR_14 SamplerCaptureDescriptorDataInfoEXT & setSampler( VULKAN_HPP_NAMESPACE::Sampler sampler_ ) VULKAN_HPP_NOEXCEPT
106743     {
106744       sampler = sampler_;
106745       return *this;
106746     }
106747 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
106748 
operator VkSamplerCaptureDescriptorDataInfoEXT const&VULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT106749     operator VkSamplerCaptureDescriptorDataInfoEXT const &() const VULKAN_HPP_NOEXCEPT
106750     {
106751       return *reinterpret_cast<const VkSamplerCaptureDescriptorDataInfoEXT *>( this );
106752     }
106753 
operator VkSamplerCaptureDescriptorDataInfoEXT&VULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT106754     operator VkSamplerCaptureDescriptorDataInfoEXT &() VULKAN_HPP_NOEXCEPT
106755     {
106756       return *reinterpret_cast<VkSamplerCaptureDescriptorDataInfoEXT *>( this );
106757     }
106758 
106759 #if defined( VULKAN_HPP_USE_REFLECT )
106760 #  if 14 <= VULKAN_HPP_CPP_VERSION
106761     auto
106762 #  else
106763     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Sampler const &>
106764 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT106765       reflect() const VULKAN_HPP_NOEXCEPT
106766     {
106767       return std::tie( sType, pNext, sampler );
106768     }
106769 #endif
106770 
106771 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
106772     auto operator<=>( SamplerCaptureDescriptorDataInfoEXT const & ) const = default;
106773 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT106774     bool operator==( SamplerCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
106775     {
106776 #  if defined( VULKAN_HPP_USE_REFLECT )
106777       return this->reflect() == rhs.reflect();
106778 #  else
106779       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sampler == rhs.sampler );
106780 #  endif
106781     }
106782 
operator !=VULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT106783     bool operator!=( SamplerCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
106784     {
106785       return !operator==( rhs );
106786     }
106787 #endif
106788 
106789   public:
106790     VULKAN_HPP_NAMESPACE::StructureType sType   = StructureType::eSamplerCaptureDescriptorDataInfoEXT;
106791     const void *                        pNext   = {};
106792     VULKAN_HPP_NAMESPACE::Sampler       sampler = {};
106793   };
106794 
106795   template <>
106796   struct CppType<StructureType, StructureType::eSamplerCaptureDescriptorDataInfoEXT>
106797   {
106798     using Type = SamplerCaptureDescriptorDataInfoEXT;
106799   };
106800 
106801   struct SamplerCreateInfo
106802   {
106803     using NativeType = VkSamplerCreateInfo;
106804 
106805     static const bool                                  allowDuplicate = false;
106806     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerCreateInfo;
106807 
106808 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerCreateInfoVULKAN_HPP_NAMESPACE::SamplerCreateInfo106809     VULKAN_HPP_CONSTEXPR SamplerCreateInfo( VULKAN_HPP_NAMESPACE::SamplerCreateFlags flags_            = {},
106810                                             VULKAN_HPP_NAMESPACE::Filter             magFilter_        = VULKAN_HPP_NAMESPACE::Filter::eNearest,
106811                                             VULKAN_HPP_NAMESPACE::Filter             minFilter_        = VULKAN_HPP_NAMESPACE::Filter::eNearest,
106812                                             VULKAN_HPP_NAMESPACE::SamplerMipmapMode  mipmapMode_       = VULKAN_HPP_NAMESPACE::SamplerMipmapMode::eNearest,
106813                                             VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeU_     = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat,
106814                                             VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeV_     = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat,
106815                                             VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeW_     = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat,
106816                                             float                                    mipLodBias_       = {},
106817                                             VULKAN_HPP_NAMESPACE::Bool32             anisotropyEnable_ = {},
106818                                             float                                    maxAnisotropy_    = {},
106819                                             VULKAN_HPP_NAMESPACE::Bool32             compareEnable_    = {},
106820                                             VULKAN_HPP_NAMESPACE::CompareOp          compareOp_        = VULKAN_HPP_NAMESPACE::CompareOp::eNever,
106821                                             float                                    minLod_           = {},
106822                                             float                                    maxLod_           = {},
106823                                             VULKAN_HPP_NAMESPACE::BorderColor        borderColor_ = VULKAN_HPP_NAMESPACE::BorderColor::eFloatTransparentBlack,
106824                                             VULKAN_HPP_NAMESPACE::Bool32             unnormalizedCoordinates_ = {},
106825                                             const void *                             pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
106826       : pNext{ pNext_ }
106827       , flags{ flags_ }
106828       , magFilter{ magFilter_ }
106829       , minFilter{ minFilter_ }
106830       , mipmapMode{ mipmapMode_ }
106831       , addressModeU{ addressModeU_ }
106832       , addressModeV{ addressModeV_ }
106833       , addressModeW{ addressModeW_ }
106834       , mipLodBias{ mipLodBias_ }
106835       , anisotropyEnable{ anisotropyEnable_ }
106836       , maxAnisotropy{ maxAnisotropy_ }
106837       , compareEnable{ compareEnable_ }
106838       , compareOp{ compareOp_ }
106839       , minLod{ minLod_ }
106840       , maxLod{ maxLod_ }
106841       , borderColor{ borderColor_ }
106842       , unnormalizedCoordinates{ unnormalizedCoordinates_ }
106843     {
106844     }
106845 
106846     VULKAN_HPP_CONSTEXPR SamplerCreateInfo( SamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106847 
SamplerCreateInfoVULKAN_HPP_NAMESPACE::SamplerCreateInfo106848     SamplerCreateInfo( VkSamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SamplerCreateInfo( *reinterpret_cast<SamplerCreateInfo const *>( &rhs ) ) {}
106849 
106850     SamplerCreateInfo & operator=( SamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
106851 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
106852 
operator =VULKAN_HPP_NAMESPACE::SamplerCreateInfo106853     SamplerCreateInfo & operator=( VkSamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
106854     {
106855       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerCreateInfo const *>( &rhs );
106856       return *this;
106857     }
106858 
106859 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerCreateInfo106860     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
106861     {
106862       pNext = pNext_;
106863       return *this;
106864     }
106865 
setFlagsVULKAN_HPP_NAMESPACE::SamplerCreateInfo106866     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::SamplerCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
106867     {
106868       flags = flags_;
106869       return *this;
106870     }
106871 
setMagFilterVULKAN_HPP_NAMESPACE::SamplerCreateInfo106872     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMagFilter( VULKAN_HPP_NAMESPACE::Filter magFilter_ ) VULKAN_HPP_NOEXCEPT
106873     {
106874       magFilter = magFilter_;
106875       return *this;
106876     }
106877 
setMinFilterVULKAN_HPP_NAMESPACE::SamplerCreateInfo106878     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMinFilter( VULKAN_HPP_NAMESPACE::Filter minFilter_ ) VULKAN_HPP_NOEXCEPT
106879     {
106880       minFilter = minFilter_;
106881       return *this;
106882     }
106883 
setMipmapModeVULKAN_HPP_NAMESPACE::SamplerCreateInfo106884     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMipmapMode( VULKAN_HPP_NAMESPACE::SamplerMipmapMode mipmapMode_ ) VULKAN_HPP_NOEXCEPT
106885     {
106886       mipmapMode = mipmapMode_;
106887       return *this;
106888     }
106889 
setAddressModeUVULKAN_HPP_NAMESPACE::SamplerCreateInfo106890     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setAddressModeU( VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeU_ ) VULKAN_HPP_NOEXCEPT
106891     {
106892       addressModeU = addressModeU_;
106893       return *this;
106894     }
106895 
setAddressModeVVULKAN_HPP_NAMESPACE::SamplerCreateInfo106896     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setAddressModeV( VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeV_ ) VULKAN_HPP_NOEXCEPT
106897     {
106898       addressModeV = addressModeV_;
106899       return *this;
106900     }
106901 
setAddressModeWVULKAN_HPP_NAMESPACE::SamplerCreateInfo106902     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setAddressModeW( VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeW_ ) VULKAN_HPP_NOEXCEPT
106903     {
106904       addressModeW = addressModeW_;
106905       return *this;
106906     }
106907 
setMipLodBiasVULKAN_HPP_NAMESPACE::SamplerCreateInfo106908     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMipLodBias( float mipLodBias_ ) VULKAN_HPP_NOEXCEPT
106909     {
106910       mipLodBias = mipLodBias_;
106911       return *this;
106912     }
106913 
setAnisotropyEnableVULKAN_HPP_NAMESPACE::SamplerCreateInfo106914     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setAnisotropyEnable( VULKAN_HPP_NAMESPACE::Bool32 anisotropyEnable_ ) VULKAN_HPP_NOEXCEPT
106915     {
106916       anisotropyEnable = anisotropyEnable_;
106917       return *this;
106918     }
106919 
setMaxAnisotropyVULKAN_HPP_NAMESPACE::SamplerCreateInfo106920     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMaxAnisotropy( float maxAnisotropy_ ) VULKAN_HPP_NOEXCEPT
106921     {
106922       maxAnisotropy = maxAnisotropy_;
106923       return *this;
106924     }
106925 
setCompareEnableVULKAN_HPP_NAMESPACE::SamplerCreateInfo106926     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setCompareEnable( VULKAN_HPP_NAMESPACE::Bool32 compareEnable_ ) VULKAN_HPP_NOEXCEPT
106927     {
106928       compareEnable = compareEnable_;
106929       return *this;
106930     }
106931 
setCompareOpVULKAN_HPP_NAMESPACE::SamplerCreateInfo106932     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setCompareOp( VULKAN_HPP_NAMESPACE::CompareOp compareOp_ ) VULKAN_HPP_NOEXCEPT
106933     {
106934       compareOp = compareOp_;
106935       return *this;
106936     }
106937 
setMinLodVULKAN_HPP_NAMESPACE::SamplerCreateInfo106938     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMinLod( float minLod_ ) VULKAN_HPP_NOEXCEPT
106939     {
106940       minLod = minLod_;
106941       return *this;
106942     }
106943 
setMaxLodVULKAN_HPP_NAMESPACE::SamplerCreateInfo106944     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMaxLod( float maxLod_ ) VULKAN_HPP_NOEXCEPT
106945     {
106946       maxLod = maxLod_;
106947       return *this;
106948     }
106949 
setBorderColorVULKAN_HPP_NAMESPACE::SamplerCreateInfo106950     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setBorderColor( VULKAN_HPP_NAMESPACE::BorderColor borderColor_ ) VULKAN_HPP_NOEXCEPT
106951     {
106952       borderColor = borderColor_;
106953       return *this;
106954     }
106955 
setUnnormalizedCoordinatesVULKAN_HPP_NAMESPACE::SamplerCreateInfo106956     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setUnnormalizedCoordinates( VULKAN_HPP_NAMESPACE::Bool32 unnormalizedCoordinates_ ) VULKAN_HPP_NOEXCEPT
106957     {
106958       unnormalizedCoordinates = unnormalizedCoordinates_;
106959       return *this;
106960     }
106961 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
106962 
operator VkSamplerCreateInfo const&VULKAN_HPP_NAMESPACE::SamplerCreateInfo106963     operator VkSamplerCreateInfo const &() const VULKAN_HPP_NOEXCEPT
106964     {
106965       return *reinterpret_cast<const VkSamplerCreateInfo *>( this );
106966     }
106967 
operator VkSamplerCreateInfo&VULKAN_HPP_NAMESPACE::SamplerCreateInfo106968     operator VkSamplerCreateInfo &() VULKAN_HPP_NOEXCEPT
106969     {
106970       return *reinterpret_cast<VkSamplerCreateInfo *>( this );
106971     }
106972 
106973 #if defined( VULKAN_HPP_USE_REFLECT )
106974 #  if 14 <= VULKAN_HPP_CPP_VERSION
106975     auto
106976 #  else
106977     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
106978                const void * const &,
106979                VULKAN_HPP_NAMESPACE::SamplerCreateFlags const &,
106980                VULKAN_HPP_NAMESPACE::Filter const &,
106981                VULKAN_HPP_NAMESPACE::Filter const &,
106982                VULKAN_HPP_NAMESPACE::SamplerMipmapMode const &,
106983                VULKAN_HPP_NAMESPACE::SamplerAddressMode const &,
106984                VULKAN_HPP_NAMESPACE::SamplerAddressMode const &,
106985                VULKAN_HPP_NAMESPACE::SamplerAddressMode const &,
106986                float const &,
106987                VULKAN_HPP_NAMESPACE::Bool32 const &,
106988                float const &,
106989                VULKAN_HPP_NAMESPACE::Bool32 const &,
106990                VULKAN_HPP_NAMESPACE::CompareOp const &,
106991                float const &,
106992                float const &,
106993                VULKAN_HPP_NAMESPACE::BorderColor const &,
106994                VULKAN_HPP_NAMESPACE::Bool32 const &>
106995 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerCreateInfo106996       reflect() const VULKAN_HPP_NOEXCEPT
106997     {
106998       return std::tie( sType,
106999                        pNext,
107000                        flags,
107001                        magFilter,
107002                        minFilter,
107003                        mipmapMode,
107004                        addressModeU,
107005                        addressModeV,
107006                        addressModeW,
107007                        mipLodBias,
107008                        anisotropyEnable,
107009                        maxAnisotropy,
107010                        compareEnable,
107011                        compareOp,
107012                        minLod,
107013                        maxLod,
107014                        borderColor,
107015                        unnormalizedCoordinates );
107016     }
107017 #endif
107018 
107019 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
107020     auto operator<=>( SamplerCreateInfo const & ) const = default;
107021 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerCreateInfo107022     bool operator==( SamplerCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
107023     {
107024 #  if defined( VULKAN_HPP_USE_REFLECT )
107025       return this->reflect() == rhs.reflect();
107026 #  else
107027       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( magFilter == rhs.magFilter ) && ( minFilter == rhs.minFilter ) &&
107028              ( mipmapMode == rhs.mipmapMode ) && ( addressModeU == rhs.addressModeU ) && ( addressModeV == rhs.addressModeV ) &&
107029              ( addressModeW == rhs.addressModeW ) && ( mipLodBias == rhs.mipLodBias ) && ( anisotropyEnable == rhs.anisotropyEnable ) &&
107030              ( maxAnisotropy == rhs.maxAnisotropy ) && ( compareEnable == rhs.compareEnable ) && ( compareOp == rhs.compareOp ) && ( minLod == rhs.minLod ) &&
107031              ( maxLod == rhs.maxLod ) && ( borderColor == rhs.borderColor ) && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates );
107032 #  endif
107033     }
107034 
operator !=VULKAN_HPP_NAMESPACE::SamplerCreateInfo107035     bool operator!=( SamplerCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
107036     {
107037       return !operator==( rhs );
107038     }
107039 #endif
107040 
107041   public:
107042     VULKAN_HPP_NAMESPACE::StructureType      sType                   = StructureType::eSamplerCreateInfo;
107043     const void *                             pNext                   = {};
107044     VULKAN_HPP_NAMESPACE::SamplerCreateFlags flags                   = {};
107045     VULKAN_HPP_NAMESPACE::Filter             magFilter               = VULKAN_HPP_NAMESPACE::Filter::eNearest;
107046     VULKAN_HPP_NAMESPACE::Filter             minFilter               = VULKAN_HPP_NAMESPACE::Filter::eNearest;
107047     VULKAN_HPP_NAMESPACE::SamplerMipmapMode  mipmapMode              = VULKAN_HPP_NAMESPACE::SamplerMipmapMode::eNearest;
107048     VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeU            = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat;
107049     VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeV            = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat;
107050     VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeW            = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat;
107051     float                                    mipLodBias              = {};
107052     VULKAN_HPP_NAMESPACE::Bool32             anisotropyEnable        = {};
107053     float                                    maxAnisotropy           = {};
107054     VULKAN_HPP_NAMESPACE::Bool32             compareEnable           = {};
107055     VULKAN_HPP_NAMESPACE::CompareOp          compareOp               = VULKAN_HPP_NAMESPACE::CompareOp::eNever;
107056     float                                    minLod                  = {};
107057     float                                    maxLod                  = {};
107058     VULKAN_HPP_NAMESPACE::BorderColor        borderColor             = VULKAN_HPP_NAMESPACE::BorderColor::eFloatTransparentBlack;
107059     VULKAN_HPP_NAMESPACE::Bool32             unnormalizedCoordinates = {};
107060   };
107061 
107062   template <>
107063   struct CppType<StructureType, StructureType::eSamplerCreateInfo>
107064   {
107065     using Type = SamplerCreateInfo;
107066   };
107067 
107068   struct SamplerCubicWeightsCreateInfoQCOM
107069   {
107070     using NativeType = VkSamplerCubicWeightsCreateInfoQCOM;
107071 
107072     static const bool                                  allowDuplicate = false;
107073     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerCubicWeightsCreateInfoQCOM;
107074 
107075 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
107076     VULKAN_HPP_CONSTEXPR
SamplerCubicWeightsCreateInfoQCOMVULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM107077       SamplerCubicWeightsCreateInfoQCOM( VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM cubicWeights_ = VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM::eCatmullRom,
107078                                          const void *                                 pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
107079       : pNext{ pNext_ }
107080       , cubicWeights{ cubicWeights_ }
107081     {
107082     }
107083 
107084     VULKAN_HPP_CONSTEXPR SamplerCubicWeightsCreateInfoQCOM( SamplerCubicWeightsCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107085 
SamplerCubicWeightsCreateInfoQCOMVULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM107086     SamplerCubicWeightsCreateInfoQCOM( VkSamplerCubicWeightsCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
107087       : SamplerCubicWeightsCreateInfoQCOM( *reinterpret_cast<SamplerCubicWeightsCreateInfoQCOM const *>( &rhs ) )
107088     {
107089     }
107090 
107091     SamplerCubicWeightsCreateInfoQCOM & operator=( SamplerCubicWeightsCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107092 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
107093 
operator =VULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM107094     SamplerCubicWeightsCreateInfoQCOM & operator=( VkSamplerCubicWeightsCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
107095     {
107096       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM const *>( &rhs );
107097       return *this;
107098     }
107099 
107100 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM107101     VULKAN_HPP_CONSTEXPR_14 SamplerCubicWeightsCreateInfoQCOM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
107102     {
107103       pNext = pNext_;
107104       return *this;
107105     }
107106 
107107     VULKAN_HPP_CONSTEXPR_14 SamplerCubicWeightsCreateInfoQCOM &
setCubicWeightsVULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM107108       setCubicWeights( VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM cubicWeights_ ) VULKAN_HPP_NOEXCEPT
107109     {
107110       cubicWeights = cubicWeights_;
107111       return *this;
107112     }
107113 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
107114 
operator VkSamplerCubicWeightsCreateInfoQCOM const&VULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM107115     operator VkSamplerCubicWeightsCreateInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
107116     {
107117       return *reinterpret_cast<const VkSamplerCubicWeightsCreateInfoQCOM *>( this );
107118     }
107119 
operator VkSamplerCubicWeightsCreateInfoQCOM&VULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM107120     operator VkSamplerCubicWeightsCreateInfoQCOM &() VULKAN_HPP_NOEXCEPT
107121     {
107122       return *reinterpret_cast<VkSamplerCubicWeightsCreateInfoQCOM *>( this );
107123     }
107124 
107125 #if defined( VULKAN_HPP_USE_REFLECT )
107126 #  if 14 <= VULKAN_HPP_CPP_VERSION
107127     auto
107128 #  else
107129     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM const &>
107130 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM107131       reflect() const VULKAN_HPP_NOEXCEPT
107132     {
107133       return std::tie( sType, pNext, cubicWeights );
107134     }
107135 #endif
107136 
107137 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
107138     auto operator<=>( SamplerCubicWeightsCreateInfoQCOM const & ) const = default;
107139 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM107140     bool operator==( SamplerCubicWeightsCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
107141     {
107142 #  if defined( VULKAN_HPP_USE_REFLECT )
107143       return this->reflect() == rhs.reflect();
107144 #  else
107145       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cubicWeights == rhs.cubicWeights );
107146 #  endif
107147     }
107148 
operator !=VULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM107149     bool operator!=( SamplerCubicWeightsCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
107150     {
107151       return !operator==( rhs );
107152     }
107153 #endif
107154 
107155   public:
107156     VULKAN_HPP_NAMESPACE::StructureType          sType        = StructureType::eSamplerCubicWeightsCreateInfoQCOM;
107157     const void *                                 pNext        = {};
107158     VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM cubicWeights = VULKAN_HPP_NAMESPACE::CubicFilterWeightsQCOM::eCatmullRom;
107159   };
107160 
107161   template <>
107162   struct CppType<StructureType, StructureType::eSamplerCubicWeightsCreateInfoQCOM>
107163   {
107164     using Type = SamplerCubicWeightsCreateInfoQCOM;
107165   };
107166 
107167   struct SamplerCustomBorderColorCreateInfoEXT
107168   {
107169     using NativeType = VkSamplerCustomBorderColorCreateInfoEXT;
107170 
107171     static const bool                                  allowDuplicate = false;
107172     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerCustomBorderColorCreateInfoEXT;
107173 
107174 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerCustomBorderColorCreateInfoEXTVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT107175     VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT( VULKAN_HPP_NAMESPACE::ClearColorValue customBorderColor_ = {},
107176                                                                    VULKAN_HPP_NAMESPACE::Format          format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined,
107177                                                                    const void *                          pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
107178       : pNext{ pNext_ }
107179       , customBorderColor{ customBorderColor_ }
107180       , format{ format_ }
107181     {
107182     }
107183 
107184     VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT( SamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107185 
SamplerCustomBorderColorCreateInfoEXTVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT107186     SamplerCustomBorderColorCreateInfoEXT( VkSamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
107187       : SamplerCustomBorderColorCreateInfoEXT( *reinterpret_cast<SamplerCustomBorderColorCreateInfoEXT const *>( &rhs ) )
107188     {
107189     }
107190 
107191     SamplerCustomBorderColorCreateInfoEXT & operator=( SamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107192 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
107193 
operator =VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT107194     SamplerCustomBorderColorCreateInfoEXT & operator=( VkSamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
107195     {
107196       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT const *>( &rhs );
107197       return *this;
107198     }
107199 
107200 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT107201     VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
107202     {
107203       pNext = pNext_;
107204       return *this;
107205     }
107206 
107207     VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT &
setCustomBorderColorVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT107208       setCustomBorderColor( VULKAN_HPP_NAMESPACE::ClearColorValue const & customBorderColor_ ) VULKAN_HPP_NOEXCEPT
107209     {
107210       customBorderColor = customBorderColor_;
107211       return *this;
107212     }
107213 
setFormatVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT107214     VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
107215     {
107216       format = format_;
107217       return *this;
107218     }
107219 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
107220 
operator VkSamplerCustomBorderColorCreateInfoEXT const&VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT107221     operator VkSamplerCustomBorderColorCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
107222     {
107223       return *reinterpret_cast<const VkSamplerCustomBorderColorCreateInfoEXT *>( this );
107224     }
107225 
operator VkSamplerCustomBorderColorCreateInfoEXT&VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT107226     operator VkSamplerCustomBorderColorCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
107227     {
107228       return *reinterpret_cast<VkSamplerCustomBorderColorCreateInfoEXT *>( this );
107229     }
107230 
107231 #if defined( VULKAN_HPP_USE_REFLECT )
107232 #  if 14 <= VULKAN_HPP_CPP_VERSION
107233     auto
107234 #  else
107235     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
107236                const void * const &,
107237                VULKAN_HPP_NAMESPACE::ClearColorValue const &,
107238                VULKAN_HPP_NAMESPACE::Format const &>
107239 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT107240       reflect() const VULKAN_HPP_NOEXCEPT
107241     {
107242       return std::tie( sType, pNext, customBorderColor, format );
107243     }
107244 #endif
107245 
107246   public:
107247     VULKAN_HPP_NAMESPACE::StructureType   sType             = StructureType::eSamplerCustomBorderColorCreateInfoEXT;
107248     const void *                          pNext             = {};
107249     VULKAN_HPP_NAMESPACE::ClearColorValue customBorderColor = {};
107250     VULKAN_HPP_NAMESPACE::Format          format            = VULKAN_HPP_NAMESPACE::Format::eUndefined;
107251   };
107252 
107253   template <>
107254   struct CppType<StructureType, StructureType::eSamplerCustomBorderColorCreateInfoEXT>
107255   {
107256     using Type = SamplerCustomBorderColorCreateInfoEXT;
107257   };
107258 
107259   struct SamplerReductionModeCreateInfo
107260   {
107261     using NativeType = VkSamplerReductionModeCreateInfo;
107262 
107263     static const bool                                  allowDuplicate = false;
107264     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerReductionModeCreateInfo;
107265 
107266 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
107267     VULKAN_HPP_CONSTEXPR
SamplerReductionModeCreateInfoVULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo107268       SamplerReductionModeCreateInfo( VULKAN_HPP_NAMESPACE::SamplerReductionMode reductionMode_ = VULKAN_HPP_NAMESPACE::SamplerReductionMode::eWeightedAverage,
107269                                       const void *                               pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
107270       : pNext{ pNext_ }
107271       , reductionMode{ reductionMode_ }
107272     {
107273     }
107274 
107275     VULKAN_HPP_CONSTEXPR SamplerReductionModeCreateInfo( SamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107276 
SamplerReductionModeCreateInfoVULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo107277     SamplerReductionModeCreateInfo( VkSamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
107278       : SamplerReductionModeCreateInfo( *reinterpret_cast<SamplerReductionModeCreateInfo const *>( &rhs ) )
107279     {
107280     }
107281 
107282     SamplerReductionModeCreateInfo & operator=( SamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107283 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
107284 
operator =VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo107285     SamplerReductionModeCreateInfo & operator=( VkSamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
107286     {
107287       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo const *>( &rhs );
107288       return *this;
107289     }
107290 
107291 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo107292     VULKAN_HPP_CONSTEXPR_14 SamplerReductionModeCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
107293     {
107294       pNext = pNext_;
107295       return *this;
107296     }
107297 
setReductionModeVULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo107298     VULKAN_HPP_CONSTEXPR_14 SamplerReductionModeCreateInfo & setReductionMode( VULKAN_HPP_NAMESPACE::SamplerReductionMode reductionMode_ ) VULKAN_HPP_NOEXCEPT
107299     {
107300       reductionMode = reductionMode_;
107301       return *this;
107302     }
107303 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
107304 
operator VkSamplerReductionModeCreateInfo const&VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo107305     operator VkSamplerReductionModeCreateInfo const &() const VULKAN_HPP_NOEXCEPT
107306     {
107307       return *reinterpret_cast<const VkSamplerReductionModeCreateInfo *>( this );
107308     }
107309 
operator VkSamplerReductionModeCreateInfo&VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo107310     operator VkSamplerReductionModeCreateInfo &() VULKAN_HPP_NOEXCEPT
107311     {
107312       return *reinterpret_cast<VkSamplerReductionModeCreateInfo *>( this );
107313     }
107314 
107315 #if defined( VULKAN_HPP_USE_REFLECT )
107316 #  if 14 <= VULKAN_HPP_CPP_VERSION
107317     auto
107318 #  else
107319     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SamplerReductionMode const &>
107320 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo107321       reflect() const VULKAN_HPP_NOEXCEPT
107322     {
107323       return std::tie( sType, pNext, reductionMode );
107324     }
107325 #endif
107326 
107327 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
107328     auto operator<=>( SamplerReductionModeCreateInfo const & ) const = default;
107329 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo107330     bool operator==( SamplerReductionModeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
107331     {
107332 #  if defined( VULKAN_HPP_USE_REFLECT )
107333       return this->reflect() == rhs.reflect();
107334 #  else
107335       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( reductionMode == rhs.reductionMode );
107336 #  endif
107337     }
107338 
operator !=VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo107339     bool operator!=( SamplerReductionModeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
107340     {
107341       return !operator==( rhs );
107342     }
107343 #endif
107344 
107345   public:
107346     VULKAN_HPP_NAMESPACE::StructureType        sType         = StructureType::eSamplerReductionModeCreateInfo;
107347     const void *                               pNext         = {};
107348     VULKAN_HPP_NAMESPACE::SamplerReductionMode reductionMode = VULKAN_HPP_NAMESPACE::SamplerReductionMode::eWeightedAverage;
107349   };
107350 
107351   template <>
107352   struct CppType<StructureType, StructureType::eSamplerReductionModeCreateInfo>
107353   {
107354     using Type = SamplerReductionModeCreateInfo;
107355   };
107356 
107357   using SamplerReductionModeCreateInfoEXT = SamplerReductionModeCreateInfo;
107358 
107359   struct SamplerYcbcrConversionCreateInfo
107360   {
107361     using NativeType = VkSamplerYcbcrConversionCreateInfo;
107362 
107363     static const bool                                  allowDuplicate = false;
107364     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerYcbcrConversionCreateInfo;
107365 
107366 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerYcbcrConversionCreateInfoVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo107367     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionCreateInfo(
107368       VULKAN_HPP_NAMESPACE::Format                      format_                      = VULKAN_HPP_NAMESPACE::Format::eUndefined,
107369       VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion ycbcrModel_                  = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity,
107370       VULKAN_HPP_NAMESPACE::SamplerYcbcrRange           ycbcrRange_                  = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull,
107371       VULKAN_HPP_NAMESPACE::ComponentMapping            components_                  = {},
107372       VULKAN_HPP_NAMESPACE::ChromaLocation              xChromaOffset_               = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
107373       VULKAN_HPP_NAMESPACE::ChromaLocation              yChromaOffset_               = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
107374       VULKAN_HPP_NAMESPACE::Filter                      chromaFilter_                = VULKAN_HPP_NAMESPACE::Filter::eNearest,
107375       VULKAN_HPP_NAMESPACE::Bool32                      forceExplicitReconstruction_ = {},
107376       const void *                                      pNext_                       = nullptr ) VULKAN_HPP_NOEXCEPT
107377       : pNext{ pNext_ }
107378       , format{ format_ }
107379       , ycbcrModel{ ycbcrModel_ }
107380       , ycbcrRange{ ycbcrRange_ }
107381       , components{ components_ }
107382       , xChromaOffset{ xChromaOffset_ }
107383       , yChromaOffset{ yChromaOffset_ }
107384       , chromaFilter{ chromaFilter_ }
107385       , forceExplicitReconstruction{ forceExplicitReconstruction_ }
107386     {
107387     }
107388 
107389     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionCreateInfo( SamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107390 
SamplerYcbcrConversionCreateInfoVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo107391     SamplerYcbcrConversionCreateInfo( VkSamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
107392       : SamplerYcbcrConversionCreateInfo( *reinterpret_cast<SamplerYcbcrConversionCreateInfo const *>( &rhs ) )
107393     {
107394     }
107395 
107396     SamplerYcbcrConversionCreateInfo & operator=( SamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107397 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
107398 
operator =VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo107399     SamplerYcbcrConversionCreateInfo & operator=( VkSamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
107400     {
107401       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const *>( &rhs );
107402       return *this;
107403     }
107404 
107405 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo107406     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
107407     {
107408       pNext = pNext_;
107409       return *this;
107410     }
107411 
setFormatVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo107412     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
107413     {
107414       format = format_;
107415       return *this;
107416     }
107417 
107418     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo &
setYcbcrModelVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo107419       setYcbcrModel( VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion ycbcrModel_ ) VULKAN_HPP_NOEXCEPT
107420     {
107421       ycbcrModel = ycbcrModel_;
107422       return *this;
107423     }
107424 
setYcbcrRangeVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo107425     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setYcbcrRange( VULKAN_HPP_NAMESPACE::SamplerYcbcrRange ycbcrRange_ ) VULKAN_HPP_NOEXCEPT
107426     {
107427       ycbcrRange = ycbcrRange_;
107428       return *this;
107429     }
107430 
setComponentsVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo107431     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setComponents( VULKAN_HPP_NAMESPACE::ComponentMapping const & components_ ) VULKAN_HPP_NOEXCEPT
107432     {
107433       components = components_;
107434       return *this;
107435     }
107436 
setXChromaOffsetVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo107437     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setXChromaOffset( VULKAN_HPP_NAMESPACE::ChromaLocation xChromaOffset_ ) VULKAN_HPP_NOEXCEPT
107438     {
107439       xChromaOffset = xChromaOffset_;
107440       return *this;
107441     }
107442 
setYChromaOffsetVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo107443     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setYChromaOffset( VULKAN_HPP_NAMESPACE::ChromaLocation yChromaOffset_ ) VULKAN_HPP_NOEXCEPT
107444     {
107445       yChromaOffset = yChromaOffset_;
107446       return *this;
107447     }
107448 
setChromaFilterVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo107449     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setChromaFilter( VULKAN_HPP_NAMESPACE::Filter chromaFilter_ ) VULKAN_HPP_NOEXCEPT
107450     {
107451       chromaFilter = chromaFilter_;
107452       return *this;
107453     }
107454 
107455     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo &
setForceExplicitReconstructionVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo107456       setForceExplicitReconstruction( VULKAN_HPP_NAMESPACE::Bool32 forceExplicitReconstruction_ ) VULKAN_HPP_NOEXCEPT
107457     {
107458       forceExplicitReconstruction = forceExplicitReconstruction_;
107459       return *this;
107460     }
107461 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
107462 
operator VkSamplerYcbcrConversionCreateInfo const&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo107463     operator VkSamplerYcbcrConversionCreateInfo const &() const VULKAN_HPP_NOEXCEPT
107464     {
107465       return *reinterpret_cast<const VkSamplerYcbcrConversionCreateInfo *>( this );
107466     }
107467 
operator VkSamplerYcbcrConversionCreateInfo&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo107468     operator VkSamplerYcbcrConversionCreateInfo &() VULKAN_HPP_NOEXCEPT
107469     {
107470       return *reinterpret_cast<VkSamplerYcbcrConversionCreateInfo *>( this );
107471     }
107472 
107473 #if defined( VULKAN_HPP_USE_REFLECT )
107474 #  if 14 <= VULKAN_HPP_CPP_VERSION
107475     auto
107476 #  else
107477     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
107478                const void * const &,
107479                VULKAN_HPP_NAMESPACE::Format const &,
107480                VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion const &,
107481                VULKAN_HPP_NAMESPACE::SamplerYcbcrRange const &,
107482                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
107483                VULKAN_HPP_NAMESPACE::ChromaLocation const &,
107484                VULKAN_HPP_NAMESPACE::ChromaLocation const &,
107485                VULKAN_HPP_NAMESPACE::Filter const &,
107486                VULKAN_HPP_NAMESPACE::Bool32 const &>
107487 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo107488       reflect() const VULKAN_HPP_NOEXCEPT
107489     {
107490       return std::tie( sType, pNext, format, ycbcrModel, ycbcrRange, components, xChromaOffset, yChromaOffset, chromaFilter, forceExplicitReconstruction );
107491     }
107492 #endif
107493 
107494 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
107495     auto operator<=>( SamplerYcbcrConversionCreateInfo const & ) const = default;
107496 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo107497     bool operator==( SamplerYcbcrConversionCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
107498     {
107499 #  if defined( VULKAN_HPP_USE_REFLECT )
107500       return this->reflect() == rhs.reflect();
107501 #  else
107502       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( ycbcrModel == rhs.ycbcrModel ) &&
107503              ( ycbcrRange == rhs.ycbcrRange ) && ( components == rhs.components ) && ( xChromaOffset == rhs.xChromaOffset ) &&
107504              ( yChromaOffset == rhs.yChromaOffset ) && ( chromaFilter == rhs.chromaFilter ) &&
107505              ( forceExplicitReconstruction == rhs.forceExplicitReconstruction );
107506 #  endif
107507     }
107508 
operator !=VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo107509     bool operator!=( SamplerYcbcrConversionCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
107510     {
107511       return !operator==( rhs );
107512     }
107513 #endif
107514 
107515   public:
107516     VULKAN_HPP_NAMESPACE::StructureType               sType                       = StructureType::eSamplerYcbcrConversionCreateInfo;
107517     const void *                                      pNext                       = {};
107518     VULKAN_HPP_NAMESPACE::Format                      format                      = VULKAN_HPP_NAMESPACE::Format::eUndefined;
107519     VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion ycbcrModel                  = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity;
107520     VULKAN_HPP_NAMESPACE::SamplerYcbcrRange           ycbcrRange                  = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull;
107521     VULKAN_HPP_NAMESPACE::ComponentMapping            components                  = {};
107522     VULKAN_HPP_NAMESPACE::ChromaLocation              xChromaOffset               = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
107523     VULKAN_HPP_NAMESPACE::ChromaLocation              yChromaOffset               = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
107524     VULKAN_HPP_NAMESPACE::Filter                      chromaFilter                = VULKAN_HPP_NAMESPACE::Filter::eNearest;
107525     VULKAN_HPP_NAMESPACE::Bool32                      forceExplicitReconstruction = {};
107526   };
107527 
107528   template <>
107529   struct CppType<StructureType, StructureType::eSamplerYcbcrConversionCreateInfo>
107530   {
107531     using Type = SamplerYcbcrConversionCreateInfo;
107532   };
107533 
107534   using SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo;
107535 
107536   struct SamplerYcbcrConversionImageFormatProperties
107537   {
107538     using NativeType = VkSamplerYcbcrConversionImageFormatProperties;
107539 
107540     static const bool                                  allowDuplicate = false;
107541     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerYcbcrConversionImageFormatProperties;
107542 
107543 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerYcbcrConversionImageFormatPropertiesVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties107544     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionImageFormatProperties( uint32_t combinedImageSamplerDescriptorCount_ = {},
107545                                                                       void *   pNext_                               = nullptr ) VULKAN_HPP_NOEXCEPT
107546       : pNext{ pNext_ }
107547       , combinedImageSamplerDescriptorCount{ combinedImageSamplerDescriptorCount_ }
107548     {
107549     }
107550 
107551     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionImageFormatProperties( SamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107552 
SamplerYcbcrConversionImageFormatPropertiesVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties107553     SamplerYcbcrConversionImageFormatProperties( VkSamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
107554       : SamplerYcbcrConversionImageFormatProperties( *reinterpret_cast<SamplerYcbcrConversionImageFormatProperties const *>( &rhs ) )
107555     {
107556     }
107557 
107558     SamplerYcbcrConversionImageFormatProperties & operator=( SamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107559 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
107560 
operator =VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties107561     SamplerYcbcrConversionImageFormatProperties & operator=( VkSamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
107562     {
107563       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties const *>( &rhs );
107564       return *this;
107565     }
107566 
operator VkSamplerYcbcrConversionImageFormatProperties const&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties107567     operator VkSamplerYcbcrConversionImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT
107568     {
107569       return *reinterpret_cast<const VkSamplerYcbcrConversionImageFormatProperties *>( this );
107570     }
107571 
operator VkSamplerYcbcrConversionImageFormatProperties&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties107572     operator VkSamplerYcbcrConversionImageFormatProperties &() VULKAN_HPP_NOEXCEPT
107573     {
107574       return *reinterpret_cast<VkSamplerYcbcrConversionImageFormatProperties *>( this );
107575     }
107576 
107577 #if defined( VULKAN_HPP_USE_REFLECT )
107578 #  if 14 <= VULKAN_HPP_CPP_VERSION
107579     auto
107580 #  else
107581     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
107582 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties107583       reflect() const VULKAN_HPP_NOEXCEPT
107584     {
107585       return std::tie( sType, pNext, combinedImageSamplerDescriptorCount );
107586     }
107587 #endif
107588 
107589 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
107590     auto operator<=>( SamplerYcbcrConversionImageFormatProperties const & ) const = default;
107591 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties107592     bool operator==( SamplerYcbcrConversionImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
107593     {
107594 #  if defined( VULKAN_HPP_USE_REFLECT )
107595       return this->reflect() == rhs.reflect();
107596 #  else
107597       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( combinedImageSamplerDescriptorCount == rhs.combinedImageSamplerDescriptorCount );
107598 #  endif
107599     }
107600 
operator !=VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties107601     bool operator!=( SamplerYcbcrConversionImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
107602     {
107603       return !operator==( rhs );
107604     }
107605 #endif
107606 
107607   public:
107608     VULKAN_HPP_NAMESPACE::StructureType sType                               = StructureType::eSamplerYcbcrConversionImageFormatProperties;
107609     void *                              pNext                               = {};
107610     uint32_t                            combinedImageSamplerDescriptorCount = {};
107611   };
107612 
107613   template <>
107614   struct CppType<StructureType, StructureType::eSamplerYcbcrConversionImageFormatProperties>
107615   {
107616     using Type = SamplerYcbcrConversionImageFormatProperties;
107617   };
107618 
107619   using SamplerYcbcrConversionImageFormatPropertiesKHR = SamplerYcbcrConversionImageFormatProperties;
107620 
107621   struct SamplerYcbcrConversionInfo
107622   {
107623     using NativeType = VkSamplerYcbcrConversionInfo;
107624 
107625     static const bool                                  allowDuplicate = false;
107626     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerYcbcrConversionInfo;
107627 
107628 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerYcbcrConversionInfoVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo107629     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionInfo( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion conversion_ = {},
107630                                                      const void *                                 pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
107631       : pNext{ pNext_ }
107632       , conversion{ conversion_ }
107633     {
107634     }
107635 
107636     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionInfo( SamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107637 
SamplerYcbcrConversionInfoVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo107638     SamplerYcbcrConversionInfo( VkSamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT
107639       : SamplerYcbcrConversionInfo( *reinterpret_cast<SamplerYcbcrConversionInfo const *>( &rhs ) )
107640     {
107641     }
107642 
107643     SamplerYcbcrConversionInfo & operator=( SamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107644 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
107645 
operator =VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo107646     SamplerYcbcrConversionInfo & operator=( VkSamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT
107647     {
107648       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo const *>( &rhs );
107649       return *this;
107650     }
107651 
107652 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo107653     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
107654     {
107655       pNext = pNext_;
107656       return *this;
107657     }
107658 
setConversionVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo107659     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionInfo & setConversion( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion conversion_ ) VULKAN_HPP_NOEXCEPT
107660     {
107661       conversion = conversion_;
107662       return *this;
107663     }
107664 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
107665 
operator VkSamplerYcbcrConversionInfo const&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo107666     operator VkSamplerYcbcrConversionInfo const &() const VULKAN_HPP_NOEXCEPT
107667     {
107668       return *reinterpret_cast<const VkSamplerYcbcrConversionInfo *>( this );
107669     }
107670 
operator VkSamplerYcbcrConversionInfo&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo107671     operator VkSamplerYcbcrConversionInfo &() VULKAN_HPP_NOEXCEPT
107672     {
107673       return *reinterpret_cast<VkSamplerYcbcrConversionInfo *>( this );
107674     }
107675 
107676 #if defined( VULKAN_HPP_USE_REFLECT )
107677 #  if 14 <= VULKAN_HPP_CPP_VERSION
107678     auto
107679 #  else
107680     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion const &>
107681 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo107682       reflect() const VULKAN_HPP_NOEXCEPT
107683     {
107684       return std::tie( sType, pNext, conversion );
107685     }
107686 #endif
107687 
107688 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
107689     auto operator<=>( SamplerYcbcrConversionInfo const & ) const = default;
107690 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo107691     bool operator==( SamplerYcbcrConversionInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
107692     {
107693 #  if defined( VULKAN_HPP_USE_REFLECT )
107694       return this->reflect() == rhs.reflect();
107695 #  else
107696       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( conversion == rhs.conversion );
107697 #  endif
107698     }
107699 
operator !=VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo107700     bool operator!=( SamplerYcbcrConversionInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
107701     {
107702       return !operator==( rhs );
107703     }
107704 #endif
107705 
107706   public:
107707     VULKAN_HPP_NAMESPACE::StructureType          sType      = StructureType::eSamplerYcbcrConversionInfo;
107708     const void *                                 pNext      = {};
107709     VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion conversion = {};
107710   };
107711 
107712   template <>
107713   struct CppType<StructureType, StructureType::eSamplerYcbcrConversionInfo>
107714   {
107715     using Type = SamplerYcbcrConversionInfo;
107716   };
107717 
107718   using SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo;
107719 
107720   struct SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM
107721   {
107722     using NativeType = VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM;
107723 
107724     static const bool                                  allowDuplicate = false;
107725     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM;
107726 
107727 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOMVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM107728     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM( VULKAN_HPP_NAMESPACE::Bool32 enableYDegamma_    = {},
107729                                                                            VULKAN_HPP_NAMESPACE::Bool32 enableCbCrDegamma_ = {},
107730                                                                            void *                       pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
107731       : pNext{ pNext_ }
107732       , enableYDegamma{ enableYDegamma_ }
107733       , enableCbCrDegamma{ enableCbCrDegamma_ }
107734     {
107735     }
107736 
107737     VULKAN_HPP_CONSTEXPR
107738       SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM( SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107739 
SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOMVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM107740     SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM( VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
107741       : SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM( *reinterpret_cast<SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const *>( &rhs ) )
107742     {
107743     }
107744 
107745     SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM & operator=( SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107746 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
107747 
operator =VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM107748     SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM & operator=( VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
107749     {
107750       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const *>( &rhs );
107751       return *this;
107752     }
107753 
107754 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM107755     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
107756     {
107757       pNext = pNext_;
107758       return *this;
107759     }
107760 
107761     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM &
setEnableYDegammaVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM107762       setEnableYDegamma( VULKAN_HPP_NAMESPACE::Bool32 enableYDegamma_ ) VULKAN_HPP_NOEXCEPT
107763     {
107764       enableYDegamma = enableYDegamma_;
107765       return *this;
107766     }
107767 
107768     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM &
setEnableCbCrDegammaVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM107769       setEnableCbCrDegamma( VULKAN_HPP_NAMESPACE::Bool32 enableCbCrDegamma_ ) VULKAN_HPP_NOEXCEPT
107770     {
107771       enableCbCrDegamma = enableCbCrDegamma_;
107772       return *this;
107773     }
107774 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
107775 
operator VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM107776     operator VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
107777     {
107778       return *reinterpret_cast<const VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM *>( this );
107779     }
107780 
operator VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM107781     operator VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM &() VULKAN_HPP_NOEXCEPT
107782     {
107783       return *reinterpret_cast<VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM *>( this );
107784     }
107785 
107786 #if defined( VULKAN_HPP_USE_REFLECT )
107787 #  if 14 <= VULKAN_HPP_CPP_VERSION
107788     auto
107789 #  else
107790     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
107791 #  endif
reflectVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM107792       reflect() const VULKAN_HPP_NOEXCEPT
107793     {
107794       return std::tie( sType, pNext, enableYDegamma, enableCbCrDegamma );
107795     }
107796 #endif
107797 
107798 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
107799     auto operator<=>( SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & ) const = default;
107800 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM107801     bool operator==( SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
107802     {
107803 #  if defined( VULKAN_HPP_USE_REFLECT )
107804       return this->reflect() == rhs.reflect();
107805 #  else
107806       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( enableYDegamma == rhs.enableYDegamma ) && ( enableCbCrDegamma == rhs.enableCbCrDegamma );
107807 #  endif
107808     }
107809 
operator !=VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM107810     bool operator!=( SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
107811     {
107812       return !operator==( rhs );
107813     }
107814 #endif
107815 
107816   public:
107817     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::eSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM;
107818     void *                              pNext             = {};
107819     VULKAN_HPP_NAMESPACE::Bool32        enableYDegamma    = {};
107820     VULKAN_HPP_NAMESPACE::Bool32        enableCbCrDegamma = {};
107821   };
107822 
107823   template <>
107824   struct CppType<StructureType, StructureType::eSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM>
107825   {
107826     using Type = SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM;
107827   };
107828 
107829 #if defined( VK_USE_PLATFORM_SCREEN_QNX )
107830   struct ScreenBufferFormatPropertiesQNX
107831   {
107832     using NativeType = VkScreenBufferFormatPropertiesQNX;
107833 
107834     static const bool                                  allowDuplicate = false;
107835     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eScreenBufferFormatPropertiesQNX;
107836 
107837 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ScreenBufferFormatPropertiesQNXVULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX107838     VULKAN_HPP_CONSTEXPR ScreenBufferFormatPropertiesQNX(
107839       VULKAN_HPP_NAMESPACE::Format                      format_                           = VULKAN_HPP_NAMESPACE::Format::eUndefined,
107840       uint64_t                                          externalFormat_                   = {},
107841       uint64_t                                          screenUsage_                      = {},
107842       VULKAN_HPP_NAMESPACE::FormatFeatureFlags          formatFeatures_                   = {},
107843       VULKAN_HPP_NAMESPACE::ComponentMapping            samplerYcbcrConversionComponents_ = {},
107844       VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel_              = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity,
107845       VULKAN_HPP_NAMESPACE::SamplerYcbcrRange           suggestedYcbcrRange_              = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull,
107846       VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedXChromaOffset_           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
107847       VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedYChromaOffset_           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven,
107848       void *                                            pNext_                            = nullptr ) VULKAN_HPP_NOEXCEPT
107849       : pNext{ pNext_ }
107850       , format{ format_ }
107851       , externalFormat{ externalFormat_ }
107852       , screenUsage{ screenUsage_ }
107853       , formatFeatures{ formatFeatures_ }
107854       , samplerYcbcrConversionComponents{ samplerYcbcrConversionComponents_ }
107855       , suggestedYcbcrModel{ suggestedYcbcrModel_ }
107856       , suggestedYcbcrRange{ suggestedYcbcrRange_ }
107857       , suggestedXChromaOffset{ suggestedXChromaOffset_ }
107858       , suggestedYChromaOffset{ suggestedYChromaOffset_ }
107859     {
107860     }
107861 
107862     VULKAN_HPP_CONSTEXPR ScreenBufferFormatPropertiesQNX( ScreenBufferFormatPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107863 
ScreenBufferFormatPropertiesQNXVULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX107864     ScreenBufferFormatPropertiesQNX( VkScreenBufferFormatPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT
107865       : ScreenBufferFormatPropertiesQNX( *reinterpret_cast<ScreenBufferFormatPropertiesQNX const *>( &rhs ) )
107866     {
107867     }
107868 
107869     ScreenBufferFormatPropertiesQNX & operator=( ScreenBufferFormatPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107870 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
107871 
operator =VULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX107872     ScreenBufferFormatPropertiesQNX & operator=( VkScreenBufferFormatPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT
107873     {
107874       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX const *>( &rhs );
107875       return *this;
107876     }
107877 
operator VkScreenBufferFormatPropertiesQNX const&VULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX107878     operator VkScreenBufferFormatPropertiesQNX const &() const VULKAN_HPP_NOEXCEPT
107879     {
107880       return *reinterpret_cast<const VkScreenBufferFormatPropertiesQNX *>( this );
107881     }
107882 
operator VkScreenBufferFormatPropertiesQNX&VULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX107883     operator VkScreenBufferFormatPropertiesQNX &() VULKAN_HPP_NOEXCEPT
107884     {
107885       return *reinterpret_cast<VkScreenBufferFormatPropertiesQNX *>( this );
107886     }
107887 
107888 #  if defined( VULKAN_HPP_USE_REFLECT )
107889 #    if 14 <= VULKAN_HPP_CPP_VERSION
107890     auto
107891 #    else
107892     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
107893                void * const &,
107894                VULKAN_HPP_NAMESPACE::Format const &,
107895                uint64_t const &,
107896                uint64_t const &,
107897                VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &,
107898                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
107899                VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion const &,
107900                VULKAN_HPP_NAMESPACE::SamplerYcbcrRange const &,
107901                VULKAN_HPP_NAMESPACE::ChromaLocation const &,
107902                VULKAN_HPP_NAMESPACE::ChromaLocation const &>
107903 #    endif
reflectVULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX107904       reflect() const VULKAN_HPP_NOEXCEPT
107905     {
107906       return std::tie( sType,
107907                        pNext,
107908                        format,
107909                        externalFormat,
107910                        screenUsage,
107911                        formatFeatures,
107912                        samplerYcbcrConversionComponents,
107913                        suggestedYcbcrModel,
107914                        suggestedYcbcrRange,
107915                        suggestedXChromaOffset,
107916                        suggestedYChromaOffset );
107917     }
107918 #  endif
107919 
107920 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
107921     auto operator<=>( ScreenBufferFormatPropertiesQNX const & ) const = default;
107922 #  else
operator ==VULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX107923     bool operator==( ScreenBufferFormatPropertiesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
107924     {
107925 #    if defined( VULKAN_HPP_USE_REFLECT )
107926       return this->reflect() == rhs.reflect();
107927 #    else
107928       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( externalFormat == rhs.externalFormat ) &&
107929              ( screenUsage == rhs.screenUsage ) && ( formatFeatures == rhs.formatFeatures ) &&
107930              ( samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents ) && ( suggestedYcbcrModel == rhs.suggestedYcbcrModel ) &&
107931              ( suggestedYcbcrRange == rhs.suggestedYcbcrRange ) && ( suggestedXChromaOffset == rhs.suggestedXChromaOffset ) &&
107932              ( suggestedYChromaOffset == rhs.suggestedYChromaOffset );
107933 #    endif
107934     }
107935 
operator !=VULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX107936     bool operator!=( ScreenBufferFormatPropertiesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
107937     {
107938       return !operator==( rhs );
107939     }
107940 #  endif
107941 
107942   public:
107943     VULKAN_HPP_NAMESPACE::StructureType               sType                            = StructureType::eScreenBufferFormatPropertiesQNX;
107944     void *                                            pNext                            = {};
107945     VULKAN_HPP_NAMESPACE::Format                      format                           = VULKAN_HPP_NAMESPACE::Format::eUndefined;
107946     uint64_t                                          externalFormat                   = {};
107947     uint64_t                                          screenUsage                      = {};
107948     VULKAN_HPP_NAMESPACE::FormatFeatureFlags          formatFeatures                   = {};
107949     VULKAN_HPP_NAMESPACE::ComponentMapping            samplerYcbcrConversionComponents = {};
107950     VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel              = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity;
107951     VULKAN_HPP_NAMESPACE::SamplerYcbcrRange           suggestedYcbcrRange              = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull;
107952     VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedXChromaOffset           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
107953     VULKAN_HPP_NAMESPACE::ChromaLocation              suggestedYChromaOffset           = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
107954   };
107955 
107956   template <>
107957   struct CppType<StructureType, StructureType::eScreenBufferFormatPropertiesQNX>
107958   {
107959     using Type = ScreenBufferFormatPropertiesQNX;
107960   };
107961 #endif /*VK_USE_PLATFORM_SCREEN_QNX*/
107962 
107963 #if defined( VK_USE_PLATFORM_SCREEN_QNX )
107964   struct ScreenBufferPropertiesQNX
107965   {
107966     using NativeType = VkScreenBufferPropertiesQNX;
107967 
107968     static const bool                                  allowDuplicate = false;
107969     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eScreenBufferPropertiesQNX;
107970 
107971 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ScreenBufferPropertiesQNXVULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX107972     VULKAN_HPP_CONSTEXPR ScreenBufferPropertiesQNX( VULKAN_HPP_NAMESPACE::DeviceSize allocationSize_ = {},
107973                                                     uint32_t                         memoryTypeBits_ = {},
107974                                                     void *                           pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
107975       : pNext{ pNext_ }
107976       , allocationSize{ allocationSize_ }
107977       , memoryTypeBits{ memoryTypeBits_ }
107978     {
107979     }
107980 
107981     VULKAN_HPP_CONSTEXPR ScreenBufferPropertiesQNX( ScreenBufferPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107982 
ScreenBufferPropertiesQNXVULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX107983     ScreenBufferPropertiesQNX( VkScreenBufferPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT
107984       : ScreenBufferPropertiesQNX( *reinterpret_cast<ScreenBufferPropertiesQNX const *>( &rhs ) )
107985     {
107986     }
107987 
107988     ScreenBufferPropertiesQNX & operator=( ScreenBufferPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
107989 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
107990 
operator =VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX107991     ScreenBufferPropertiesQNX & operator=( VkScreenBufferPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT
107992     {
107993       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX const *>( &rhs );
107994       return *this;
107995     }
107996 
operator VkScreenBufferPropertiesQNX const&VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX107997     operator VkScreenBufferPropertiesQNX const &() const VULKAN_HPP_NOEXCEPT
107998     {
107999       return *reinterpret_cast<const VkScreenBufferPropertiesQNX *>( this );
108000     }
108001 
operator VkScreenBufferPropertiesQNX&VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX108002     operator VkScreenBufferPropertiesQNX &() VULKAN_HPP_NOEXCEPT
108003     {
108004       return *reinterpret_cast<VkScreenBufferPropertiesQNX *>( this );
108005     }
108006 
108007 #  if defined( VULKAN_HPP_USE_REFLECT )
108008 #    if 14 <= VULKAN_HPP_CPP_VERSION
108009     auto
108010 #    else
108011     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, uint32_t const &>
108012 #    endif
reflectVULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX108013       reflect() const VULKAN_HPP_NOEXCEPT
108014     {
108015       return std::tie( sType, pNext, allocationSize, memoryTypeBits );
108016     }
108017 #  endif
108018 
108019 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
108020     auto operator<=>( ScreenBufferPropertiesQNX const & ) const = default;
108021 #  else
operator ==VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX108022     bool operator==( ScreenBufferPropertiesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
108023     {
108024 #    if defined( VULKAN_HPP_USE_REFLECT )
108025       return this->reflect() == rhs.reflect();
108026 #    else
108027       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( allocationSize == rhs.allocationSize ) && ( memoryTypeBits == rhs.memoryTypeBits );
108028 #    endif
108029     }
108030 
operator !=VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX108031     bool operator!=( ScreenBufferPropertiesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
108032     {
108033       return !operator==( rhs );
108034     }
108035 #  endif
108036 
108037   public:
108038     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eScreenBufferPropertiesQNX;
108039     void *                              pNext          = {};
108040     VULKAN_HPP_NAMESPACE::DeviceSize    allocationSize = {};
108041     uint32_t                            memoryTypeBits = {};
108042   };
108043 
108044   template <>
108045   struct CppType<StructureType, StructureType::eScreenBufferPropertiesQNX>
108046   {
108047     using Type = ScreenBufferPropertiesQNX;
108048   };
108049 #endif /*VK_USE_PLATFORM_SCREEN_QNX*/
108050 
108051 #if defined( VK_USE_PLATFORM_SCREEN_QNX )
108052   struct ScreenSurfaceCreateInfoQNX
108053   {
108054     using NativeType = VkScreenSurfaceCreateInfoQNX;
108055 
108056     static const bool                                  allowDuplicate = false;
108057     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eScreenSurfaceCreateInfoQNX;
108058 
108059 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ScreenSurfaceCreateInfoQNXVULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX108060     VULKAN_HPP_CONSTEXPR ScreenSurfaceCreateInfoQNX( VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateFlagsQNX flags_   = {},
108061                                                      struct _screen_context *                          context_ = {},
108062                                                      struct _screen_window *                           window_  = {},
108063                                                      const void *                                      pNext_   = nullptr ) VULKAN_HPP_NOEXCEPT
108064       : pNext{ pNext_ }
108065       , flags{ flags_ }
108066       , context{ context_ }
108067       , window{ window_ }
108068     {
108069     }
108070 
108071     VULKAN_HPP_CONSTEXPR ScreenSurfaceCreateInfoQNX( ScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108072 
ScreenSurfaceCreateInfoQNXVULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX108073     ScreenSurfaceCreateInfoQNX( VkScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT
108074       : ScreenSurfaceCreateInfoQNX( *reinterpret_cast<ScreenSurfaceCreateInfoQNX const *>( &rhs ) )
108075     {
108076     }
108077 
108078     ScreenSurfaceCreateInfoQNX & operator=( ScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108079 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
108080 
operator =VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX108081     ScreenSurfaceCreateInfoQNX & operator=( VkScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT
108082     {
108083       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX const *>( &rhs );
108084       return *this;
108085     }
108086 
108087 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX108088     VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
108089     {
108090       pNext = pNext_;
108091       return *this;
108092     }
108093 
setFlagsVULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX108094     VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX & setFlags( VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateFlagsQNX flags_ ) VULKAN_HPP_NOEXCEPT
108095     {
108096       flags = flags_;
108097       return *this;
108098     }
108099 
setContextVULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX108100     VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX & setContext( struct _screen_context * context_ ) VULKAN_HPP_NOEXCEPT
108101     {
108102       context = context_;
108103       return *this;
108104     }
108105 
setWindowVULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX108106     VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX & setWindow( struct _screen_window * window_ ) VULKAN_HPP_NOEXCEPT
108107     {
108108       window = window_;
108109       return *this;
108110     }
108111 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
108112 
operator VkScreenSurfaceCreateInfoQNX const&VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX108113     operator VkScreenSurfaceCreateInfoQNX const &() const VULKAN_HPP_NOEXCEPT
108114     {
108115       return *reinterpret_cast<const VkScreenSurfaceCreateInfoQNX *>( this );
108116     }
108117 
operator VkScreenSurfaceCreateInfoQNX&VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX108118     operator VkScreenSurfaceCreateInfoQNX &() VULKAN_HPP_NOEXCEPT
108119     {
108120       return *reinterpret_cast<VkScreenSurfaceCreateInfoQNX *>( this );
108121     }
108122 
108123 #  if defined( VULKAN_HPP_USE_REFLECT )
108124 #    if 14 <= VULKAN_HPP_CPP_VERSION
108125     auto
108126 #    else
108127     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
108128                const void * const &,
108129                VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateFlagsQNX const &,
108130                struct _screen_context * const &,
108131                struct _screen_window * const &>
108132 #    endif
reflectVULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX108133       reflect() const VULKAN_HPP_NOEXCEPT
108134     {
108135       return std::tie( sType, pNext, flags, context, window );
108136     }
108137 #  endif
108138 
108139 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
108140     auto operator<=>( ScreenSurfaceCreateInfoQNX const & ) const = default;
108141 #  else
operator ==VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX108142     bool operator==( ScreenSurfaceCreateInfoQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
108143     {
108144 #    if defined( VULKAN_HPP_USE_REFLECT )
108145       return this->reflect() == rhs.reflect();
108146 #    else
108147       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( context == rhs.context ) && ( window == rhs.window );
108148 #    endif
108149     }
108150 
operator !=VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX108151     bool operator!=( ScreenSurfaceCreateInfoQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
108152     {
108153       return !operator==( rhs );
108154     }
108155 #  endif
108156 
108157   public:
108158     VULKAN_HPP_NAMESPACE::StructureType               sType   = StructureType::eScreenSurfaceCreateInfoQNX;
108159     const void *                                      pNext   = {};
108160     VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateFlagsQNX flags   = {};
108161     struct _screen_context *                          context = {};
108162     struct _screen_window *                           window  = {};
108163   };
108164 
108165   template <>
108166   struct CppType<StructureType, StructureType::eScreenSurfaceCreateInfoQNX>
108167   {
108168     using Type = ScreenSurfaceCreateInfoQNX;
108169   };
108170 #endif /*VK_USE_PLATFORM_SCREEN_QNX*/
108171 
108172   struct SemaphoreCreateInfo
108173   {
108174     using NativeType = VkSemaphoreCreateInfo;
108175 
108176     static const bool                                  allowDuplicate = false;
108177     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreCreateInfo;
108178 
108179 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreCreateInfoVULKAN_HPP_NAMESPACE::SemaphoreCreateInfo108180     VULKAN_HPP_CONSTEXPR SemaphoreCreateInfo( VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags flags_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
108181       : pNext{ pNext_ }
108182       , flags{ flags_ }
108183     {
108184     }
108185 
108186     VULKAN_HPP_CONSTEXPR SemaphoreCreateInfo( SemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108187 
SemaphoreCreateInfoVULKAN_HPP_NAMESPACE::SemaphoreCreateInfo108188     SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SemaphoreCreateInfo( *reinterpret_cast<SemaphoreCreateInfo const *>( &rhs ) )
108189     {
108190     }
108191 
108192     SemaphoreCreateInfo & operator=( SemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108193 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
108194 
operator =VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo108195     SemaphoreCreateInfo & operator=( VkSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
108196     {
108197       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo const *>( &rhs );
108198       return *this;
108199     }
108200 
108201 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreCreateInfo108202     VULKAN_HPP_CONSTEXPR_14 SemaphoreCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
108203     {
108204       pNext = pNext_;
108205       return *this;
108206     }
108207 
setFlagsVULKAN_HPP_NAMESPACE::SemaphoreCreateInfo108208     VULKAN_HPP_CONSTEXPR_14 SemaphoreCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
108209     {
108210       flags = flags_;
108211       return *this;
108212     }
108213 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
108214 
operator VkSemaphoreCreateInfo const&VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo108215     operator VkSemaphoreCreateInfo const &() const VULKAN_HPP_NOEXCEPT
108216     {
108217       return *reinterpret_cast<const VkSemaphoreCreateInfo *>( this );
108218     }
108219 
operator VkSemaphoreCreateInfo&VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo108220     operator VkSemaphoreCreateInfo &() VULKAN_HPP_NOEXCEPT
108221     {
108222       return *reinterpret_cast<VkSemaphoreCreateInfo *>( this );
108223     }
108224 
108225 #if defined( VULKAN_HPP_USE_REFLECT )
108226 #  if 14 <= VULKAN_HPP_CPP_VERSION
108227     auto
108228 #  else
108229     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags const &>
108230 #  endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreCreateInfo108231       reflect() const VULKAN_HPP_NOEXCEPT
108232     {
108233       return std::tie( sType, pNext, flags );
108234     }
108235 #endif
108236 
108237 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
108238     auto operator<=>( SemaphoreCreateInfo const & ) const = default;
108239 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo108240     bool operator==( SemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
108241     {
108242 #  if defined( VULKAN_HPP_USE_REFLECT )
108243       return this->reflect() == rhs.reflect();
108244 #  else
108245       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
108246 #  endif
108247     }
108248 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo108249     bool operator!=( SemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
108250     {
108251       return !operator==( rhs );
108252     }
108253 #endif
108254 
108255   public:
108256     VULKAN_HPP_NAMESPACE::StructureType        sType = StructureType::eSemaphoreCreateInfo;
108257     const void *                               pNext = {};
108258     VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags flags = {};
108259   };
108260 
108261   template <>
108262   struct CppType<StructureType, StructureType::eSemaphoreCreateInfo>
108263   {
108264     using Type = SemaphoreCreateInfo;
108265   };
108266 
108267   struct SemaphoreGetFdInfoKHR
108268   {
108269     using NativeType = VkSemaphoreGetFdInfoKHR;
108270 
108271     static const bool                                  allowDuplicate = false;
108272     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreGetFdInfoKHR;
108273 
108274 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreGetFdInfoKHRVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR108275     VULKAN_HPP_CONSTEXPR SemaphoreGetFdInfoKHR(
108276       VULKAN_HPP_NAMESPACE::Semaphore                           semaphore_  = {},
108277       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd,
108278       const void *                                              pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
108279       : pNext{ pNext_ }
108280       , semaphore{ semaphore_ }
108281       , handleType{ handleType_ }
108282     {
108283     }
108284 
108285     VULKAN_HPP_CONSTEXPR SemaphoreGetFdInfoKHR( SemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108286 
SemaphoreGetFdInfoKHRVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR108287     SemaphoreGetFdInfoKHR( VkSemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
108288       : SemaphoreGetFdInfoKHR( *reinterpret_cast<SemaphoreGetFdInfoKHR const *>( &rhs ) )
108289     {
108290     }
108291 
108292     SemaphoreGetFdInfoKHR & operator=( SemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108293 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
108294 
operator =VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR108295     SemaphoreGetFdInfoKHR & operator=( VkSemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
108296     {
108297       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR const *>( &rhs );
108298       return *this;
108299     }
108300 
108301 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR108302     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
108303     {
108304       pNext = pNext_;
108305       return *this;
108306     }
108307 
setSemaphoreVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR108308     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
108309     {
108310       semaphore = semaphore_;
108311       return *this;
108312     }
108313 
setHandleTypeVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR108314     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
108315     {
108316       handleType = handleType_;
108317       return *this;
108318     }
108319 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
108320 
operator VkSemaphoreGetFdInfoKHR const&VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR108321     operator VkSemaphoreGetFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
108322     {
108323       return *reinterpret_cast<const VkSemaphoreGetFdInfoKHR *>( this );
108324     }
108325 
operator VkSemaphoreGetFdInfoKHR&VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR108326     operator VkSemaphoreGetFdInfoKHR &() VULKAN_HPP_NOEXCEPT
108327     {
108328       return *reinterpret_cast<VkSemaphoreGetFdInfoKHR *>( this );
108329     }
108330 
108331 #if defined( VULKAN_HPP_USE_REFLECT )
108332 #  if 14 <= VULKAN_HPP_CPP_VERSION
108333     auto
108334 #  else
108335     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
108336                const void * const &,
108337                VULKAN_HPP_NAMESPACE::Semaphore const &,
108338                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &>
108339 #  endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR108340       reflect() const VULKAN_HPP_NOEXCEPT
108341     {
108342       return std::tie( sType, pNext, semaphore, handleType );
108343     }
108344 #endif
108345 
108346 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
108347     auto operator<=>( SemaphoreGetFdInfoKHR const & ) const = default;
108348 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR108349     bool operator==( SemaphoreGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
108350     {
108351 #  if defined( VULKAN_HPP_USE_REFLECT )
108352       return this->reflect() == rhs.reflect();
108353 #  else
108354       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( handleType == rhs.handleType );
108355 #  endif
108356     }
108357 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR108358     bool operator!=( SemaphoreGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
108359     {
108360       return !operator==( rhs );
108361     }
108362 #endif
108363 
108364   public:
108365     VULKAN_HPP_NAMESPACE::StructureType                       sType      = StructureType::eSemaphoreGetFdInfoKHR;
108366     const void *                                              pNext      = {};
108367     VULKAN_HPP_NAMESPACE::Semaphore                           semaphore  = {};
108368     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
108369   };
108370 
108371   template <>
108372   struct CppType<StructureType, StructureType::eSemaphoreGetFdInfoKHR>
108373   {
108374     using Type = SemaphoreGetFdInfoKHR;
108375   };
108376 
108377 #if defined( VK_USE_PLATFORM_WIN32_KHR )
108378   struct SemaphoreGetWin32HandleInfoKHR
108379   {
108380     using NativeType = VkSemaphoreGetWin32HandleInfoKHR;
108381 
108382     static const bool                                  allowDuplicate = false;
108383     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreGetWin32HandleInfoKHR;
108384 
108385 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreGetWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR108386     VULKAN_HPP_CONSTEXPR SemaphoreGetWin32HandleInfoKHR(
108387       VULKAN_HPP_NAMESPACE::Semaphore                           semaphore_  = {},
108388       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd,
108389       const void *                                              pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
108390       : pNext{ pNext_ }
108391       , semaphore{ semaphore_ }
108392       , handleType{ handleType_ }
108393     {
108394     }
108395 
108396     VULKAN_HPP_CONSTEXPR SemaphoreGetWin32HandleInfoKHR( SemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108397 
SemaphoreGetWin32HandleInfoKHRVULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR108398     SemaphoreGetWin32HandleInfoKHR( VkSemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
108399       : SemaphoreGetWin32HandleInfoKHR( *reinterpret_cast<SemaphoreGetWin32HandleInfoKHR const *>( &rhs ) )
108400     {
108401     }
108402 
108403     SemaphoreGetWin32HandleInfoKHR & operator=( SemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108404 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
108405 
operator =VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR108406     SemaphoreGetWin32HandleInfoKHR & operator=( VkSemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
108407     {
108408       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR const *>( &rhs );
108409       return *this;
108410     }
108411 
108412 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR108413     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetWin32HandleInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
108414     {
108415       pNext = pNext_;
108416       return *this;
108417     }
108418 
setSemaphoreVULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR108419     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetWin32HandleInfoKHR & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
108420     {
108421       semaphore = semaphore_;
108422       return *this;
108423     }
108424 
108425     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetWin32HandleInfoKHR &
setHandleTypeVULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR108426       setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
108427     {
108428       handleType = handleType_;
108429       return *this;
108430     }
108431 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
108432 
operator VkSemaphoreGetWin32HandleInfoKHR const&VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR108433     operator VkSemaphoreGetWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT
108434     {
108435       return *reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR *>( this );
108436     }
108437 
operator VkSemaphoreGetWin32HandleInfoKHR&VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR108438     operator VkSemaphoreGetWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT
108439     {
108440       return *reinterpret_cast<VkSemaphoreGetWin32HandleInfoKHR *>( this );
108441     }
108442 
108443 #  if defined( VULKAN_HPP_USE_REFLECT )
108444 #    if 14 <= VULKAN_HPP_CPP_VERSION
108445     auto
108446 #    else
108447     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
108448                const void * const &,
108449                VULKAN_HPP_NAMESPACE::Semaphore const &,
108450                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &>
108451 #    endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR108452       reflect() const VULKAN_HPP_NOEXCEPT
108453     {
108454       return std::tie( sType, pNext, semaphore, handleType );
108455     }
108456 #  endif
108457 
108458 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
108459     auto operator<=>( SemaphoreGetWin32HandleInfoKHR const & ) const = default;
108460 #  else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR108461     bool operator==( SemaphoreGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
108462     {
108463 #    if defined( VULKAN_HPP_USE_REFLECT )
108464       return this->reflect() == rhs.reflect();
108465 #    else
108466       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( handleType == rhs.handleType );
108467 #    endif
108468     }
108469 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR108470     bool operator!=( SemaphoreGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
108471     {
108472       return !operator==( rhs );
108473     }
108474 #  endif
108475 
108476   public:
108477     VULKAN_HPP_NAMESPACE::StructureType                       sType      = StructureType::eSemaphoreGetWin32HandleInfoKHR;
108478     const void *                                              pNext      = {};
108479     VULKAN_HPP_NAMESPACE::Semaphore                           semaphore  = {};
108480     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
108481   };
108482 
108483   template <>
108484   struct CppType<StructureType, StructureType::eSemaphoreGetWin32HandleInfoKHR>
108485   {
108486     using Type = SemaphoreGetWin32HandleInfoKHR;
108487   };
108488 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
108489 
108490 #if defined( VK_USE_PLATFORM_FUCHSIA )
108491   struct SemaphoreGetZirconHandleInfoFUCHSIA
108492   {
108493     using NativeType = VkSemaphoreGetZirconHandleInfoFUCHSIA;
108494 
108495     static const bool                                  allowDuplicate = false;
108496     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreGetZirconHandleInfoFUCHSIA;
108497 
108498 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreGetZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA108499     VULKAN_HPP_CONSTEXPR SemaphoreGetZirconHandleInfoFUCHSIA(
108500       VULKAN_HPP_NAMESPACE::Semaphore                           semaphore_  = {},
108501       VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd,
108502       const void *                                              pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
108503       : pNext{ pNext_ }
108504       , semaphore{ semaphore_ }
108505       , handleType{ handleType_ }
108506     {
108507     }
108508 
108509     VULKAN_HPP_CONSTEXPR SemaphoreGetZirconHandleInfoFUCHSIA( SemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108510 
SemaphoreGetZirconHandleInfoFUCHSIAVULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA108511     SemaphoreGetZirconHandleInfoFUCHSIA( VkSemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
108512       : SemaphoreGetZirconHandleInfoFUCHSIA( *reinterpret_cast<SemaphoreGetZirconHandleInfoFUCHSIA const *>( &rhs ) )
108513     {
108514     }
108515 
108516     SemaphoreGetZirconHandleInfoFUCHSIA & operator=( SemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108517 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
108518 
operator =VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA108519     SemaphoreGetZirconHandleInfoFUCHSIA & operator=( VkSemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
108520     {
108521       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA const *>( &rhs );
108522       return *this;
108523     }
108524 
108525 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA108526     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetZirconHandleInfoFUCHSIA & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
108527     {
108528       pNext = pNext_;
108529       return *this;
108530     }
108531 
setSemaphoreVULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA108532     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetZirconHandleInfoFUCHSIA & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
108533     {
108534       semaphore = semaphore_;
108535       return *this;
108536     }
108537 
108538     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetZirconHandleInfoFUCHSIA &
setHandleTypeVULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA108539       setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
108540     {
108541       handleType = handleType_;
108542       return *this;
108543     }
108544 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
108545 
operator VkSemaphoreGetZirconHandleInfoFUCHSIA const&VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA108546     operator VkSemaphoreGetZirconHandleInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT
108547     {
108548       return *reinterpret_cast<const VkSemaphoreGetZirconHandleInfoFUCHSIA *>( this );
108549     }
108550 
operator VkSemaphoreGetZirconHandleInfoFUCHSIA&VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA108551     operator VkSemaphoreGetZirconHandleInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT
108552     {
108553       return *reinterpret_cast<VkSemaphoreGetZirconHandleInfoFUCHSIA *>( this );
108554     }
108555 
108556 #  if defined( VULKAN_HPP_USE_REFLECT )
108557 #    if 14 <= VULKAN_HPP_CPP_VERSION
108558     auto
108559 #    else
108560     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
108561                const void * const &,
108562                VULKAN_HPP_NAMESPACE::Semaphore const &,
108563                VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &>
108564 #    endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA108565       reflect() const VULKAN_HPP_NOEXCEPT
108566     {
108567       return std::tie( sType, pNext, semaphore, handleType );
108568     }
108569 #  endif
108570 
108571 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
108572     auto operator<=>( SemaphoreGetZirconHandleInfoFUCHSIA const & ) const = default;
108573 #  else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA108574     bool operator==( SemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
108575     {
108576 #    if defined( VULKAN_HPP_USE_REFLECT )
108577       return this->reflect() == rhs.reflect();
108578 #    else
108579       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( handleType == rhs.handleType );
108580 #    endif
108581     }
108582 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA108583     bool operator!=( SemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT
108584     {
108585       return !operator==( rhs );
108586     }
108587 #  endif
108588 
108589   public:
108590     VULKAN_HPP_NAMESPACE::StructureType                       sType      = StructureType::eSemaphoreGetZirconHandleInfoFUCHSIA;
108591     const void *                                              pNext      = {};
108592     VULKAN_HPP_NAMESPACE::Semaphore                           semaphore  = {};
108593     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
108594   };
108595 
108596   template <>
108597   struct CppType<StructureType, StructureType::eSemaphoreGetZirconHandleInfoFUCHSIA>
108598   {
108599     using Type = SemaphoreGetZirconHandleInfoFUCHSIA;
108600   };
108601 #endif /*VK_USE_PLATFORM_FUCHSIA*/
108602 
108603   struct SemaphoreSignalInfo
108604   {
108605     using NativeType = VkSemaphoreSignalInfo;
108606 
108607     static const bool                                  allowDuplicate = false;
108608     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreSignalInfo;
108609 
108610 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
108611     VULKAN_HPP_CONSTEXPR
SemaphoreSignalInfoVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo108612       SemaphoreSignalInfo( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, uint64_t value_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
108613       : pNext{ pNext_ }
108614       , semaphore{ semaphore_ }
108615       , value{ value_ }
108616     {
108617     }
108618 
108619     VULKAN_HPP_CONSTEXPR SemaphoreSignalInfo( SemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108620 
SemaphoreSignalInfoVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo108621     SemaphoreSignalInfo( VkSemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SemaphoreSignalInfo( *reinterpret_cast<SemaphoreSignalInfo const *>( &rhs ) )
108622     {
108623     }
108624 
108625     SemaphoreSignalInfo & operator=( SemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108626 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
108627 
operator =VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo108628     SemaphoreSignalInfo & operator=( VkSemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT
108629     {
108630       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo const *>( &rhs );
108631       return *this;
108632     }
108633 
108634 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo108635     VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
108636     {
108637       pNext = pNext_;
108638       return *this;
108639     }
108640 
setSemaphoreVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo108641     VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
108642     {
108643       semaphore = semaphore_;
108644       return *this;
108645     }
108646 
setValueVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo108647     VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo & setValue( uint64_t value_ ) VULKAN_HPP_NOEXCEPT
108648     {
108649       value = value_;
108650       return *this;
108651     }
108652 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
108653 
operator VkSemaphoreSignalInfo const&VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo108654     operator VkSemaphoreSignalInfo const &() const VULKAN_HPP_NOEXCEPT
108655     {
108656       return *reinterpret_cast<const VkSemaphoreSignalInfo *>( this );
108657     }
108658 
operator VkSemaphoreSignalInfo&VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo108659     operator VkSemaphoreSignalInfo &() VULKAN_HPP_NOEXCEPT
108660     {
108661       return *reinterpret_cast<VkSemaphoreSignalInfo *>( this );
108662     }
108663 
108664 #if defined( VULKAN_HPP_USE_REFLECT )
108665 #  if 14 <= VULKAN_HPP_CPP_VERSION
108666     auto
108667 #  else
108668     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Semaphore const &, uint64_t const &>
108669 #  endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo108670       reflect() const VULKAN_HPP_NOEXCEPT
108671     {
108672       return std::tie( sType, pNext, semaphore, value );
108673     }
108674 #endif
108675 
108676 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
108677     auto operator<=>( SemaphoreSignalInfo const & ) const = default;
108678 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo108679     bool operator==( SemaphoreSignalInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
108680     {
108681 #  if defined( VULKAN_HPP_USE_REFLECT )
108682       return this->reflect() == rhs.reflect();
108683 #  else
108684       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( value == rhs.value );
108685 #  endif
108686     }
108687 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo108688     bool operator!=( SemaphoreSignalInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
108689     {
108690       return !operator==( rhs );
108691     }
108692 #endif
108693 
108694   public:
108695     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eSemaphoreSignalInfo;
108696     const void *                        pNext     = {};
108697     VULKAN_HPP_NAMESPACE::Semaphore     semaphore = {};
108698     uint64_t                            value     = {};
108699   };
108700 
108701   template <>
108702   struct CppType<StructureType, StructureType::eSemaphoreSignalInfo>
108703   {
108704     using Type = SemaphoreSignalInfo;
108705   };
108706 
108707   using SemaphoreSignalInfoKHR = SemaphoreSignalInfo;
108708 
108709   struct SemaphoreTypeCreateInfo
108710   {
108711     using NativeType = VkSemaphoreTypeCreateInfo;
108712 
108713     static const bool                                  allowDuplicate = false;
108714     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreTypeCreateInfo;
108715 
108716 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreTypeCreateInfoVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo108717     VULKAN_HPP_CONSTEXPR SemaphoreTypeCreateInfo( VULKAN_HPP_NAMESPACE::SemaphoreType semaphoreType_ = VULKAN_HPP_NAMESPACE::SemaphoreType::eBinary,
108718                                                   uint64_t                            initialValue_  = {},
108719                                                   const void *                        pNext_         = nullptr ) VULKAN_HPP_NOEXCEPT
108720       : pNext{ pNext_ }
108721       , semaphoreType{ semaphoreType_ }
108722       , initialValue{ initialValue_ }
108723     {
108724     }
108725 
108726     VULKAN_HPP_CONSTEXPR SemaphoreTypeCreateInfo( SemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108727 
SemaphoreTypeCreateInfoVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo108728     SemaphoreTypeCreateInfo( VkSemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
108729       : SemaphoreTypeCreateInfo( *reinterpret_cast<SemaphoreTypeCreateInfo const *>( &rhs ) )
108730     {
108731     }
108732 
108733     SemaphoreTypeCreateInfo & operator=( SemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108734 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
108735 
operator =VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo108736     SemaphoreTypeCreateInfo & operator=( VkSemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
108737     {
108738       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo const *>( &rhs );
108739       return *this;
108740     }
108741 
108742 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo108743     VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
108744     {
108745       pNext = pNext_;
108746       return *this;
108747     }
108748 
setSemaphoreTypeVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo108749     VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo & setSemaphoreType( VULKAN_HPP_NAMESPACE::SemaphoreType semaphoreType_ ) VULKAN_HPP_NOEXCEPT
108750     {
108751       semaphoreType = semaphoreType_;
108752       return *this;
108753     }
108754 
setInitialValueVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo108755     VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo & setInitialValue( uint64_t initialValue_ ) VULKAN_HPP_NOEXCEPT
108756     {
108757       initialValue = initialValue_;
108758       return *this;
108759     }
108760 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
108761 
operator VkSemaphoreTypeCreateInfo const&VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo108762     operator VkSemaphoreTypeCreateInfo const &() const VULKAN_HPP_NOEXCEPT
108763     {
108764       return *reinterpret_cast<const VkSemaphoreTypeCreateInfo *>( this );
108765     }
108766 
operator VkSemaphoreTypeCreateInfo&VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo108767     operator VkSemaphoreTypeCreateInfo &() VULKAN_HPP_NOEXCEPT
108768     {
108769       return *reinterpret_cast<VkSemaphoreTypeCreateInfo *>( this );
108770     }
108771 
108772 #if defined( VULKAN_HPP_USE_REFLECT )
108773 #  if 14 <= VULKAN_HPP_CPP_VERSION
108774     auto
108775 #  else
108776     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SemaphoreType const &, uint64_t const &>
108777 #  endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo108778       reflect() const VULKAN_HPP_NOEXCEPT
108779     {
108780       return std::tie( sType, pNext, semaphoreType, initialValue );
108781     }
108782 #endif
108783 
108784 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
108785     auto operator<=>( SemaphoreTypeCreateInfo const & ) const = default;
108786 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo108787     bool operator==( SemaphoreTypeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
108788     {
108789 #  if defined( VULKAN_HPP_USE_REFLECT )
108790       return this->reflect() == rhs.reflect();
108791 #  else
108792       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphoreType == rhs.semaphoreType ) && ( initialValue == rhs.initialValue );
108793 #  endif
108794     }
108795 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo108796     bool operator!=( SemaphoreTypeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
108797     {
108798       return !operator==( rhs );
108799     }
108800 #endif
108801 
108802   public:
108803     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eSemaphoreTypeCreateInfo;
108804     const void *                        pNext         = {};
108805     VULKAN_HPP_NAMESPACE::SemaphoreType semaphoreType = VULKAN_HPP_NAMESPACE::SemaphoreType::eBinary;
108806     uint64_t                            initialValue  = {};
108807   };
108808 
108809   template <>
108810   struct CppType<StructureType, StructureType::eSemaphoreTypeCreateInfo>
108811   {
108812     using Type = SemaphoreTypeCreateInfo;
108813   };
108814 
108815   using SemaphoreTypeCreateInfoKHR = SemaphoreTypeCreateInfo;
108816 
108817   struct SemaphoreWaitInfo
108818   {
108819     using NativeType = VkSemaphoreWaitInfo;
108820 
108821     static const bool                                  allowDuplicate = false;
108822     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSemaphoreWaitInfo;
108823 
108824 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreWaitInfoVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo108825     VULKAN_HPP_CONSTEXPR SemaphoreWaitInfo( VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags_          = {},
108826                                             uint32_t                                 semaphoreCount_ = {},
108827                                             const VULKAN_HPP_NAMESPACE::Semaphore *  pSemaphores_    = {},
108828                                             const uint64_t *                         pValues_        = {},
108829                                             const void *                             pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
108830       : pNext{ pNext_ }
108831       , flags{ flags_ }
108832       , semaphoreCount{ semaphoreCount_ }
108833       , pSemaphores{ pSemaphores_ }
108834       , pValues{ pValues_ }
108835     {
108836     }
108837 
108838     VULKAN_HPP_CONSTEXPR SemaphoreWaitInfo( SemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108839 
SemaphoreWaitInfoVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo108840     SemaphoreWaitInfo( VkSemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SemaphoreWaitInfo( *reinterpret_cast<SemaphoreWaitInfo const *>( &rhs ) ) {}
108841 
108842 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SemaphoreWaitInfoVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo108843     SemaphoreWaitInfo( VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags                                                     flags_,
108844                        VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & semaphores_,
108845                        VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const &                        values_ = {},
108846                        const void *                                                                                 pNext_  = nullptr )
108847       : pNext( pNext_ )
108848       , flags( flags_ )
108849       , semaphoreCount( static_cast<uint32_t>( semaphores_.size() ) )
108850       , pSemaphores( semaphores_.data() )
108851       , pValues( values_.data() )
108852     {
108853 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
108854       VULKAN_HPP_ASSERT( semaphores_.size() == values_.size() );
108855 #    else
108856       if ( semaphores_.size() != values_.size() )
108857       {
108858         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::SemaphoreWaitInfo::SemaphoreWaitInfo: semaphores_.size() != values_.size()" );
108859       }
108860 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
108861     }
108862 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
108863 
108864     SemaphoreWaitInfo & operator=( SemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
108865 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
108866 
operator =VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo108867     SemaphoreWaitInfo & operator=( VkSemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
108868     {
108869       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo const *>( &rhs );
108870       return *this;
108871     }
108872 
108873 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo108874     VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
108875     {
108876       pNext = pNext_;
108877       return *this;
108878     }
108879 
setFlagsVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo108880     VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setFlags( VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags_ ) VULKAN_HPP_NOEXCEPT
108881     {
108882       flags = flags_;
108883       return *this;
108884     }
108885 
setSemaphoreCountVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo108886     VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setSemaphoreCount( uint32_t semaphoreCount_ ) VULKAN_HPP_NOEXCEPT
108887     {
108888       semaphoreCount = semaphoreCount_;
108889       return *this;
108890     }
108891 
setPSemaphoresVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo108892     VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setPSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pSemaphores_ ) VULKAN_HPP_NOEXCEPT
108893     {
108894       pSemaphores = pSemaphores_;
108895       return *this;
108896     }
108897 
108898 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
108899     SemaphoreWaitInfo &
setSemaphoresVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo108900       setSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & semaphores_ ) VULKAN_HPP_NOEXCEPT
108901     {
108902       semaphoreCount = static_cast<uint32_t>( semaphores_.size() );
108903       pSemaphores    = semaphores_.data();
108904       return *this;
108905     }
108906 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
108907 
setPValuesVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo108908     VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setPValues( const uint64_t * pValues_ ) VULKAN_HPP_NOEXCEPT
108909     {
108910       pValues = pValues_;
108911       return *this;
108912     }
108913 
108914 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setValuesVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo108915     SemaphoreWaitInfo & setValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & values_ ) VULKAN_HPP_NOEXCEPT
108916     {
108917       semaphoreCount = static_cast<uint32_t>( values_.size() );
108918       pValues        = values_.data();
108919       return *this;
108920     }
108921 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
108922 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
108923 
operator VkSemaphoreWaitInfo const&VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo108924     operator VkSemaphoreWaitInfo const &() const VULKAN_HPP_NOEXCEPT
108925     {
108926       return *reinterpret_cast<const VkSemaphoreWaitInfo *>( this );
108927     }
108928 
operator VkSemaphoreWaitInfo&VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo108929     operator VkSemaphoreWaitInfo &() VULKAN_HPP_NOEXCEPT
108930     {
108931       return *reinterpret_cast<VkSemaphoreWaitInfo *>( this );
108932     }
108933 
108934 #if defined( VULKAN_HPP_USE_REFLECT )
108935 #  if 14 <= VULKAN_HPP_CPP_VERSION
108936     auto
108937 #  else
108938     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
108939                const void * const &,
108940                VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags const &,
108941                uint32_t const &,
108942                const VULKAN_HPP_NAMESPACE::Semaphore * const &,
108943                const uint64_t * const &>
108944 #  endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo108945       reflect() const VULKAN_HPP_NOEXCEPT
108946     {
108947       return std::tie( sType, pNext, flags, semaphoreCount, pSemaphores, pValues );
108948     }
108949 #endif
108950 
108951 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
108952     auto operator<=>( SemaphoreWaitInfo const & ) const = default;
108953 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo108954     bool operator==( SemaphoreWaitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
108955     {
108956 #  if defined( VULKAN_HPP_USE_REFLECT )
108957       return this->reflect() == rhs.reflect();
108958 #  else
108959       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( semaphoreCount == rhs.semaphoreCount ) &&
108960              ( pSemaphores == rhs.pSemaphores ) && ( pValues == rhs.pValues );
108961 #  endif
108962     }
108963 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo108964     bool operator!=( SemaphoreWaitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
108965     {
108966       return !operator==( rhs );
108967     }
108968 #endif
108969 
108970   public:
108971     VULKAN_HPP_NAMESPACE::StructureType      sType          = StructureType::eSemaphoreWaitInfo;
108972     const void *                             pNext          = {};
108973     VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags          = {};
108974     uint32_t                                 semaphoreCount = {};
108975     const VULKAN_HPP_NAMESPACE::Semaphore *  pSemaphores    = {};
108976     const uint64_t *                         pValues        = {};
108977   };
108978 
108979   template <>
108980   struct CppType<StructureType, StructureType::eSemaphoreWaitInfo>
108981   {
108982     using Type = SemaphoreWaitInfo;
108983   };
108984 
108985   using SemaphoreWaitInfoKHR = SemaphoreWaitInfo;
108986 
108987   struct SetDescriptorBufferOffsetsInfoEXT
108988   {
108989     using NativeType = VkSetDescriptorBufferOffsetsInfoEXT;
108990 
108991     static const bool                                  allowDuplicate = false;
108992     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSetDescriptorBufferOffsetsInfoEXT;
108993 
108994 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SetDescriptorBufferOffsetsInfoEXTVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT108995     VULKAN_HPP_CONSTEXPR SetDescriptorBufferOffsetsInfoEXT( VULKAN_HPP_NAMESPACE::ShaderStageFlags   stageFlags_     = {},
108996                                                             VULKAN_HPP_NAMESPACE::PipelineLayout     layout_         = {},
108997                                                             uint32_t                                 firstSet_       = {},
108998                                                             uint32_t                                 setCount_       = {},
108999                                                             const uint32_t *                         pBufferIndices_ = {},
109000                                                             const VULKAN_HPP_NAMESPACE::DeviceSize * pOffsets_       = {},
109001                                                             const void *                             pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
109002       : pNext{ pNext_ }
109003       , stageFlags{ stageFlags_ }
109004       , layout{ layout_ }
109005       , firstSet{ firstSet_ }
109006       , setCount{ setCount_ }
109007       , pBufferIndices{ pBufferIndices_ }
109008       , pOffsets{ pOffsets_ }
109009     {
109010     }
109011 
109012     VULKAN_HPP_CONSTEXPR SetDescriptorBufferOffsetsInfoEXT( SetDescriptorBufferOffsetsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109013 
SetDescriptorBufferOffsetsInfoEXTVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT109014     SetDescriptorBufferOffsetsInfoEXT( VkSetDescriptorBufferOffsetsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
109015       : SetDescriptorBufferOffsetsInfoEXT( *reinterpret_cast<SetDescriptorBufferOffsetsInfoEXT const *>( &rhs ) )
109016     {
109017     }
109018 
109019 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SetDescriptorBufferOffsetsInfoEXTVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT109020     SetDescriptorBufferOffsetsInfoEXT( VULKAN_HPP_NAMESPACE::ShaderStageFlags                                                        stageFlags_,
109021                                        VULKAN_HPP_NAMESPACE::PipelineLayout                                                          layout_,
109022                                        uint32_t                                                                                      firstSet_,
109023                                        VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &                         bufferIndices_,
109024                                        VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets_ = {},
109025                                        const void *                                                                                  pNext_   = nullptr )
109026       : pNext( pNext_ )
109027       , stageFlags( stageFlags_ )
109028       , layout( layout_ )
109029       , firstSet( firstSet_ )
109030       , setCount( static_cast<uint32_t>( bufferIndices_.size() ) )
109031       , pBufferIndices( bufferIndices_.data() )
109032       , pOffsets( offsets_.data() )
109033     {
109034 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
109035       VULKAN_HPP_ASSERT( bufferIndices_.size() == offsets_.size() );
109036 #    else
109037       if ( bufferIndices_.size() != offsets_.size() )
109038       {
109039         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
109040                           "::SetDescriptorBufferOffsetsInfoEXT::SetDescriptorBufferOffsetsInfoEXT: bufferIndices_.size() != offsets_.size()" );
109041       }
109042 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
109043     }
109044 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
109045 
109046     SetDescriptorBufferOffsetsInfoEXT & operator=( SetDescriptorBufferOffsetsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109047 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
109048 
operator =VULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT109049     SetDescriptorBufferOffsetsInfoEXT & operator=( VkSetDescriptorBufferOffsetsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
109050     {
109051       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT const *>( &rhs );
109052       return *this;
109053     }
109054 
109055 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT109056     VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
109057     {
109058       pNext = pNext_;
109059       return *this;
109060     }
109061 
setStageFlagsVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT109062     VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT & setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT
109063     {
109064       stageFlags = stageFlags_;
109065       return *this;
109066     }
109067 
setLayoutVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT109068     VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
109069     {
109070       layout = layout_;
109071       return *this;
109072     }
109073 
setFirstSetVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT109074     VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT & setFirstSet( uint32_t firstSet_ ) VULKAN_HPP_NOEXCEPT
109075     {
109076       firstSet = firstSet_;
109077       return *this;
109078     }
109079 
setSetCountVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT109080     VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT & setSetCount( uint32_t setCount_ ) VULKAN_HPP_NOEXCEPT
109081     {
109082       setCount = setCount_;
109083       return *this;
109084     }
109085 
setPBufferIndicesVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT109086     VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT & setPBufferIndices( const uint32_t * pBufferIndices_ ) VULKAN_HPP_NOEXCEPT
109087     {
109088       pBufferIndices = pBufferIndices_;
109089       return *this;
109090     }
109091 
109092 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
109093     SetDescriptorBufferOffsetsInfoEXT &
setBufferIndicesVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT109094       setBufferIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & bufferIndices_ ) VULKAN_HPP_NOEXCEPT
109095     {
109096       setCount       = static_cast<uint32_t>( bufferIndices_.size() );
109097       pBufferIndices = bufferIndices_.data();
109098       return *this;
109099     }
109100 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
109101 
setPOffsetsVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT109102     VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT & setPOffsets( const VULKAN_HPP_NAMESPACE::DeviceSize * pOffsets_ ) VULKAN_HPP_NOEXCEPT
109103     {
109104       pOffsets = pOffsets_;
109105       return *this;
109106     }
109107 
109108 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
109109     SetDescriptorBufferOffsetsInfoEXT &
setOffsetsVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT109110       setOffsets( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets_ ) VULKAN_HPP_NOEXCEPT
109111     {
109112       setCount = static_cast<uint32_t>( offsets_.size() );
109113       pOffsets = offsets_.data();
109114       return *this;
109115     }
109116 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
109117 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
109118 
operator VkSetDescriptorBufferOffsetsInfoEXT const&VULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT109119     operator VkSetDescriptorBufferOffsetsInfoEXT const &() const VULKAN_HPP_NOEXCEPT
109120     {
109121       return *reinterpret_cast<const VkSetDescriptorBufferOffsetsInfoEXT *>( this );
109122     }
109123 
operator VkSetDescriptorBufferOffsetsInfoEXT&VULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT109124     operator VkSetDescriptorBufferOffsetsInfoEXT &() VULKAN_HPP_NOEXCEPT
109125     {
109126       return *reinterpret_cast<VkSetDescriptorBufferOffsetsInfoEXT *>( this );
109127     }
109128 
109129 #if defined( VULKAN_HPP_USE_REFLECT )
109130 #  if 14 <= VULKAN_HPP_CPP_VERSION
109131     auto
109132 #  else
109133     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
109134                const void * const &,
109135                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
109136                VULKAN_HPP_NAMESPACE::PipelineLayout const &,
109137                uint32_t const &,
109138                uint32_t const &,
109139                const uint32_t * const &,
109140                const VULKAN_HPP_NAMESPACE::DeviceSize * const &>
109141 #  endif
reflectVULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT109142       reflect() const VULKAN_HPP_NOEXCEPT
109143     {
109144       return std::tie( sType, pNext, stageFlags, layout, firstSet, setCount, pBufferIndices, pOffsets );
109145     }
109146 #endif
109147 
109148 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
109149     auto operator<=>( SetDescriptorBufferOffsetsInfoEXT const & ) const = default;
109150 #else
operator ==VULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT109151     bool operator==( SetDescriptorBufferOffsetsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
109152     {
109153 #  if defined( VULKAN_HPP_USE_REFLECT )
109154       return this->reflect() == rhs.reflect();
109155 #  else
109156       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stageFlags == rhs.stageFlags ) && ( layout == rhs.layout ) && ( firstSet == rhs.firstSet ) &&
109157              ( setCount == rhs.setCount ) && ( pBufferIndices == rhs.pBufferIndices ) && ( pOffsets == rhs.pOffsets );
109158 #  endif
109159     }
109160 
operator !=VULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT109161     bool operator!=( SetDescriptorBufferOffsetsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
109162     {
109163       return !operator==( rhs );
109164     }
109165 #endif
109166 
109167   public:
109168     VULKAN_HPP_NAMESPACE::StructureType      sType          = StructureType::eSetDescriptorBufferOffsetsInfoEXT;
109169     const void *                             pNext          = {};
109170     VULKAN_HPP_NAMESPACE::ShaderStageFlags   stageFlags     = {};
109171     VULKAN_HPP_NAMESPACE::PipelineLayout     layout         = {};
109172     uint32_t                                 firstSet       = {};
109173     uint32_t                                 setCount       = {};
109174     const uint32_t *                         pBufferIndices = {};
109175     const VULKAN_HPP_NAMESPACE::DeviceSize * pOffsets       = {};
109176   };
109177 
109178   template <>
109179   struct CppType<StructureType, StructureType::eSetDescriptorBufferOffsetsInfoEXT>
109180   {
109181     using Type = SetDescriptorBufferOffsetsInfoEXT;
109182   };
109183 
109184   struct SetLatencyMarkerInfoNV
109185   {
109186     using NativeType = VkSetLatencyMarkerInfoNV;
109187 
109188     static const bool                                  allowDuplicate = false;
109189     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSetLatencyMarkerInfoNV;
109190 
109191 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SetLatencyMarkerInfoNVVULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV109192     VULKAN_HPP_CONSTEXPR SetLatencyMarkerInfoNV( uint64_t                              presentID_ = {},
109193                                                  VULKAN_HPP_NAMESPACE::LatencyMarkerNV marker_    = VULKAN_HPP_NAMESPACE::LatencyMarkerNV::eSimulationStart,
109194                                                  const void *                          pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
109195       : pNext{ pNext_ }
109196       , presentID{ presentID_ }
109197       , marker{ marker_ }
109198     {
109199     }
109200 
109201     VULKAN_HPP_CONSTEXPR SetLatencyMarkerInfoNV( SetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109202 
SetLatencyMarkerInfoNVVULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV109203     SetLatencyMarkerInfoNV( VkSetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
109204       : SetLatencyMarkerInfoNV( *reinterpret_cast<SetLatencyMarkerInfoNV const *>( &rhs ) )
109205     {
109206     }
109207 
109208     SetLatencyMarkerInfoNV & operator=( SetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109209 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
109210 
operator =VULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV109211     SetLatencyMarkerInfoNV & operator=( VkSetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
109212     {
109213       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV const *>( &rhs );
109214       return *this;
109215     }
109216 
109217 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV109218     VULKAN_HPP_CONSTEXPR_14 SetLatencyMarkerInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
109219     {
109220       pNext = pNext_;
109221       return *this;
109222     }
109223 
setPresentIDVULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV109224     VULKAN_HPP_CONSTEXPR_14 SetLatencyMarkerInfoNV & setPresentID( uint64_t presentID_ ) VULKAN_HPP_NOEXCEPT
109225     {
109226       presentID = presentID_;
109227       return *this;
109228     }
109229 
setMarkerVULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV109230     VULKAN_HPP_CONSTEXPR_14 SetLatencyMarkerInfoNV & setMarker( VULKAN_HPP_NAMESPACE::LatencyMarkerNV marker_ ) VULKAN_HPP_NOEXCEPT
109231     {
109232       marker = marker_;
109233       return *this;
109234     }
109235 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
109236 
operator VkSetLatencyMarkerInfoNV const&VULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV109237     operator VkSetLatencyMarkerInfoNV const &() const VULKAN_HPP_NOEXCEPT
109238     {
109239       return *reinterpret_cast<const VkSetLatencyMarkerInfoNV *>( this );
109240     }
109241 
operator VkSetLatencyMarkerInfoNV&VULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV109242     operator VkSetLatencyMarkerInfoNV &() VULKAN_HPP_NOEXCEPT
109243     {
109244       return *reinterpret_cast<VkSetLatencyMarkerInfoNV *>( this );
109245     }
109246 
109247 #if defined( VULKAN_HPP_USE_REFLECT )
109248 #  if 14 <= VULKAN_HPP_CPP_VERSION
109249     auto
109250 #  else
109251     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint64_t const &, VULKAN_HPP_NAMESPACE::LatencyMarkerNV const &>
109252 #  endif
reflectVULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV109253       reflect() const VULKAN_HPP_NOEXCEPT
109254     {
109255       return std::tie( sType, pNext, presentID, marker );
109256     }
109257 #endif
109258 
109259 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
109260     auto operator<=>( SetLatencyMarkerInfoNV const & ) const = default;
109261 #else
operator ==VULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV109262     bool operator==( SetLatencyMarkerInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
109263     {
109264 #  if defined( VULKAN_HPP_USE_REFLECT )
109265       return this->reflect() == rhs.reflect();
109266 #  else
109267       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentID == rhs.presentID ) && ( marker == rhs.marker );
109268 #  endif
109269     }
109270 
operator !=VULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV109271     bool operator!=( SetLatencyMarkerInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
109272     {
109273       return !operator==( rhs );
109274     }
109275 #endif
109276 
109277   public:
109278     VULKAN_HPP_NAMESPACE::StructureType   sType     = StructureType::eSetLatencyMarkerInfoNV;
109279     const void *                          pNext     = {};
109280     uint64_t                              presentID = {};
109281     VULKAN_HPP_NAMESPACE::LatencyMarkerNV marker    = VULKAN_HPP_NAMESPACE::LatencyMarkerNV::eSimulationStart;
109282   };
109283 
109284   template <>
109285   struct CppType<StructureType, StructureType::eSetLatencyMarkerInfoNV>
109286   {
109287     using Type = SetLatencyMarkerInfoNV;
109288   };
109289 
109290   struct SetStateFlagsIndirectCommandNV
109291   {
109292     using NativeType = VkSetStateFlagsIndirectCommandNV;
109293 
109294 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SetStateFlagsIndirectCommandNVVULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV109295     VULKAN_HPP_CONSTEXPR SetStateFlagsIndirectCommandNV( uint32_t data_ = {} ) VULKAN_HPP_NOEXCEPT : data{ data_ } {}
109296 
109297     VULKAN_HPP_CONSTEXPR SetStateFlagsIndirectCommandNV( SetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109298 
SetStateFlagsIndirectCommandNVVULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV109299     SetStateFlagsIndirectCommandNV( VkSetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
109300       : SetStateFlagsIndirectCommandNV( *reinterpret_cast<SetStateFlagsIndirectCommandNV const *>( &rhs ) )
109301     {
109302     }
109303 
109304     SetStateFlagsIndirectCommandNV & operator=( SetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109305 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
109306 
operator =VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV109307     SetStateFlagsIndirectCommandNV & operator=( VkSetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
109308     {
109309       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV const *>( &rhs );
109310       return *this;
109311     }
109312 
109313 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setDataVULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV109314     VULKAN_HPP_CONSTEXPR_14 SetStateFlagsIndirectCommandNV & setData( uint32_t data_ ) VULKAN_HPP_NOEXCEPT
109315     {
109316       data = data_;
109317       return *this;
109318     }
109319 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
109320 
operator VkSetStateFlagsIndirectCommandNV const&VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV109321     operator VkSetStateFlagsIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT
109322     {
109323       return *reinterpret_cast<const VkSetStateFlagsIndirectCommandNV *>( this );
109324     }
109325 
operator VkSetStateFlagsIndirectCommandNV&VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV109326     operator VkSetStateFlagsIndirectCommandNV &() VULKAN_HPP_NOEXCEPT
109327     {
109328       return *reinterpret_cast<VkSetStateFlagsIndirectCommandNV *>( this );
109329     }
109330 
109331 #if defined( VULKAN_HPP_USE_REFLECT )
109332 #  if 14 <= VULKAN_HPP_CPP_VERSION
109333     auto
109334 #  else
109335     std::tuple<uint32_t const &>
109336 #  endif
reflectVULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV109337       reflect() const VULKAN_HPP_NOEXCEPT
109338     {
109339       return std::tie( data );
109340     }
109341 #endif
109342 
109343 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
109344     auto operator<=>( SetStateFlagsIndirectCommandNV const & ) const = default;
109345 #else
operator ==VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV109346     bool operator==( SetStateFlagsIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
109347     {
109348 #  if defined( VULKAN_HPP_USE_REFLECT )
109349       return this->reflect() == rhs.reflect();
109350 #  else
109351       return ( data == rhs.data );
109352 #  endif
109353     }
109354 
operator !=VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV109355     bool operator!=( SetStateFlagsIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT
109356     {
109357       return !operator==( rhs );
109358     }
109359 #endif
109360 
109361   public:
109362     uint32_t data = {};
109363   };
109364 
109365   struct ShaderCreateInfoEXT
109366   {
109367     using NativeType = VkShaderCreateInfoEXT;
109368 
109369     static const bool                                  allowDuplicate = false;
109370     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eShaderCreateInfoEXT;
109371 
109372 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ShaderCreateInfoEXTVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109373     VULKAN_HPP_CONSTEXPR ShaderCreateInfoEXT( VULKAN_HPP_NAMESPACE::ShaderCreateFlagsEXT        flags_     = {},
109374                                               VULKAN_HPP_NAMESPACE::ShaderStageFlagBits         stage_     = VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eVertex,
109375                                               VULKAN_HPP_NAMESPACE::ShaderStageFlags            nextStage_ = {},
109376                                               VULKAN_HPP_NAMESPACE::ShaderCodeTypeEXT           codeType_  = VULKAN_HPP_NAMESPACE::ShaderCodeTypeEXT::eBinary,
109377                                               size_t                                            codeSize_  = {},
109378                                               const void *                                      pCode_     = {},
109379                                               const char *                                      pName_     = {},
109380                                               uint32_t                                          setLayoutCount_         = {},
109381                                               const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_            = {},
109382                                               uint32_t                                          pushConstantRangeCount_ = {},
109383                                               const VULKAN_HPP_NAMESPACE::PushConstantRange *   pPushConstantRanges_    = {},
109384                                               const VULKAN_HPP_NAMESPACE::SpecializationInfo *  pSpecializationInfo_    = {},
109385                                               const void *                                      pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
109386       : pNext{ pNext_ }
109387       , flags{ flags_ }
109388       , stage{ stage_ }
109389       , nextStage{ nextStage_ }
109390       , codeType{ codeType_ }
109391       , codeSize{ codeSize_ }
109392       , pCode{ pCode_ }
109393       , pName{ pName_ }
109394       , setLayoutCount{ setLayoutCount_ }
109395       , pSetLayouts{ pSetLayouts_ }
109396       , pushConstantRangeCount{ pushConstantRangeCount_ }
109397       , pPushConstantRanges{ pPushConstantRanges_ }
109398       , pSpecializationInfo{ pSpecializationInfo_ }
109399     {
109400     }
109401 
109402     VULKAN_HPP_CONSTEXPR ShaderCreateInfoEXT( ShaderCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109403 
ShaderCreateInfoEXTVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109404     ShaderCreateInfoEXT( VkShaderCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : ShaderCreateInfoEXT( *reinterpret_cast<ShaderCreateInfoEXT const *>( &rhs ) )
109405     {
109406     }
109407 
109408 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
109409     template <typename T>
ShaderCreateInfoEXTVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109410     ShaderCreateInfoEXT( VULKAN_HPP_NAMESPACE::ShaderCreateFlagsEXT                                                             flags_,
109411                          VULKAN_HPP_NAMESPACE::ShaderStageFlagBits                                                              stage_,
109412                          VULKAN_HPP_NAMESPACE::ShaderStageFlags                                                                 nextStage_,
109413                          VULKAN_HPP_NAMESPACE::ShaderCodeTypeEXT                                                                codeType_,
109414                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const &                                         code_,
109415                          const char *                                                                                           pName_               = {},
109416                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const & setLayouts_          = {},
109417                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PushConstantRange> const &   pushConstantRanges_  = {},
109418                          const VULKAN_HPP_NAMESPACE::SpecializationInfo *                                                       pSpecializationInfo_ = {},
109419                          const void *                                                                                           pNext_               = nullptr )
109420       : pNext( pNext_ )
109421       , flags( flags_ )
109422       , stage( stage_ )
109423       , nextStage( nextStage_ )
109424       , codeType( codeType_ )
109425       , codeSize( code_.size() * sizeof( T ) )
109426       , pCode( code_.data() )
109427       , pName( pName_ )
109428       , setLayoutCount( static_cast<uint32_t>( setLayouts_.size() ) )
109429       , pSetLayouts( setLayouts_.data() )
109430       , pushConstantRangeCount( static_cast<uint32_t>( pushConstantRanges_.size() ) )
109431       , pPushConstantRanges( pushConstantRanges_.data() )
109432       , pSpecializationInfo( pSpecializationInfo_ )
109433     {
109434     }
109435 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
109436 
109437     ShaderCreateInfoEXT & operator=( ShaderCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109438 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
109439 
operator =VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109440     ShaderCreateInfoEXT & operator=( VkShaderCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
109441     {
109442       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT const *>( &rhs );
109443       return *this;
109444     }
109445 
109446 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109447     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
109448     {
109449       pNext = pNext_;
109450       return *this;
109451     }
109452 
setFlagsVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109453     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::ShaderCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
109454     {
109455       flags = flags_;
109456       return *this;
109457     }
109458 
setStageVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109459     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setStage( VULKAN_HPP_NAMESPACE::ShaderStageFlagBits stage_ ) VULKAN_HPP_NOEXCEPT
109460     {
109461       stage = stage_;
109462       return *this;
109463     }
109464 
setNextStageVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109465     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setNextStage( VULKAN_HPP_NAMESPACE::ShaderStageFlags nextStage_ ) VULKAN_HPP_NOEXCEPT
109466     {
109467       nextStage = nextStage_;
109468       return *this;
109469     }
109470 
setCodeTypeVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109471     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setCodeType( VULKAN_HPP_NAMESPACE::ShaderCodeTypeEXT codeType_ ) VULKAN_HPP_NOEXCEPT
109472     {
109473       codeType = codeType_;
109474       return *this;
109475     }
109476 
setCodeSizeVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109477     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setCodeSize( size_t codeSize_ ) VULKAN_HPP_NOEXCEPT
109478     {
109479       codeSize = codeSize_;
109480       return *this;
109481     }
109482 
setPCodeVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109483     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setPCode( const void * pCode_ ) VULKAN_HPP_NOEXCEPT
109484     {
109485       pCode = pCode_;
109486       return *this;
109487     }
109488 
109489 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
109490     template <typename T>
setCodeVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109491     ShaderCreateInfoEXT & setCode( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & code_ ) VULKAN_HPP_NOEXCEPT
109492     {
109493       codeSize = code_.size() * sizeof( T );
109494       pCode    = code_.data();
109495       return *this;
109496     }
109497 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
109498 
setPNameVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109499     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setPName( const char * pName_ ) VULKAN_HPP_NOEXCEPT
109500     {
109501       pName = pName_;
109502       return *this;
109503     }
109504 
setSetLayoutCountVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109505     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setSetLayoutCount( uint32_t setLayoutCount_ ) VULKAN_HPP_NOEXCEPT
109506     {
109507       setLayoutCount = setLayoutCount_;
109508       return *this;
109509     }
109510 
setPSetLayoutsVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109511     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setPSetLayouts( const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_ ) VULKAN_HPP_NOEXCEPT
109512     {
109513       pSetLayouts = pSetLayouts_;
109514       return *this;
109515     }
109516 
109517 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
109518     ShaderCreateInfoEXT &
setSetLayoutsVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109519       setSetLayouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const & setLayouts_ ) VULKAN_HPP_NOEXCEPT
109520     {
109521       setLayoutCount = static_cast<uint32_t>( setLayouts_.size() );
109522       pSetLayouts    = setLayouts_.data();
109523       return *this;
109524     }
109525 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
109526 
setPushConstantRangeCountVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109527     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setPushConstantRangeCount( uint32_t pushConstantRangeCount_ ) VULKAN_HPP_NOEXCEPT
109528     {
109529       pushConstantRangeCount = pushConstantRangeCount_;
109530       return *this;
109531     }
109532 
109533     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT &
setPPushConstantRangesVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109534       setPPushConstantRanges( const VULKAN_HPP_NAMESPACE::PushConstantRange * pPushConstantRanges_ ) VULKAN_HPP_NOEXCEPT
109535     {
109536       pPushConstantRanges = pPushConstantRanges_;
109537       return *this;
109538     }
109539 
109540 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPushConstantRangesVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109541     ShaderCreateInfoEXT & setPushConstantRanges(
109542       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PushConstantRange> const & pushConstantRanges_ ) VULKAN_HPP_NOEXCEPT
109543     {
109544       pushConstantRangeCount = static_cast<uint32_t>( pushConstantRanges_.size() );
109545       pPushConstantRanges    = pushConstantRanges_.data();
109546       return *this;
109547     }
109548 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
109549 
109550     VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT &
setPSpecializationInfoVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109551       setPSpecializationInfo( const VULKAN_HPP_NAMESPACE::SpecializationInfo * pSpecializationInfo_ ) VULKAN_HPP_NOEXCEPT
109552     {
109553       pSpecializationInfo = pSpecializationInfo_;
109554       return *this;
109555     }
109556 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
109557 
operator VkShaderCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109558     operator VkShaderCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
109559     {
109560       return *reinterpret_cast<const VkShaderCreateInfoEXT *>( this );
109561     }
109562 
operator VkShaderCreateInfoEXT&VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109563     operator VkShaderCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
109564     {
109565       return *reinterpret_cast<VkShaderCreateInfoEXT *>( this );
109566     }
109567 
109568 #if defined( VULKAN_HPP_USE_REFLECT )
109569 #  if 14 <= VULKAN_HPP_CPP_VERSION
109570     auto
109571 #  else
109572     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
109573                const void * const &,
109574                VULKAN_HPP_NAMESPACE::ShaderCreateFlagsEXT const &,
109575                VULKAN_HPP_NAMESPACE::ShaderStageFlagBits const &,
109576                VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
109577                VULKAN_HPP_NAMESPACE::ShaderCodeTypeEXT const &,
109578                size_t const &,
109579                const void * const &,
109580                const char * const &,
109581                uint32_t const &,
109582                const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * const &,
109583                uint32_t const &,
109584                const VULKAN_HPP_NAMESPACE::PushConstantRange * const &,
109585                const VULKAN_HPP_NAMESPACE::SpecializationInfo * const &>
109586 #  endif
reflectVULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109587       reflect() const VULKAN_HPP_NOEXCEPT
109588     {
109589       return std::tie( sType,
109590                        pNext,
109591                        flags,
109592                        stage,
109593                        nextStage,
109594                        codeType,
109595                        codeSize,
109596                        pCode,
109597                        pName,
109598                        setLayoutCount,
109599                        pSetLayouts,
109600                        pushConstantRangeCount,
109601                        pPushConstantRanges,
109602                        pSpecializationInfo );
109603     }
109604 #endif
109605 
109606 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109607     std::strong_ordering operator<=>( ShaderCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
109608     {
109609       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
109610         return cmp;
109611       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
109612         return cmp;
109613       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
109614         return cmp;
109615       if ( auto cmp = stage <=> rhs.stage; cmp != 0 )
109616         return cmp;
109617       if ( auto cmp = nextStage <=> rhs.nextStage; cmp != 0 )
109618         return cmp;
109619       if ( auto cmp = codeType <=> rhs.codeType; cmp != 0 )
109620         return cmp;
109621       if ( auto cmp = codeSize <=> rhs.codeSize; cmp != 0 )
109622         return cmp;
109623       if ( auto cmp = pCode <=> rhs.pCode; cmp != 0 )
109624         return cmp;
109625       if ( pName != rhs.pName )
109626         if ( auto cmp = strcmp( pName, rhs.pName ); cmp != 0 )
109627           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
109628       if ( auto cmp = setLayoutCount <=> rhs.setLayoutCount; cmp != 0 )
109629         return cmp;
109630       if ( auto cmp = pSetLayouts <=> rhs.pSetLayouts; cmp != 0 )
109631         return cmp;
109632       if ( auto cmp = pushConstantRangeCount <=> rhs.pushConstantRangeCount; cmp != 0 )
109633         return cmp;
109634       if ( auto cmp = pPushConstantRanges <=> rhs.pPushConstantRanges; cmp != 0 )
109635         return cmp;
109636       if ( auto cmp = pSpecializationInfo <=> rhs.pSpecializationInfo; cmp != 0 )
109637         return cmp;
109638 
109639       return std::strong_ordering::equivalent;
109640     }
109641 #endif
109642 
operator ==VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109643     bool operator==( ShaderCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
109644     {
109645       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stage == rhs.stage ) && ( nextStage == rhs.nextStage ) &&
109646              ( codeType == rhs.codeType ) && ( codeSize == rhs.codeSize ) && ( pCode == rhs.pCode ) &&
109647              ( ( pName == rhs.pName ) || ( strcmp( pName, rhs.pName ) == 0 ) ) && ( setLayoutCount == rhs.setLayoutCount ) &&
109648              ( pSetLayouts == rhs.pSetLayouts ) && ( pushConstantRangeCount == rhs.pushConstantRangeCount ) &&
109649              ( pPushConstantRanges == rhs.pPushConstantRanges ) && ( pSpecializationInfo == rhs.pSpecializationInfo );
109650     }
109651 
operator !=VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT109652     bool operator!=( ShaderCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
109653     {
109654       return !operator==( rhs );
109655     }
109656 
109657   public:
109658     VULKAN_HPP_NAMESPACE::StructureType               sType                  = StructureType::eShaderCreateInfoEXT;
109659     const void *                                      pNext                  = {};
109660     VULKAN_HPP_NAMESPACE::ShaderCreateFlagsEXT        flags                  = {};
109661     VULKAN_HPP_NAMESPACE::ShaderStageFlagBits         stage                  = VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eVertex;
109662     VULKAN_HPP_NAMESPACE::ShaderStageFlags            nextStage              = {};
109663     VULKAN_HPP_NAMESPACE::ShaderCodeTypeEXT           codeType               = VULKAN_HPP_NAMESPACE::ShaderCodeTypeEXT::eBinary;
109664     size_t                                            codeSize               = {};
109665     const void *                                      pCode                  = {};
109666     const char *                                      pName                  = {};
109667     uint32_t                                          setLayoutCount         = {};
109668     const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts            = {};
109669     uint32_t                                          pushConstantRangeCount = {};
109670     const VULKAN_HPP_NAMESPACE::PushConstantRange *   pPushConstantRanges    = {};
109671     const VULKAN_HPP_NAMESPACE::SpecializationInfo *  pSpecializationInfo    = {};
109672   };
109673 
109674   template <>
109675   struct CppType<StructureType, StructureType::eShaderCreateInfoEXT>
109676   {
109677     using Type = ShaderCreateInfoEXT;
109678   };
109679 
109680   struct ShaderModuleCreateInfo
109681   {
109682     using NativeType = VkShaderModuleCreateInfo;
109683 
109684     static const bool                                  allowDuplicate = false;
109685     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eShaderModuleCreateInfo;
109686 
109687 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ShaderModuleCreateInfoVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo109688     VULKAN_HPP_CONSTEXPR ShaderModuleCreateInfo( VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags flags_    = {},
109689                                                  size_t                                        codeSize_ = {},
109690                                                  const uint32_t *                              pCode_    = {},
109691                                                  const void *                                  pNext_    = nullptr ) VULKAN_HPP_NOEXCEPT
109692       : pNext{ pNext_ }
109693       , flags{ flags_ }
109694       , codeSize{ codeSize_ }
109695       , pCode{ pCode_ }
109696     {
109697     }
109698 
109699     VULKAN_HPP_CONSTEXPR ShaderModuleCreateInfo( ShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109700 
ShaderModuleCreateInfoVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo109701     ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
109702       : ShaderModuleCreateInfo( *reinterpret_cast<ShaderModuleCreateInfo const *>( &rhs ) )
109703     {
109704     }
109705 
109706 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ShaderModuleCreateInfoVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo109707     ShaderModuleCreateInfo( VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags                         flags_,
109708                             VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & code_,
109709                             const void *                                                          pNext_ = nullptr )
109710       : pNext( pNext_ ), flags( flags_ ), codeSize( code_.size() * 4 ), pCode( code_.data() )
109711     {
109712     }
109713 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
109714 
109715     ShaderModuleCreateInfo & operator=( ShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109716 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
109717 
operator =VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo109718     ShaderModuleCreateInfo & operator=( VkShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
109719     {
109720       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo const *>( &rhs );
109721       return *this;
109722     }
109723 
109724 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo109725     VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
109726     {
109727       pNext = pNext_;
109728       return *this;
109729     }
109730 
setFlagsVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo109731     VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
109732     {
109733       flags = flags_;
109734       return *this;
109735     }
109736 
setCodeSizeVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo109737     VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo & setCodeSize( size_t codeSize_ ) VULKAN_HPP_NOEXCEPT
109738     {
109739       codeSize = codeSize_;
109740       return *this;
109741     }
109742 
setPCodeVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo109743     VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo & setPCode( const uint32_t * pCode_ ) VULKAN_HPP_NOEXCEPT
109744     {
109745       pCode = pCode_;
109746       return *this;
109747     }
109748 
109749 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCodeVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo109750     ShaderModuleCreateInfo & setCode( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & code_ ) VULKAN_HPP_NOEXCEPT
109751     {
109752       codeSize = code_.size() * 4;
109753       pCode    = code_.data();
109754       return *this;
109755     }
109756 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
109757 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
109758 
operator VkShaderModuleCreateInfo const&VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo109759     operator VkShaderModuleCreateInfo const &() const VULKAN_HPP_NOEXCEPT
109760     {
109761       return *reinterpret_cast<const VkShaderModuleCreateInfo *>( this );
109762     }
109763 
operator VkShaderModuleCreateInfo&VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo109764     operator VkShaderModuleCreateInfo &() VULKAN_HPP_NOEXCEPT
109765     {
109766       return *reinterpret_cast<VkShaderModuleCreateInfo *>( this );
109767     }
109768 
109769 #if defined( VULKAN_HPP_USE_REFLECT )
109770 #  if 14 <= VULKAN_HPP_CPP_VERSION
109771     auto
109772 #  else
109773     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
109774                const void * const &,
109775                VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags const &,
109776                size_t const &,
109777                const uint32_t * const &>
109778 #  endif
reflectVULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo109779       reflect() const VULKAN_HPP_NOEXCEPT
109780     {
109781       return std::tie( sType, pNext, flags, codeSize, pCode );
109782     }
109783 #endif
109784 
109785 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
109786     auto operator<=>( ShaderModuleCreateInfo const & ) const = default;
109787 #else
operator ==VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo109788     bool operator==( ShaderModuleCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
109789     {
109790 #  if defined( VULKAN_HPP_USE_REFLECT )
109791       return this->reflect() == rhs.reflect();
109792 #  else
109793       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( codeSize == rhs.codeSize ) && ( pCode == rhs.pCode );
109794 #  endif
109795     }
109796 
operator !=VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo109797     bool operator!=( ShaderModuleCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
109798     {
109799       return !operator==( rhs );
109800     }
109801 #endif
109802 
109803   public:
109804     VULKAN_HPP_NAMESPACE::StructureType           sType    = StructureType::eShaderModuleCreateInfo;
109805     const void *                                  pNext    = {};
109806     VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags flags    = {};
109807     size_t                                        codeSize = {};
109808     const uint32_t *                              pCode    = {};
109809   };
109810 
109811   template <>
109812   struct CppType<StructureType, StructureType::eShaderModuleCreateInfo>
109813   {
109814     using Type = ShaderModuleCreateInfo;
109815   };
109816 
109817   struct ShaderModuleIdentifierEXT
109818   {
109819     using NativeType = VkShaderModuleIdentifierEXT;
109820 
109821     static const bool                                  allowDuplicate = false;
109822     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eShaderModuleIdentifierEXT;
109823 
109824 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ShaderModuleIdentifierEXTVULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT109825     VULKAN_HPP_CONSTEXPR_14 ShaderModuleIdentifierEXT( uint32_t                                                              identifierSize_ = {},
109826                                                        std::array<uint8_t, VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT> const & identifier_     = {},
109827                                                        void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
109828       : pNext{ pNext_ }
109829       , identifierSize{ identifierSize_ }
109830       , identifier{ identifier_ }
109831     {
109832     }
109833 
109834     VULKAN_HPP_CONSTEXPR_14 ShaderModuleIdentifierEXT( ShaderModuleIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109835 
ShaderModuleIdentifierEXTVULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT109836     ShaderModuleIdentifierEXT( VkShaderModuleIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT
109837       : ShaderModuleIdentifierEXT( *reinterpret_cast<ShaderModuleIdentifierEXT const *>( &rhs ) )
109838     {
109839     }
109840 
109841 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ShaderModuleIdentifierEXTVULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT109842     ShaderModuleIdentifierEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<uint8_t> const & identifier_, void * pNext_ = nullptr )
109843       : pNext( pNext_ ), identifierSize( std::min( static_cast<uint32_t>( identifier_.size() ), VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT ) )
109844     {
109845       VULKAN_HPP_ASSERT( identifier_.size() < VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT );
109846       memcpy( identifier, identifier_.data(), identifierSize * sizeof( uint8_t ) );
109847     }
109848 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
109849 
109850     ShaderModuleIdentifierEXT & operator=( ShaderModuleIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109851 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
109852 
operator =VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT109853     ShaderModuleIdentifierEXT & operator=( VkShaderModuleIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT
109854     {
109855       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT const *>( &rhs );
109856       return *this;
109857     }
109858 
operator VkShaderModuleIdentifierEXT const&VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT109859     operator VkShaderModuleIdentifierEXT const &() const VULKAN_HPP_NOEXCEPT
109860     {
109861       return *reinterpret_cast<const VkShaderModuleIdentifierEXT *>( this );
109862     }
109863 
operator VkShaderModuleIdentifierEXT&VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT109864     operator VkShaderModuleIdentifierEXT &() VULKAN_HPP_NOEXCEPT
109865     {
109866       return *reinterpret_cast<VkShaderModuleIdentifierEXT *>( this );
109867     }
109868 
109869 #if defined( VULKAN_HPP_USE_REFLECT )
109870 #  if 14 <= VULKAN_HPP_CPP_VERSION
109871     auto
109872 #  else
109873     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
109874                void * const &,
109875                uint32_t const &,
109876                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT> const &>
109877 #  endif
reflectVULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT109878       reflect() const VULKAN_HPP_NOEXCEPT
109879     {
109880       return std::tie( sType, pNext, identifierSize, identifier );
109881     }
109882 #endif
109883 
109884 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT109885     std::strong_ordering operator<=>( ShaderModuleIdentifierEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
109886     {
109887       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
109888         return cmp;
109889       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
109890         return cmp;
109891       if ( auto cmp = identifierSize <=> rhs.identifierSize; cmp != 0 )
109892         return cmp;
109893       for ( size_t i = 0; i < identifierSize; ++i )
109894       {
109895         if ( auto cmp = identifier[i] <=> rhs.identifier[i]; cmp != 0 )
109896           return cmp;
109897       }
109898 
109899       return std::strong_ordering::equivalent;
109900     }
109901 #endif
109902 
operator ==VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT109903     bool operator==( ShaderModuleIdentifierEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
109904     {
109905       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( identifierSize == rhs.identifierSize ) &&
109906              ( memcmp( identifier, rhs.identifier, identifierSize * sizeof( uint8_t ) ) == 0 );
109907     }
109908 
operator !=VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT109909     bool operator!=( ShaderModuleIdentifierEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
109910     {
109911       return !operator==( rhs );
109912     }
109913 
109914   public:
109915     VULKAN_HPP_NAMESPACE::StructureType                                                     sType          = StructureType::eShaderModuleIdentifierEXT;
109916     void *                                                                                  pNext          = {};
109917     uint32_t                                                                                identifierSize = {};
109918     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT> identifier     = {};
109919   };
109920 
109921   template <>
109922   struct CppType<StructureType, StructureType::eShaderModuleIdentifierEXT>
109923   {
109924     using Type = ShaderModuleIdentifierEXT;
109925   };
109926 
109927   struct ShaderModuleValidationCacheCreateInfoEXT
109928   {
109929     using NativeType = VkShaderModuleValidationCacheCreateInfoEXT;
109930 
109931     static const bool                                  allowDuplicate = false;
109932     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eShaderModuleValidationCacheCreateInfoEXT;
109933 
109934 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ShaderModuleValidationCacheCreateInfoEXTVULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT109935     VULKAN_HPP_CONSTEXPR ShaderModuleValidationCacheCreateInfoEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache_ = {},
109936                                                                    const void *                             pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
109937       : pNext{ pNext_ }
109938       , validationCache{ validationCache_ }
109939     {
109940     }
109941 
109942     VULKAN_HPP_CONSTEXPR ShaderModuleValidationCacheCreateInfoEXT( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109943 
ShaderModuleValidationCacheCreateInfoEXTVULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT109944     ShaderModuleValidationCacheCreateInfoEXT( VkShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
109945       : ShaderModuleValidationCacheCreateInfoEXT( *reinterpret_cast<ShaderModuleValidationCacheCreateInfoEXT const *>( &rhs ) )
109946     {
109947     }
109948 
109949     ShaderModuleValidationCacheCreateInfoEXT & operator=( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
109950 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
109951 
operator =VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT109952     ShaderModuleValidationCacheCreateInfoEXT & operator=( VkShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
109953     {
109954       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT const *>( &rhs );
109955       return *this;
109956     }
109957 
109958 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT109959     VULKAN_HPP_CONSTEXPR_14 ShaderModuleValidationCacheCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
109960     {
109961       pNext = pNext_;
109962       return *this;
109963     }
109964 
109965     VULKAN_HPP_CONSTEXPR_14 ShaderModuleValidationCacheCreateInfoEXT &
setValidationCacheVULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT109966       setValidationCache( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache_ ) VULKAN_HPP_NOEXCEPT
109967     {
109968       validationCache = validationCache_;
109969       return *this;
109970     }
109971 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
109972 
operator VkShaderModuleValidationCacheCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT109973     operator VkShaderModuleValidationCacheCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
109974     {
109975       return *reinterpret_cast<const VkShaderModuleValidationCacheCreateInfoEXT *>( this );
109976     }
109977 
operator VkShaderModuleValidationCacheCreateInfoEXT&VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT109978     operator VkShaderModuleValidationCacheCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
109979     {
109980       return *reinterpret_cast<VkShaderModuleValidationCacheCreateInfoEXT *>( this );
109981     }
109982 
109983 #if defined( VULKAN_HPP_USE_REFLECT )
109984 #  if 14 <= VULKAN_HPP_CPP_VERSION
109985     auto
109986 #  else
109987     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ValidationCacheEXT const &>
109988 #  endif
reflectVULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT109989       reflect() const VULKAN_HPP_NOEXCEPT
109990     {
109991       return std::tie( sType, pNext, validationCache );
109992     }
109993 #endif
109994 
109995 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
109996     auto operator<=>( ShaderModuleValidationCacheCreateInfoEXT const & ) const = default;
109997 #else
operator ==VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT109998     bool operator==( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
109999     {
110000 #  if defined( VULKAN_HPP_USE_REFLECT )
110001       return this->reflect() == rhs.reflect();
110002 #  else
110003       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( validationCache == rhs.validationCache );
110004 #  endif
110005     }
110006 
operator !=VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT110007     bool operator!=( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
110008     {
110009       return !operator==( rhs );
110010     }
110011 #endif
110012 
110013   public:
110014     VULKAN_HPP_NAMESPACE::StructureType      sType           = StructureType::eShaderModuleValidationCacheCreateInfoEXT;
110015     const void *                             pNext           = {};
110016     VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache = {};
110017   };
110018 
110019   template <>
110020   struct CppType<StructureType, StructureType::eShaderModuleValidationCacheCreateInfoEXT>
110021   {
110022     using Type = ShaderModuleValidationCacheCreateInfoEXT;
110023   };
110024 
110025   struct ShaderResourceUsageAMD
110026   {
110027     using NativeType = VkShaderResourceUsageAMD;
110028 
110029 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ShaderResourceUsageAMDVULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD110030     VULKAN_HPP_CONSTEXPR ShaderResourceUsageAMD( uint32_t numUsedVgprs_             = {},
110031                                                  uint32_t numUsedSgprs_             = {},
110032                                                  uint32_t ldsSizePerLocalWorkGroup_ = {},
110033                                                  size_t   ldsUsageSizeInBytes_      = {},
110034                                                  size_t   scratchMemUsageInBytes_   = {} ) VULKAN_HPP_NOEXCEPT
110035       : numUsedVgprs{ numUsedVgprs_ }
110036       , numUsedSgprs{ numUsedSgprs_ }
110037       , ldsSizePerLocalWorkGroup{ ldsSizePerLocalWorkGroup_ }
110038       , ldsUsageSizeInBytes{ ldsUsageSizeInBytes_ }
110039       , scratchMemUsageInBytes{ scratchMemUsageInBytes_ }
110040     {
110041     }
110042 
110043     VULKAN_HPP_CONSTEXPR ShaderResourceUsageAMD( ShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110044 
ShaderResourceUsageAMDVULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD110045     ShaderResourceUsageAMD( VkShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT
110046       : ShaderResourceUsageAMD( *reinterpret_cast<ShaderResourceUsageAMD const *>( &rhs ) )
110047     {
110048     }
110049 
110050     ShaderResourceUsageAMD & operator=( ShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110051 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
110052 
operator =VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD110053     ShaderResourceUsageAMD & operator=( VkShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT
110054     {
110055       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD const *>( &rhs );
110056       return *this;
110057     }
110058 
operator VkShaderResourceUsageAMD const&VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD110059     operator VkShaderResourceUsageAMD const &() const VULKAN_HPP_NOEXCEPT
110060     {
110061       return *reinterpret_cast<const VkShaderResourceUsageAMD *>( this );
110062     }
110063 
operator VkShaderResourceUsageAMD&VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD110064     operator VkShaderResourceUsageAMD &() VULKAN_HPP_NOEXCEPT
110065     {
110066       return *reinterpret_cast<VkShaderResourceUsageAMD *>( this );
110067     }
110068 
110069 #if defined( VULKAN_HPP_USE_REFLECT )
110070 #  if 14 <= VULKAN_HPP_CPP_VERSION
110071     auto
110072 #  else
110073     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &, size_t const &, size_t const &>
110074 #  endif
reflectVULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD110075       reflect() const VULKAN_HPP_NOEXCEPT
110076     {
110077       return std::tie( numUsedVgprs, numUsedSgprs, ldsSizePerLocalWorkGroup, ldsUsageSizeInBytes, scratchMemUsageInBytes );
110078     }
110079 #endif
110080 
110081 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
110082     auto operator<=>( ShaderResourceUsageAMD const & ) const = default;
110083 #else
operator ==VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD110084     bool operator==( ShaderResourceUsageAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
110085     {
110086 #  if defined( VULKAN_HPP_USE_REFLECT )
110087       return this->reflect() == rhs.reflect();
110088 #  else
110089       return ( numUsedVgprs == rhs.numUsedVgprs ) && ( numUsedSgprs == rhs.numUsedSgprs ) && ( ldsSizePerLocalWorkGroup == rhs.ldsSizePerLocalWorkGroup ) &&
110090              ( ldsUsageSizeInBytes == rhs.ldsUsageSizeInBytes ) && ( scratchMemUsageInBytes == rhs.scratchMemUsageInBytes );
110091 #  endif
110092     }
110093 
operator !=VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD110094     bool operator!=( ShaderResourceUsageAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
110095     {
110096       return !operator==( rhs );
110097     }
110098 #endif
110099 
110100   public:
110101     uint32_t numUsedVgprs             = {};
110102     uint32_t numUsedSgprs             = {};
110103     uint32_t ldsSizePerLocalWorkGroup = {};
110104     size_t   ldsUsageSizeInBytes      = {};
110105     size_t   scratchMemUsageInBytes   = {};
110106   };
110107 
110108   struct ShaderStatisticsInfoAMD
110109   {
110110     using NativeType = VkShaderStatisticsInfoAMD;
110111 
110112 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ShaderStatisticsInfoAMDVULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD110113     VULKAN_HPP_CONSTEXPR_14 ShaderStatisticsInfoAMD( VULKAN_HPP_NAMESPACE::ShaderStageFlags       shaderStageMask_      = {},
110114                                                      VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD resourceUsage_        = {},
110115                                                      uint32_t                                     numPhysicalVgprs_     = {},
110116                                                      uint32_t                                     numPhysicalSgprs_     = {},
110117                                                      uint32_t                                     numAvailableVgprs_    = {},
110118                                                      uint32_t                                     numAvailableSgprs_    = {},
110119                                                      std::array<uint32_t, 3> const &              computeWorkGroupSize_ = {} ) VULKAN_HPP_NOEXCEPT
110120       : shaderStageMask{ shaderStageMask_ }
110121       , resourceUsage{ resourceUsage_ }
110122       , numPhysicalVgprs{ numPhysicalVgprs_ }
110123       , numPhysicalSgprs{ numPhysicalSgprs_ }
110124       , numAvailableVgprs{ numAvailableVgprs_ }
110125       , numAvailableSgprs{ numAvailableSgprs_ }
110126       , computeWorkGroupSize{ computeWorkGroupSize_ }
110127     {
110128     }
110129 
110130     VULKAN_HPP_CONSTEXPR_14 ShaderStatisticsInfoAMD( ShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110131 
ShaderStatisticsInfoAMDVULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD110132     ShaderStatisticsInfoAMD( VkShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
110133       : ShaderStatisticsInfoAMD( *reinterpret_cast<ShaderStatisticsInfoAMD const *>( &rhs ) )
110134     {
110135     }
110136 
110137     ShaderStatisticsInfoAMD & operator=( ShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110138 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
110139 
operator =VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD110140     ShaderStatisticsInfoAMD & operator=( VkShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
110141     {
110142       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD const *>( &rhs );
110143       return *this;
110144     }
110145 
operator VkShaderStatisticsInfoAMD const&VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD110146     operator VkShaderStatisticsInfoAMD const &() const VULKAN_HPP_NOEXCEPT
110147     {
110148       return *reinterpret_cast<const VkShaderStatisticsInfoAMD *>( this );
110149     }
110150 
operator VkShaderStatisticsInfoAMD&VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD110151     operator VkShaderStatisticsInfoAMD &() VULKAN_HPP_NOEXCEPT
110152     {
110153       return *reinterpret_cast<VkShaderStatisticsInfoAMD *>( this );
110154     }
110155 
110156 #if defined( VULKAN_HPP_USE_REFLECT )
110157 #  if 14 <= VULKAN_HPP_CPP_VERSION
110158     auto
110159 #  else
110160     std::tuple<VULKAN_HPP_NAMESPACE::ShaderStageFlags const &,
110161                VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD const &,
110162                uint32_t const &,
110163                uint32_t const &,
110164                uint32_t const &,
110165                uint32_t const &,
110166                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &>
110167 #  endif
reflectVULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD110168       reflect() const VULKAN_HPP_NOEXCEPT
110169     {
110170       return std::tie( shaderStageMask, resourceUsage, numPhysicalVgprs, numPhysicalSgprs, numAvailableVgprs, numAvailableSgprs, computeWorkGroupSize );
110171     }
110172 #endif
110173 
110174 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
110175     auto operator<=>( ShaderStatisticsInfoAMD const & ) const = default;
110176 #else
operator ==VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD110177     bool operator==( ShaderStatisticsInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
110178     {
110179 #  if defined( VULKAN_HPP_USE_REFLECT )
110180       return this->reflect() == rhs.reflect();
110181 #  else
110182       return ( shaderStageMask == rhs.shaderStageMask ) && ( resourceUsage == rhs.resourceUsage ) && ( numPhysicalVgprs == rhs.numPhysicalVgprs ) &&
110183              ( numPhysicalSgprs == rhs.numPhysicalSgprs ) && ( numAvailableVgprs == rhs.numAvailableVgprs ) && ( numAvailableSgprs == rhs.numAvailableSgprs ) &&
110184              ( computeWorkGroupSize == rhs.computeWorkGroupSize );
110185 #  endif
110186     }
110187 
operator !=VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD110188     bool operator!=( ShaderStatisticsInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
110189     {
110190       return !operator==( rhs );
110191     }
110192 #endif
110193 
110194   public:
110195     VULKAN_HPP_NAMESPACE::ShaderStageFlags            shaderStageMask      = {};
110196     VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD      resourceUsage        = {};
110197     uint32_t                                          numPhysicalVgprs     = {};
110198     uint32_t                                          numPhysicalSgprs     = {};
110199     uint32_t                                          numAvailableVgprs    = {};
110200     uint32_t                                          numAvailableSgprs    = {};
110201     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> computeWorkGroupSize = {};
110202   };
110203 
110204   struct SharedPresentSurfaceCapabilitiesKHR
110205   {
110206     using NativeType = VkSharedPresentSurfaceCapabilitiesKHR;
110207 
110208     static const bool                                  allowDuplicate = false;
110209     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSharedPresentSurfaceCapabilitiesKHR;
110210 
110211 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SharedPresentSurfaceCapabilitiesKHRVULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR110212     VULKAN_HPP_CONSTEXPR SharedPresentSurfaceCapabilitiesKHR( VULKAN_HPP_NAMESPACE::ImageUsageFlags sharedPresentSupportedUsageFlags_ = {},
110213                                                               void *                                pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
110214       : pNext{ pNext_ }
110215       , sharedPresentSupportedUsageFlags{ sharedPresentSupportedUsageFlags_ }
110216     {
110217     }
110218 
110219     VULKAN_HPP_CONSTEXPR SharedPresentSurfaceCapabilitiesKHR( SharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110220 
SharedPresentSurfaceCapabilitiesKHRVULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR110221     SharedPresentSurfaceCapabilitiesKHR( VkSharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
110222       : SharedPresentSurfaceCapabilitiesKHR( *reinterpret_cast<SharedPresentSurfaceCapabilitiesKHR const *>( &rhs ) )
110223     {
110224     }
110225 
110226     SharedPresentSurfaceCapabilitiesKHR & operator=( SharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110227 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
110228 
operator =VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR110229     SharedPresentSurfaceCapabilitiesKHR & operator=( VkSharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
110230     {
110231       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR const *>( &rhs );
110232       return *this;
110233     }
110234 
operator VkSharedPresentSurfaceCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR110235     operator VkSharedPresentSurfaceCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
110236     {
110237       return *reinterpret_cast<const VkSharedPresentSurfaceCapabilitiesKHR *>( this );
110238     }
110239 
operator VkSharedPresentSurfaceCapabilitiesKHR&VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR110240     operator VkSharedPresentSurfaceCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
110241     {
110242       return *reinterpret_cast<VkSharedPresentSurfaceCapabilitiesKHR *>( this );
110243     }
110244 
110245 #if defined( VULKAN_HPP_USE_REFLECT )
110246 #  if 14 <= VULKAN_HPP_CPP_VERSION
110247     auto
110248 #  else
110249     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ImageUsageFlags const &>
110250 #  endif
reflectVULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR110251       reflect() const VULKAN_HPP_NOEXCEPT
110252     {
110253       return std::tie( sType, pNext, sharedPresentSupportedUsageFlags );
110254     }
110255 #endif
110256 
110257 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
110258     auto operator<=>( SharedPresentSurfaceCapabilitiesKHR const & ) const = default;
110259 #else
operator ==VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR110260     bool operator==( SharedPresentSurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
110261     {
110262 #  if defined( VULKAN_HPP_USE_REFLECT )
110263       return this->reflect() == rhs.reflect();
110264 #  else
110265       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sharedPresentSupportedUsageFlags == rhs.sharedPresentSupportedUsageFlags );
110266 #  endif
110267     }
110268 
operator !=VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR110269     bool operator!=( SharedPresentSurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
110270     {
110271       return !operator==( rhs );
110272     }
110273 #endif
110274 
110275   public:
110276     VULKAN_HPP_NAMESPACE::StructureType   sType                            = StructureType::eSharedPresentSurfaceCapabilitiesKHR;
110277     void *                                pNext                            = {};
110278     VULKAN_HPP_NAMESPACE::ImageUsageFlags sharedPresentSupportedUsageFlags = {};
110279   };
110280 
110281   template <>
110282   struct CppType<StructureType, StructureType::eSharedPresentSurfaceCapabilitiesKHR>
110283   {
110284     using Type = SharedPresentSurfaceCapabilitiesKHR;
110285   };
110286 
110287   struct SparseImageFormatProperties
110288   {
110289     using NativeType = VkSparseImageFormatProperties;
110290 
110291 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SparseImageFormatPropertiesVULKAN_HPP_NAMESPACE::SparseImageFormatProperties110292     VULKAN_HPP_CONSTEXPR SparseImageFormatProperties( VULKAN_HPP_NAMESPACE::ImageAspectFlags       aspectMask_       = {},
110293                                                       VULKAN_HPP_NAMESPACE::Extent3D               imageGranularity_ = {},
110294                                                       VULKAN_HPP_NAMESPACE::SparseImageFormatFlags flags_            = {} ) VULKAN_HPP_NOEXCEPT
110295       : aspectMask{ aspectMask_ }
110296       , imageGranularity{ imageGranularity_ }
110297       , flags{ flags_ }
110298     {
110299     }
110300 
110301     VULKAN_HPP_CONSTEXPR SparseImageFormatProperties( SparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110302 
SparseImageFormatPropertiesVULKAN_HPP_NAMESPACE::SparseImageFormatProperties110303     SparseImageFormatProperties( VkSparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
110304       : SparseImageFormatProperties( *reinterpret_cast<SparseImageFormatProperties const *>( &rhs ) )
110305     {
110306     }
110307 
110308     SparseImageFormatProperties & operator=( SparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110309 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
110310 
operator =VULKAN_HPP_NAMESPACE::SparseImageFormatProperties110311     SparseImageFormatProperties & operator=( VkSparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
110312     {
110313       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties const *>( &rhs );
110314       return *this;
110315     }
110316 
operator VkSparseImageFormatProperties const&VULKAN_HPP_NAMESPACE::SparseImageFormatProperties110317     operator VkSparseImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT
110318     {
110319       return *reinterpret_cast<const VkSparseImageFormatProperties *>( this );
110320     }
110321 
operator VkSparseImageFormatProperties&VULKAN_HPP_NAMESPACE::SparseImageFormatProperties110322     operator VkSparseImageFormatProperties &() VULKAN_HPP_NOEXCEPT
110323     {
110324       return *reinterpret_cast<VkSparseImageFormatProperties *>( this );
110325     }
110326 
110327 #if defined( VULKAN_HPP_USE_REFLECT )
110328 #  if 14 <= VULKAN_HPP_CPP_VERSION
110329     auto
110330 #  else
110331     std::tuple<VULKAN_HPP_NAMESPACE::ImageAspectFlags const &, VULKAN_HPP_NAMESPACE::Extent3D const &, VULKAN_HPP_NAMESPACE::SparseImageFormatFlags const &>
110332 #  endif
reflectVULKAN_HPP_NAMESPACE::SparseImageFormatProperties110333       reflect() const VULKAN_HPP_NOEXCEPT
110334     {
110335       return std::tie( aspectMask, imageGranularity, flags );
110336     }
110337 #endif
110338 
110339 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
110340     auto operator<=>( SparseImageFormatProperties const & ) const = default;
110341 #else
operator ==VULKAN_HPP_NAMESPACE::SparseImageFormatProperties110342     bool operator==( SparseImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
110343     {
110344 #  if defined( VULKAN_HPP_USE_REFLECT )
110345       return this->reflect() == rhs.reflect();
110346 #  else
110347       return ( aspectMask == rhs.aspectMask ) && ( imageGranularity == rhs.imageGranularity ) && ( flags == rhs.flags );
110348 #  endif
110349     }
110350 
operator !=VULKAN_HPP_NAMESPACE::SparseImageFormatProperties110351     bool operator!=( SparseImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
110352     {
110353       return !operator==( rhs );
110354     }
110355 #endif
110356 
110357   public:
110358     VULKAN_HPP_NAMESPACE::ImageAspectFlags       aspectMask       = {};
110359     VULKAN_HPP_NAMESPACE::Extent3D               imageGranularity = {};
110360     VULKAN_HPP_NAMESPACE::SparseImageFormatFlags flags            = {};
110361   };
110362 
110363   struct SparseImageFormatProperties2
110364   {
110365     using NativeType = VkSparseImageFormatProperties2;
110366 
110367     static const bool                                  allowDuplicate = false;
110368     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSparseImageFormatProperties2;
110369 
110370 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SparseImageFormatProperties2VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2110371     VULKAN_HPP_CONSTEXPR SparseImageFormatProperties2( VULKAN_HPP_NAMESPACE::SparseImageFormatProperties properties_ = {},
110372                                                        void *                                            pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
110373       : pNext{ pNext_ }
110374       , properties{ properties_ }
110375     {
110376     }
110377 
110378     VULKAN_HPP_CONSTEXPR SparseImageFormatProperties2( SparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110379 
SparseImageFormatProperties2VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2110380     SparseImageFormatProperties2( VkSparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
110381       : SparseImageFormatProperties2( *reinterpret_cast<SparseImageFormatProperties2 const *>( &rhs ) )
110382     {
110383     }
110384 
110385     SparseImageFormatProperties2 & operator=( SparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110386 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
110387 
operator =VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2110388     SparseImageFormatProperties2 & operator=( VkSparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
110389     {
110390       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2 const *>( &rhs );
110391       return *this;
110392     }
110393 
operator VkSparseImageFormatProperties2 const&VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2110394     operator VkSparseImageFormatProperties2 const &() const VULKAN_HPP_NOEXCEPT
110395     {
110396       return *reinterpret_cast<const VkSparseImageFormatProperties2 *>( this );
110397     }
110398 
operator VkSparseImageFormatProperties2&VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2110399     operator VkSparseImageFormatProperties2 &() VULKAN_HPP_NOEXCEPT
110400     {
110401       return *reinterpret_cast<VkSparseImageFormatProperties2 *>( this );
110402     }
110403 
110404 #if defined( VULKAN_HPP_USE_REFLECT )
110405 #  if 14 <= VULKAN_HPP_CPP_VERSION
110406     auto
110407 #  else
110408     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::SparseImageFormatProperties const &>
110409 #  endif
reflectVULKAN_HPP_NAMESPACE::SparseImageFormatProperties2110410       reflect() const VULKAN_HPP_NOEXCEPT
110411     {
110412       return std::tie( sType, pNext, properties );
110413     }
110414 #endif
110415 
110416 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
110417     auto operator<=>( SparseImageFormatProperties2 const & ) const = default;
110418 #else
operator ==VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2110419     bool operator==( SparseImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
110420     {
110421 #  if defined( VULKAN_HPP_USE_REFLECT )
110422       return this->reflect() == rhs.reflect();
110423 #  else
110424       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( properties == rhs.properties );
110425 #  endif
110426     }
110427 
operator !=VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2110428     bool operator!=( SparseImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
110429     {
110430       return !operator==( rhs );
110431     }
110432 #endif
110433 
110434   public:
110435     VULKAN_HPP_NAMESPACE::StructureType               sType      = StructureType::eSparseImageFormatProperties2;
110436     void *                                            pNext      = {};
110437     VULKAN_HPP_NAMESPACE::SparseImageFormatProperties properties = {};
110438   };
110439 
110440   template <>
110441   struct CppType<StructureType, StructureType::eSparseImageFormatProperties2>
110442   {
110443     using Type = SparseImageFormatProperties2;
110444   };
110445 
110446   using SparseImageFormatProperties2KHR = SparseImageFormatProperties2;
110447 
110448   struct SparseImageMemoryRequirements
110449   {
110450     using NativeType = VkSparseImageMemoryRequirements;
110451 
110452 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SparseImageMemoryRequirementsVULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements110453     VULKAN_HPP_CONSTEXPR SparseImageMemoryRequirements( VULKAN_HPP_NAMESPACE::SparseImageFormatProperties formatProperties_     = {},
110454                                                         uint32_t                                          imageMipTailFirstLod_ = {},
110455                                                         VULKAN_HPP_NAMESPACE::DeviceSize                  imageMipTailSize_     = {},
110456                                                         VULKAN_HPP_NAMESPACE::DeviceSize                  imageMipTailOffset_   = {},
110457                                                         VULKAN_HPP_NAMESPACE::DeviceSize                  imageMipTailStride_   = {} ) VULKAN_HPP_NOEXCEPT
110458       : formatProperties{ formatProperties_ }
110459       , imageMipTailFirstLod{ imageMipTailFirstLod_ }
110460       , imageMipTailSize{ imageMipTailSize_ }
110461       , imageMipTailOffset{ imageMipTailOffset_ }
110462       , imageMipTailStride{ imageMipTailStride_ }
110463     {
110464     }
110465 
110466     VULKAN_HPP_CONSTEXPR SparseImageMemoryRequirements( SparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110467 
SparseImageMemoryRequirementsVULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements110468     SparseImageMemoryRequirements( VkSparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
110469       : SparseImageMemoryRequirements( *reinterpret_cast<SparseImageMemoryRequirements const *>( &rhs ) )
110470     {
110471     }
110472 
110473     SparseImageMemoryRequirements & operator=( SparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110474 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
110475 
operator =VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements110476     SparseImageMemoryRequirements & operator=( VkSparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
110477     {
110478       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements const *>( &rhs );
110479       return *this;
110480     }
110481 
operator VkSparseImageMemoryRequirements const&VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements110482     operator VkSparseImageMemoryRequirements const &() const VULKAN_HPP_NOEXCEPT
110483     {
110484       return *reinterpret_cast<const VkSparseImageMemoryRequirements *>( this );
110485     }
110486 
operator VkSparseImageMemoryRequirements&VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements110487     operator VkSparseImageMemoryRequirements &() VULKAN_HPP_NOEXCEPT
110488     {
110489       return *reinterpret_cast<VkSparseImageMemoryRequirements *>( this );
110490     }
110491 
110492 #if defined( VULKAN_HPP_USE_REFLECT )
110493 #  if 14 <= VULKAN_HPP_CPP_VERSION
110494     auto
110495 #  else
110496     std::tuple<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties const &,
110497                uint32_t const &,
110498                VULKAN_HPP_NAMESPACE::DeviceSize const &,
110499                VULKAN_HPP_NAMESPACE::DeviceSize const &,
110500                VULKAN_HPP_NAMESPACE::DeviceSize const &>
110501 #  endif
reflectVULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements110502       reflect() const VULKAN_HPP_NOEXCEPT
110503     {
110504       return std::tie( formatProperties, imageMipTailFirstLod, imageMipTailSize, imageMipTailOffset, imageMipTailStride );
110505     }
110506 #endif
110507 
110508 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
110509     auto operator<=>( SparseImageMemoryRequirements const & ) const = default;
110510 #else
operator ==VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements110511     bool operator==( SparseImageMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
110512     {
110513 #  if defined( VULKAN_HPP_USE_REFLECT )
110514       return this->reflect() == rhs.reflect();
110515 #  else
110516       return ( formatProperties == rhs.formatProperties ) && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod ) &&
110517              ( imageMipTailSize == rhs.imageMipTailSize ) && ( imageMipTailOffset == rhs.imageMipTailOffset ) &&
110518              ( imageMipTailStride == rhs.imageMipTailStride );
110519 #  endif
110520     }
110521 
operator !=VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements110522     bool operator!=( SparseImageMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
110523     {
110524       return !operator==( rhs );
110525     }
110526 #endif
110527 
110528   public:
110529     VULKAN_HPP_NAMESPACE::SparseImageFormatProperties formatProperties     = {};
110530     uint32_t                                          imageMipTailFirstLod = {};
110531     VULKAN_HPP_NAMESPACE::DeviceSize                  imageMipTailSize     = {};
110532     VULKAN_HPP_NAMESPACE::DeviceSize                  imageMipTailOffset   = {};
110533     VULKAN_HPP_NAMESPACE::DeviceSize                  imageMipTailStride   = {};
110534   };
110535 
110536   struct SparseImageMemoryRequirements2
110537   {
110538     using NativeType = VkSparseImageMemoryRequirements2;
110539 
110540     static const bool                                  allowDuplicate = false;
110541     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSparseImageMemoryRequirements2;
110542 
110543 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SparseImageMemoryRequirements2VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2110544     VULKAN_HPP_CONSTEXPR SparseImageMemoryRequirements2( VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements memoryRequirements_ = {},
110545                                                          void *                                              pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
110546       : pNext{ pNext_ }
110547       , memoryRequirements{ memoryRequirements_ }
110548     {
110549     }
110550 
110551     VULKAN_HPP_CONSTEXPR SparseImageMemoryRequirements2( SparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110552 
SparseImageMemoryRequirements2VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2110553     SparseImageMemoryRequirements2( VkSparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT
110554       : SparseImageMemoryRequirements2( *reinterpret_cast<SparseImageMemoryRequirements2 const *>( &rhs ) )
110555     {
110556     }
110557 
110558     SparseImageMemoryRequirements2 & operator=( SparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110559 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
110560 
operator =VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2110561     SparseImageMemoryRequirements2 & operator=( VkSparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT
110562     {
110563       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2 const *>( &rhs );
110564       return *this;
110565     }
110566 
operator VkSparseImageMemoryRequirements2 const&VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2110567     operator VkSparseImageMemoryRequirements2 const &() const VULKAN_HPP_NOEXCEPT
110568     {
110569       return *reinterpret_cast<const VkSparseImageMemoryRequirements2 *>( this );
110570     }
110571 
operator VkSparseImageMemoryRequirements2&VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2110572     operator VkSparseImageMemoryRequirements2 &() VULKAN_HPP_NOEXCEPT
110573     {
110574       return *reinterpret_cast<VkSparseImageMemoryRequirements2 *>( this );
110575     }
110576 
110577 #if defined( VULKAN_HPP_USE_REFLECT )
110578 #  if 14 <= VULKAN_HPP_CPP_VERSION
110579     auto
110580 #  else
110581     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements const &>
110582 #  endif
reflectVULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2110583       reflect() const VULKAN_HPP_NOEXCEPT
110584     {
110585       return std::tie( sType, pNext, memoryRequirements );
110586     }
110587 #endif
110588 
110589 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
110590     auto operator<=>( SparseImageMemoryRequirements2 const & ) const = default;
110591 #else
operator ==VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2110592     bool operator==( SparseImageMemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT
110593     {
110594 #  if defined( VULKAN_HPP_USE_REFLECT )
110595       return this->reflect() == rhs.reflect();
110596 #  else
110597       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryRequirements == rhs.memoryRequirements );
110598 #  endif
110599     }
110600 
operator !=VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2110601     bool operator!=( SparseImageMemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT
110602     {
110603       return !operator==( rhs );
110604     }
110605 #endif
110606 
110607   public:
110608     VULKAN_HPP_NAMESPACE::StructureType                 sType              = StructureType::eSparseImageMemoryRequirements2;
110609     void *                                              pNext              = {};
110610     VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements memoryRequirements = {};
110611   };
110612 
110613   template <>
110614   struct CppType<StructureType, StructureType::eSparseImageMemoryRequirements2>
110615   {
110616     using Type = SparseImageMemoryRequirements2;
110617   };
110618 
110619   using SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2;
110620 
110621 #if defined( VK_USE_PLATFORM_GGP )
110622   struct StreamDescriptorSurfaceCreateInfoGGP
110623   {
110624     using NativeType = VkStreamDescriptorSurfaceCreateInfoGGP;
110625 
110626     static const bool                                  allowDuplicate = false;
110627     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eStreamDescriptorSurfaceCreateInfoGGP;
110628 
110629 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
StreamDescriptorSurfaceCreateInfoGGPVULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP110630     VULKAN_HPP_CONSTEXPR StreamDescriptorSurfaceCreateInfoGGP( VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateFlagsGGP flags_            = {},
110631                                                                GgpStreamDescriptor                                         streamDescriptor_ = {},
110632                                                                const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
110633       : pNext{ pNext_ }
110634       , flags{ flags_ }
110635       , streamDescriptor{ streamDescriptor_ }
110636     {
110637     }
110638 
110639     VULKAN_HPP_CONSTEXPR StreamDescriptorSurfaceCreateInfoGGP( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110640 
StreamDescriptorSurfaceCreateInfoGGPVULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP110641     StreamDescriptorSurfaceCreateInfoGGP( VkStreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT
110642       : StreamDescriptorSurfaceCreateInfoGGP( *reinterpret_cast<StreamDescriptorSurfaceCreateInfoGGP const *>( &rhs ) )
110643     {
110644     }
110645 
110646     StreamDescriptorSurfaceCreateInfoGGP & operator=( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110647 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
110648 
operator =VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP110649     StreamDescriptorSurfaceCreateInfoGGP & operator=( VkStreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT
110650     {
110651       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP const *>( &rhs );
110652       return *this;
110653     }
110654 
110655 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP110656     VULKAN_HPP_CONSTEXPR_14 StreamDescriptorSurfaceCreateInfoGGP & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
110657     {
110658       pNext = pNext_;
110659       return *this;
110660     }
110661 
110662     VULKAN_HPP_CONSTEXPR_14 StreamDescriptorSurfaceCreateInfoGGP &
setFlagsVULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP110663       setFlags( VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateFlagsGGP flags_ ) VULKAN_HPP_NOEXCEPT
110664     {
110665       flags = flags_;
110666       return *this;
110667     }
110668 
setStreamDescriptorVULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP110669     VULKAN_HPP_CONSTEXPR_14 StreamDescriptorSurfaceCreateInfoGGP & setStreamDescriptor( GgpStreamDescriptor streamDescriptor_ ) VULKAN_HPP_NOEXCEPT
110670     {
110671       streamDescriptor = streamDescriptor_;
110672       return *this;
110673     }
110674 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
110675 
operator VkStreamDescriptorSurfaceCreateInfoGGP const&VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP110676     operator VkStreamDescriptorSurfaceCreateInfoGGP const &() const VULKAN_HPP_NOEXCEPT
110677     {
110678       return *reinterpret_cast<const VkStreamDescriptorSurfaceCreateInfoGGP *>( this );
110679     }
110680 
operator VkStreamDescriptorSurfaceCreateInfoGGP&VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP110681     operator VkStreamDescriptorSurfaceCreateInfoGGP &() VULKAN_HPP_NOEXCEPT
110682     {
110683       return *reinterpret_cast<VkStreamDescriptorSurfaceCreateInfoGGP *>( this );
110684     }
110685 
110686 #  if defined( VULKAN_HPP_USE_REFLECT )
110687 #    if 14 <= VULKAN_HPP_CPP_VERSION
110688     auto
110689 #    else
110690     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
110691                const void * const &,
110692                VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateFlagsGGP const &,
110693                GgpStreamDescriptor const &>
110694 #    endif
reflectVULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP110695       reflect() const VULKAN_HPP_NOEXCEPT
110696     {
110697       return std::tie( sType, pNext, flags, streamDescriptor );
110698     }
110699 #  endif
110700 
110701 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP110702     std::strong_ordering operator<=>( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) const VULKAN_HPP_NOEXCEPT
110703     {
110704       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
110705         return cmp;
110706       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
110707         return cmp;
110708       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
110709         return cmp;
110710       if ( auto cmp = memcmp( &streamDescriptor, &rhs.streamDescriptor, sizeof( GgpStreamDescriptor ) ); cmp != 0 )
110711         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
110712 
110713       return std::strong_ordering::equivalent;
110714     }
110715 #  endif
110716 
operator ==VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP110717     bool operator==( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) const VULKAN_HPP_NOEXCEPT
110718     {
110719       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) &&
110720              ( memcmp( &streamDescriptor, &rhs.streamDescriptor, sizeof( GgpStreamDescriptor ) ) == 0 );
110721     }
110722 
operator !=VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP110723     bool operator!=( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) const VULKAN_HPP_NOEXCEPT
110724     {
110725       return !operator==( rhs );
110726     }
110727 
110728   public:
110729     VULKAN_HPP_NAMESPACE::StructureType                         sType            = StructureType::eStreamDescriptorSurfaceCreateInfoGGP;
110730     const void *                                                pNext            = {};
110731     VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateFlagsGGP flags            = {};
110732     GgpStreamDescriptor                                         streamDescriptor = {};
110733   };
110734 
110735   template <>
110736   struct CppType<StructureType, StructureType::eStreamDescriptorSurfaceCreateInfoGGP>
110737   {
110738     using Type = StreamDescriptorSurfaceCreateInfoGGP;
110739   };
110740 #endif /*VK_USE_PLATFORM_GGP*/
110741 
110742   struct StridedDeviceAddressRegionKHR
110743   {
110744     using NativeType = VkStridedDeviceAddressRegionKHR;
110745 
110746 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
StridedDeviceAddressRegionKHRVULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR110747     VULKAN_HPP_CONSTEXPR StridedDeviceAddressRegionKHR( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {},
110748                                                         VULKAN_HPP_NAMESPACE::DeviceSize    stride_        = {},
110749                                                         VULKAN_HPP_NAMESPACE::DeviceSize    size_          = {} ) VULKAN_HPP_NOEXCEPT
110750       : deviceAddress{ deviceAddress_ }
110751       , stride{ stride_ }
110752       , size{ size_ }
110753     {
110754     }
110755 
110756     VULKAN_HPP_CONSTEXPR StridedDeviceAddressRegionKHR( StridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110757 
StridedDeviceAddressRegionKHRVULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR110758     StridedDeviceAddressRegionKHR( VkStridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
110759       : StridedDeviceAddressRegionKHR( *reinterpret_cast<StridedDeviceAddressRegionKHR const *>( &rhs ) )
110760     {
110761     }
110762 
110763     StridedDeviceAddressRegionKHR & operator=( StridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110764 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
110765 
operator =VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR110766     StridedDeviceAddressRegionKHR & operator=( VkStridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
110767     {
110768       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR const *>( &rhs );
110769       return *this;
110770     }
110771 
110772 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setDeviceAddressVULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR110773     VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRegionKHR & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
110774     {
110775       deviceAddress = deviceAddress_;
110776       return *this;
110777     }
110778 
setStrideVULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR110779     VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRegionKHR & setStride( VULKAN_HPP_NAMESPACE::DeviceSize stride_ ) VULKAN_HPP_NOEXCEPT
110780     {
110781       stride = stride_;
110782       return *this;
110783     }
110784 
setSizeVULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR110785     VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRegionKHR & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
110786     {
110787       size = size_;
110788       return *this;
110789     }
110790 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
110791 
operator VkStridedDeviceAddressRegionKHR const&VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR110792     operator VkStridedDeviceAddressRegionKHR const &() const VULKAN_HPP_NOEXCEPT
110793     {
110794       return *reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( this );
110795     }
110796 
operator VkStridedDeviceAddressRegionKHR&VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR110797     operator VkStridedDeviceAddressRegionKHR &() VULKAN_HPP_NOEXCEPT
110798     {
110799       return *reinterpret_cast<VkStridedDeviceAddressRegionKHR *>( this );
110800     }
110801 
110802 #if defined( VULKAN_HPP_USE_REFLECT )
110803 #  if 14 <= VULKAN_HPP_CPP_VERSION
110804     auto
110805 #  else
110806     std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
110807 #  endif
reflectVULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR110808       reflect() const VULKAN_HPP_NOEXCEPT
110809     {
110810       return std::tie( deviceAddress, stride, size );
110811     }
110812 #endif
110813 
110814 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
110815     auto operator<=>( StridedDeviceAddressRegionKHR const & ) const = default;
110816 #else
operator ==VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR110817     bool operator==( StridedDeviceAddressRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
110818     {
110819 #  if defined( VULKAN_HPP_USE_REFLECT )
110820       return this->reflect() == rhs.reflect();
110821 #  else
110822       return ( deviceAddress == rhs.deviceAddress ) && ( stride == rhs.stride ) && ( size == rhs.size );
110823 #  endif
110824     }
110825 
operator !=VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR110826     bool operator!=( StridedDeviceAddressRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
110827     {
110828       return !operator==( rhs );
110829     }
110830 #endif
110831 
110832   public:
110833     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress = {};
110834     VULKAN_HPP_NAMESPACE::DeviceSize    stride        = {};
110835     VULKAN_HPP_NAMESPACE::DeviceSize    size          = {};
110836   };
110837 
110838   struct SubmitInfo
110839   {
110840     using NativeType = VkSubmitInfo;
110841 
110842     static const bool                                  allowDuplicate = false;
110843     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubmitInfo;
110844 
110845 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubmitInfoVULKAN_HPP_NAMESPACE::SubmitInfo110846     VULKAN_HPP_CONSTEXPR SubmitInfo( uint32_t                                         waitSemaphoreCount_   = {},
110847                                      const VULKAN_HPP_NAMESPACE::Semaphore *          pWaitSemaphores_      = {},
110848                                      const VULKAN_HPP_NAMESPACE::PipelineStageFlags * pWaitDstStageMask_    = {},
110849                                      uint32_t                                         commandBufferCount_   = {},
110850                                      const VULKAN_HPP_NAMESPACE::CommandBuffer *      pCommandBuffers_      = {},
110851                                      uint32_t                                         signalSemaphoreCount_ = {},
110852                                      const VULKAN_HPP_NAMESPACE::Semaphore *          pSignalSemaphores_    = {},
110853                                      const void *                                     pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
110854       : pNext{ pNext_ }
110855       , waitSemaphoreCount{ waitSemaphoreCount_ }
110856       , pWaitSemaphores{ pWaitSemaphores_ }
110857       , pWaitDstStageMask{ pWaitDstStageMask_ }
110858       , commandBufferCount{ commandBufferCount_ }
110859       , pCommandBuffers{ pCommandBuffers_ }
110860       , signalSemaphoreCount{ signalSemaphoreCount_ }
110861       , pSignalSemaphores{ pSignalSemaphores_ }
110862     {
110863     }
110864 
110865     VULKAN_HPP_CONSTEXPR SubmitInfo( SubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110866 
SubmitInfoVULKAN_HPP_NAMESPACE::SubmitInfo110867     SubmitInfo( VkSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SubmitInfo( *reinterpret_cast<SubmitInfo const *>( &rhs ) ) {}
110868 
110869 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SubmitInfoVULKAN_HPP_NAMESPACE::SubmitInfo110870     SubmitInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const &          waitSemaphores_,
110871                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineStageFlags> const & waitDstStageMask_ = {},
110872                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CommandBuffer> const &      commandBuffers_   = {},
110873                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const &          signalSemaphores_ = {},
110874                 const void *                                                                                          pNext_            = nullptr )
110875       : pNext( pNext_ )
110876       , waitSemaphoreCount( static_cast<uint32_t>( waitSemaphores_.size() ) )
110877       , pWaitSemaphores( waitSemaphores_.data() )
110878       , pWaitDstStageMask( waitDstStageMask_.data() )
110879       , commandBufferCount( static_cast<uint32_t>( commandBuffers_.size() ) )
110880       , pCommandBuffers( commandBuffers_.data() )
110881       , signalSemaphoreCount( static_cast<uint32_t>( signalSemaphores_.size() ) )
110882       , pSignalSemaphores( signalSemaphores_.data() )
110883     {
110884 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
110885       VULKAN_HPP_ASSERT( waitSemaphores_.size() == waitDstStageMask_.size() );
110886 #    else
110887       if ( waitSemaphores_.size() != waitDstStageMask_.size() )
110888       {
110889         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::SubmitInfo::SubmitInfo: waitSemaphores_.size() != waitDstStageMask_.size()" );
110890       }
110891 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
110892     }
110893 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
110894 
110895     SubmitInfo & operator=( SubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
110896 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
110897 
operator =VULKAN_HPP_NAMESPACE::SubmitInfo110898     SubmitInfo & operator=( VkSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
110899     {
110900       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubmitInfo const *>( &rhs );
110901       return *this;
110902     }
110903 
110904 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubmitInfo110905     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
110906     {
110907       pNext = pNext_;
110908       return *this;
110909     }
110910 
setWaitSemaphoreCountVULKAN_HPP_NAMESPACE::SubmitInfo110911     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
110912     {
110913       waitSemaphoreCount = waitSemaphoreCount_;
110914       return *this;
110915     }
110916 
setPWaitSemaphoresVULKAN_HPP_NAMESPACE::SubmitInfo110917     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPWaitSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores_ ) VULKAN_HPP_NOEXCEPT
110918     {
110919       pWaitSemaphores = pWaitSemaphores_;
110920       return *this;
110921     }
110922 
110923 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
110924     SubmitInfo &
setWaitSemaphoresVULKAN_HPP_NAMESPACE::SubmitInfo110925       setWaitSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & waitSemaphores_ ) VULKAN_HPP_NOEXCEPT
110926     {
110927       waitSemaphoreCount = static_cast<uint32_t>( waitSemaphores_.size() );
110928       pWaitSemaphores    = waitSemaphores_.data();
110929       return *this;
110930     }
110931 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
110932 
setPWaitDstStageMaskVULKAN_HPP_NAMESPACE::SubmitInfo110933     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPWaitDstStageMask( const VULKAN_HPP_NAMESPACE::PipelineStageFlags * pWaitDstStageMask_ ) VULKAN_HPP_NOEXCEPT
110934     {
110935       pWaitDstStageMask = pWaitDstStageMask_;
110936       return *this;
110937     }
110938 
110939 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setWaitDstStageMaskVULKAN_HPP_NAMESPACE::SubmitInfo110940     SubmitInfo & setWaitDstStageMask( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineStageFlags> const & waitDstStageMask_ )
110941       VULKAN_HPP_NOEXCEPT
110942     {
110943       waitSemaphoreCount = static_cast<uint32_t>( waitDstStageMask_.size() );
110944       pWaitDstStageMask  = waitDstStageMask_.data();
110945       return *this;
110946     }
110947 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
110948 
setCommandBufferCountVULKAN_HPP_NAMESPACE::SubmitInfo110949     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setCommandBufferCount( uint32_t commandBufferCount_ ) VULKAN_HPP_NOEXCEPT
110950     {
110951       commandBufferCount = commandBufferCount_;
110952       return *this;
110953     }
110954 
setPCommandBuffersVULKAN_HPP_NAMESPACE::SubmitInfo110955     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPCommandBuffers( const VULKAN_HPP_NAMESPACE::CommandBuffer * pCommandBuffers_ ) VULKAN_HPP_NOEXCEPT
110956     {
110957       pCommandBuffers = pCommandBuffers_;
110958       return *this;
110959     }
110960 
110961 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
110962     SubmitInfo &
setCommandBuffersVULKAN_HPP_NAMESPACE::SubmitInfo110963       setCommandBuffers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CommandBuffer> const & commandBuffers_ ) VULKAN_HPP_NOEXCEPT
110964     {
110965       commandBufferCount = static_cast<uint32_t>( commandBuffers_.size() );
110966       pCommandBuffers    = commandBuffers_.data();
110967       return *this;
110968     }
110969 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
110970 
setSignalSemaphoreCountVULKAN_HPP_NAMESPACE::SubmitInfo110971     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
110972     {
110973       signalSemaphoreCount = signalSemaphoreCount_;
110974       return *this;
110975     }
110976 
setPSignalSemaphoresVULKAN_HPP_NAMESPACE::SubmitInfo110977     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPSignalSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pSignalSemaphores_ ) VULKAN_HPP_NOEXCEPT
110978     {
110979       pSignalSemaphores = pSignalSemaphores_;
110980       return *this;
110981     }
110982 
110983 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
110984     SubmitInfo &
setSignalSemaphoresVULKAN_HPP_NAMESPACE::SubmitInfo110985       setSignalSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & signalSemaphores_ ) VULKAN_HPP_NOEXCEPT
110986     {
110987       signalSemaphoreCount = static_cast<uint32_t>( signalSemaphores_.size() );
110988       pSignalSemaphores    = signalSemaphores_.data();
110989       return *this;
110990     }
110991 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
110992 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
110993 
operator VkSubmitInfo const&VULKAN_HPP_NAMESPACE::SubmitInfo110994     operator VkSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
110995     {
110996       return *reinterpret_cast<const VkSubmitInfo *>( this );
110997     }
110998 
operator VkSubmitInfo&VULKAN_HPP_NAMESPACE::SubmitInfo110999     operator VkSubmitInfo &() VULKAN_HPP_NOEXCEPT
111000     {
111001       return *reinterpret_cast<VkSubmitInfo *>( this );
111002     }
111003 
111004 #if defined( VULKAN_HPP_USE_REFLECT )
111005 #  if 14 <= VULKAN_HPP_CPP_VERSION
111006     auto
111007 #  else
111008     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
111009                const void * const &,
111010                uint32_t const &,
111011                const VULKAN_HPP_NAMESPACE::Semaphore * const &,
111012                const VULKAN_HPP_NAMESPACE::PipelineStageFlags * const &,
111013                uint32_t const &,
111014                const VULKAN_HPP_NAMESPACE::CommandBuffer * const &,
111015                uint32_t const &,
111016                const VULKAN_HPP_NAMESPACE::Semaphore * const &>
111017 #  endif
reflectVULKAN_HPP_NAMESPACE::SubmitInfo111018       reflect() const VULKAN_HPP_NOEXCEPT
111019     {
111020       return std::tie(
111021         sType, pNext, waitSemaphoreCount, pWaitSemaphores, pWaitDstStageMask, commandBufferCount, pCommandBuffers, signalSemaphoreCount, pSignalSemaphores );
111022     }
111023 #endif
111024 
111025 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
111026     auto operator<=>( SubmitInfo const & ) const = default;
111027 #else
operator ==VULKAN_HPP_NAMESPACE::SubmitInfo111028     bool operator==( SubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
111029     {
111030 #  if defined( VULKAN_HPP_USE_REFLECT )
111031       return this->reflect() == rhs.reflect();
111032 #  else
111033       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreCount == rhs.waitSemaphoreCount ) &&
111034              ( pWaitSemaphores == rhs.pWaitSemaphores ) && ( pWaitDstStageMask == rhs.pWaitDstStageMask ) && ( commandBufferCount == rhs.commandBufferCount ) &&
111035              ( pCommandBuffers == rhs.pCommandBuffers ) && ( signalSemaphoreCount == rhs.signalSemaphoreCount ) &&
111036              ( pSignalSemaphores == rhs.pSignalSemaphores );
111037 #  endif
111038     }
111039 
operator !=VULKAN_HPP_NAMESPACE::SubmitInfo111040     bool operator!=( SubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
111041     {
111042       return !operator==( rhs );
111043     }
111044 #endif
111045 
111046   public:
111047     VULKAN_HPP_NAMESPACE::StructureType              sType                = StructureType::eSubmitInfo;
111048     const void *                                     pNext                = {};
111049     uint32_t                                         waitSemaphoreCount   = {};
111050     const VULKAN_HPP_NAMESPACE::Semaphore *          pWaitSemaphores      = {};
111051     const VULKAN_HPP_NAMESPACE::PipelineStageFlags * pWaitDstStageMask    = {};
111052     uint32_t                                         commandBufferCount   = {};
111053     const VULKAN_HPP_NAMESPACE::CommandBuffer *      pCommandBuffers      = {};
111054     uint32_t                                         signalSemaphoreCount = {};
111055     const VULKAN_HPP_NAMESPACE::Semaphore *          pSignalSemaphores    = {};
111056   };
111057 
111058   template <>
111059   struct CppType<StructureType, StructureType::eSubmitInfo>
111060   {
111061     using Type = SubmitInfo;
111062   };
111063 
111064   struct SubmitInfo2
111065   {
111066     using NativeType = VkSubmitInfo2;
111067 
111068     static const bool                                  allowDuplicate = false;
111069     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubmitInfo2;
111070 
111071 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubmitInfo2VULKAN_HPP_NAMESPACE::SubmitInfo2111072     VULKAN_HPP_CONSTEXPR SubmitInfo2( VULKAN_HPP_NAMESPACE::SubmitFlags                     flags_                    = {},
111073                                       uint32_t                                              waitSemaphoreInfoCount_   = {},
111074                                       const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo *     pWaitSemaphoreInfos_      = {},
111075                                       uint32_t                                              commandBufferInfoCount_   = {},
111076                                       const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo * pCommandBufferInfos_      = {},
111077                                       uint32_t                                              signalSemaphoreInfoCount_ = {},
111078                                       const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo *     pSignalSemaphoreInfos_    = {},
111079                                       const void *                                          pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
111080       : pNext{ pNext_ }
111081       , flags{ flags_ }
111082       , waitSemaphoreInfoCount{ waitSemaphoreInfoCount_ }
111083       , pWaitSemaphoreInfos{ pWaitSemaphoreInfos_ }
111084       , commandBufferInfoCount{ commandBufferInfoCount_ }
111085       , pCommandBufferInfos{ pCommandBufferInfos_ }
111086       , signalSemaphoreInfoCount{ signalSemaphoreInfoCount_ }
111087       , pSignalSemaphoreInfos{ pSignalSemaphoreInfos_ }
111088     {
111089     }
111090 
111091     VULKAN_HPP_CONSTEXPR SubmitInfo2( SubmitInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111092 
SubmitInfo2VULKAN_HPP_NAMESPACE::SubmitInfo2111093     SubmitInfo2( VkSubmitInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT : SubmitInfo2( *reinterpret_cast<SubmitInfo2 const *>( &rhs ) ) {}
111094 
111095 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SubmitInfo2VULKAN_HPP_NAMESPACE::SubmitInfo2111096     SubmitInfo2( VULKAN_HPP_NAMESPACE::SubmitFlags                                                                          flags_,
111097                  VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo> const &     waitSemaphoreInfos_,
111098                  VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo> const & commandBufferInfos_   = {},
111099                  VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo> const &     signalSemaphoreInfos_ = {},
111100                  const void *                                                                                               pNext_                = nullptr )
111101       : pNext( pNext_ )
111102       , flags( flags_ )
111103       , waitSemaphoreInfoCount( static_cast<uint32_t>( waitSemaphoreInfos_.size() ) )
111104       , pWaitSemaphoreInfos( waitSemaphoreInfos_.data() )
111105       , commandBufferInfoCount( static_cast<uint32_t>( commandBufferInfos_.size() ) )
111106       , pCommandBufferInfos( commandBufferInfos_.data() )
111107       , signalSemaphoreInfoCount( static_cast<uint32_t>( signalSemaphoreInfos_.size() ) )
111108       , pSignalSemaphoreInfos( signalSemaphoreInfos_.data() )
111109     {
111110     }
111111 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
111112 
111113     SubmitInfo2 & operator=( SubmitInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111114 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
111115 
operator =VULKAN_HPP_NAMESPACE::SubmitInfo2111116     SubmitInfo2 & operator=( VkSubmitInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
111117     {
111118       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubmitInfo2 const *>( &rhs );
111119       return *this;
111120     }
111121 
111122 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubmitInfo2111123     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
111124     {
111125       pNext = pNext_;
111126       return *this;
111127     }
111128 
setFlagsVULKAN_HPP_NAMESPACE::SubmitInfo2111129     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setFlags( VULKAN_HPP_NAMESPACE::SubmitFlags flags_ ) VULKAN_HPP_NOEXCEPT
111130     {
111131       flags = flags_;
111132       return *this;
111133     }
111134 
setWaitSemaphoreInfoCountVULKAN_HPP_NAMESPACE::SubmitInfo2111135     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setWaitSemaphoreInfoCount( uint32_t waitSemaphoreInfoCount_ ) VULKAN_HPP_NOEXCEPT
111136     {
111137       waitSemaphoreInfoCount = waitSemaphoreInfoCount_;
111138       return *this;
111139     }
111140 
setPWaitSemaphoreInfosVULKAN_HPP_NAMESPACE::SubmitInfo2111141     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setPWaitSemaphoreInfos( const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pWaitSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
111142     {
111143       pWaitSemaphoreInfos = pWaitSemaphoreInfos_;
111144       return *this;
111145     }
111146 
111147 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setWaitSemaphoreInfosVULKAN_HPP_NAMESPACE::SubmitInfo2111148     SubmitInfo2 & setWaitSemaphoreInfos(
111149       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo> const & waitSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
111150     {
111151       waitSemaphoreInfoCount = static_cast<uint32_t>( waitSemaphoreInfos_.size() );
111152       pWaitSemaphoreInfos    = waitSemaphoreInfos_.data();
111153       return *this;
111154     }
111155 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
111156 
setCommandBufferInfoCountVULKAN_HPP_NAMESPACE::SubmitInfo2111157     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setCommandBufferInfoCount( uint32_t commandBufferInfoCount_ ) VULKAN_HPP_NOEXCEPT
111158     {
111159       commandBufferInfoCount = commandBufferInfoCount_;
111160       return *this;
111161     }
111162 
111163     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 &
setPCommandBufferInfosVULKAN_HPP_NAMESPACE::SubmitInfo2111164       setPCommandBufferInfos( const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo * pCommandBufferInfos_ ) VULKAN_HPP_NOEXCEPT
111165     {
111166       pCommandBufferInfos = pCommandBufferInfos_;
111167       return *this;
111168     }
111169 
111170 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCommandBufferInfosVULKAN_HPP_NAMESPACE::SubmitInfo2111171     SubmitInfo2 & setCommandBufferInfos(
111172       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo> const & commandBufferInfos_ ) VULKAN_HPP_NOEXCEPT
111173     {
111174       commandBufferInfoCount = static_cast<uint32_t>( commandBufferInfos_.size() );
111175       pCommandBufferInfos    = commandBufferInfos_.data();
111176       return *this;
111177     }
111178 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
111179 
setSignalSemaphoreInfoCountVULKAN_HPP_NAMESPACE::SubmitInfo2111180     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setSignalSemaphoreInfoCount( uint32_t signalSemaphoreInfoCount_ ) VULKAN_HPP_NOEXCEPT
111181     {
111182       signalSemaphoreInfoCount = signalSemaphoreInfoCount_;
111183       return *this;
111184     }
111185 
111186     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 &
setPSignalSemaphoreInfosVULKAN_HPP_NAMESPACE::SubmitInfo2111187       setPSignalSemaphoreInfos( const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pSignalSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
111188     {
111189       pSignalSemaphoreInfos = pSignalSemaphoreInfos_;
111190       return *this;
111191     }
111192 
111193 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSignalSemaphoreInfosVULKAN_HPP_NAMESPACE::SubmitInfo2111194     SubmitInfo2 & setSignalSemaphoreInfos(
111195       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo> const & signalSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
111196     {
111197       signalSemaphoreInfoCount = static_cast<uint32_t>( signalSemaphoreInfos_.size() );
111198       pSignalSemaphoreInfos    = signalSemaphoreInfos_.data();
111199       return *this;
111200     }
111201 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
111202 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
111203 
operator VkSubmitInfo2 const&VULKAN_HPP_NAMESPACE::SubmitInfo2111204     operator VkSubmitInfo2 const &() const VULKAN_HPP_NOEXCEPT
111205     {
111206       return *reinterpret_cast<const VkSubmitInfo2 *>( this );
111207     }
111208 
operator VkSubmitInfo2&VULKAN_HPP_NAMESPACE::SubmitInfo2111209     operator VkSubmitInfo2 &() VULKAN_HPP_NOEXCEPT
111210     {
111211       return *reinterpret_cast<VkSubmitInfo2 *>( this );
111212     }
111213 
111214 #if defined( VULKAN_HPP_USE_REFLECT )
111215 #  if 14 <= VULKAN_HPP_CPP_VERSION
111216     auto
111217 #  else
111218     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
111219                const void * const &,
111220                VULKAN_HPP_NAMESPACE::SubmitFlags const &,
111221                uint32_t const &,
111222                const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * const &,
111223                uint32_t const &,
111224                const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo * const &,
111225                uint32_t const &,
111226                const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * const &>
111227 #  endif
reflectVULKAN_HPP_NAMESPACE::SubmitInfo2111228       reflect() const VULKAN_HPP_NOEXCEPT
111229     {
111230       return std::tie( sType,
111231                        pNext,
111232                        flags,
111233                        waitSemaphoreInfoCount,
111234                        pWaitSemaphoreInfos,
111235                        commandBufferInfoCount,
111236                        pCommandBufferInfos,
111237                        signalSemaphoreInfoCount,
111238                        pSignalSemaphoreInfos );
111239     }
111240 #endif
111241 
111242 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
111243     auto operator<=>( SubmitInfo2 const & ) const = default;
111244 #else
operator ==VULKAN_HPP_NAMESPACE::SubmitInfo2111245     bool operator==( SubmitInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
111246     {
111247 #  if defined( VULKAN_HPP_USE_REFLECT )
111248       return this->reflect() == rhs.reflect();
111249 #  else
111250       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( waitSemaphoreInfoCount == rhs.waitSemaphoreInfoCount ) &&
111251              ( pWaitSemaphoreInfos == rhs.pWaitSemaphoreInfos ) && ( commandBufferInfoCount == rhs.commandBufferInfoCount ) &&
111252              ( pCommandBufferInfos == rhs.pCommandBufferInfos ) && ( signalSemaphoreInfoCount == rhs.signalSemaphoreInfoCount ) &&
111253              ( pSignalSemaphoreInfos == rhs.pSignalSemaphoreInfos );
111254 #  endif
111255     }
111256 
operator !=VULKAN_HPP_NAMESPACE::SubmitInfo2111257     bool operator!=( SubmitInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
111258     {
111259       return !operator==( rhs );
111260     }
111261 #endif
111262 
111263   public:
111264     VULKAN_HPP_NAMESPACE::StructureType                   sType                    = StructureType::eSubmitInfo2;
111265     const void *                                          pNext                    = {};
111266     VULKAN_HPP_NAMESPACE::SubmitFlags                     flags                    = {};
111267     uint32_t                                              waitSemaphoreInfoCount   = {};
111268     const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo *     pWaitSemaphoreInfos      = {};
111269     uint32_t                                              commandBufferInfoCount   = {};
111270     const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo * pCommandBufferInfos      = {};
111271     uint32_t                                              signalSemaphoreInfoCount = {};
111272     const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo *     pSignalSemaphoreInfos    = {};
111273   };
111274 
111275   template <>
111276   struct CppType<StructureType, StructureType::eSubmitInfo2>
111277   {
111278     using Type = SubmitInfo2;
111279   };
111280 
111281   using SubmitInfo2KHR = SubmitInfo2;
111282 
111283   struct SubpassBeginInfo
111284   {
111285     using NativeType = VkSubpassBeginInfo;
111286 
111287     static const bool                                  allowDuplicate = false;
111288     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubpassBeginInfo;
111289 
111290 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassBeginInfoVULKAN_HPP_NAMESPACE::SubpassBeginInfo111291     VULKAN_HPP_CONSTEXPR SubpassBeginInfo( VULKAN_HPP_NAMESPACE::SubpassContents contents_ = VULKAN_HPP_NAMESPACE::SubpassContents::eInline,
111292                                            const void *                          pNext_    = nullptr ) VULKAN_HPP_NOEXCEPT
111293       : pNext{ pNext_ }
111294       , contents{ contents_ }
111295     {
111296     }
111297 
111298     VULKAN_HPP_CONSTEXPR SubpassBeginInfo( SubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111299 
SubpassBeginInfoVULKAN_HPP_NAMESPACE::SubpassBeginInfo111300     SubpassBeginInfo( VkSubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SubpassBeginInfo( *reinterpret_cast<SubpassBeginInfo const *>( &rhs ) ) {}
111301 
111302     SubpassBeginInfo & operator=( SubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111303 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
111304 
operator =VULKAN_HPP_NAMESPACE::SubpassBeginInfo111305     SubpassBeginInfo & operator=( VkSubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
111306     {
111307       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassBeginInfo const *>( &rhs );
111308       return *this;
111309     }
111310 
111311 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassBeginInfo111312     VULKAN_HPP_CONSTEXPR_14 SubpassBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
111313     {
111314       pNext = pNext_;
111315       return *this;
111316     }
111317 
setContentsVULKAN_HPP_NAMESPACE::SubpassBeginInfo111318     VULKAN_HPP_CONSTEXPR_14 SubpassBeginInfo & setContents( VULKAN_HPP_NAMESPACE::SubpassContents contents_ ) VULKAN_HPP_NOEXCEPT
111319     {
111320       contents = contents_;
111321       return *this;
111322     }
111323 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
111324 
operator VkSubpassBeginInfo const&VULKAN_HPP_NAMESPACE::SubpassBeginInfo111325     operator VkSubpassBeginInfo const &() const VULKAN_HPP_NOEXCEPT
111326     {
111327       return *reinterpret_cast<const VkSubpassBeginInfo *>( this );
111328     }
111329 
operator VkSubpassBeginInfo&VULKAN_HPP_NAMESPACE::SubpassBeginInfo111330     operator VkSubpassBeginInfo &() VULKAN_HPP_NOEXCEPT
111331     {
111332       return *reinterpret_cast<VkSubpassBeginInfo *>( this );
111333     }
111334 
111335 #if defined( VULKAN_HPP_USE_REFLECT )
111336 #  if 14 <= VULKAN_HPP_CPP_VERSION
111337     auto
111338 #  else
111339     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SubpassContents const &>
111340 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassBeginInfo111341       reflect() const VULKAN_HPP_NOEXCEPT
111342     {
111343       return std::tie( sType, pNext, contents );
111344     }
111345 #endif
111346 
111347 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
111348     auto operator<=>( SubpassBeginInfo const & ) const = default;
111349 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassBeginInfo111350     bool operator==( SubpassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
111351     {
111352 #  if defined( VULKAN_HPP_USE_REFLECT )
111353       return this->reflect() == rhs.reflect();
111354 #  else
111355       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( contents == rhs.contents );
111356 #  endif
111357     }
111358 
operator !=VULKAN_HPP_NAMESPACE::SubpassBeginInfo111359     bool operator!=( SubpassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
111360     {
111361       return !operator==( rhs );
111362     }
111363 #endif
111364 
111365   public:
111366     VULKAN_HPP_NAMESPACE::StructureType   sType    = StructureType::eSubpassBeginInfo;
111367     const void *                          pNext    = {};
111368     VULKAN_HPP_NAMESPACE::SubpassContents contents = VULKAN_HPP_NAMESPACE::SubpassContents::eInline;
111369   };
111370 
111371   template <>
111372   struct CppType<StructureType, StructureType::eSubpassBeginInfo>
111373   {
111374     using Type = SubpassBeginInfo;
111375   };
111376 
111377   using SubpassBeginInfoKHR = SubpassBeginInfo;
111378 
111379   struct SubpassDescriptionDepthStencilResolve
111380   {
111381     using NativeType = VkSubpassDescriptionDepthStencilResolve;
111382 
111383     static const bool                                  allowDuplicate = false;
111384     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubpassDescriptionDepthStencilResolve;
111385 
111386 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
111387     VULKAN_HPP_CONSTEXPR
SubpassDescriptionDepthStencilResolveVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve111388       SubpassDescriptionDepthStencilResolve( VULKAN_HPP_NAMESPACE::ResolveModeFlagBits depthResolveMode_   = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone,
111389                                              VULKAN_HPP_NAMESPACE::ResolveModeFlagBits stencilResolveMode_ = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone,
111390                                              const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilResolveAttachment_ = {},
111391                                              const void *                                       pNext_                          = nullptr ) VULKAN_HPP_NOEXCEPT
111392       : pNext{ pNext_ }
111393       , depthResolveMode{ depthResolveMode_ }
111394       , stencilResolveMode{ stencilResolveMode_ }
111395       , pDepthStencilResolveAttachment{ pDepthStencilResolveAttachment_ }
111396     {
111397     }
111398 
111399     VULKAN_HPP_CONSTEXPR SubpassDescriptionDepthStencilResolve( SubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111400 
SubpassDescriptionDepthStencilResolveVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve111401     SubpassDescriptionDepthStencilResolve( VkSubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT
111402       : SubpassDescriptionDepthStencilResolve( *reinterpret_cast<SubpassDescriptionDepthStencilResolve const *>( &rhs ) )
111403     {
111404     }
111405 
111406     SubpassDescriptionDepthStencilResolve & operator=( SubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111407 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
111408 
operator =VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve111409     SubpassDescriptionDepthStencilResolve & operator=( VkSubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT
111410     {
111411       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve const *>( &rhs );
111412       return *this;
111413     }
111414 
111415 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve111416     VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
111417     {
111418       pNext = pNext_;
111419       return *this;
111420     }
111421 
111422     VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve &
setDepthResolveModeVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve111423       setDepthResolveMode( VULKAN_HPP_NAMESPACE::ResolveModeFlagBits depthResolveMode_ ) VULKAN_HPP_NOEXCEPT
111424     {
111425       depthResolveMode = depthResolveMode_;
111426       return *this;
111427     }
111428 
111429     VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve &
setStencilResolveModeVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve111430       setStencilResolveMode( VULKAN_HPP_NAMESPACE::ResolveModeFlagBits stencilResolveMode_ ) VULKAN_HPP_NOEXCEPT
111431     {
111432       stencilResolveMode = stencilResolveMode_;
111433       return *this;
111434     }
111435 
111436     VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve &
setPDepthStencilResolveAttachmentVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve111437       setPDepthStencilResolveAttachment( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilResolveAttachment_ ) VULKAN_HPP_NOEXCEPT
111438     {
111439       pDepthStencilResolveAttachment = pDepthStencilResolveAttachment_;
111440       return *this;
111441     }
111442 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
111443 
operator VkSubpassDescriptionDepthStencilResolve const&VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve111444     operator VkSubpassDescriptionDepthStencilResolve const &() const VULKAN_HPP_NOEXCEPT
111445     {
111446       return *reinterpret_cast<const VkSubpassDescriptionDepthStencilResolve *>( this );
111447     }
111448 
operator VkSubpassDescriptionDepthStencilResolve&VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve111449     operator VkSubpassDescriptionDepthStencilResolve &() VULKAN_HPP_NOEXCEPT
111450     {
111451       return *reinterpret_cast<VkSubpassDescriptionDepthStencilResolve *>( this );
111452     }
111453 
111454 #if defined( VULKAN_HPP_USE_REFLECT )
111455 #  if 14 <= VULKAN_HPP_CPP_VERSION
111456     auto
111457 #  else
111458     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
111459                const void * const &,
111460                VULKAN_HPP_NAMESPACE::ResolveModeFlagBits const &,
111461                VULKAN_HPP_NAMESPACE::ResolveModeFlagBits const &,
111462                const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &>
111463 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve111464       reflect() const VULKAN_HPP_NOEXCEPT
111465     {
111466       return std::tie( sType, pNext, depthResolveMode, stencilResolveMode, pDepthStencilResolveAttachment );
111467     }
111468 #endif
111469 
111470 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
111471     auto operator<=>( SubpassDescriptionDepthStencilResolve const & ) const = default;
111472 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve111473     bool operator==( SubpassDescriptionDepthStencilResolve const & rhs ) const VULKAN_HPP_NOEXCEPT
111474     {
111475 #  if defined( VULKAN_HPP_USE_REFLECT )
111476       return this->reflect() == rhs.reflect();
111477 #  else
111478       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthResolveMode == rhs.depthResolveMode ) &&
111479              ( stencilResolveMode == rhs.stencilResolveMode ) && ( pDepthStencilResolveAttachment == rhs.pDepthStencilResolveAttachment );
111480 #  endif
111481     }
111482 
operator !=VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve111483     bool operator!=( SubpassDescriptionDepthStencilResolve const & rhs ) const VULKAN_HPP_NOEXCEPT
111484     {
111485       return !operator==( rhs );
111486     }
111487 #endif
111488 
111489   public:
111490     VULKAN_HPP_NAMESPACE::StructureType                sType                          = StructureType::eSubpassDescriptionDepthStencilResolve;
111491     const void *                                       pNext                          = {};
111492     VULKAN_HPP_NAMESPACE::ResolveModeFlagBits          depthResolveMode               = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone;
111493     VULKAN_HPP_NAMESPACE::ResolveModeFlagBits          stencilResolveMode             = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone;
111494     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilResolveAttachment = {};
111495   };
111496 
111497   template <>
111498   struct CppType<StructureType, StructureType::eSubpassDescriptionDepthStencilResolve>
111499   {
111500     using Type = SubpassDescriptionDepthStencilResolve;
111501   };
111502 
111503   using SubpassDescriptionDepthStencilResolveKHR = SubpassDescriptionDepthStencilResolve;
111504 
111505   struct SubpassEndInfo
111506   {
111507     using NativeType = VkSubpassEndInfo;
111508 
111509     static const bool                                  allowDuplicate = false;
111510     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubpassEndInfo;
111511 
111512 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassEndInfoVULKAN_HPP_NAMESPACE::SubpassEndInfo111513     VULKAN_HPP_CONSTEXPR SubpassEndInfo( const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT : pNext{ pNext_ } {}
111514 
111515     VULKAN_HPP_CONSTEXPR SubpassEndInfo( SubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111516 
SubpassEndInfoVULKAN_HPP_NAMESPACE::SubpassEndInfo111517     SubpassEndInfo( VkSubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SubpassEndInfo( *reinterpret_cast<SubpassEndInfo const *>( &rhs ) ) {}
111518 
111519     SubpassEndInfo & operator=( SubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111520 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
111521 
operator =VULKAN_HPP_NAMESPACE::SubpassEndInfo111522     SubpassEndInfo & operator=( VkSubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT
111523     {
111524       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassEndInfo const *>( &rhs );
111525       return *this;
111526     }
111527 
111528 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassEndInfo111529     VULKAN_HPP_CONSTEXPR_14 SubpassEndInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
111530     {
111531       pNext = pNext_;
111532       return *this;
111533     }
111534 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
111535 
operator VkSubpassEndInfo const&VULKAN_HPP_NAMESPACE::SubpassEndInfo111536     operator VkSubpassEndInfo const &() const VULKAN_HPP_NOEXCEPT
111537     {
111538       return *reinterpret_cast<const VkSubpassEndInfo *>( this );
111539     }
111540 
operator VkSubpassEndInfo&VULKAN_HPP_NAMESPACE::SubpassEndInfo111541     operator VkSubpassEndInfo &() VULKAN_HPP_NOEXCEPT
111542     {
111543       return *reinterpret_cast<VkSubpassEndInfo *>( this );
111544     }
111545 
111546 #if defined( VULKAN_HPP_USE_REFLECT )
111547 #  if 14 <= VULKAN_HPP_CPP_VERSION
111548     auto
111549 #  else
111550     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &>
111551 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassEndInfo111552       reflect() const VULKAN_HPP_NOEXCEPT
111553     {
111554       return std::tie( sType, pNext );
111555     }
111556 #endif
111557 
111558 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
111559     auto operator<=>( SubpassEndInfo const & ) const = default;
111560 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassEndInfo111561     bool operator==( SubpassEndInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
111562     {
111563 #  if defined( VULKAN_HPP_USE_REFLECT )
111564       return this->reflect() == rhs.reflect();
111565 #  else
111566       return ( sType == rhs.sType ) && ( pNext == rhs.pNext );
111567 #  endif
111568     }
111569 
operator !=VULKAN_HPP_NAMESPACE::SubpassEndInfo111570     bool operator!=( SubpassEndInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
111571     {
111572       return !operator==( rhs );
111573     }
111574 #endif
111575 
111576   public:
111577     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassEndInfo;
111578     const void *                        pNext = {};
111579   };
111580 
111581   template <>
111582   struct CppType<StructureType, StructureType::eSubpassEndInfo>
111583   {
111584     using Type = SubpassEndInfo;
111585   };
111586 
111587   using SubpassEndInfoKHR = SubpassEndInfo;
111588 
111589   struct SubpassFragmentDensityMapOffsetEndInfoQCOM
111590   {
111591     using NativeType = VkSubpassFragmentDensityMapOffsetEndInfoQCOM;
111592 
111593     static const bool                                  allowDuplicate = false;
111594     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubpassFragmentDensityMapOffsetEndInfoQCOM;
111595 
111596 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassFragmentDensityMapOffsetEndInfoQCOMVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM111597     VULKAN_HPP_CONSTEXPR SubpassFragmentDensityMapOffsetEndInfoQCOM( uint32_t                               fragmentDensityOffsetCount_ = {},
111598                                                                      const VULKAN_HPP_NAMESPACE::Offset2D * pFragmentDensityOffsets_    = {},
111599                                                                      const void *                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
111600       : pNext{ pNext_ }
111601       , fragmentDensityOffsetCount{ fragmentDensityOffsetCount_ }
111602       , pFragmentDensityOffsets{ pFragmentDensityOffsets_ }
111603     {
111604     }
111605 
111606     VULKAN_HPP_CONSTEXPR SubpassFragmentDensityMapOffsetEndInfoQCOM( SubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111607 
SubpassFragmentDensityMapOffsetEndInfoQCOMVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM111608     SubpassFragmentDensityMapOffsetEndInfoQCOM( VkSubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
111609       : SubpassFragmentDensityMapOffsetEndInfoQCOM( *reinterpret_cast<SubpassFragmentDensityMapOffsetEndInfoQCOM const *>( &rhs ) )
111610     {
111611     }
111612 
111613 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SubpassFragmentDensityMapOffsetEndInfoQCOMVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM111614     SubpassFragmentDensityMapOffsetEndInfoQCOM(
111615       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Offset2D> const & fragmentDensityOffsets_, const void * pNext_ = nullptr )
111616       : pNext( pNext_ )
111617       , fragmentDensityOffsetCount( static_cast<uint32_t>( fragmentDensityOffsets_.size() ) )
111618       , pFragmentDensityOffsets( fragmentDensityOffsets_.data() )
111619     {
111620     }
111621 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
111622 
111623     SubpassFragmentDensityMapOffsetEndInfoQCOM & operator=( SubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111624 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
111625 
operator =VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM111626     SubpassFragmentDensityMapOffsetEndInfoQCOM & operator=( VkSubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
111627     {
111628       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM const *>( &rhs );
111629       return *this;
111630     }
111631 
111632 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM111633     VULKAN_HPP_CONSTEXPR_14 SubpassFragmentDensityMapOffsetEndInfoQCOM & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
111634     {
111635       pNext = pNext_;
111636       return *this;
111637     }
111638 
111639     VULKAN_HPP_CONSTEXPR_14 SubpassFragmentDensityMapOffsetEndInfoQCOM &
setFragmentDensityOffsetCountVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM111640       setFragmentDensityOffsetCount( uint32_t fragmentDensityOffsetCount_ ) VULKAN_HPP_NOEXCEPT
111641     {
111642       fragmentDensityOffsetCount = fragmentDensityOffsetCount_;
111643       return *this;
111644     }
111645 
111646     VULKAN_HPP_CONSTEXPR_14 SubpassFragmentDensityMapOffsetEndInfoQCOM &
setPFragmentDensityOffsetsVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM111647       setPFragmentDensityOffsets( const VULKAN_HPP_NAMESPACE::Offset2D * pFragmentDensityOffsets_ ) VULKAN_HPP_NOEXCEPT
111648     {
111649       pFragmentDensityOffsets = pFragmentDensityOffsets_;
111650       return *this;
111651     }
111652 
111653 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setFragmentDensityOffsetsVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM111654     SubpassFragmentDensityMapOffsetEndInfoQCOM & setFragmentDensityOffsets(
111655       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Offset2D> const & fragmentDensityOffsets_ ) VULKAN_HPP_NOEXCEPT
111656     {
111657       fragmentDensityOffsetCount = static_cast<uint32_t>( fragmentDensityOffsets_.size() );
111658       pFragmentDensityOffsets    = fragmentDensityOffsets_.data();
111659       return *this;
111660     }
111661 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
111662 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
111663 
operator VkSubpassFragmentDensityMapOffsetEndInfoQCOM const&VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM111664     operator VkSubpassFragmentDensityMapOffsetEndInfoQCOM const &() const VULKAN_HPP_NOEXCEPT
111665     {
111666       return *reinterpret_cast<const VkSubpassFragmentDensityMapOffsetEndInfoQCOM *>( this );
111667     }
111668 
operator VkSubpassFragmentDensityMapOffsetEndInfoQCOM&VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM111669     operator VkSubpassFragmentDensityMapOffsetEndInfoQCOM &() VULKAN_HPP_NOEXCEPT
111670     {
111671       return *reinterpret_cast<VkSubpassFragmentDensityMapOffsetEndInfoQCOM *>( this );
111672     }
111673 
111674 #if defined( VULKAN_HPP_USE_REFLECT )
111675 #  if 14 <= VULKAN_HPP_CPP_VERSION
111676     auto
111677 #  else
111678     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Offset2D * const &>
111679 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM111680       reflect() const VULKAN_HPP_NOEXCEPT
111681     {
111682       return std::tie( sType, pNext, fragmentDensityOffsetCount, pFragmentDensityOffsets );
111683     }
111684 #endif
111685 
111686 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
111687     auto operator<=>( SubpassFragmentDensityMapOffsetEndInfoQCOM const & ) const = default;
111688 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM111689     bool operator==( SubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
111690     {
111691 #  if defined( VULKAN_HPP_USE_REFLECT )
111692       return this->reflect() == rhs.reflect();
111693 #  else
111694       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentDensityOffsetCount == rhs.fragmentDensityOffsetCount ) &&
111695              ( pFragmentDensityOffsets == rhs.pFragmentDensityOffsets );
111696 #  endif
111697     }
111698 
operator !=VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM111699     bool operator!=( SubpassFragmentDensityMapOffsetEndInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
111700     {
111701       return !operator==( rhs );
111702     }
111703 #endif
111704 
111705   public:
111706     VULKAN_HPP_NAMESPACE::StructureType    sType                      = StructureType::eSubpassFragmentDensityMapOffsetEndInfoQCOM;
111707     const void *                           pNext                      = {};
111708     uint32_t                               fragmentDensityOffsetCount = {};
111709     const VULKAN_HPP_NAMESPACE::Offset2D * pFragmentDensityOffsets    = {};
111710   };
111711 
111712   template <>
111713   struct CppType<StructureType, StructureType::eSubpassFragmentDensityMapOffsetEndInfoQCOM>
111714   {
111715     using Type = SubpassFragmentDensityMapOffsetEndInfoQCOM;
111716   };
111717 
111718   struct SubpassResolvePerformanceQueryEXT
111719   {
111720     using NativeType = VkSubpassResolvePerformanceQueryEXT;
111721 
111722     static const bool                                  allowDuplicate = false;
111723     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubpassResolvePerformanceQueryEXT;
111724 
111725 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassResolvePerformanceQueryEXTVULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT111726     VULKAN_HPP_CONSTEXPR SubpassResolvePerformanceQueryEXT( VULKAN_HPP_NAMESPACE::Bool32 optimal_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
111727       : pNext{ pNext_ }
111728       , optimal{ optimal_ }
111729     {
111730     }
111731 
111732     VULKAN_HPP_CONSTEXPR SubpassResolvePerformanceQueryEXT( SubpassResolvePerformanceQueryEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111733 
SubpassResolvePerformanceQueryEXTVULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT111734     SubpassResolvePerformanceQueryEXT( VkSubpassResolvePerformanceQueryEXT const & rhs ) VULKAN_HPP_NOEXCEPT
111735       : SubpassResolvePerformanceQueryEXT( *reinterpret_cast<SubpassResolvePerformanceQueryEXT const *>( &rhs ) )
111736     {
111737     }
111738 
111739     SubpassResolvePerformanceQueryEXT & operator=( SubpassResolvePerformanceQueryEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111740 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
111741 
operator =VULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT111742     SubpassResolvePerformanceQueryEXT & operator=( VkSubpassResolvePerformanceQueryEXT const & rhs ) VULKAN_HPP_NOEXCEPT
111743     {
111744       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT const *>( &rhs );
111745       return *this;
111746     }
111747 
operator VkSubpassResolvePerformanceQueryEXT const&VULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT111748     operator VkSubpassResolvePerformanceQueryEXT const &() const VULKAN_HPP_NOEXCEPT
111749     {
111750       return *reinterpret_cast<const VkSubpassResolvePerformanceQueryEXT *>( this );
111751     }
111752 
operator VkSubpassResolvePerformanceQueryEXT&VULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT111753     operator VkSubpassResolvePerformanceQueryEXT &() VULKAN_HPP_NOEXCEPT
111754     {
111755       return *reinterpret_cast<VkSubpassResolvePerformanceQueryEXT *>( this );
111756     }
111757 
111758 #if defined( VULKAN_HPP_USE_REFLECT )
111759 #  if 14 <= VULKAN_HPP_CPP_VERSION
111760     auto
111761 #  else
111762     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
111763 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT111764       reflect() const VULKAN_HPP_NOEXCEPT
111765     {
111766       return std::tie( sType, pNext, optimal );
111767     }
111768 #endif
111769 
111770 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
111771     auto operator<=>( SubpassResolvePerformanceQueryEXT const & ) const = default;
111772 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT111773     bool operator==( SubpassResolvePerformanceQueryEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
111774     {
111775 #  if defined( VULKAN_HPP_USE_REFLECT )
111776       return this->reflect() == rhs.reflect();
111777 #  else
111778       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( optimal == rhs.optimal );
111779 #  endif
111780     }
111781 
operator !=VULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT111782     bool operator!=( SubpassResolvePerformanceQueryEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
111783     {
111784       return !operator==( rhs );
111785     }
111786 #endif
111787 
111788   public:
111789     VULKAN_HPP_NAMESPACE::StructureType sType   = StructureType::eSubpassResolvePerformanceQueryEXT;
111790     void *                              pNext   = {};
111791     VULKAN_HPP_NAMESPACE::Bool32        optimal = {};
111792   };
111793 
111794   template <>
111795   struct CppType<StructureType, StructureType::eSubpassResolvePerformanceQueryEXT>
111796   {
111797     using Type = SubpassResolvePerformanceQueryEXT;
111798   };
111799 
111800   struct SubpassShadingPipelineCreateInfoHUAWEI
111801   {
111802     using NativeType = VkSubpassShadingPipelineCreateInfoHUAWEI;
111803 
111804     static const bool                                  allowDuplicate = false;
111805     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubpassShadingPipelineCreateInfoHUAWEI;
111806 
111807 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassShadingPipelineCreateInfoHUAWEIVULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI111808     VULKAN_HPP_CONSTEXPR SubpassShadingPipelineCreateInfoHUAWEI( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ = {},
111809                                                                  uint32_t                         subpass_    = {},
111810                                                                  void *                           pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
111811       : pNext{ pNext_ }
111812       , renderPass{ renderPass_ }
111813       , subpass{ subpass_ }
111814     {
111815     }
111816 
111817     VULKAN_HPP_CONSTEXPR SubpassShadingPipelineCreateInfoHUAWEI( SubpassShadingPipelineCreateInfoHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111818 
SubpassShadingPipelineCreateInfoHUAWEIVULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI111819     SubpassShadingPipelineCreateInfoHUAWEI( VkSubpassShadingPipelineCreateInfoHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
111820       : SubpassShadingPipelineCreateInfoHUAWEI( *reinterpret_cast<SubpassShadingPipelineCreateInfoHUAWEI const *>( &rhs ) )
111821     {
111822     }
111823 
111824     SubpassShadingPipelineCreateInfoHUAWEI & operator=( SubpassShadingPipelineCreateInfoHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111825 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
111826 
operator =VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI111827     SubpassShadingPipelineCreateInfoHUAWEI & operator=( VkSubpassShadingPipelineCreateInfoHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT
111828     {
111829       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI const *>( &rhs );
111830       return *this;
111831     }
111832 
111833 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI111834     VULKAN_HPP_CONSTEXPR_14 SubpassShadingPipelineCreateInfoHUAWEI & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
111835     {
111836       pNext = pNext_;
111837       return *this;
111838     }
111839 
setRenderPassVULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI111840     VULKAN_HPP_CONSTEXPR_14 SubpassShadingPipelineCreateInfoHUAWEI & setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT
111841     {
111842       renderPass = renderPass_;
111843       return *this;
111844     }
111845 
setSubpassVULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI111846     VULKAN_HPP_CONSTEXPR_14 SubpassShadingPipelineCreateInfoHUAWEI & setSubpass( uint32_t subpass_ ) VULKAN_HPP_NOEXCEPT
111847     {
111848       subpass = subpass_;
111849       return *this;
111850     }
111851 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
111852 
operator VkSubpassShadingPipelineCreateInfoHUAWEI const&VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI111853     operator VkSubpassShadingPipelineCreateInfoHUAWEI const &() const VULKAN_HPP_NOEXCEPT
111854     {
111855       return *reinterpret_cast<const VkSubpassShadingPipelineCreateInfoHUAWEI *>( this );
111856     }
111857 
operator VkSubpassShadingPipelineCreateInfoHUAWEI&VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI111858     operator VkSubpassShadingPipelineCreateInfoHUAWEI &() VULKAN_HPP_NOEXCEPT
111859     {
111860       return *reinterpret_cast<VkSubpassShadingPipelineCreateInfoHUAWEI *>( this );
111861     }
111862 
111863 #if defined( VULKAN_HPP_USE_REFLECT )
111864 #  if 14 <= VULKAN_HPP_CPP_VERSION
111865     auto
111866 #  else
111867     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::RenderPass const &, uint32_t const &>
111868 #  endif
reflectVULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI111869       reflect() const VULKAN_HPP_NOEXCEPT
111870     {
111871       return std::tie( sType, pNext, renderPass, subpass );
111872     }
111873 #endif
111874 
111875 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
111876     auto operator<=>( SubpassShadingPipelineCreateInfoHUAWEI const & ) const = default;
111877 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI111878     bool operator==( SubpassShadingPipelineCreateInfoHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
111879     {
111880 #  if defined( VULKAN_HPP_USE_REFLECT )
111881       return this->reflect() == rhs.reflect();
111882 #  else
111883       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( renderPass == rhs.renderPass ) && ( subpass == rhs.subpass );
111884 #  endif
111885     }
111886 
operator !=VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI111887     bool operator!=( SubpassShadingPipelineCreateInfoHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT
111888     {
111889       return !operator==( rhs );
111890     }
111891 #endif
111892 
111893   public:
111894     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eSubpassShadingPipelineCreateInfoHUAWEI;
111895     void *                              pNext      = {};
111896     VULKAN_HPP_NAMESPACE::RenderPass    renderPass = {};
111897     uint32_t                            subpass    = {};
111898   };
111899 
111900   template <>
111901   struct CppType<StructureType, StructureType::eSubpassShadingPipelineCreateInfoHUAWEI>
111902   {
111903     using Type = SubpassShadingPipelineCreateInfoHUAWEI;
111904   };
111905 
111906   struct SubresourceHostMemcpySizeEXT
111907   {
111908     using NativeType = VkSubresourceHostMemcpySizeEXT;
111909 
111910     static const bool                                  allowDuplicate = false;
111911     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubresourceHostMemcpySizeEXT;
111912 
111913 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubresourceHostMemcpySizeEXTVULKAN_HPP_NAMESPACE::SubresourceHostMemcpySizeEXT111914     VULKAN_HPP_CONSTEXPR SubresourceHostMemcpySizeEXT( VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
111915       : pNext{ pNext_ }
111916       , size{ size_ }
111917     {
111918     }
111919 
111920     VULKAN_HPP_CONSTEXPR SubresourceHostMemcpySizeEXT( SubresourceHostMemcpySizeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111921 
SubresourceHostMemcpySizeEXTVULKAN_HPP_NAMESPACE::SubresourceHostMemcpySizeEXT111922     SubresourceHostMemcpySizeEXT( VkSubresourceHostMemcpySizeEXT const & rhs ) VULKAN_HPP_NOEXCEPT
111923       : SubresourceHostMemcpySizeEXT( *reinterpret_cast<SubresourceHostMemcpySizeEXT const *>( &rhs ) )
111924     {
111925     }
111926 
111927     SubresourceHostMemcpySizeEXT & operator=( SubresourceHostMemcpySizeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
111928 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
111929 
operator =VULKAN_HPP_NAMESPACE::SubresourceHostMemcpySizeEXT111930     SubresourceHostMemcpySizeEXT & operator=( VkSubresourceHostMemcpySizeEXT const & rhs ) VULKAN_HPP_NOEXCEPT
111931     {
111932       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubresourceHostMemcpySizeEXT const *>( &rhs );
111933       return *this;
111934     }
111935 
operator VkSubresourceHostMemcpySizeEXT const&VULKAN_HPP_NAMESPACE::SubresourceHostMemcpySizeEXT111936     operator VkSubresourceHostMemcpySizeEXT const &() const VULKAN_HPP_NOEXCEPT
111937     {
111938       return *reinterpret_cast<const VkSubresourceHostMemcpySizeEXT *>( this );
111939     }
111940 
operator VkSubresourceHostMemcpySizeEXT&VULKAN_HPP_NAMESPACE::SubresourceHostMemcpySizeEXT111941     operator VkSubresourceHostMemcpySizeEXT &() VULKAN_HPP_NOEXCEPT
111942     {
111943       return *reinterpret_cast<VkSubresourceHostMemcpySizeEXT *>( this );
111944     }
111945 
111946 #if defined( VULKAN_HPP_USE_REFLECT )
111947 #  if 14 <= VULKAN_HPP_CPP_VERSION
111948     auto
111949 #  else
111950     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
111951 #  endif
reflectVULKAN_HPP_NAMESPACE::SubresourceHostMemcpySizeEXT111952       reflect() const VULKAN_HPP_NOEXCEPT
111953     {
111954       return std::tie( sType, pNext, size );
111955     }
111956 #endif
111957 
111958 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
111959     auto operator<=>( SubresourceHostMemcpySizeEXT const & ) const = default;
111960 #else
operator ==VULKAN_HPP_NAMESPACE::SubresourceHostMemcpySizeEXT111961     bool operator==( SubresourceHostMemcpySizeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
111962     {
111963 #  if defined( VULKAN_HPP_USE_REFLECT )
111964       return this->reflect() == rhs.reflect();
111965 #  else
111966       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( size == rhs.size );
111967 #  endif
111968     }
111969 
operator !=VULKAN_HPP_NAMESPACE::SubresourceHostMemcpySizeEXT111970     bool operator!=( SubresourceHostMemcpySizeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
111971     {
111972       return !operator==( rhs );
111973     }
111974 #endif
111975 
111976   public:
111977     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubresourceHostMemcpySizeEXT;
111978     void *                              pNext = {};
111979     VULKAN_HPP_NAMESPACE::DeviceSize    size  = {};
111980   };
111981 
111982   template <>
111983   struct CppType<StructureType, StructureType::eSubresourceHostMemcpySizeEXT>
111984   {
111985     using Type = SubresourceHostMemcpySizeEXT;
111986   };
111987 
111988   struct SubresourceLayout2KHR
111989   {
111990     using NativeType = VkSubresourceLayout2KHR;
111991 
111992     static const bool                                  allowDuplicate = false;
111993     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSubresourceLayout2KHR;
111994 
111995 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubresourceLayout2KHRVULKAN_HPP_NAMESPACE::SubresourceLayout2KHR111996     VULKAN_HPP_CONSTEXPR SubresourceLayout2KHR( VULKAN_HPP_NAMESPACE::SubresourceLayout subresourceLayout_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
111997       : pNext{ pNext_ }
111998       , subresourceLayout{ subresourceLayout_ }
111999     {
112000     }
112001 
112002     VULKAN_HPP_CONSTEXPR SubresourceLayout2KHR( SubresourceLayout2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112003 
SubresourceLayout2KHRVULKAN_HPP_NAMESPACE::SubresourceLayout2KHR112004     SubresourceLayout2KHR( VkSubresourceLayout2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
112005       : SubresourceLayout2KHR( *reinterpret_cast<SubresourceLayout2KHR const *>( &rhs ) )
112006     {
112007     }
112008 
112009     SubresourceLayout2KHR & operator=( SubresourceLayout2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112010 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
112011 
operator =VULKAN_HPP_NAMESPACE::SubresourceLayout2KHR112012     SubresourceLayout2KHR & operator=( VkSubresourceLayout2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
112013     {
112014       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubresourceLayout2KHR const *>( &rhs );
112015       return *this;
112016     }
112017 
operator VkSubresourceLayout2KHR const&VULKAN_HPP_NAMESPACE::SubresourceLayout2KHR112018     operator VkSubresourceLayout2KHR const &() const VULKAN_HPP_NOEXCEPT
112019     {
112020       return *reinterpret_cast<const VkSubresourceLayout2KHR *>( this );
112021     }
112022 
operator VkSubresourceLayout2KHR&VULKAN_HPP_NAMESPACE::SubresourceLayout2KHR112023     operator VkSubresourceLayout2KHR &() VULKAN_HPP_NOEXCEPT
112024     {
112025       return *reinterpret_cast<VkSubresourceLayout2KHR *>( this );
112026     }
112027 
112028 #if defined( VULKAN_HPP_USE_REFLECT )
112029 #  if 14 <= VULKAN_HPP_CPP_VERSION
112030     auto
112031 #  else
112032     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::SubresourceLayout const &>
112033 #  endif
reflectVULKAN_HPP_NAMESPACE::SubresourceLayout2KHR112034       reflect() const VULKAN_HPP_NOEXCEPT
112035     {
112036       return std::tie( sType, pNext, subresourceLayout );
112037     }
112038 #endif
112039 
112040 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
112041     auto operator<=>( SubresourceLayout2KHR const & ) const = default;
112042 #else
operator ==VULKAN_HPP_NAMESPACE::SubresourceLayout2KHR112043     bool operator==( SubresourceLayout2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
112044     {
112045 #  if defined( VULKAN_HPP_USE_REFLECT )
112046       return this->reflect() == rhs.reflect();
112047 #  else
112048       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subresourceLayout == rhs.subresourceLayout );
112049 #  endif
112050     }
112051 
operator !=VULKAN_HPP_NAMESPACE::SubresourceLayout2KHR112052     bool operator!=( SubresourceLayout2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
112053     {
112054       return !operator==( rhs );
112055     }
112056 #endif
112057 
112058   public:
112059     VULKAN_HPP_NAMESPACE::StructureType     sType             = StructureType::eSubresourceLayout2KHR;
112060     void *                                  pNext             = {};
112061     VULKAN_HPP_NAMESPACE::SubresourceLayout subresourceLayout = {};
112062   };
112063 
112064   template <>
112065   struct CppType<StructureType, StructureType::eSubresourceLayout2KHR>
112066   {
112067     using Type = SubresourceLayout2KHR;
112068   };
112069 
112070   using SubresourceLayout2EXT = SubresourceLayout2KHR;
112071 
112072   struct SurfaceCapabilities2EXT
112073   {
112074     using NativeType = VkSurfaceCapabilities2EXT;
112075 
112076     static const bool                                  allowDuplicate = false;
112077     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfaceCapabilities2EXT;
112078 
112079 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceCapabilities2EXTVULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT112080     VULKAN_HPP_CONSTEXPR SurfaceCapabilities2EXT(
112081       uint32_t                                          minImageCount_            = {},
112082       uint32_t                                          maxImageCount_            = {},
112083       VULKAN_HPP_NAMESPACE::Extent2D                    currentExtent_            = {},
112084       VULKAN_HPP_NAMESPACE::Extent2D                    minImageExtent_           = {},
112085       VULKAN_HPP_NAMESPACE::Extent2D                    maxImageExtent_           = {},
112086       uint32_t                                          maxImageArrayLayers_      = {},
112087       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR    supportedTransforms_      = {},
112088       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform_         = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
112089       VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR      supportedCompositeAlpha_  = {},
112090       VULKAN_HPP_NAMESPACE::ImageUsageFlags             supportedUsageFlags_      = {},
112091       VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT      supportedSurfaceCounters_ = {},
112092       void *                                            pNext_                    = nullptr ) VULKAN_HPP_NOEXCEPT
112093       : pNext{ pNext_ }
112094       , minImageCount{ minImageCount_ }
112095       , maxImageCount{ maxImageCount_ }
112096       , currentExtent{ currentExtent_ }
112097       , minImageExtent{ minImageExtent_ }
112098       , maxImageExtent{ maxImageExtent_ }
112099       , maxImageArrayLayers{ maxImageArrayLayers_ }
112100       , supportedTransforms{ supportedTransforms_ }
112101       , currentTransform{ currentTransform_ }
112102       , supportedCompositeAlpha{ supportedCompositeAlpha_ }
112103       , supportedUsageFlags{ supportedUsageFlags_ }
112104       , supportedSurfaceCounters{ supportedSurfaceCounters_ }
112105     {
112106     }
112107 
112108     VULKAN_HPP_CONSTEXPR SurfaceCapabilities2EXT( SurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112109 
SurfaceCapabilities2EXTVULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT112110     SurfaceCapabilities2EXT( VkSurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
112111       : SurfaceCapabilities2EXT( *reinterpret_cast<SurfaceCapabilities2EXT const *>( &rhs ) )
112112     {
112113     }
112114 
112115     SurfaceCapabilities2EXT & operator=( SurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112116 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
112117 
operator =VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT112118     SurfaceCapabilities2EXT & operator=( VkSurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
112119     {
112120       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT const *>( &rhs );
112121       return *this;
112122     }
112123 
operator VkSurfaceCapabilities2EXT const&VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT112124     operator VkSurfaceCapabilities2EXT const &() const VULKAN_HPP_NOEXCEPT
112125     {
112126       return *reinterpret_cast<const VkSurfaceCapabilities2EXT *>( this );
112127     }
112128 
operator VkSurfaceCapabilities2EXT&VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT112129     operator VkSurfaceCapabilities2EXT &() VULKAN_HPP_NOEXCEPT
112130     {
112131       return *reinterpret_cast<VkSurfaceCapabilities2EXT *>( this );
112132     }
112133 
112134 #if defined( VULKAN_HPP_USE_REFLECT )
112135 #  if 14 <= VULKAN_HPP_CPP_VERSION
112136     auto
112137 #  else
112138     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
112139                void * const &,
112140                uint32_t const &,
112141                uint32_t const &,
112142                VULKAN_HPP_NAMESPACE::Extent2D const &,
112143                VULKAN_HPP_NAMESPACE::Extent2D const &,
112144                VULKAN_HPP_NAMESPACE::Extent2D const &,
112145                uint32_t const &,
112146                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR const &,
112147                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &,
112148                VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR const &,
112149                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &,
112150                VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT const &>
112151 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT112152       reflect() const VULKAN_HPP_NOEXCEPT
112153     {
112154       return std::tie( sType,
112155                        pNext,
112156                        minImageCount,
112157                        maxImageCount,
112158                        currentExtent,
112159                        minImageExtent,
112160                        maxImageExtent,
112161                        maxImageArrayLayers,
112162                        supportedTransforms,
112163                        currentTransform,
112164                        supportedCompositeAlpha,
112165                        supportedUsageFlags,
112166                        supportedSurfaceCounters );
112167     }
112168 #endif
112169 
112170 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
112171     auto operator<=>( SurfaceCapabilities2EXT const & ) const = default;
112172 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT112173     bool operator==( SurfaceCapabilities2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
112174     {
112175 #  if defined( VULKAN_HPP_USE_REFLECT )
112176       return this->reflect() == rhs.reflect();
112177 #  else
112178       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minImageCount == rhs.minImageCount ) && ( maxImageCount == rhs.maxImageCount ) &&
112179              ( currentExtent == rhs.currentExtent ) && ( minImageExtent == rhs.minImageExtent ) && ( maxImageExtent == rhs.maxImageExtent ) &&
112180              ( maxImageArrayLayers == rhs.maxImageArrayLayers ) && ( supportedTransforms == rhs.supportedTransforms ) &&
112181              ( currentTransform == rhs.currentTransform ) && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha ) &&
112182              ( supportedUsageFlags == rhs.supportedUsageFlags ) && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters );
112183 #  endif
112184     }
112185 
operator !=VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT112186     bool operator!=( SurfaceCapabilities2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
112187     {
112188       return !operator==( rhs );
112189     }
112190 #endif
112191 
112192   public:
112193     VULKAN_HPP_NAMESPACE::StructureType               sType                    = StructureType::eSurfaceCapabilities2EXT;
112194     void *                                            pNext                    = {};
112195     uint32_t                                          minImageCount            = {};
112196     uint32_t                                          maxImageCount            = {};
112197     VULKAN_HPP_NAMESPACE::Extent2D                    currentExtent            = {};
112198     VULKAN_HPP_NAMESPACE::Extent2D                    minImageExtent           = {};
112199     VULKAN_HPP_NAMESPACE::Extent2D                    maxImageExtent           = {};
112200     uint32_t                                          maxImageArrayLayers      = {};
112201     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR    supportedTransforms      = {};
112202     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform         = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
112203     VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR      supportedCompositeAlpha  = {};
112204     VULKAN_HPP_NAMESPACE::ImageUsageFlags             supportedUsageFlags      = {};
112205     VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT      supportedSurfaceCounters = {};
112206   };
112207 
112208   template <>
112209   struct CppType<StructureType, StructureType::eSurfaceCapabilities2EXT>
112210   {
112211     using Type = SurfaceCapabilities2EXT;
112212   };
112213 
112214   struct SurfaceCapabilitiesKHR
112215   {
112216     using NativeType = VkSurfaceCapabilitiesKHR;
112217 
112218 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceCapabilitiesKHRVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR112219     VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesKHR(
112220       uint32_t                                          minImageCount_           = {},
112221       uint32_t                                          maxImageCount_           = {},
112222       VULKAN_HPP_NAMESPACE::Extent2D                    currentExtent_           = {},
112223       VULKAN_HPP_NAMESPACE::Extent2D                    minImageExtent_          = {},
112224       VULKAN_HPP_NAMESPACE::Extent2D                    maxImageExtent_          = {},
112225       uint32_t                                          maxImageArrayLayers_     = {},
112226       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR    supportedTransforms_     = {},
112227       VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform_        = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
112228       VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR      supportedCompositeAlpha_ = {},
112229       VULKAN_HPP_NAMESPACE::ImageUsageFlags             supportedUsageFlags_     = {} ) VULKAN_HPP_NOEXCEPT
112230       : minImageCount{ minImageCount_ }
112231       , maxImageCount{ maxImageCount_ }
112232       , currentExtent{ currentExtent_ }
112233       , minImageExtent{ minImageExtent_ }
112234       , maxImageExtent{ maxImageExtent_ }
112235       , maxImageArrayLayers{ maxImageArrayLayers_ }
112236       , supportedTransforms{ supportedTransforms_ }
112237       , currentTransform{ currentTransform_ }
112238       , supportedCompositeAlpha{ supportedCompositeAlpha_ }
112239       , supportedUsageFlags{ supportedUsageFlags_ }
112240     {
112241     }
112242 
112243     VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesKHR( SurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112244 
SurfaceCapabilitiesKHRVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR112245     SurfaceCapabilitiesKHR( VkSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
112246       : SurfaceCapabilitiesKHR( *reinterpret_cast<SurfaceCapabilitiesKHR const *>( &rhs ) )
112247     {
112248     }
112249 
112250     SurfaceCapabilitiesKHR & operator=( SurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112251 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
112252 
operator =VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR112253     SurfaceCapabilitiesKHR & operator=( VkSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
112254     {
112255       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR const *>( &rhs );
112256       return *this;
112257     }
112258 
operator VkSurfaceCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR112259     operator VkSurfaceCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
112260     {
112261       return *reinterpret_cast<const VkSurfaceCapabilitiesKHR *>( this );
112262     }
112263 
operator VkSurfaceCapabilitiesKHR&VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR112264     operator VkSurfaceCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
112265     {
112266       return *reinterpret_cast<VkSurfaceCapabilitiesKHR *>( this );
112267     }
112268 
112269 #if defined( VULKAN_HPP_USE_REFLECT )
112270 #  if 14 <= VULKAN_HPP_CPP_VERSION
112271     auto
112272 #  else
112273     std::tuple<uint32_t const &,
112274                uint32_t const &,
112275                VULKAN_HPP_NAMESPACE::Extent2D const &,
112276                VULKAN_HPP_NAMESPACE::Extent2D const &,
112277                VULKAN_HPP_NAMESPACE::Extent2D const &,
112278                uint32_t const &,
112279                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR const &,
112280                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &,
112281                VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR const &,
112282                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &>
112283 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR112284       reflect() const VULKAN_HPP_NOEXCEPT
112285     {
112286       return std::tie( minImageCount,
112287                        maxImageCount,
112288                        currentExtent,
112289                        minImageExtent,
112290                        maxImageExtent,
112291                        maxImageArrayLayers,
112292                        supportedTransforms,
112293                        currentTransform,
112294                        supportedCompositeAlpha,
112295                        supportedUsageFlags );
112296     }
112297 #endif
112298 
112299 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
112300     auto operator<=>( SurfaceCapabilitiesKHR const & ) const = default;
112301 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR112302     bool operator==( SurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
112303     {
112304 #  if defined( VULKAN_HPP_USE_REFLECT )
112305       return this->reflect() == rhs.reflect();
112306 #  else
112307       return ( minImageCount == rhs.minImageCount ) && ( maxImageCount == rhs.maxImageCount ) && ( currentExtent == rhs.currentExtent ) &&
112308              ( minImageExtent == rhs.minImageExtent ) && ( maxImageExtent == rhs.maxImageExtent ) && ( maxImageArrayLayers == rhs.maxImageArrayLayers ) &&
112309              ( supportedTransforms == rhs.supportedTransforms ) && ( currentTransform == rhs.currentTransform ) &&
112310              ( supportedCompositeAlpha == rhs.supportedCompositeAlpha ) && ( supportedUsageFlags == rhs.supportedUsageFlags );
112311 #  endif
112312     }
112313 
operator !=VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR112314     bool operator!=( SurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
112315     {
112316       return !operator==( rhs );
112317     }
112318 #endif
112319 
112320   public:
112321     uint32_t                                          minImageCount           = {};
112322     uint32_t                                          maxImageCount           = {};
112323     VULKAN_HPP_NAMESPACE::Extent2D                    currentExtent           = {};
112324     VULKAN_HPP_NAMESPACE::Extent2D                    minImageExtent          = {};
112325     VULKAN_HPP_NAMESPACE::Extent2D                    maxImageExtent          = {};
112326     uint32_t                                          maxImageArrayLayers     = {};
112327     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR    supportedTransforms     = {};
112328     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform        = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
112329     VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR      supportedCompositeAlpha = {};
112330     VULKAN_HPP_NAMESPACE::ImageUsageFlags             supportedUsageFlags     = {};
112331   };
112332 
112333   struct SurfaceCapabilities2KHR
112334   {
112335     using NativeType = VkSurfaceCapabilities2KHR;
112336 
112337     static const bool                                  allowDuplicate = false;
112338     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfaceCapabilities2KHR;
112339 
112340 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceCapabilities2KHRVULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR112341     VULKAN_HPP_CONSTEXPR SurfaceCapabilities2KHR( VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR surfaceCapabilities_ = {},
112342                                                   void *                                       pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
112343       : pNext{ pNext_ }
112344       , surfaceCapabilities{ surfaceCapabilities_ }
112345     {
112346     }
112347 
112348     VULKAN_HPP_CONSTEXPR SurfaceCapabilities2KHR( SurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112349 
SurfaceCapabilities2KHRVULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR112350     SurfaceCapabilities2KHR( VkSurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
112351       : SurfaceCapabilities2KHR( *reinterpret_cast<SurfaceCapabilities2KHR const *>( &rhs ) )
112352     {
112353     }
112354 
112355     SurfaceCapabilities2KHR & operator=( SurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112356 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
112357 
operator =VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR112358     SurfaceCapabilities2KHR & operator=( VkSurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
112359     {
112360       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR const *>( &rhs );
112361       return *this;
112362     }
112363 
operator VkSurfaceCapabilities2KHR const&VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR112364     operator VkSurfaceCapabilities2KHR const &() const VULKAN_HPP_NOEXCEPT
112365     {
112366       return *reinterpret_cast<const VkSurfaceCapabilities2KHR *>( this );
112367     }
112368 
operator VkSurfaceCapabilities2KHR&VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR112369     operator VkSurfaceCapabilities2KHR &() VULKAN_HPP_NOEXCEPT
112370     {
112371       return *reinterpret_cast<VkSurfaceCapabilities2KHR *>( this );
112372     }
112373 
112374 #if defined( VULKAN_HPP_USE_REFLECT )
112375 #  if 14 <= VULKAN_HPP_CPP_VERSION
112376     auto
112377 #  else
112378     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR const &>
112379 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR112380       reflect() const VULKAN_HPP_NOEXCEPT
112381     {
112382       return std::tie( sType, pNext, surfaceCapabilities );
112383     }
112384 #endif
112385 
112386 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
112387     auto operator<=>( SurfaceCapabilities2KHR const & ) const = default;
112388 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR112389     bool operator==( SurfaceCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
112390     {
112391 #  if defined( VULKAN_HPP_USE_REFLECT )
112392       return this->reflect() == rhs.reflect();
112393 #  else
112394       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( surfaceCapabilities == rhs.surfaceCapabilities );
112395 #  endif
112396     }
112397 
operator !=VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR112398     bool operator!=( SurfaceCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
112399     {
112400       return !operator==( rhs );
112401     }
112402 #endif
112403 
112404   public:
112405     VULKAN_HPP_NAMESPACE::StructureType          sType               = StructureType::eSurfaceCapabilities2KHR;
112406     void *                                       pNext               = {};
112407     VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR surfaceCapabilities = {};
112408   };
112409 
112410   template <>
112411   struct CppType<StructureType, StructureType::eSurfaceCapabilities2KHR>
112412   {
112413     using Type = SurfaceCapabilities2KHR;
112414   };
112415 
112416 #if defined( VK_USE_PLATFORM_WIN32_KHR )
112417   struct SurfaceCapabilitiesFullScreenExclusiveEXT
112418   {
112419     using NativeType = VkSurfaceCapabilitiesFullScreenExclusiveEXT;
112420 
112421     static const bool                                  allowDuplicate = false;
112422     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT;
112423 
112424 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceCapabilitiesFullScreenExclusiveEXTVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT112425     VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesFullScreenExclusiveEXT( VULKAN_HPP_NAMESPACE::Bool32 fullScreenExclusiveSupported_ = {},
112426                                                                     void *                       pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
112427       : pNext{ pNext_ }
112428       , fullScreenExclusiveSupported{ fullScreenExclusiveSupported_ }
112429     {
112430     }
112431 
112432     VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesFullScreenExclusiveEXT( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112433 
SurfaceCapabilitiesFullScreenExclusiveEXTVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT112434     SurfaceCapabilitiesFullScreenExclusiveEXT( VkSurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT
112435       : SurfaceCapabilitiesFullScreenExclusiveEXT( *reinterpret_cast<SurfaceCapabilitiesFullScreenExclusiveEXT const *>( &rhs ) )
112436     {
112437     }
112438 
112439     SurfaceCapabilitiesFullScreenExclusiveEXT & operator=( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112440 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
112441 
operator =VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT112442     SurfaceCapabilitiesFullScreenExclusiveEXT & operator=( VkSurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT
112443     {
112444       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT const *>( &rhs );
112445       return *this;
112446     }
112447 
operator VkSurfaceCapabilitiesFullScreenExclusiveEXT const&VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT112448     operator VkSurfaceCapabilitiesFullScreenExclusiveEXT const &() const VULKAN_HPP_NOEXCEPT
112449     {
112450       return *reinterpret_cast<const VkSurfaceCapabilitiesFullScreenExclusiveEXT *>( this );
112451     }
112452 
operator VkSurfaceCapabilitiesFullScreenExclusiveEXT&VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT112453     operator VkSurfaceCapabilitiesFullScreenExclusiveEXT &() VULKAN_HPP_NOEXCEPT
112454     {
112455       return *reinterpret_cast<VkSurfaceCapabilitiesFullScreenExclusiveEXT *>( this );
112456     }
112457 
112458 #  if defined( VULKAN_HPP_USE_REFLECT )
112459 #    if 14 <= VULKAN_HPP_CPP_VERSION
112460     auto
112461 #    else
112462     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
112463 #    endif
reflectVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT112464       reflect() const VULKAN_HPP_NOEXCEPT
112465     {
112466       return std::tie( sType, pNext, fullScreenExclusiveSupported );
112467     }
112468 #  endif
112469 
112470 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
112471     auto operator<=>( SurfaceCapabilitiesFullScreenExclusiveEXT const & ) const = default;
112472 #  else
operator ==VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT112473     bool operator==( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
112474     {
112475 #    if defined( VULKAN_HPP_USE_REFLECT )
112476       return this->reflect() == rhs.reflect();
112477 #    else
112478       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fullScreenExclusiveSupported == rhs.fullScreenExclusiveSupported );
112479 #    endif
112480     }
112481 
operator !=VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT112482     bool operator!=( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
112483     {
112484       return !operator==( rhs );
112485     }
112486 #  endif
112487 
112488   public:
112489     VULKAN_HPP_NAMESPACE::StructureType sType                        = StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT;
112490     void *                              pNext                        = {};
112491     VULKAN_HPP_NAMESPACE::Bool32        fullScreenExclusiveSupported = {};
112492   };
112493 
112494   template <>
112495   struct CppType<StructureType, StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT>
112496   {
112497     using Type = SurfaceCapabilitiesFullScreenExclusiveEXT;
112498   };
112499 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
112500 
112501   struct SurfaceCapabilitiesPresentBarrierNV
112502   {
112503     using NativeType = VkSurfaceCapabilitiesPresentBarrierNV;
112504 
112505     static const bool                                  allowDuplicate = false;
112506     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfaceCapabilitiesPresentBarrierNV;
112507 
112508 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceCapabilitiesPresentBarrierNVVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV112509     VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesPresentBarrierNV( VULKAN_HPP_NAMESPACE::Bool32 presentBarrierSupported_ = {},
112510                                                               void *                       pNext_                   = nullptr ) VULKAN_HPP_NOEXCEPT
112511       : pNext{ pNext_ }
112512       , presentBarrierSupported{ presentBarrierSupported_ }
112513     {
112514     }
112515 
112516     VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesPresentBarrierNV( SurfaceCapabilitiesPresentBarrierNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112517 
SurfaceCapabilitiesPresentBarrierNVVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV112518     SurfaceCapabilitiesPresentBarrierNV( VkSurfaceCapabilitiesPresentBarrierNV const & rhs ) VULKAN_HPP_NOEXCEPT
112519       : SurfaceCapabilitiesPresentBarrierNV( *reinterpret_cast<SurfaceCapabilitiesPresentBarrierNV const *>( &rhs ) )
112520     {
112521     }
112522 
112523     SurfaceCapabilitiesPresentBarrierNV & operator=( SurfaceCapabilitiesPresentBarrierNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112524 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
112525 
operator =VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV112526     SurfaceCapabilitiesPresentBarrierNV & operator=( VkSurfaceCapabilitiesPresentBarrierNV const & rhs ) VULKAN_HPP_NOEXCEPT
112527     {
112528       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV const *>( &rhs );
112529       return *this;
112530     }
112531 
operator VkSurfaceCapabilitiesPresentBarrierNV const&VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV112532     operator VkSurfaceCapabilitiesPresentBarrierNV const &() const VULKAN_HPP_NOEXCEPT
112533     {
112534       return *reinterpret_cast<const VkSurfaceCapabilitiesPresentBarrierNV *>( this );
112535     }
112536 
operator VkSurfaceCapabilitiesPresentBarrierNV&VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV112537     operator VkSurfaceCapabilitiesPresentBarrierNV &() VULKAN_HPP_NOEXCEPT
112538     {
112539       return *reinterpret_cast<VkSurfaceCapabilitiesPresentBarrierNV *>( this );
112540     }
112541 
112542 #if defined( VULKAN_HPP_USE_REFLECT )
112543 #  if 14 <= VULKAN_HPP_CPP_VERSION
112544     auto
112545 #  else
112546     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
112547 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV112548       reflect() const VULKAN_HPP_NOEXCEPT
112549     {
112550       return std::tie( sType, pNext, presentBarrierSupported );
112551     }
112552 #endif
112553 
112554 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
112555     auto operator<=>( SurfaceCapabilitiesPresentBarrierNV const & ) const = default;
112556 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV112557     bool operator==( SurfaceCapabilitiesPresentBarrierNV const & rhs ) const VULKAN_HPP_NOEXCEPT
112558     {
112559 #  if defined( VULKAN_HPP_USE_REFLECT )
112560       return this->reflect() == rhs.reflect();
112561 #  else
112562       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentBarrierSupported == rhs.presentBarrierSupported );
112563 #  endif
112564     }
112565 
operator !=VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV112566     bool operator!=( SurfaceCapabilitiesPresentBarrierNV const & rhs ) const VULKAN_HPP_NOEXCEPT
112567     {
112568       return !operator==( rhs );
112569     }
112570 #endif
112571 
112572   public:
112573     VULKAN_HPP_NAMESPACE::StructureType sType                   = StructureType::eSurfaceCapabilitiesPresentBarrierNV;
112574     void *                              pNext                   = {};
112575     VULKAN_HPP_NAMESPACE::Bool32        presentBarrierSupported = {};
112576   };
112577 
112578   template <>
112579   struct CppType<StructureType, StructureType::eSurfaceCapabilitiesPresentBarrierNV>
112580   {
112581     using Type = SurfaceCapabilitiesPresentBarrierNV;
112582   };
112583 
112584   struct SurfaceFormatKHR
112585   {
112586     using NativeType = VkSurfaceFormatKHR;
112587 
112588 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
112589     VULKAN_HPP_CONSTEXPR
SurfaceFormatKHRVULKAN_HPP_NAMESPACE::SurfaceFormatKHR112590       SurfaceFormatKHR( VULKAN_HPP_NAMESPACE::Format        format_     = VULKAN_HPP_NAMESPACE::Format::eUndefined,
112591                         VULKAN_HPP_NAMESPACE::ColorSpaceKHR colorSpace_ = VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear ) VULKAN_HPP_NOEXCEPT
112592       : format{ format_ }
112593       , colorSpace{ colorSpace_ }
112594     {
112595     }
112596 
112597     VULKAN_HPP_CONSTEXPR SurfaceFormatKHR( SurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112598 
SurfaceFormatKHRVULKAN_HPP_NAMESPACE::SurfaceFormatKHR112599     SurfaceFormatKHR( VkSurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT : SurfaceFormatKHR( *reinterpret_cast<SurfaceFormatKHR const *>( &rhs ) ) {}
112600 
112601     SurfaceFormatKHR & operator=( SurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112602 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
112603 
operator =VULKAN_HPP_NAMESPACE::SurfaceFormatKHR112604     SurfaceFormatKHR & operator=( VkSurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT
112605     {
112606       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceFormatKHR const *>( &rhs );
112607       return *this;
112608     }
112609 
operator VkSurfaceFormatKHR const&VULKAN_HPP_NAMESPACE::SurfaceFormatKHR112610     operator VkSurfaceFormatKHR const &() const VULKAN_HPP_NOEXCEPT
112611     {
112612       return *reinterpret_cast<const VkSurfaceFormatKHR *>( this );
112613     }
112614 
operator VkSurfaceFormatKHR&VULKAN_HPP_NAMESPACE::SurfaceFormatKHR112615     operator VkSurfaceFormatKHR &() VULKAN_HPP_NOEXCEPT
112616     {
112617       return *reinterpret_cast<VkSurfaceFormatKHR *>( this );
112618     }
112619 
112620 #if defined( VULKAN_HPP_USE_REFLECT )
112621 #  if 14 <= VULKAN_HPP_CPP_VERSION
112622     auto
112623 #  else
112624     std::tuple<VULKAN_HPP_NAMESPACE::Format const &, VULKAN_HPP_NAMESPACE::ColorSpaceKHR const &>
112625 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfaceFormatKHR112626       reflect() const VULKAN_HPP_NOEXCEPT
112627     {
112628       return std::tie( format, colorSpace );
112629     }
112630 #endif
112631 
112632 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
112633     auto operator<=>( SurfaceFormatKHR const & ) const = default;
112634 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceFormatKHR112635     bool operator==( SurfaceFormatKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
112636     {
112637 #  if defined( VULKAN_HPP_USE_REFLECT )
112638       return this->reflect() == rhs.reflect();
112639 #  else
112640       return ( format == rhs.format ) && ( colorSpace == rhs.colorSpace );
112641 #  endif
112642     }
112643 
operator !=VULKAN_HPP_NAMESPACE::SurfaceFormatKHR112644     bool operator!=( SurfaceFormatKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
112645     {
112646       return !operator==( rhs );
112647     }
112648 #endif
112649 
112650   public:
112651     VULKAN_HPP_NAMESPACE::Format        format     = VULKAN_HPP_NAMESPACE::Format::eUndefined;
112652     VULKAN_HPP_NAMESPACE::ColorSpaceKHR colorSpace = VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear;
112653   };
112654 
112655   struct SurfaceFormat2KHR
112656   {
112657     using NativeType = VkSurfaceFormat2KHR;
112658 
112659     static const bool                                  allowDuplicate = false;
112660     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfaceFormat2KHR;
112661 
112662 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceFormat2KHRVULKAN_HPP_NAMESPACE::SurfaceFormat2KHR112663     VULKAN_HPP_CONSTEXPR SurfaceFormat2KHR( VULKAN_HPP_NAMESPACE::SurfaceFormatKHR surfaceFormat_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
112664       : pNext{ pNext_ }
112665       , surfaceFormat{ surfaceFormat_ }
112666     {
112667     }
112668 
112669     VULKAN_HPP_CONSTEXPR SurfaceFormat2KHR( SurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112670 
SurfaceFormat2KHRVULKAN_HPP_NAMESPACE::SurfaceFormat2KHR112671     SurfaceFormat2KHR( VkSurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT : SurfaceFormat2KHR( *reinterpret_cast<SurfaceFormat2KHR const *>( &rhs ) ) {}
112672 
112673     SurfaceFormat2KHR & operator=( SurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112674 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
112675 
operator =VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR112676     SurfaceFormat2KHR & operator=( VkSurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
112677     {
112678       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR const *>( &rhs );
112679       return *this;
112680     }
112681 
operator VkSurfaceFormat2KHR const&VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR112682     operator VkSurfaceFormat2KHR const &() const VULKAN_HPP_NOEXCEPT
112683     {
112684       return *reinterpret_cast<const VkSurfaceFormat2KHR *>( this );
112685     }
112686 
operator VkSurfaceFormat2KHR&VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR112687     operator VkSurfaceFormat2KHR &() VULKAN_HPP_NOEXCEPT
112688     {
112689       return *reinterpret_cast<VkSurfaceFormat2KHR *>( this );
112690     }
112691 
112692 #if defined( VULKAN_HPP_USE_REFLECT )
112693 #  if 14 <= VULKAN_HPP_CPP_VERSION
112694     auto
112695 #  else
112696     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::SurfaceFormatKHR const &>
112697 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfaceFormat2KHR112698       reflect() const VULKAN_HPP_NOEXCEPT
112699     {
112700       return std::tie( sType, pNext, surfaceFormat );
112701     }
112702 #endif
112703 
112704 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
112705     auto operator<=>( SurfaceFormat2KHR const & ) const = default;
112706 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR112707     bool operator==( SurfaceFormat2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
112708     {
112709 #  if defined( VULKAN_HPP_USE_REFLECT )
112710       return this->reflect() == rhs.reflect();
112711 #  else
112712       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( surfaceFormat == rhs.surfaceFormat );
112713 #  endif
112714     }
112715 
operator !=VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR112716     bool operator!=( SurfaceFormat2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
112717     {
112718       return !operator==( rhs );
112719     }
112720 #endif
112721 
112722   public:
112723     VULKAN_HPP_NAMESPACE::StructureType    sType         = StructureType::eSurfaceFormat2KHR;
112724     void *                                 pNext         = {};
112725     VULKAN_HPP_NAMESPACE::SurfaceFormatKHR surfaceFormat = {};
112726   };
112727 
112728   template <>
112729   struct CppType<StructureType, StructureType::eSurfaceFormat2KHR>
112730   {
112731     using Type = SurfaceFormat2KHR;
112732   };
112733 
112734 #if defined( VK_USE_PLATFORM_WIN32_KHR )
112735   struct SurfaceFullScreenExclusiveInfoEXT
112736   {
112737     using NativeType = VkSurfaceFullScreenExclusiveInfoEXT;
112738 
112739     static const bool                                  allowDuplicate = false;
112740     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfaceFullScreenExclusiveInfoEXT;
112741 
112742 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceFullScreenExclusiveInfoEXTVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT112743     VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveInfoEXT(
112744       VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT fullScreenExclusive_ = VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT::eDefault,
112745       void *                                       pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
112746       : pNext{ pNext_ }
112747       , fullScreenExclusive{ fullScreenExclusive_ }
112748     {
112749     }
112750 
112751     VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveInfoEXT( SurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112752 
SurfaceFullScreenExclusiveInfoEXTVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT112753     SurfaceFullScreenExclusiveInfoEXT( VkSurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
112754       : SurfaceFullScreenExclusiveInfoEXT( *reinterpret_cast<SurfaceFullScreenExclusiveInfoEXT const *>( &rhs ) )
112755     {
112756     }
112757 
112758     SurfaceFullScreenExclusiveInfoEXT & operator=( SurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112759 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
112760 
operator =VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT112761     SurfaceFullScreenExclusiveInfoEXT & operator=( VkSurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
112762     {
112763       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT const *>( &rhs );
112764       return *this;
112765     }
112766 
112767 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT112768     VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveInfoEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
112769     {
112770       pNext = pNext_;
112771       return *this;
112772     }
112773 
112774     VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveInfoEXT &
setFullScreenExclusiveVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT112775       setFullScreenExclusive( VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT fullScreenExclusive_ ) VULKAN_HPP_NOEXCEPT
112776     {
112777       fullScreenExclusive = fullScreenExclusive_;
112778       return *this;
112779     }
112780 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
112781 
operator VkSurfaceFullScreenExclusiveInfoEXT const&VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT112782     operator VkSurfaceFullScreenExclusiveInfoEXT const &() const VULKAN_HPP_NOEXCEPT
112783     {
112784       return *reinterpret_cast<const VkSurfaceFullScreenExclusiveInfoEXT *>( this );
112785     }
112786 
operator VkSurfaceFullScreenExclusiveInfoEXT&VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT112787     operator VkSurfaceFullScreenExclusiveInfoEXT &() VULKAN_HPP_NOEXCEPT
112788     {
112789       return *reinterpret_cast<VkSurfaceFullScreenExclusiveInfoEXT *>( this );
112790     }
112791 
112792 #  if defined( VULKAN_HPP_USE_REFLECT )
112793 #    if 14 <= VULKAN_HPP_CPP_VERSION
112794     auto
112795 #    else
112796     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT const &>
112797 #    endif
reflectVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT112798       reflect() const VULKAN_HPP_NOEXCEPT
112799     {
112800       return std::tie( sType, pNext, fullScreenExclusive );
112801     }
112802 #  endif
112803 
112804 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
112805     auto operator<=>( SurfaceFullScreenExclusiveInfoEXT const & ) const = default;
112806 #  else
operator ==VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT112807     bool operator==( SurfaceFullScreenExclusiveInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
112808     {
112809 #    if defined( VULKAN_HPP_USE_REFLECT )
112810       return this->reflect() == rhs.reflect();
112811 #    else
112812       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fullScreenExclusive == rhs.fullScreenExclusive );
112813 #    endif
112814     }
112815 
operator !=VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT112816     bool operator!=( SurfaceFullScreenExclusiveInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
112817     {
112818       return !operator==( rhs );
112819     }
112820 #  endif
112821 
112822   public:
112823     VULKAN_HPP_NAMESPACE::StructureType          sType               = StructureType::eSurfaceFullScreenExclusiveInfoEXT;
112824     void *                                       pNext               = {};
112825     VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT fullScreenExclusive = VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT::eDefault;
112826   };
112827 
112828   template <>
112829   struct CppType<StructureType, StructureType::eSurfaceFullScreenExclusiveInfoEXT>
112830   {
112831     using Type = SurfaceFullScreenExclusiveInfoEXT;
112832   };
112833 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
112834 
112835 #if defined( VK_USE_PLATFORM_WIN32_KHR )
112836   struct SurfaceFullScreenExclusiveWin32InfoEXT
112837   {
112838     using NativeType = VkSurfaceFullScreenExclusiveWin32InfoEXT;
112839 
112840     static const bool                                  allowDuplicate = false;
112841     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT;
112842 
112843 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceFullScreenExclusiveWin32InfoEXTVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT112844     VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveWin32InfoEXT( HMONITOR hmonitor_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
112845       : pNext{ pNext_ }
112846       , hmonitor{ hmonitor_ }
112847     {
112848     }
112849 
112850     VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveWin32InfoEXT( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112851 
SurfaceFullScreenExclusiveWin32InfoEXTVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT112852     SurfaceFullScreenExclusiveWin32InfoEXT( VkSurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
112853       : SurfaceFullScreenExclusiveWin32InfoEXT( *reinterpret_cast<SurfaceFullScreenExclusiveWin32InfoEXT const *>( &rhs ) )
112854     {
112855     }
112856 
112857     SurfaceFullScreenExclusiveWin32InfoEXT & operator=( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112858 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
112859 
operator =VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT112860     SurfaceFullScreenExclusiveWin32InfoEXT & operator=( VkSurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
112861     {
112862       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT const *>( &rhs );
112863       return *this;
112864     }
112865 
112866 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT112867     VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveWin32InfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
112868     {
112869       pNext = pNext_;
112870       return *this;
112871     }
112872 
setHmonitorVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT112873     VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveWin32InfoEXT & setHmonitor( HMONITOR hmonitor_ ) VULKAN_HPP_NOEXCEPT
112874     {
112875       hmonitor = hmonitor_;
112876       return *this;
112877     }
112878 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
112879 
operator VkSurfaceFullScreenExclusiveWin32InfoEXT const&VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT112880     operator VkSurfaceFullScreenExclusiveWin32InfoEXT const &() const VULKAN_HPP_NOEXCEPT
112881     {
112882       return *reinterpret_cast<const VkSurfaceFullScreenExclusiveWin32InfoEXT *>( this );
112883     }
112884 
operator VkSurfaceFullScreenExclusiveWin32InfoEXT&VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT112885     operator VkSurfaceFullScreenExclusiveWin32InfoEXT &() VULKAN_HPP_NOEXCEPT
112886     {
112887       return *reinterpret_cast<VkSurfaceFullScreenExclusiveWin32InfoEXT *>( this );
112888     }
112889 
112890 #  if defined( VULKAN_HPP_USE_REFLECT )
112891 #    if 14 <= VULKAN_HPP_CPP_VERSION
112892     auto
112893 #    else
112894     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, HMONITOR const &>
112895 #    endif
reflectVULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT112896       reflect() const VULKAN_HPP_NOEXCEPT
112897     {
112898       return std::tie( sType, pNext, hmonitor );
112899     }
112900 #  endif
112901 
112902 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
112903     auto operator<=>( SurfaceFullScreenExclusiveWin32InfoEXT const & ) const = default;
112904 #  else
operator ==VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT112905     bool operator==( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
112906     {
112907 #    if defined( VULKAN_HPP_USE_REFLECT )
112908       return this->reflect() == rhs.reflect();
112909 #    else
112910       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hmonitor == rhs.hmonitor );
112911 #    endif
112912     }
112913 
operator !=VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT112914     bool operator!=( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
112915     {
112916       return !operator==( rhs );
112917     }
112918 #  endif
112919 
112920   public:
112921     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT;
112922     const void *                        pNext    = {};
112923     HMONITOR                            hmonitor = {};
112924   };
112925 
112926   template <>
112927   struct CppType<StructureType, StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT>
112928   {
112929     using Type = SurfaceFullScreenExclusiveWin32InfoEXT;
112930   };
112931 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
112932 
112933   struct SurfacePresentModeCompatibilityEXT
112934   {
112935     using NativeType = VkSurfacePresentModeCompatibilityEXT;
112936 
112937     static const bool                                  allowDuplicate = false;
112938     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfacePresentModeCompatibilityEXT;
112939 
112940 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfacePresentModeCompatibilityEXTVULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT112941     VULKAN_HPP_CONSTEXPR SurfacePresentModeCompatibilityEXT( uint32_t                               presentModeCount_ = {},
112942                                                              VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes_    = {},
112943                                                              void *                                 pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
112944       : pNext{ pNext_ }
112945       , presentModeCount{ presentModeCount_ }
112946       , pPresentModes{ pPresentModes_ }
112947     {
112948     }
112949 
112950     VULKAN_HPP_CONSTEXPR SurfacePresentModeCompatibilityEXT( SurfacePresentModeCompatibilityEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112951 
SurfacePresentModeCompatibilityEXTVULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT112952     SurfacePresentModeCompatibilityEXT( VkSurfacePresentModeCompatibilityEXT const & rhs ) VULKAN_HPP_NOEXCEPT
112953       : SurfacePresentModeCompatibilityEXT( *reinterpret_cast<SurfacePresentModeCompatibilityEXT const *>( &rhs ) )
112954     {
112955     }
112956 
112957 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SurfacePresentModeCompatibilityEXTVULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT112958     SurfacePresentModeCompatibilityEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::PresentModeKHR> const & presentModes_,
112959                                         void *                                                                                      pNext_ = nullptr )
112960       : pNext( pNext_ ), presentModeCount( static_cast<uint32_t>( presentModes_.size() ) ), pPresentModes( presentModes_.data() )
112961     {
112962     }
112963 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
112964 
112965     SurfacePresentModeCompatibilityEXT & operator=( SurfacePresentModeCompatibilityEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
112966 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
112967 
operator =VULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT112968     SurfacePresentModeCompatibilityEXT & operator=( VkSurfacePresentModeCompatibilityEXT const & rhs ) VULKAN_HPP_NOEXCEPT
112969     {
112970       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT const *>( &rhs );
112971       return *this;
112972     }
112973 
112974 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT112975     VULKAN_HPP_CONSTEXPR_14 SurfacePresentModeCompatibilityEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
112976     {
112977       pNext = pNext_;
112978       return *this;
112979     }
112980 
setPresentModeCountVULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT112981     VULKAN_HPP_CONSTEXPR_14 SurfacePresentModeCompatibilityEXT & setPresentModeCount( uint32_t presentModeCount_ ) VULKAN_HPP_NOEXCEPT
112982     {
112983       presentModeCount = presentModeCount_;
112984       return *this;
112985     }
112986 
setPPresentModesVULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT112987     VULKAN_HPP_CONSTEXPR_14 SurfacePresentModeCompatibilityEXT & setPPresentModes( VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes_ ) VULKAN_HPP_NOEXCEPT
112988     {
112989       pPresentModes = pPresentModes_;
112990       return *this;
112991     }
112992 
112993 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
112994     SurfacePresentModeCompatibilityEXT &
setPresentModesVULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT112995       setPresentModes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::PresentModeKHR> const & presentModes_ ) VULKAN_HPP_NOEXCEPT
112996     {
112997       presentModeCount = static_cast<uint32_t>( presentModes_.size() );
112998       pPresentModes    = presentModes_.data();
112999       return *this;
113000     }
113001 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
113002 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
113003 
operator VkSurfacePresentModeCompatibilityEXT const&VULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT113004     operator VkSurfacePresentModeCompatibilityEXT const &() const VULKAN_HPP_NOEXCEPT
113005     {
113006       return *reinterpret_cast<const VkSurfacePresentModeCompatibilityEXT *>( this );
113007     }
113008 
operator VkSurfacePresentModeCompatibilityEXT&VULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT113009     operator VkSurfacePresentModeCompatibilityEXT &() VULKAN_HPP_NOEXCEPT
113010     {
113011       return *reinterpret_cast<VkSurfacePresentModeCompatibilityEXT *>( this );
113012     }
113013 
113014 #if defined( VULKAN_HPP_USE_REFLECT )
113015 #  if 14 <= VULKAN_HPP_CPP_VERSION
113016     auto
113017 #  else
113018     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::PresentModeKHR * const &>
113019 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT113020       reflect() const VULKAN_HPP_NOEXCEPT
113021     {
113022       return std::tie( sType, pNext, presentModeCount, pPresentModes );
113023     }
113024 #endif
113025 
113026 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
113027     auto operator<=>( SurfacePresentModeCompatibilityEXT const & ) const = default;
113028 #else
operator ==VULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT113029     bool operator==( SurfacePresentModeCompatibilityEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
113030     {
113031 #  if defined( VULKAN_HPP_USE_REFLECT )
113032       return this->reflect() == rhs.reflect();
113033 #  else
113034       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentModeCount == rhs.presentModeCount ) && ( pPresentModes == rhs.pPresentModes );
113035 #  endif
113036     }
113037 
operator !=VULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT113038     bool operator!=( SurfacePresentModeCompatibilityEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
113039     {
113040       return !operator==( rhs );
113041     }
113042 #endif
113043 
113044   public:
113045     VULKAN_HPP_NAMESPACE::StructureType    sType            = StructureType::eSurfacePresentModeCompatibilityEXT;
113046     void *                                 pNext            = {};
113047     uint32_t                               presentModeCount = {};
113048     VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes    = {};
113049   };
113050 
113051   template <>
113052   struct CppType<StructureType, StructureType::eSurfacePresentModeCompatibilityEXT>
113053   {
113054     using Type = SurfacePresentModeCompatibilityEXT;
113055   };
113056 
113057   struct SurfacePresentModeEXT
113058   {
113059     using NativeType = VkSurfacePresentModeEXT;
113060 
113061     static const bool                                  allowDuplicate = false;
113062     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfacePresentModeEXT;
113063 
113064 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfacePresentModeEXTVULKAN_HPP_NAMESPACE::SurfacePresentModeEXT113065     VULKAN_HPP_CONSTEXPR SurfacePresentModeEXT( VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode_ = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate,
113066                                                 void *                               pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
113067       : pNext{ pNext_ }
113068       , presentMode{ presentMode_ }
113069     {
113070     }
113071 
113072     VULKAN_HPP_CONSTEXPR SurfacePresentModeEXT( SurfacePresentModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113073 
SurfacePresentModeEXTVULKAN_HPP_NAMESPACE::SurfacePresentModeEXT113074     SurfacePresentModeEXT( VkSurfacePresentModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT
113075       : SurfacePresentModeEXT( *reinterpret_cast<SurfacePresentModeEXT const *>( &rhs ) )
113076     {
113077     }
113078 
113079     SurfacePresentModeEXT & operator=( SurfacePresentModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113080 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
113081 
operator =VULKAN_HPP_NAMESPACE::SurfacePresentModeEXT113082     SurfacePresentModeEXT & operator=( VkSurfacePresentModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT
113083     {
113084       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfacePresentModeEXT const *>( &rhs );
113085       return *this;
113086     }
113087 
113088 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SurfacePresentModeEXT113089     VULKAN_HPP_CONSTEXPR_14 SurfacePresentModeEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
113090     {
113091       pNext = pNext_;
113092       return *this;
113093     }
113094 
setPresentModeVULKAN_HPP_NAMESPACE::SurfacePresentModeEXT113095     VULKAN_HPP_CONSTEXPR_14 SurfacePresentModeEXT & setPresentMode( VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode_ ) VULKAN_HPP_NOEXCEPT
113096     {
113097       presentMode = presentMode_;
113098       return *this;
113099     }
113100 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
113101 
operator VkSurfacePresentModeEXT const&VULKAN_HPP_NAMESPACE::SurfacePresentModeEXT113102     operator VkSurfacePresentModeEXT const &() const VULKAN_HPP_NOEXCEPT
113103     {
113104       return *reinterpret_cast<const VkSurfacePresentModeEXT *>( this );
113105     }
113106 
operator VkSurfacePresentModeEXT&VULKAN_HPP_NAMESPACE::SurfacePresentModeEXT113107     operator VkSurfacePresentModeEXT &() VULKAN_HPP_NOEXCEPT
113108     {
113109       return *reinterpret_cast<VkSurfacePresentModeEXT *>( this );
113110     }
113111 
113112 #if defined( VULKAN_HPP_USE_REFLECT )
113113 #  if 14 <= VULKAN_HPP_CPP_VERSION
113114     auto
113115 #  else
113116     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PresentModeKHR const &>
113117 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfacePresentModeEXT113118       reflect() const VULKAN_HPP_NOEXCEPT
113119     {
113120       return std::tie( sType, pNext, presentMode );
113121     }
113122 #endif
113123 
113124 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
113125     auto operator<=>( SurfacePresentModeEXT const & ) const = default;
113126 #else
operator ==VULKAN_HPP_NAMESPACE::SurfacePresentModeEXT113127     bool operator==( SurfacePresentModeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
113128     {
113129 #  if defined( VULKAN_HPP_USE_REFLECT )
113130       return this->reflect() == rhs.reflect();
113131 #  else
113132       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentMode == rhs.presentMode );
113133 #  endif
113134     }
113135 
operator !=VULKAN_HPP_NAMESPACE::SurfacePresentModeEXT113136     bool operator!=( SurfacePresentModeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
113137     {
113138       return !operator==( rhs );
113139     }
113140 #endif
113141 
113142   public:
113143     VULKAN_HPP_NAMESPACE::StructureType  sType       = StructureType::eSurfacePresentModeEXT;
113144     void *                               pNext       = {};
113145     VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate;
113146   };
113147 
113148   template <>
113149   struct CppType<StructureType, StructureType::eSurfacePresentModeEXT>
113150   {
113151     using Type = SurfacePresentModeEXT;
113152   };
113153 
113154   struct SurfacePresentScalingCapabilitiesEXT
113155   {
113156     using NativeType = VkSurfacePresentScalingCapabilitiesEXT;
113157 
113158     static const bool                                  allowDuplicate = false;
113159     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfacePresentScalingCapabilitiesEXT;
113160 
113161 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfacePresentScalingCapabilitiesEXTVULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesEXT113162     VULKAN_HPP_CONSTEXPR SurfacePresentScalingCapabilitiesEXT( VULKAN_HPP_NAMESPACE::PresentScalingFlagsEXT supportedPresentScaling_  = {},
113163                                                                VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT supportedPresentGravityX_ = {},
113164                                                                VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT supportedPresentGravityY_ = {},
113165                                                                VULKAN_HPP_NAMESPACE::Extent2D               minScaledImageExtent_     = {},
113166                                                                VULKAN_HPP_NAMESPACE::Extent2D               maxScaledImageExtent_     = {},
113167                                                                void *                                       pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
113168       : pNext{ pNext_ }
113169       , supportedPresentScaling{ supportedPresentScaling_ }
113170       , supportedPresentGravityX{ supportedPresentGravityX_ }
113171       , supportedPresentGravityY{ supportedPresentGravityY_ }
113172       , minScaledImageExtent{ minScaledImageExtent_ }
113173       , maxScaledImageExtent{ maxScaledImageExtent_ }
113174     {
113175     }
113176 
113177     VULKAN_HPP_CONSTEXPR SurfacePresentScalingCapabilitiesEXT( SurfacePresentScalingCapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113178 
SurfacePresentScalingCapabilitiesEXTVULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesEXT113179     SurfacePresentScalingCapabilitiesEXT( VkSurfacePresentScalingCapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
113180       : SurfacePresentScalingCapabilitiesEXT( *reinterpret_cast<SurfacePresentScalingCapabilitiesEXT const *>( &rhs ) )
113181     {
113182     }
113183 
113184     SurfacePresentScalingCapabilitiesEXT & operator=( SurfacePresentScalingCapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113185 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
113186 
operator =VULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesEXT113187     SurfacePresentScalingCapabilitiesEXT & operator=( VkSurfacePresentScalingCapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
113188     {
113189       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesEXT const *>( &rhs );
113190       return *this;
113191     }
113192 
operator VkSurfacePresentScalingCapabilitiesEXT const&VULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesEXT113193     operator VkSurfacePresentScalingCapabilitiesEXT const &() const VULKAN_HPP_NOEXCEPT
113194     {
113195       return *reinterpret_cast<const VkSurfacePresentScalingCapabilitiesEXT *>( this );
113196     }
113197 
operator VkSurfacePresentScalingCapabilitiesEXT&VULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesEXT113198     operator VkSurfacePresentScalingCapabilitiesEXT &() VULKAN_HPP_NOEXCEPT
113199     {
113200       return *reinterpret_cast<VkSurfacePresentScalingCapabilitiesEXT *>( this );
113201     }
113202 
113203 #if defined( VULKAN_HPP_USE_REFLECT )
113204 #  if 14 <= VULKAN_HPP_CPP_VERSION
113205     auto
113206 #  else
113207     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
113208                void * const &,
113209                VULKAN_HPP_NAMESPACE::PresentScalingFlagsEXT const &,
113210                VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT const &,
113211                VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT const &,
113212                VULKAN_HPP_NAMESPACE::Extent2D const &,
113213                VULKAN_HPP_NAMESPACE::Extent2D const &>
113214 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesEXT113215       reflect() const VULKAN_HPP_NOEXCEPT
113216     {
113217       return std::tie( sType, pNext, supportedPresentScaling, supportedPresentGravityX, supportedPresentGravityY, minScaledImageExtent, maxScaledImageExtent );
113218     }
113219 #endif
113220 
113221 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
113222     auto operator<=>( SurfacePresentScalingCapabilitiesEXT const & ) const = default;
113223 #else
operator ==VULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesEXT113224     bool operator==( SurfacePresentScalingCapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
113225     {
113226 #  if defined( VULKAN_HPP_USE_REFLECT )
113227       return this->reflect() == rhs.reflect();
113228 #  else
113229       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportedPresentScaling == rhs.supportedPresentScaling ) &&
113230              ( supportedPresentGravityX == rhs.supportedPresentGravityX ) && ( supportedPresentGravityY == rhs.supportedPresentGravityY ) &&
113231              ( minScaledImageExtent == rhs.minScaledImageExtent ) && ( maxScaledImageExtent == rhs.maxScaledImageExtent );
113232 #  endif
113233     }
113234 
operator !=VULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesEXT113235     bool operator!=( SurfacePresentScalingCapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
113236     {
113237       return !operator==( rhs );
113238     }
113239 #endif
113240 
113241   public:
113242     VULKAN_HPP_NAMESPACE::StructureType          sType                    = StructureType::eSurfacePresentScalingCapabilitiesEXT;
113243     void *                                       pNext                    = {};
113244     VULKAN_HPP_NAMESPACE::PresentScalingFlagsEXT supportedPresentScaling  = {};
113245     VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT supportedPresentGravityX = {};
113246     VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT supportedPresentGravityY = {};
113247     VULKAN_HPP_NAMESPACE::Extent2D               minScaledImageExtent     = {};
113248     VULKAN_HPP_NAMESPACE::Extent2D               maxScaledImageExtent     = {};
113249   };
113250 
113251   template <>
113252   struct CppType<StructureType, StructureType::eSurfacePresentScalingCapabilitiesEXT>
113253   {
113254     using Type = SurfacePresentScalingCapabilitiesEXT;
113255   };
113256 
113257   struct SurfaceProtectedCapabilitiesKHR
113258   {
113259     using NativeType = VkSurfaceProtectedCapabilitiesKHR;
113260 
113261     static const bool                                  allowDuplicate = false;
113262     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSurfaceProtectedCapabilitiesKHR;
113263 
113264 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceProtectedCapabilitiesKHRVULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR113265     VULKAN_HPP_CONSTEXPR SurfaceProtectedCapabilitiesKHR( VULKAN_HPP_NAMESPACE::Bool32 supportsProtected_ = {},
113266                                                           const void *                 pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
113267       : pNext{ pNext_ }
113268       , supportsProtected{ supportsProtected_ }
113269     {
113270     }
113271 
113272     VULKAN_HPP_CONSTEXPR SurfaceProtectedCapabilitiesKHR( SurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113273 
SurfaceProtectedCapabilitiesKHRVULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR113274     SurfaceProtectedCapabilitiesKHR( VkSurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
113275       : SurfaceProtectedCapabilitiesKHR( *reinterpret_cast<SurfaceProtectedCapabilitiesKHR const *>( &rhs ) )
113276     {
113277     }
113278 
113279     SurfaceProtectedCapabilitiesKHR & operator=( SurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113280 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
113281 
operator =VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR113282     SurfaceProtectedCapabilitiesKHR & operator=( VkSurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
113283     {
113284       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR const *>( &rhs );
113285       return *this;
113286     }
113287 
operator VkSurfaceProtectedCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR113288     operator VkSurfaceProtectedCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
113289     {
113290       return *reinterpret_cast<const VkSurfaceProtectedCapabilitiesKHR *>( this );
113291     }
113292 
operator VkSurfaceProtectedCapabilitiesKHR&VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR113293     operator VkSurfaceProtectedCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
113294     {
113295       return *reinterpret_cast<VkSurfaceProtectedCapabilitiesKHR *>( this );
113296     }
113297 
113298 #if defined( VULKAN_HPP_USE_REFLECT )
113299 #  if 14 <= VULKAN_HPP_CPP_VERSION
113300     auto
113301 #  else
113302     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
113303 #  endif
reflectVULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR113304       reflect() const VULKAN_HPP_NOEXCEPT
113305     {
113306       return std::tie( sType, pNext, supportsProtected );
113307     }
113308 #endif
113309 
113310 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
113311     auto operator<=>( SurfaceProtectedCapabilitiesKHR const & ) const = default;
113312 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR113313     bool operator==( SurfaceProtectedCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
113314     {
113315 #  if defined( VULKAN_HPP_USE_REFLECT )
113316       return this->reflect() == rhs.reflect();
113317 #  else
113318       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportsProtected == rhs.supportsProtected );
113319 #  endif
113320     }
113321 
operator !=VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR113322     bool operator!=( SurfaceProtectedCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
113323     {
113324       return !operator==( rhs );
113325     }
113326 #endif
113327 
113328   public:
113329     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::eSurfaceProtectedCapabilitiesKHR;
113330     const void *                        pNext             = {};
113331     VULKAN_HPP_NAMESPACE::Bool32        supportsProtected = {};
113332   };
113333 
113334   template <>
113335   struct CppType<StructureType, StructureType::eSurfaceProtectedCapabilitiesKHR>
113336   {
113337     using Type = SurfaceProtectedCapabilitiesKHR;
113338   };
113339 
113340   struct SwapchainCounterCreateInfoEXT
113341   {
113342     using NativeType = VkSwapchainCounterCreateInfoEXT;
113343 
113344     static const bool                                  allowDuplicate = false;
113345     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSwapchainCounterCreateInfoEXT;
113346 
113347 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SwapchainCounterCreateInfoEXTVULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT113348     VULKAN_HPP_CONSTEXPR SwapchainCounterCreateInfoEXT( VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT surfaceCounters_ = {},
113349                                                         const void *                                 pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
113350       : pNext{ pNext_ }
113351       , surfaceCounters{ surfaceCounters_ }
113352     {
113353     }
113354 
113355     VULKAN_HPP_CONSTEXPR SwapchainCounterCreateInfoEXT( SwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113356 
SwapchainCounterCreateInfoEXTVULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT113357     SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
113358       : SwapchainCounterCreateInfoEXT( *reinterpret_cast<SwapchainCounterCreateInfoEXT const *>( &rhs ) )
113359     {
113360     }
113361 
113362     SwapchainCounterCreateInfoEXT & operator=( SwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113363 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
113364 
operator =VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT113365     SwapchainCounterCreateInfoEXT & operator=( VkSwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
113366     {
113367       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT const *>( &rhs );
113368       return *this;
113369     }
113370 
113371 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT113372     VULKAN_HPP_CONSTEXPR_14 SwapchainCounterCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
113373     {
113374       pNext = pNext_;
113375       return *this;
113376     }
113377 
113378     VULKAN_HPP_CONSTEXPR_14 SwapchainCounterCreateInfoEXT &
setSurfaceCountersVULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT113379       setSurfaceCounters( VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT surfaceCounters_ ) VULKAN_HPP_NOEXCEPT
113380     {
113381       surfaceCounters = surfaceCounters_;
113382       return *this;
113383     }
113384 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
113385 
operator VkSwapchainCounterCreateInfoEXT const&VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT113386     operator VkSwapchainCounterCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
113387     {
113388       return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT *>( this );
113389     }
113390 
operator VkSwapchainCounterCreateInfoEXT&VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT113391     operator VkSwapchainCounterCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
113392     {
113393       return *reinterpret_cast<VkSwapchainCounterCreateInfoEXT *>( this );
113394     }
113395 
113396 #if defined( VULKAN_HPP_USE_REFLECT )
113397 #  if 14 <= VULKAN_HPP_CPP_VERSION
113398     auto
113399 #  else
113400     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT const &>
113401 #  endif
reflectVULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT113402       reflect() const VULKAN_HPP_NOEXCEPT
113403     {
113404       return std::tie( sType, pNext, surfaceCounters );
113405     }
113406 #endif
113407 
113408 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
113409     auto operator<=>( SwapchainCounterCreateInfoEXT const & ) const = default;
113410 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT113411     bool operator==( SwapchainCounterCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
113412     {
113413 #  if defined( VULKAN_HPP_USE_REFLECT )
113414       return this->reflect() == rhs.reflect();
113415 #  else
113416       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( surfaceCounters == rhs.surfaceCounters );
113417 #  endif
113418     }
113419 
operator !=VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT113420     bool operator!=( SwapchainCounterCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
113421     {
113422       return !operator==( rhs );
113423     }
113424 #endif
113425 
113426   public:
113427     VULKAN_HPP_NAMESPACE::StructureType          sType           = StructureType::eSwapchainCounterCreateInfoEXT;
113428     const void *                                 pNext           = {};
113429     VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT surfaceCounters = {};
113430   };
113431 
113432   template <>
113433   struct CppType<StructureType, StructureType::eSwapchainCounterCreateInfoEXT>
113434   {
113435     using Type = SwapchainCounterCreateInfoEXT;
113436   };
113437 
113438   struct SwapchainCreateInfoKHR
113439   {
113440     using NativeType = VkSwapchainCreateInfoKHR;
113441 
113442     static const bool                                  allowDuplicate = false;
113443     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSwapchainCreateInfoKHR;
113444 
113445 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
113446     VULKAN_HPP_CONSTEXPR
SwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113447       SwapchainCreateInfoKHR( VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR     flags_                 = {},
113448                               VULKAN_HPP_NAMESPACE::SurfaceKHR                  surface_               = {},
113449                               uint32_t                                          minImageCount_         = {},
113450                               VULKAN_HPP_NAMESPACE::Format                      imageFormat_           = VULKAN_HPP_NAMESPACE::Format::eUndefined,
113451                               VULKAN_HPP_NAMESPACE::ColorSpaceKHR               imageColorSpace_       = VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear,
113452                               VULKAN_HPP_NAMESPACE::Extent2D                    imageExtent_           = {},
113453                               uint32_t                                          imageArrayLayers_      = {},
113454                               VULKAN_HPP_NAMESPACE::ImageUsageFlags             imageUsage_            = {},
113455                               VULKAN_HPP_NAMESPACE::SharingMode                 imageSharingMode_      = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive,
113456                               uint32_t                                          queueFamilyIndexCount_ = {},
113457                               const uint32_t *                                  pQueueFamilyIndices_   = {},
113458                               VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform_   = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
113459                               VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR   compositeAlpha_ = VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR::eOpaque,
113460                               VULKAN_HPP_NAMESPACE::PresentModeKHR              presentMode_    = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate,
113461                               VULKAN_HPP_NAMESPACE::Bool32                      clipped_        = {},
113462                               VULKAN_HPP_NAMESPACE::SwapchainKHR                oldSwapchain_   = {},
113463                               const void *                                      pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
113464       : pNext{ pNext_ }
113465       , flags{ flags_ }
113466       , surface{ surface_ }
113467       , minImageCount{ minImageCount_ }
113468       , imageFormat{ imageFormat_ }
113469       , imageColorSpace{ imageColorSpace_ }
113470       , imageExtent{ imageExtent_ }
113471       , imageArrayLayers{ imageArrayLayers_ }
113472       , imageUsage{ imageUsage_ }
113473       , imageSharingMode{ imageSharingMode_ }
113474       , queueFamilyIndexCount{ queueFamilyIndexCount_ }
113475       , pQueueFamilyIndices{ pQueueFamilyIndices_ }
113476       , preTransform{ preTransform_ }
113477       , compositeAlpha{ compositeAlpha_ }
113478       , presentMode{ presentMode_ }
113479       , clipped{ clipped_ }
113480       , oldSwapchain{ oldSwapchain_ }
113481     {
113482     }
113483 
113484     VULKAN_HPP_CONSTEXPR SwapchainCreateInfoKHR( SwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113485 
SwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113486     SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
113487       : SwapchainCreateInfoKHR( *reinterpret_cast<SwapchainCreateInfoKHR const *>( &rhs ) )
113488     {
113489     }
113490 
113491 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113492     SwapchainCreateInfoKHR( VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR                         flags_,
113493                             VULKAN_HPP_NAMESPACE::SurfaceKHR                                      surface_,
113494                             uint32_t                                                              minImageCount_,
113495                             VULKAN_HPP_NAMESPACE::Format                                          imageFormat_,
113496                             VULKAN_HPP_NAMESPACE::ColorSpaceKHR                                   imageColorSpace_,
113497                             VULKAN_HPP_NAMESPACE::Extent2D                                        imageExtent_,
113498                             uint32_t                                                              imageArrayLayers_,
113499                             VULKAN_HPP_NAMESPACE::ImageUsageFlags                                 imageUsage_,
113500                             VULKAN_HPP_NAMESPACE::SharingMode                                     imageSharingMode_,
113501                             VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_,
113502                             VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform_   = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity,
113503                             VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR   compositeAlpha_ = VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR::eOpaque,
113504                             VULKAN_HPP_NAMESPACE::PresentModeKHR              presentMode_    = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate,
113505                             VULKAN_HPP_NAMESPACE::Bool32                      clipped_        = {},
113506                             VULKAN_HPP_NAMESPACE::SwapchainKHR                oldSwapchain_   = {},
113507                             const void *                                      pNext_          = nullptr )
113508       : pNext( pNext_ )
113509       , flags( flags_ )
113510       , surface( surface_ )
113511       , minImageCount( minImageCount_ )
113512       , imageFormat( imageFormat_ )
113513       , imageColorSpace( imageColorSpace_ )
113514       , imageExtent( imageExtent_ )
113515       , imageArrayLayers( imageArrayLayers_ )
113516       , imageUsage( imageUsage_ )
113517       , imageSharingMode( imageSharingMode_ )
113518       , queueFamilyIndexCount( static_cast<uint32_t>( queueFamilyIndices_.size() ) )
113519       , pQueueFamilyIndices( queueFamilyIndices_.data() )
113520       , preTransform( preTransform_ )
113521       , compositeAlpha( compositeAlpha_ )
113522       , presentMode( presentMode_ )
113523       , clipped( clipped_ )
113524       , oldSwapchain( oldSwapchain_ )
113525     {
113526     }
113527 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
113528 
113529     SwapchainCreateInfoKHR & operator=( SwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113530 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
113531 
operator =VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113532     SwapchainCreateInfoKHR & operator=( VkSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
113533     {
113534       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const *>( &rhs );
113535       return *this;
113536     }
113537 
113538 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113539     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
113540     {
113541       pNext = pNext_;
113542       return *this;
113543     }
113544 
setFlagsVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113545     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
113546     {
113547       flags = flags_;
113548       return *this;
113549     }
113550 
setSurfaceVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113551     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setSurface( VULKAN_HPP_NAMESPACE::SurfaceKHR surface_ ) VULKAN_HPP_NOEXCEPT
113552     {
113553       surface = surface_;
113554       return *this;
113555     }
113556 
setMinImageCountVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113557     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setMinImageCount( uint32_t minImageCount_ ) VULKAN_HPP_NOEXCEPT
113558     {
113559       minImageCount = minImageCount_;
113560       return *this;
113561     }
113562 
setImageFormatVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113563     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageFormat( VULKAN_HPP_NAMESPACE::Format imageFormat_ ) VULKAN_HPP_NOEXCEPT
113564     {
113565       imageFormat = imageFormat_;
113566       return *this;
113567     }
113568 
setImageColorSpaceVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113569     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageColorSpace( VULKAN_HPP_NAMESPACE::ColorSpaceKHR imageColorSpace_ ) VULKAN_HPP_NOEXCEPT
113570     {
113571       imageColorSpace = imageColorSpace_;
113572       return *this;
113573     }
113574 
setImageExtentVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113575     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageExtent( VULKAN_HPP_NAMESPACE::Extent2D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
113576     {
113577       imageExtent = imageExtent_;
113578       return *this;
113579     }
113580 
setImageArrayLayersVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113581     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageArrayLayers( uint32_t imageArrayLayers_ ) VULKAN_HPP_NOEXCEPT
113582     {
113583       imageArrayLayers = imageArrayLayers_;
113584       return *this;
113585     }
113586 
setImageUsageVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113587     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage_ ) VULKAN_HPP_NOEXCEPT
113588     {
113589       imageUsage = imageUsage_;
113590       return *this;
113591     }
113592 
setImageSharingModeVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113593     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageSharingMode( VULKAN_HPP_NAMESPACE::SharingMode imageSharingMode_ ) VULKAN_HPP_NOEXCEPT
113594     {
113595       imageSharingMode = imageSharingMode_;
113596       return *this;
113597     }
113598 
setQueueFamilyIndexCountVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113599     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT
113600     {
113601       queueFamilyIndexCount = queueFamilyIndexCount_;
113602       return *this;
113603     }
113604 
setPQueueFamilyIndicesVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113605     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setPQueueFamilyIndices( const uint32_t * pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
113606     {
113607       pQueueFamilyIndices = pQueueFamilyIndices_;
113608       return *this;
113609     }
113610 
113611 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
113612     SwapchainCreateInfoKHR &
setQueueFamilyIndicesVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113613       setQueueFamilyIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
113614     {
113615       queueFamilyIndexCount = static_cast<uint32_t>( queueFamilyIndices_.size() );
113616       pQueueFamilyIndices   = queueFamilyIndices_.data();
113617       return *this;
113618     }
113619 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
113620 
setPreTransformVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113621     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setPreTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform_ ) VULKAN_HPP_NOEXCEPT
113622     {
113623       preTransform = preTransform_;
113624       return *this;
113625     }
113626 
setCompositeAlphaVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113627     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setCompositeAlpha( VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR compositeAlpha_ ) VULKAN_HPP_NOEXCEPT
113628     {
113629       compositeAlpha = compositeAlpha_;
113630       return *this;
113631     }
113632 
setPresentModeVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113633     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setPresentMode( VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode_ ) VULKAN_HPP_NOEXCEPT
113634     {
113635       presentMode = presentMode_;
113636       return *this;
113637     }
113638 
setClippedVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113639     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setClipped( VULKAN_HPP_NAMESPACE::Bool32 clipped_ ) VULKAN_HPP_NOEXCEPT
113640     {
113641       clipped = clipped_;
113642       return *this;
113643     }
113644 
setOldSwapchainVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113645     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setOldSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR oldSwapchain_ ) VULKAN_HPP_NOEXCEPT
113646     {
113647       oldSwapchain = oldSwapchain_;
113648       return *this;
113649     }
113650 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
113651 
operator VkSwapchainCreateInfoKHR const&VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113652     operator VkSwapchainCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
113653     {
113654       return *reinterpret_cast<const VkSwapchainCreateInfoKHR *>( this );
113655     }
113656 
operator VkSwapchainCreateInfoKHR&VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113657     operator VkSwapchainCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
113658     {
113659       return *reinterpret_cast<VkSwapchainCreateInfoKHR *>( this );
113660     }
113661 
113662 #if defined( VULKAN_HPP_USE_REFLECT )
113663 #  if 14 <= VULKAN_HPP_CPP_VERSION
113664     auto
113665 #  else
113666     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
113667                const void * const &,
113668                VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR const &,
113669                VULKAN_HPP_NAMESPACE::SurfaceKHR const &,
113670                uint32_t const &,
113671                VULKAN_HPP_NAMESPACE::Format const &,
113672                VULKAN_HPP_NAMESPACE::ColorSpaceKHR const &,
113673                VULKAN_HPP_NAMESPACE::Extent2D const &,
113674                uint32_t const &,
113675                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &,
113676                VULKAN_HPP_NAMESPACE::SharingMode const &,
113677                uint32_t const &,
113678                const uint32_t * const &,
113679                VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &,
113680                VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR const &,
113681                VULKAN_HPP_NAMESPACE::PresentModeKHR const &,
113682                VULKAN_HPP_NAMESPACE::Bool32 const &,
113683                VULKAN_HPP_NAMESPACE::SwapchainKHR const &>
113684 #  endif
reflectVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113685       reflect() const VULKAN_HPP_NOEXCEPT
113686     {
113687       return std::tie( sType,
113688                        pNext,
113689                        flags,
113690                        surface,
113691                        minImageCount,
113692                        imageFormat,
113693                        imageColorSpace,
113694                        imageExtent,
113695                        imageArrayLayers,
113696                        imageUsage,
113697                        imageSharingMode,
113698                        queueFamilyIndexCount,
113699                        pQueueFamilyIndices,
113700                        preTransform,
113701                        compositeAlpha,
113702                        presentMode,
113703                        clipped,
113704                        oldSwapchain );
113705     }
113706 #endif
113707 
113708 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
113709     auto operator<=>( SwapchainCreateInfoKHR const & ) const = default;
113710 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113711     bool operator==( SwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
113712     {
113713 #  if defined( VULKAN_HPP_USE_REFLECT )
113714       return this->reflect() == rhs.reflect();
113715 #  else
113716       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( surface == rhs.surface ) &&
113717              ( minImageCount == rhs.minImageCount ) && ( imageFormat == rhs.imageFormat ) && ( imageColorSpace == rhs.imageColorSpace ) &&
113718              ( imageExtent == rhs.imageExtent ) && ( imageArrayLayers == rhs.imageArrayLayers ) && ( imageUsage == rhs.imageUsage ) &&
113719              ( imageSharingMode == rhs.imageSharingMode ) && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) &&
113720              ( pQueueFamilyIndices == rhs.pQueueFamilyIndices ) && ( preTransform == rhs.preTransform ) && ( compositeAlpha == rhs.compositeAlpha ) &&
113721              ( presentMode == rhs.presentMode ) && ( clipped == rhs.clipped ) && ( oldSwapchain == rhs.oldSwapchain );
113722 #  endif
113723     }
113724 
operator !=VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR113725     bool operator!=( SwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
113726     {
113727       return !operator==( rhs );
113728     }
113729 #endif
113730 
113731   public:
113732     VULKAN_HPP_NAMESPACE::StructureType               sType                 = StructureType::eSwapchainCreateInfoKHR;
113733     const void *                                      pNext                 = {};
113734     VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR     flags                 = {};
113735     VULKAN_HPP_NAMESPACE::SurfaceKHR                  surface               = {};
113736     uint32_t                                          minImageCount         = {};
113737     VULKAN_HPP_NAMESPACE::Format                      imageFormat           = VULKAN_HPP_NAMESPACE::Format::eUndefined;
113738     VULKAN_HPP_NAMESPACE::ColorSpaceKHR               imageColorSpace       = VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear;
113739     VULKAN_HPP_NAMESPACE::Extent2D                    imageExtent           = {};
113740     uint32_t                                          imageArrayLayers      = {};
113741     VULKAN_HPP_NAMESPACE::ImageUsageFlags             imageUsage            = {};
113742     VULKAN_HPP_NAMESPACE::SharingMode                 imageSharingMode      = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive;
113743     uint32_t                                          queueFamilyIndexCount = {};
113744     const uint32_t *                                  pQueueFamilyIndices   = {};
113745     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform          = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
113746     VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR   compositeAlpha        = VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR::eOpaque;
113747     VULKAN_HPP_NAMESPACE::PresentModeKHR              presentMode           = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate;
113748     VULKAN_HPP_NAMESPACE::Bool32                      clipped               = {};
113749     VULKAN_HPP_NAMESPACE::SwapchainKHR                oldSwapchain          = {};
113750   };
113751 
113752   template <>
113753   struct CppType<StructureType, StructureType::eSwapchainCreateInfoKHR>
113754   {
113755     using Type = SwapchainCreateInfoKHR;
113756   };
113757 
113758   struct SwapchainDisplayNativeHdrCreateInfoAMD
113759   {
113760     using NativeType = VkSwapchainDisplayNativeHdrCreateInfoAMD;
113761 
113762     static const bool                                  allowDuplicate = false;
113763     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSwapchainDisplayNativeHdrCreateInfoAMD;
113764 
113765 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SwapchainDisplayNativeHdrCreateInfoAMDVULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD113766     VULKAN_HPP_CONSTEXPR SwapchainDisplayNativeHdrCreateInfoAMD( VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable_ = {},
113767                                                                  const void *                 pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
113768       : pNext{ pNext_ }
113769       , localDimmingEnable{ localDimmingEnable_ }
113770     {
113771     }
113772 
113773     VULKAN_HPP_CONSTEXPR SwapchainDisplayNativeHdrCreateInfoAMD( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113774 
SwapchainDisplayNativeHdrCreateInfoAMDVULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD113775     SwapchainDisplayNativeHdrCreateInfoAMD( VkSwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
113776       : SwapchainDisplayNativeHdrCreateInfoAMD( *reinterpret_cast<SwapchainDisplayNativeHdrCreateInfoAMD const *>( &rhs ) )
113777     {
113778     }
113779 
113780     SwapchainDisplayNativeHdrCreateInfoAMD & operator=( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113781 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
113782 
operator =VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD113783     SwapchainDisplayNativeHdrCreateInfoAMD & operator=( VkSwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
113784     {
113785       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD const *>( &rhs );
113786       return *this;
113787     }
113788 
113789 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD113790     VULKAN_HPP_CONSTEXPR_14 SwapchainDisplayNativeHdrCreateInfoAMD & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
113791     {
113792       pNext = pNext_;
113793       return *this;
113794     }
113795 
113796     VULKAN_HPP_CONSTEXPR_14 SwapchainDisplayNativeHdrCreateInfoAMD &
setLocalDimmingEnableVULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD113797       setLocalDimmingEnable( VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable_ ) VULKAN_HPP_NOEXCEPT
113798     {
113799       localDimmingEnable = localDimmingEnable_;
113800       return *this;
113801     }
113802 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
113803 
operator VkSwapchainDisplayNativeHdrCreateInfoAMD const&VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD113804     operator VkSwapchainDisplayNativeHdrCreateInfoAMD const &() const VULKAN_HPP_NOEXCEPT
113805     {
113806       return *reinterpret_cast<const VkSwapchainDisplayNativeHdrCreateInfoAMD *>( this );
113807     }
113808 
operator VkSwapchainDisplayNativeHdrCreateInfoAMD&VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD113809     operator VkSwapchainDisplayNativeHdrCreateInfoAMD &() VULKAN_HPP_NOEXCEPT
113810     {
113811       return *reinterpret_cast<VkSwapchainDisplayNativeHdrCreateInfoAMD *>( this );
113812     }
113813 
113814 #if defined( VULKAN_HPP_USE_REFLECT )
113815 #  if 14 <= VULKAN_HPP_CPP_VERSION
113816     auto
113817 #  else
113818     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
113819 #  endif
reflectVULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD113820       reflect() const VULKAN_HPP_NOEXCEPT
113821     {
113822       return std::tie( sType, pNext, localDimmingEnable );
113823     }
113824 #endif
113825 
113826 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
113827     auto operator<=>( SwapchainDisplayNativeHdrCreateInfoAMD const & ) const = default;
113828 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD113829     bool operator==( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
113830     {
113831 #  if defined( VULKAN_HPP_USE_REFLECT )
113832       return this->reflect() == rhs.reflect();
113833 #  else
113834       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( localDimmingEnable == rhs.localDimmingEnable );
113835 #  endif
113836     }
113837 
operator !=VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD113838     bool operator!=( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
113839     {
113840       return !operator==( rhs );
113841     }
113842 #endif
113843 
113844   public:
113845     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::eSwapchainDisplayNativeHdrCreateInfoAMD;
113846     const void *                        pNext              = {};
113847     VULKAN_HPP_NAMESPACE::Bool32        localDimmingEnable = {};
113848   };
113849 
113850   template <>
113851   struct CppType<StructureType, StructureType::eSwapchainDisplayNativeHdrCreateInfoAMD>
113852   {
113853     using Type = SwapchainDisplayNativeHdrCreateInfoAMD;
113854   };
113855 
113856   struct SwapchainLatencyCreateInfoNV
113857   {
113858     using NativeType = VkSwapchainLatencyCreateInfoNV;
113859 
113860     static const bool                                  allowDuplicate = false;
113861     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSwapchainLatencyCreateInfoNV;
113862 
113863 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SwapchainLatencyCreateInfoNVVULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV113864     VULKAN_HPP_CONSTEXPR SwapchainLatencyCreateInfoNV( VULKAN_HPP_NAMESPACE::Bool32 latencyModeEnable_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
113865       : pNext{ pNext_ }
113866       , latencyModeEnable{ latencyModeEnable_ }
113867     {
113868     }
113869 
113870     VULKAN_HPP_CONSTEXPR SwapchainLatencyCreateInfoNV( SwapchainLatencyCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113871 
SwapchainLatencyCreateInfoNVVULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV113872     SwapchainLatencyCreateInfoNV( VkSwapchainLatencyCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
113873       : SwapchainLatencyCreateInfoNV( *reinterpret_cast<SwapchainLatencyCreateInfoNV const *>( &rhs ) )
113874     {
113875     }
113876 
113877     SwapchainLatencyCreateInfoNV & operator=( SwapchainLatencyCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113878 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
113879 
operator =VULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV113880     SwapchainLatencyCreateInfoNV & operator=( VkSwapchainLatencyCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
113881     {
113882       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV const *>( &rhs );
113883       return *this;
113884     }
113885 
113886 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV113887     VULKAN_HPP_CONSTEXPR_14 SwapchainLatencyCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
113888     {
113889       pNext = pNext_;
113890       return *this;
113891     }
113892 
setLatencyModeEnableVULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV113893     VULKAN_HPP_CONSTEXPR_14 SwapchainLatencyCreateInfoNV & setLatencyModeEnable( VULKAN_HPP_NAMESPACE::Bool32 latencyModeEnable_ ) VULKAN_HPP_NOEXCEPT
113894     {
113895       latencyModeEnable = latencyModeEnable_;
113896       return *this;
113897     }
113898 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
113899 
operator VkSwapchainLatencyCreateInfoNV const&VULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV113900     operator VkSwapchainLatencyCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
113901     {
113902       return *reinterpret_cast<const VkSwapchainLatencyCreateInfoNV *>( this );
113903     }
113904 
operator VkSwapchainLatencyCreateInfoNV&VULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV113905     operator VkSwapchainLatencyCreateInfoNV &() VULKAN_HPP_NOEXCEPT
113906     {
113907       return *reinterpret_cast<VkSwapchainLatencyCreateInfoNV *>( this );
113908     }
113909 
113910 #if defined( VULKAN_HPP_USE_REFLECT )
113911 #  if 14 <= VULKAN_HPP_CPP_VERSION
113912     auto
113913 #  else
113914     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
113915 #  endif
reflectVULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV113916       reflect() const VULKAN_HPP_NOEXCEPT
113917     {
113918       return std::tie( sType, pNext, latencyModeEnable );
113919     }
113920 #endif
113921 
113922 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
113923     auto operator<=>( SwapchainLatencyCreateInfoNV const & ) const = default;
113924 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV113925     bool operator==( SwapchainLatencyCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
113926     {
113927 #  if defined( VULKAN_HPP_USE_REFLECT )
113928       return this->reflect() == rhs.reflect();
113929 #  else
113930       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( latencyModeEnable == rhs.latencyModeEnable );
113931 #  endif
113932     }
113933 
operator !=VULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV113934     bool operator!=( SwapchainLatencyCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
113935     {
113936       return !operator==( rhs );
113937     }
113938 #endif
113939 
113940   public:
113941     VULKAN_HPP_NAMESPACE::StructureType sType             = StructureType::eSwapchainLatencyCreateInfoNV;
113942     const void *                        pNext             = {};
113943     VULKAN_HPP_NAMESPACE::Bool32        latencyModeEnable = {};
113944   };
113945 
113946   template <>
113947   struct CppType<StructureType, StructureType::eSwapchainLatencyCreateInfoNV>
113948   {
113949     using Type = SwapchainLatencyCreateInfoNV;
113950   };
113951 
113952   struct SwapchainPresentBarrierCreateInfoNV
113953   {
113954     using NativeType = VkSwapchainPresentBarrierCreateInfoNV;
113955 
113956     static const bool                                  allowDuplicate = false;
113957     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSwapchainPresentBarrierCreateInfoNV;
113958 
113959 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SwapchainPresentBarrierCreateInfoNVVULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV113960     VULKAN_HPP_CONSTEXPR SwapchainPresentBarrierCreateInfoNV( VULKAN_HPP_NAMESPACE::Bool32 presentBarrierEnable_ = {},
113961                                                               void *                       pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
113962       : pNext{ pNext_ }
113963       , presentBarrierEnable{ presentBarrierEnable_ }
113964     {
113965     }
113966 
113967     VULKAN_HPP_CONSTEXPR SwapchainPresentBarrierCreateInfoNV( SwapchainPresentBarrierCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113968 
SwapchainPresentBarrierCreateInfoNVVULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV113969     SwapchainPresentBarrierCreateInfoNV( VkSwapchainPresentBarrierCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
113970       : SwapchainPresentBarrierCreateInfoNV( *reinterpret_cast<SwapchainPresentBarrierCreateInfoNV const *>( &rhs ) )
113971     {
113972     }
113973 
113974     SwapchainPresentBarrierCreateInfoNV & operator=( SwapchainPresentBarrierCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
113975 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
113976 
operator =VULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV113977     SwapchainPresentBarrierCreateInfoNV & operator=( VkSwapchainPresentBarrierCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
113978     {
113979       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV const *>( &rhs );
113980       return *this;
113981     }
113982 
113983 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV113984     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentBarrierCreateInfoNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
113985     {
113986       pNext = pNext_;
113987       return *this;
113988     }
113989 
113990     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentBarrierCreateInfoNV &
setPresentBarrierEnableVULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV113991       setPresentBarrierEnable( VULKAN_HPP_NAMESPACE::Bool32 presentBarrierEnable_ ) VULKAN_HPP_NOEXCEPT
113992     {
113993       presentBarrierEnable = presentBarrierEnable_;
113994       return *this;
113995     }
113996 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
113997 
operator VkSwapchainPresentBarrierCreateInfoNV const&VULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV113998     operator VkSwapchainPresentBarrierCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
113999     {
114000       return *reinterpret_cast<const VkSwapchainPresentBarrierCreateInfoNV *>( this );
114001     }
114002 
operator VkSwapchainPresentBarrierCreateInfoNV&VULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV114003     operator VkSwapchainPresentBarrierCreateInfoNV &() VULKAN_HPP_NOEXCEPT
114004     {
114005       return *reinterpret_cast<VkSwapchainPresentBarrierCreateInfoNV *>( this );
114006     }
114007 
114008 #if defined( VULKAN_HPP_USE_REFLECT )
114009 #  if 14 <= VULKAN_HPP_CPP_VERSION
114010     auto
114011 #  else
114012     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
114013 #  endif
reflectVULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV114014       reflect() const VULKAN_HPP_NOEXCEPT
114015     {
114016       return std::tie( sType, pNext, presentBarrierEnable );
114017     }
114018 #endif
114019 
114020 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
114021     auto operator<=>( SwapchainPresentBarrierCreateInfoNV const & ) const = default;
114022 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV114023     bool operator==( SwapchainPresentBarrierCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
114024     {
114025 #  if defined( VULKAN_HPP_USE_REFLECT )
114026       return this->reflect() == rhs.reflect();
114027 #  else
114028       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentBarrierEnable == rhs.presentBarrierEnable );
114029 #  endif
114030     }
114031 
operator !=VULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV114032     bool operator!=( SwapchainPresentBarrierCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
114033     {
114034       return !operator==( rhs );
114035     }
114036 #endif
114037 
114038   public:
114039     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::eSwapchainPresentBarrierCreateInfoNV;
114040     void *                              pNext                = {};
114041     VULKAN_HPP_NAMESPACE::Bool32        presentBarrierEnable = {};
114042   };
114043 
114044   template <>
114045   struct CppType<StructureType, StructureType::eSwapchainPresentBarrierCreateInfoNV>
114046   {
114047     using Type = SwapchainPresentBarrierCreateInfoNV;
114048   };
114049 
114050   struct SwapchainPresentFenceInfoEXT
114051   {
114052     using NativeType = VkSwapchainPresentFenceInfoEXT;
114053 
114054     static const bool                                  allowDuplicate = false;
114055     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSwapchainPresentFenceInfoEXT;
114056 
114057 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SwapchainPresentFenceInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT114058     VULKAN_HPP_CONSTEXPR SwapchainPresentFenceInfoEXT( uint32_t                            swapchainCount_ = {},
114059                                                        const VULKAN_HPP_NAMESPACE::Fence * pFences_        = {},
114060                                                        const void *                        pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
114061       : pNext{ pNext_ }
114062       , swapchainCount{ swapchainCount_ }
114063       , pFences{ pFences_ }
114064     {
114065     }
114066 
114067     VULKAN_HPP_CONSTEXPR SwapchainPresentFenceInfoEXT( SwapchainPresentFenceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114068 
SwapchainPresentFenceInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT114069     SwapchainPresentFenceInfoEXT( VkSwapchainPresentFenceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
114070       : SwapchainPresentFenceInfoEXT( *reinterpret_cast<SwapchainPresentFenceInfoEXT const *>( &rhs ) )
114071     {
114072     }
114073 
114074 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SwapchainPresentFenceInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT114075     SwapchainPresentFenceInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Fence> const & fences_,
114076                                   const void *                                                                             pNext_ = nullptr )
114077       : pNext( pNext_ ), swapchainCount( static_cast<uint32_t>( fences_.size() ) ), pFences( fences_.data() )
114078     {
114079     }
114080 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
114081 
114082     SwapchainPresentFenceInfoEXT & operator=( SwapchainPresentFenceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114083 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
114084 
operator =VULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT114085     SwapchainPresentFenceInfoEXT & operator=( VkSwapchainPresentFenceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
114086     {
114087       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT const *>( &rhs );
114088       return *this;
114089     }
114090 
114091 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT114092     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentFenceInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
114093     {
114094       pNext = pNext_;
114095       return *this;
114096     }
114097 
setSwapchainCountVULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT114098     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentFenceInfoEXT & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
114099     {
114100       swapchainCount = swapchainCount_;
114101       return *this;
114102     }
114103 
setPFencesVULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT114104     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentFenceInfoEXT & setPFences( const VULKAN_HPP_NAMESPACE::Fence * pFences_ ) VULKAN_HPP_NOEXCEPT
114105     {
114106       pFences = pFences_;
114107       return *this;
114108     }
114109 
114110 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
114111     SwapchainPresentFenceInfoEXT &
setFencesVULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT114112       setFences( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Fence> const & fences_ ) VULKAN_HPP_NOEXCEPT
114113     {
114114       swapchainCount = static_cast<uint32_t>( fences_.size() );
114115       pFences        = fences_.data();
114116       return *this;
114117     }
114118 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
114119 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
114120 
operator VkSwapchainPresentFenceInfoEXT const&VULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT114121     operator VkSwapchainPresentFenceInfoEXT const &() const VULKAN_HPP_NOEXCEPT
114122     {
114123       return *reinterpret_cast<const VkSwapchainPresentFenceInfoEXT *>( this );
114124     }
114125 
operator VkSwapchainPresentFenceInfoEXT&VULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT114126     operator VkSwapchainPresentFenceInfoEXT &() VULKAN_HPP_NOEXCEPT
114127     {
114128       return *reinterpret_cast<VkSwapchainPresentFenceInfoEXT *>( this );
114129     }
114130 
114131 #if defined( VULKAN_HPP_USE_REFLECT )
114132 #  if 14 <= VULKAN_HPP_CPP_VERSION
114133     auto
114134 #  else
114135     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Fence * const &>
114136 #  endif
reflectVULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT114137       reflect() const VULKAN_HPP_NOEXCEPT
114138     {
114139       return std::tie( sType, pNext, swapchainCount, pFences );
114140     }
114141 #endif
114142 
114143 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
114144     auto operator<=>( SwapchainPresentFenceInfoEXT const & ) const = default;
114145 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT114146     bool operator==( SwapchainPresentFenceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
114147     {
114148 #  if defined( VULKAN_HPP_USE_REFLECT )
114149       return this->reflect() == rhs.reflect();
114150 #  else
114151       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && ( pFences == rhs.pFences );
114152 #  endif
114153     }
114154 
operator !=VULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT114155     bool operator!=( SwapchainPresentFenceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
114156     {
114157       return !operator==( rhs );
114158     }
114159 #endif
114160 
114161   public:
114162     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eSwapchainPresentFenceInfoEXT;
114163     const void *                        pNext          = {};
114164     uint32_t                            swapchainCount = {};
114165     const VULKAN_HPP_NAMESPACE::Fence * pFences        = {};
114166   };
114167 
114168   template <>
114169   struct CppType<StructureType, StructureType::eSwapchainPresentFenceInfoEXT>
114170   {
114171     using Type = SwapchainPresentFenceInfoEXT;
114172   };
114173 
114174   struct SwapchainPresentModeInfoEXT
114175   {
114176     using NativeType = VkSwapchainPresentModeInfoEXT;
114177 
114178     static const bool                                  allowDuplicate = false;
114179     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSwapchainPresentModeInfoEXT;
114180 
114181 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SwapchainPresentModeInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT114182     VULKAN_HPP_CONSTEXPR SwapchainPresentModeInfoEXT( uint32_t                                     swapchainCount_ = {},
114183                                                       const VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes_  = {},
114184                                                       const void *                                 pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
114185       : pNext{ pNext_ }
114186       , swapchainCount{ swapchainCount_ }
114187       , pPresentModes{ pPresentModes_ }
114188     {
114189     }
114190 
114191     VULKAN_HPP_CONSTEXPR SwapchainPresentModeInfoEXT( SwapchainPresentModeInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114192 
SwapchainPresentModeInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT114193     SwapchainPresentModeInfoEXT( VkSwapchainPresentModeInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
114194       : SwapchainPresentModeInfoEXT( *reinterpret_cast<SwapchainPresentModeInfoEXT const *>( &rhs ) )
114195     {
114196     }
114197 
114198 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SwapchainPresentModeInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT114199     SwapchainPresentModeInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentModeKHR> const & presentModes_,
114200                                  const void *                                                                                      pNext_ = nullptr )
114201       : pNext( pNext_ ), swapchainCount( static_cast<uint32_t>( presentModes_.size() ) ), pPresentModes( presentModes_.data() )
114202     {
114203     }
114204 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
114205 
114206     SwapchainPresentModeInfoEXT & operator=( SwapchainPresentModeInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114207 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
114208 
operator =VULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT114209     SwapchainPresentModeInfoEXT & operator=( VkSwapchainPresentModeInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
114210     {
114211       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT const *>( &rhs );
114212       return *this;
114213     }
114214 
114215 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT114216     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModeInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
114217     {
114218       pNext = pNext_;
114219       return *this;
114220     }
114221 
setSwapchainCountVULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT114222     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModeInfoEXT & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
114223     {
114224       swapchainCount = swapchainCount_;
114225       return *this;
114226     }
114227 
setPPresentModesVULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT114228     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModeInfoEXT & setPPresentModes( const VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes_ ) VULKAN_HPP_NOEXCEPT
114229     {
114230       pPresentModes = pPresentModes_;
114231       return *this;
114232     }
114233 
114234 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
114235     SwapchainPresentModeInfoEXT &
setPresentModesVULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT114236       setPresentModes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentModeKHR> const & presentModes_ ) VULKAN_HPP_NOEXCEPT
114237     {
114238       swapchainCount = static_cast<uint32_t>( presentModes_.size() );
114239       pPresentModes  = presentModes_.data();
114240       return *this;
114241     }
114242 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
114243 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
114244 
operator VkSwapchainPresentModeInfoEXT const&VULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT114245     operator VkSwapchainPresentModeInfoEXT const &() const VULKAN_HPP_NOEXCEPT
114246     {
114247       return *reinterpret_cast<const VkSwapchainPresentModeInfoEXT *>( this );
114248     }
114249 
operator VkSwapchainPresentModeInfoEXT&VULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT114250     operator VkSwapchainPresentModeInfoEXT &() VULKAN_HPP_NOEXCEPT
114251     {
114252       return *reinterpret_cast<VkSwapchainPresentModeInfoEXT *>( this );
114253     }
114254 
114255 #if defined( VULKAN_HPP_USE_REFLECT )
114256 #  if 14 <= VULKAN_HPP_CPP_VERSION
114257     auto
114258 #  else
114259     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::PresentModeKHR * const &>
114260 #  endif
reflectVULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT114261       reflect() const VULKAN_HPP_NOEXCEPT
114262     {
114263       return std::tie( sType, pNext, swapchainCount, pPresentModes );
114264     }
114265 #endif
114266 
114267 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
114268     auto operator<=>( SwapchainPresentModeInfoEXT const & ) const = default;
114269 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT114270     bool operator==( SwapchainPresentModeInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
114271     {
114272 #  if defined( VULKAN_HPP_USE_REFLECT )
114273       return this->reflect() == rhs.reflect();
114274 #  else
114275       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && ( pPresentModes == rhs.pPresentModes );
114276 #  endif
114277     }
114278 
operator !=VULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT114279     bool operator!=( SwapchainPresentModeInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
114280     {
114281       return !operator==( rhs );
114282     }
114283 #endif
114284 
114285   public:
114286     VULKAN_HPP_NAMESPACE::StructureType          sType          = StructureType::eSwapchainPresentModeInfoEXT;
114287     const void *                                 pNext          = {};
114288     uint32_t                                     swapchainCount = {};
114289     const VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes  = {};
114290   };
114291 
114292   template <>
114293   struct CppType<StructureType, StructureType::eSwapchainPresentModeInfoEXT>
114294   {
114295     using Type = SwapchainPresentModeInfoEXT;
114296   };
114297 
114298   struct SwapchainPresentModesCreateInfoEXT
114299   {
114300     using NativeType = VkSwapchainPresentModesCreateInfoEXT;
114301 
114302     static const bool                                  allowDuplicate = false;
114303     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSwapchainPresentModesCreateInfoEXT;
114304 
114305 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SwapchainPresentModesCreateInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT114306     VULKAN_HPP_CONSTEXPR SwapchainPresentModesCreateInfoEXT( uint32_t                                     presentModeCount_ = {},
114307                                                              const VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes_    = {},
114308                                                              const void *                                 pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
114309       : pNext{ pNext_ }
114310       , presentModeCount{ presentModeCount_ }
114311       , pPresentModes{ pPresentModes_ }
114312     {
114313     }
114314 
114315     VULKAN_HPP_CONSTEXPR SwapchainPresentModesCreateInfoEXT( SwapchainPresentModesCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114316 
SwapchainPresentModesCreateInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT114317     SwapchainPresentModesCreateInfoEXT( VkSwapchainPresentModesCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
114318       : SwapchainPresentModesCreateInfoEXT( *reinterpret_cast<SwapchainPresentModesCreateInfoEXT const *>( &rhs ) )
114319     {
114320     }
114321 
114322 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SwapchainPresentModesCreateInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT114323     SwapchainPresentModesCreateInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentModeKHR> const & presentModes_,
114324                                         const void *                                                                                      pNext_ = nullptr )
114325       : pNext( pNext_ ), presentModeCount( static_cast<uint32_t>( presentModes_.size() ) ), pPresentModes( presentModes_.data() )
114326     {
114327     }
114328 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
114329 
114330     SwapchainPresentModesCreateInfoEXT & operator=( SwapchainPresentModesCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114331 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
114332 
operator =VULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT114333     SwapchainPresentModesCreateInfoEXT & operator=( VkSwapchainPresentModesCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
114334     {
114335       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT const *>( &rhs );
114336       return *this;
114337     }
114338 
114339 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT114340     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModesCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
114341     {
114342       pNext = pNext_;
114343       return *this;
114344     }
114345 
setPresentModeCountVULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT114346     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModesCreateInfoEXT & setPresentModeCount( uint32_t presentModeCount_ ) VULKAN_HPP_NOEXCEPT
114347     {
114348       presentModeCount = presentModeCount_;
114349       return *this;
114350     }
114351 
114352     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModesCreateInfoEXT &
setPPresentModesVULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT114353       setPPresentModes( const VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes_ ) VULKAN_HPP_NOEXCEPT
114354     {
114355       pPresentModes = pPresentModes_;
114356       return *this;
114357     }
114358 
114359 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
114360     SwapchainPresentModesCreateInfoEXT &
setPresentModesVULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT114361       setPresentModes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentModeKHR> const & presentModes_ ) VULKAN_HPP_NOEXCEPT
114362     {
114363       presentModeCount = static_cast<uint32_t>( presentModes_.size() );
114364       pPresentModes    = presentModes_.data();
114365       return *this;
114366     }
114367 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
114368 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
114369 
operator VkSwapchainPresentModesCreateInfoEXT const&VULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT114370     operator VkSwapchainPresentModesCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
114371     {
114372       return *reinterpret_cast<const VkSwapchainPresentModesCreateInfoEXT *>( this );
114373     }
114374 
operator VkSwapchainPresentModesCreateInfoEXT&VULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT114375     operator VkSwapchainPresentModesCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
114376     {
114377       return *reinterpret_cast<VkSwapchainPresentModesCreateInfoEXT *>( this );
114378     }
114379 
114380 #if defined( VULKAN_HPP_USE_REFLECT )
114381 #  if 14 <= VULKAN_HPP_CPP_VERSION
114382     auto
114383 #  else
114384     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::PresentModeKHR * const &>
114385 #  endif
reflectVULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT114386       reflect() const VULKAN_HPP_NOEXCEPT
114387     {
114388       return std::tie( sType, pNext, presentModeCount, pPresentModes );
114389     }
114390 #endif
114391 
114392 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
114393     auto operator<=>( SwapchainPresentModesCreateInfoEXT const & ) const = default;
114394 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT114395     bool operator==( SwapchainPresentModesCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
114396     {
114397 #  if defined( VULKAN_HPP_USE_REFLECT )
114398       return this->reflect() == rhs.reflect();
114399 #  else
114400       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentModeCount == rhs.presentModeCount ) && ( pPresentModes == rhs.pPresentModes );
114401 #  endif
114402     }
114403 
operator !=VULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT114404     bool operator!=( SwapchainPresentModesCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
114405     {
114406       return !operator==( rhs );
114407     }
114408 #endif
114409 
114410   public:
114411     VULKAN_HPP_NAMESPACE::StructureType          sType            = StructureType::eSwapchainPresentModesCreateInfoEXT;
114412     const void *                                 pNext            = {};
114413     uint32_t                                     presentModeCount = {};
114414     const VULKAN_HPP_NAMESPACE::PresentModeKHR * pPresentModes    = {};
114415   };
114416 
114417   template <>
114418   struct CppType<StructureType, StructureType::eSwapchainPresentModesCreateInfoEXT>
114419   {
114420     using Type = SwapchainPresentModesCreateInfoEXT;
114421   };
114422 
114423   struct SwapchainPresentScalingCreateInfoEXT
114424   {
114425     using NativeType = VkSwapchainPresentScalingCreateInfoEXT;
114426 
114427     static const bool                                  allowDuplicate = false;
114428     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eSwapchainPresentScalingCreateInfoEXT;
114429 
114430 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SwapchainPresentScalingCreateInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT114431     VULKAN_HPP_CONSTEXPR SwapchainPresentScalingCreateInfoEXT( VULKAN_HPP_NAMESPACE::PresentScalingFlagsEXT scalingBehavior_ = {},
114432                                                                VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT presentGravityX_ = {},
114433                                                                VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT presentGravityY_ = {},
114434                                                                const void *                                 pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
114435       : pNext{ pNext_ }
114436       , scalingBehavior{ scalingBehavior_ }
114437       , presentGravityX{ presentGravityX_ }
114438       , presentGravityY{ presentGravityY_ }
114439     {
114440     }
114441 
114442     VULKAN_HPP_CONSTEXPR SwapchainPresentScalingCreateInfoEXT( SwapchainPresentScalingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114443 
SwapchainPresentScalingCreateInfoEXTVULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT114444     SwapchainPresentScalingCreateInfoEXT( VkSwapchainPresentScalingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
114445       : SwapchainPresentScalingCreateInfoEXT( *reinterpret_cast<SwapchainPresentScalingCreateInfoEXT const *>( &rhs ) )
114446     {
114447     }
114448 
114449     SwapchainPresentScalingCreateInfoEXT & operator=( SwapchainPresentScalingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114450 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
114451 
operator =VULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT114452     SwapchainPresentScalingCreateInfoEXT & operator=( VkSwapchainPresentScalingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
114453     {
114454       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT const *>( &rhs );
114455       return *this;
114456     }
114457 
114458 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT114459     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentScalingCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
114460     {
114461       pNext = pNext_;
114462       return *this;
114463     }
114464 
114465     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentScalingCreateInfoEXT &
setScalingBehaviorVULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT114466       setScalingBehavior( VULKAN_HPP_NAMESPACE::PresentScalingFlagsEXT scalingBehavior_ ) VULKAN_HPP_NOEXCEPT
114467     {
114468       scalingBehavior = scalingBehavior_;
114469       return *this;
114470     }
114471 
114472     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentScalingCreateInfoEXT &
setPresentGravityXVULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT114473       setPresentGravityX( VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT presentGravityX_ ) VULKAN_HPP_NOEXCEPT
114474     {
114475       presentGravityX = presentGravityX_;
114476       return *this;
114477     }
114478 
114479     VULKAN_HPP_CONSTEXPR_14 SwapchainPresentScalingCreateInfoEXT &
setPresentGravityYVULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT114480       setPresentGravityY( VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT presentGravityY_ ) VULKAN_HPP_NOEXCEPT
114481     {
114482       presentGravityY = presentGravityY_;
114483       return *this;
114484     }
114485 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
114486 
operator VkSwapchainPresentScalingCreateInfoEXT const&VULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT114487     operator VkSwapchainPresentScalingCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
114488     {
114489       return *reinterpret_cast<const VkSwapchainPresentScalingCreateInfoEXT *>( this );
114490     }
114491 
operator VkSwapchainPresentScalingCreateInfoEXT&VULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT114492     operator VkSwapchainPresentScalingCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
114493     {
114494       return *reinterpret_cast<VkSwapchainPresentScalingCreateInfoEXT *>( this );
114495     }
114496 
114497 #if defined( VULKAN_HPP_USE_REFLECT )
114498 #  if 14 <= VULKAN_HPP_CPP_VERSION
114499     auto
114500 #  else
114501     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
114502                const void * const &,
114503                VULKAN_HPP_NAMESPACE::PresentScalingFlagsEXT const &,
114504                VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT const &,
114505                VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT const &>
114506 #  endif
reflectVULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT114507       reflect() const VULKAN_HPP_NOEXCEPT
114508     {
114509       return std::tie( sType, pNext, scalingBehavior, presentGravityX, presentGravityY );
114510     }
114511 #endif
114512 
114513 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
114514     auto operator<=>( SwapchainPresentScalingCreateInfoEXT const & ) const = default;
114515 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT114516     bool operator==( SwapchainPresentScalingCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
114517     {
114518 #  if defined( VULKAN_HPP_USE_REFLECT )
114519       return this->reflect() == rhs.reflect();
114520 #  else
114521       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( scalingBehavior == rhs.scalingBehavior ) && ( presentGravityX == rhs.presentGravityX ) &&
114522              ( presentGravityY == rhs.presentGravityY );
114523 #  endif
114524     }
114525 
operator !=VULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT114526     bool operator!=( SwapchainPresentScalingCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
114527     {
114528       return !operator==( rhs );
114529     }
114530 #endif
114531 
114532   public:
114533     VULKAN_HPP_NAMESPACE::StructureType          sType           = StructureType::eSwapchainPresentScalingCreateInfoEXT;
114534     const void *                                 pNext           = {};
114535     VULKAN_HPP_NAMESPACE::PresentScalingFlagsEXT scalingBehavior = {};
114536     VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT presentGravityX = {};
114537     VULKAN_HPP_NAMESPACE::PresentGravityFlagsEXT presentGravityY = {};
114538   };
114539 
114540   template <>
114541   struct CppType<StructureType, StructureType::eSwapchainPresentScalingCreateInfoEXT>
114542   {
114543     using Type = SwapchainPresentScalingCreateInfoEXT;
114544   };
114545 
114546   struct TextureLODGatherFormatPropertiesAMD
114547   {
114548     using NativeType = VkTextureLODGatherFormatPropertiesAMD;
114549 
114550     static const bool                                  allowDuplicate = false;
114551     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eTextureLodGatherFormatPropertiesAMD;
114552 
114553 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
TextureLODGatherFormatPropertiesAMDVULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD114554     VULKAN_HPP_CONSTEXPR TextureLODGatherFormatPropertiesAMD( VULKAN_HPP_NAMESPACE::Bool32 supportsTextureGatherLODBiasAMD_ = {},
114555                                                               void *                       pNext_                           = nullptr ) VULKAN_HPP_NOEXCEPT
114556       : pNext{ pNext_ }
114557       , supportsTextureGatherLODBiasAMD{ supportsTextureGatherLODBiasAMD_ }
114558     {
114559     }
114560 
114561     VULKAN_HPP_CONSTEXPR TextureLODGatherFormatPropertiesAMD( TextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114562 
TextureLODGatherFormatPropertiesAMDVULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD114563     TextureLODGatherFormatPropertiesAMD( VkTextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
114564       : TextureLODGatherFormatPropertiesAMD( *reinterpret_cast<TextureLODGatherFormatPropertiesAMD const *>( &rhs ) )
114565     {
114566     }
114567 
114568     TextureLODGatherFormatPropertiesAMD & operator=( TextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114569 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
114570 
operator =VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD114571     TextureLODGatherFormatPropertiesAMD & operator=( VkTextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
114572     {
114573       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD const *>( &rhs );
114574       return *this;
114575     }
114576 
operator VkTextureLODGatherFormatPropertiesAMD const&VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD114577     operator VkTextureLODGatherFormatPropertiesAMD const &() const VULKAN_HPP_NOEXCEPT
114578     {
114579       return *reinterpret_cast<const VkTextureLODGatherFormatPropertiesAMD *>( this );
114580     }
114581 
operator VkTextureLODGatherFormatPropertiesAMD&VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD114582     operator VkTextureLODGatherFormatPropertiesAMD &() VULKAN_HPP_NOEXCEPT
114583     {
114584       return *reinterpret_cast<VkTextureLODGatherFormatPropertiesAMD *>( this );
114585     }
114586 
114587 #if defined( VULKAN_HPP_USE_REFLECT )
114588 #  if 14 <= VULKAN_HPP_CPP_VERSION
114589     auto
114590 #  else
114591     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
114592 #  endif
reflectVULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD114593       reflect() const VULKAN_HPP_NOEXCEPT
114594     {
114595       return std::tie( sType, pNext, supportsTextureGatherLODBiasAMD );
114596     }
114597 #endif
114598 
114599 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
114600     auto operator<=>( TextureLODGatherFormatPropertiesAMD const & ) const = default;
114601 #else
operator ==VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD114602     bool operator==( TextureLODGatherFormatPropertiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
114603     {
114604 #  if defined( VULKAN_HPP_USE_REFLECT )
114605       return this->reflect() == rhs.reflect();
114606 #  else
114607       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportsTextureGatherLODBiasAMD == rhs.supportsTextureGatherLODBiasAMD );
114608 #  endif
114609     }
114610 
operator !=VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD114611     bool operator!=( TextureLODGatherFormatPropertiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT
114612     {
114613       return !operator==( rhs );
114614     }
114615 #endif
114616 
114617   public:
114618     VULKAN_HPP_NAMESPACE::StructureType sType                           = StructureType::eTextureLodGatherFormatPropertiesAMD;
114619     void *                              pNext                           = {};
114620     VULKAN_HPP_NAMESPACE::Bool32        supportsTextureGatherLODBiasAMD = {};
114621   };
114622 
114623   template <>
114624   struct CppType<StructureType, StructureType::eTextureLodGatherFormatPropertiesAMD>
114625   {
114626     using Type = TextureLODGatherFormatPropertiesAMD;
114627   };
114628 
114629   struct TilePropertiesQCOM
114630   {
114631     using NativeType = VkTilePropertiesQCOM;
114632 
114633     static const bool                                  allowDuplicate = false;
114634     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eTilePropertiesQCOM;
114635 
114636 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
TilePropertiesQCOMVULKAN_HPP_NAMESPACE::TilePropertiesQCOM114637     VULKAN_HPP_CONSTEXPR TilePropertiesQCOM( VULKAN_HPP_NAMESPACE::Extent3D tileSize_  = {},
114638                                              VULKAN_HPP_NAMESPACE::Extent2D apronSize_ = {},
114639                                              VULKAN_HPP_NAMESPACE::Offset2D origin_    = {},
114640                                              void *                         pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
114641       : pNext{ pNext_ }
114642       , tileSize{ tileSize_ }
114643       , apronSize{ apronSize_ }
114644       , origin{ origin_ }
114645     {
114646     }
114647 
114648     VULKAN_HPP_CONSTEXPR TilePropertiesQCOM( TilePropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114649 
TilePropertiesQCOMVULKAN_HPP_NAMESPACE::TilePropertiesQCOM114650     TilePropertiesQCOM( VkTilePropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT : TilePropertiesQCOM( *reinterpret_cast<TilePropertiesQCOM const *>( &rhs ) ) {}
114651 
114652     TilePropertiesQCOM & operator=( TilePropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114653 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
114654 
operator =VULKAN_HPP_NAMESPACE::TilePropertiesQCOM114655     TilePropertiesQCOM & operator=( VkTilePropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
114656     {
114657       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::TilePropertiesQCOM const *>( &rhs );
114658       return *this;
114659     }
114660 
114661 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::TilePropertiesQCOM114662     VULKAN_HPP_CONSTEXPR_14 TilePropertiesQCOM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
114663     {
114664       pNext = pNext_;
114665       return *this;
114666     }
114667 
setTileSizeVULKAN_HPP_NAMESPACE::TilePropertiesQCOM114668     VULKAN_HPP_CONSTEXPR_14 TilePropertiesQCOM & setTileSize( VULKAN_HPP_NAMESPACE::Extent3D const & tileSize_ ) VULKAN_HPP_NOEXCEPT
114669     {
114670       tileSize = tileSize_;
114671       return *this;
114672     }
114673 
setApronSizeVULKAN_HPP_NAMESPACE::TilePropertiesQCOM114674     VULKAN_HPP_CONSTEXPR_14 TilePropertiesQCOM & setApronSize( VULKAN_HPP_NAMESPACE::Extent2D const & apronSize_ ) VULKAN_HPP_NOEXCEPT
114675     {
114676       apronSize = apronSize_;
114677       return *this;
114678     }
114679 
setOriginVULKAN_HPP_NAMESPACE::TilePropertiesQCOM114680     VULKAN_HPP_CONSTEXPR_14 TilePropertiesQCOM & setOrigin( VULKAN_HPP_NAMESPACE::Offset2D const & origin_ ) VULKAN_HPP_NOEXCEPT
114681     {
114682       origin = origin_;
114683       return *this;
114684     }
114685 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
114686 
operator VkTilePropertiesQCOM const&VULKAN_HPP_NAMESPACE::TilePropertiesQCOM114687     operator VkTilePropertiesQCOM const &() const VULKAN_HPP_NOEXCEPT
114688     {
114689       return *reinterpret_cast<const VkTilePropertiesQCOM *>( this );
114690     }
114691 
operator VkTilePropertiesQCOM&VULKAN_HPP_NAMESPACE::TilePropertiesQCOM114692     operator VkTilePropertiesQCOM &() VULKAN_HPP_NOEXCEPT
114693     {
114694       return *reinterpret_cast<VkTilePropertiesQCOM *>( this );
114695     }
114696 
114697 #if defined( VULKAN_HPP_USE_REFLECT )
114698 #  if 14 <= VULKAN_HPP_CPP_VERSION
114699     auto
114700 #  else
114701     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
114702                void * const &,
114703                VULKAN_HPP_NAMESPACE::Extent3D const &,
114704                VULKAN_HPP_NAMESPACE::Extent2D const &,
114705                VULKAN_HPP_NAMESPACE::Offset2D const &>
114706 #  endif
reflectVULKAN_HPP_NAMESPACE::TilePropertiesQCOM114707       reflect() const VULKAN_HPP_NOEXCEPT
114708     {
114709       return std::tie( sType, pNext, tileSize, apronSize, origin );
114710     }
114711 #endif
114712 
114713 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
114714     auto operator<=>( TilePropertiesQCOM const & ) const = default;
114715 #else
operator ==VULKAN_HPP_NAMESPACE::TilePropertiesQCOM114716     bool operator==( TilePropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
114717     {
114718 #  if defined( VULKAN_HPP_USE_REFLECT )
114719       return this->reflect() == rhs.reflect();
114720 #  else
114721       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tileSize == rhs.tileSize ) && ( apronSize == rhs.apronSize ) && ( origin == rhs.origin );
114722 #  endif
114723     }
114724 
operator !=VULKAN_HPP_NAMESPACE::TilePropertiesQCOM114725     bool operator!=( TilePropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT
114726     {
114727       return !operator==( rhs );
114728     }
114729 #endif
114730 
114731   public:
114732     VULKAN_HPP_NAMESPACE::StructureType sType     = StructureType::eTilePropertiesQCOM;
114733     void *                              pNext     = {};
114734     VULKAN_HPP_NAMESPACE::Extent3D      tileSize  = {};
114735     VULKAN_HPP_NAMESPACE::Extent2D      apronSize = {};
114736     VULKAN_HPP_NAMESPACE::Offset2D      origin    = {};
114737   };
114738 
114739   template <>
114740   struct CppType<StructureType, StructureType::eTilePropertiesQCOM>
114741   {
114742     using Type = TilePropertiesQCOM;
114743   };
114744 
114745   struct TimelineSemaphoreSubmitInfo
114746   {
114747     using NativeType = VkTimelineSemaphoreSubmitInfo;
114748 
114749     static const bool                                  allowDuplicate = false;
114750     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eTimelineSemaphoreSubmitInfo;
114751 
114752 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
TimelineSemaphoreSubmitInfoVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo114753     VULKAN_HPP_CONSTEXPR TimelineSemaphoreSubmitInfo( uint32_t         waitSemaphoreValueCount_   = {},
114754                                                       const uint64_t * pWaitSemaphoreValues_      = {},
114755                                                       uint32_t         signalSemaphoreValueCount_ = {},
114756                                                       const uint64_t * pSignalSemaphoreValues_    = {},
114757                                                       const void *     pNext_                     = nullptr ) VULKAN_HPP_NOEXCEPT
114758       : pNext{ pNext_ }
114759       , waitSemaphoreValueCount{ waitSemaphoreValueCount_ }
114760       , pWaitSemaphoreValues{ pWaitSemaphoreValues_ }
114761       , signalSemaphoreValueCount{ signalSemaphoreValueCount_ }
114762       , pSignalSemaphoreValues{ pSignalSemaphoreValues_ }
114763     {
114764     }
114765 
114766     VULKAN_HPP_CONSTEXPR TimelineSemaphoreSubmitInfo( TimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114767 
TimelineSemaphoreSubmitInfoVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo114768     TimelineSemaphoreSubmitInfo( VkTimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
114769       : TimelineSemaphoreSubmitInfo( *reinterpret_cast<TimelineSemaphoreSubmitInfo const *>( &rhs ) )
114770     {
114771     }
114772 
114773 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
TimelineSemaphoreSubmitInfoVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo114774     TimelineSemaphoreSubmitInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & waitSemaphoreValues_,
114775                                  VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & signalSemaphoreValues_ = {},
114776                                  const void *                                                          pNext_                 = nullptr )
114777       : pNext( pNext_ )
114778       , waitSemaphoreValueCount( static_cast<uint32_t>( waitSemaphoreValues_.size() ) )
114779       , pWaitSemaphoreValues( waitSemaphoreValues_.data() )
114780       , signalSemaphoreValueCount( static_cast<uint32_t>( signalSemaphoreValues_.size() ) )
114781       , pSignalSemaphoreValues( signalSemaphoreValues_.data() )
114782     {
114783     }
114784 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
114785 
114786     TimelineSemaphoreSubmitInfo & operator=( TimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114787 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
114788 
operator =VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo114789     TimelineSemaphoreSubmitInfo & operator=( VkTimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
114790     {
114791       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo const *>( &rhs );
114792       return *this;
114793     }
114794 
114795 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo114796     VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
114797     {
114798       pNext = pNext_;
114799       return *this;
114800     }
114801 
setWaitSemaphoreValueCountVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo114802     VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setWaitSemaphoreValueCount( uint32_t waitSemaphoreValueCount_ ) VULKAN_HPP_NOEXCEPT
114803     {
114804       waitSemaphoreValueCount = waitSemaphoreValueCount_;
114805       return *this;
114806     }
114807 
setPWaitSemaphoreValuesVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo114808     VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setPWaitSemaphoreValues( const uint64_t * pWaitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
114809     {
114810       pWaitSemaphoreValues = pWaitSemaphoreValues_;
114811       return *this;
114812     }
114813 
114814 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
114815     TimelineSemaphoreSubmitInfo &
setWaitSemaphoreValuesVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo114816       setWaitSemaphoreValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & waitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
114817     {
114818       waitSemaphoreValueCount = static_cast<uint32_t>( waitSemaphoreValues_.size() );
114819       pWaitSemaphoreValues    = waitSemaphoreValues_.data();
114820       return *this;
114821     }
114822 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
114823 
setSignalSemaphoreValueCountVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo114824     VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setSignalSemaphoreValueCount( uint32_t signalSemaphoreValueCount_ ) VULKAN_HPP_NOEXCEPT
114825     {
114826       signalSemaphoreValueCount = signalSemaphoreValueCount_;
114827       return *this;
114828     }
114829 
setPSignalSemaphoreValuesVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo114830     VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setPSignalSemaphoreValues( const uint64_t * pSignalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
114831     {
114832       pSignalSemaphoreValues = pSignalSemaphoreValues_;
114833       return *this;
114834     }
114835 
114836 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
114837     TimelineSemaphoreSubmitInfo &
setSignalSemaphoreValuesVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo114838       setSignalSemaphoreValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & signalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
114839     {
114840       signalSemaphoreValueCount = static_cast<uint32_t>( signalSemaphoreValues_.size() );
114841       pSignalSemaphoreValues    = signalSemaphoreValues_.data();
114842       return *this;
114843     }
114844 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
114845 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
114846 
operator VkTimelineSemaphoreSubmitInfo const&VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo114847     operator VkTimelineSemaphoreSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
114848     {
114849       return *reinterpret_cast<const VkTimelineSemaphoreSubmitInfo *>( this );
114850     }
114851 
operator VkTimelineSemaphoreSubmitInfo&VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo114852     operator VkTimelineSemaphoreSubmitInfo &() VULKAN_HPP_NOEXCEPT
114853     {
114854       return *reinterpret_cast<VkTimelineSemaphoreSubmitInfo *>( this );
114855     }
114856 
114857 #if defined( VULKAN_HPP_USE_REFLECT )
114858 #  if 14 <= VULKAN_HPP_CPP_VERSION
114859     auto
114860 #  else
114861     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
114862                const void * const &,
114863                uint32_t const &,
114864                const uint64_t * const &,
114865                uint32_t const &,
114866                const uint64_t * const &>
114867 #  endif
reflectVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo114868       reflect() const VULKAN_HPP_NOEXCEPT
114869     {
114870       return std::tie( sType, pNext, waitSemaphoreValueCount, pWaitSemaphoreValues, signalSemaphoreValueCount, pSignalSemaphoreValues );
114871     }
114872 #endif
114873 
114874 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
114875     auto operator<=>( TimelineSemaphoreSubmitInfo const & ) const = default;
114876 #else
operator ==VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo114877     bool operator==( TimelineSemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
114878     {
114879 #  if defined( VULKAN_HPP_USE_REFLECT )
114880       return this->reflect() == rhs.reflect();
114881 #  else
114882       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreValueCount == rhs.waitSemaphoreValueCount ) &&
114883              ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues ) && ( signalSemaphoreValueCount == rhs.signalSemaphoreValueCount ) &&
114884              ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
114885 #  endif
114886     }
114887 
operator !=VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo114888     bool operator!=( TimelineSemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
114889     {
114890       return !operator==( rhs );
114891     }
114892 #endif
114893 
114894   public:
114895     VULKAN_HPP_NAMESPACE::StructureType sType                     = StructureType::eTimelineSemaphoreSubmitInfo;
114896     const void *                        pNext                     = {};
114897     uint32_t                            waitSemaphoreValueCount   = {};
114898     const uint64_t *                    pWaitSemaphoreValues      = {};
114899     uint32_t                            signalSemaphoreValueCount = {};
114900     const uint64_t *                    pSignalSemaphoreValues    = {};
114901   };
114902 
114903   template <>
114904   struct CppType<StructureType, StructureType::eTimelineSemaphoreSubmitInfo>
114905   {
114906     using Type = TimelineSemaphoreSubmitInfo;
114907   };
114908 
114909   using TimelineSemaphoreSubmitInfoKHR = TimelineSemaphoreSubmitInfo;
114910 
114911   struct TraceRaysIndirectCommand2KHR
114912   {
114913     using NativeType = VkTraceRaysIndirectCommand2KHR;
114914 
114915 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
TraceRaysIndirectCommand2KHRVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR114916     VULKAN_HPP_CONSTEXPR TraceRaysIndirectCommand2KHR( VULKAN_HPP_NAMESPACE::DeviceAddress raygenShaderRecordAddress_         = {},
114917                                                        VULKAN_HPP_NAMESPACE::DeviceSize    raygenShaderRecordSize_            = {},
114918                                                        VULKAN_HPP_NAMESPACE::DeviceAddress missShaderBindingTableAddress_     = {},
114919                                                        VULKAN_HPP_NAMESPACE::DeviceSize    missShaderBindingTableSize_        = {},
114920                                                        VULKAN_HPP_NAMESPACE::DeviceSize    missShaderBindingTableStride_      = {},
114921                                                        VULKAN_HPP_NAMESPACE::DeviceAddress hitShaderBindingTableAddress_      = {},
114922                                                        VULKAN_HPP_NAMESPACE::DeviceSize    hitShaderBindingTableSize_         = {},
114923                                                        VULKAN_HPP_NAMESPACE::DeviceSize    hitShaderBindingTableStride_       = {},
114924                                                        VULKAN_HPP_NAMESPACE::DeviceAddress callableShaderBindingTableAddress_ = {},
114925                                                        VULKAN_HPP_NAMESPACE::DeviceSize    callableShaderBindingTableSize_    = {},
114926                                                        VULKAN_HPP_NAMESPACE::DeviceSize    callableShaderBindingTableStride_  = {},
114927                                                        uint32_t                            width_                             = {},
114928                                                        uint32_t                            height_                            = {},
114929                                                        uint32_t                            depth_                             = {} ) VULKAN_HPP_NOEXCEPT
114930       : raygenShaderRecordAddress{ raygenShaderRecordAddress_ }
114931       , raygenShaderRecordSize{ raygenShaderRecordSize_ }
114932       , missShaderBindingTableAddress{ missShaderBindingTableAddress_ }
114933       , missShaderBindingTableSize{ missShaderBindingTableSize_ }
114934       , missShaderBindingTableStride{ missShaderBindingTableStride_ }
114935       , hitShaderBindingTableAddress{ hitShaderBindingTableAddress_ }
114936       , hitShaderBindingTableSize{ hitShaderBindingTableSize_ }
114937       , hitShaderBindingTableStride{ hitShaderBindingTableStride_ }
114938       , callableShaderBindingTableAddress{ callableShaderBindingTableAddress_ }
114939       , callableShaderBindingTableSize{ callableShaderBindingTableSize_ }
114940       , callableShaderBindingTableStride{ callableShaderBindingTableStride_ }
114941       , width{ width_ }
114942       , height{ height_ }
114943       , depth{ depth_ }
114944     {
114945     }
114946 
114947     VULKAN_HPP_CONSTEXPR TraceRaysIndirectCommand2KHR( TraceRaysIndirectCommand2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114948 
TraceRaysIndirectCommand2KHRVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR114949     TraceRaysIndirectCommand2KHR( VkTraceRaysIndirectCommand2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
114950       : TraceRaysIndirectCommand2KHR( *reinterpret_cast<TraceRaysIndirectCommand2KHR const *>( &rhs ) )
114951     {
114952     }
114953 
114954     TraceRaysIndirectCommand2KHR & operator=( TraceRaysIndirectCommand2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
114955 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
114956 
operator =VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR114957     TraceRaysIndirectCommand2KHR & operator=( VkTraceRaysIndirectCommand2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
114958     {
114959       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR const *>( &rhs );
114960       return *this;
114961     }
114962 
114963 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
114964     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setRaygenShaderRecordAddressVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR114965       setRaygenShaderRecordAddress( VULKAN_HPP_NAMESPACE::DeviceAddress raygenShaderRecordAddress_ ) VULKAN_HPP_NOEXCEPT
114966     {
114967       raygenShaderRecordAddress = raygenShaderRecordAddress_;
114968       return *this;
114969     }
114970 
114971     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setRaygenShaderRecordSizeVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR114972       setRaygenShaderRecordSize( VULKAN_HPP_NAMESPACE::DeviceSize raygenShaderRecordSize_ ) VULKAN_HPP_NOEXCEPT
114973     {
114974       raygenShaderRecordSize = raygenShaderRecordSize_;
114975       return *this;
114976     }
114977 
114978     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setMissShaderBindingTableAddressVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR114979       setMissShaderBindingTableAddress( VULKAN_HPP_NAMESPACE::DeviceAddress missShaderBindingTableAddress_ ) VULKAN_HPP_NOEXCEPT
114980     {
114981       missShaderBindingTableAddress = missShaderBindingTableAddress_;
114982       return *this;
114983     }
114984 
114985     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setMissShaderBindingTableSizeVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR114986       setMissShaderBindingTableSize( VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingTableSize_ ) VULKAN_HPP_NOEXCEPT
114987     {
114988       missShaderBindingTableSize = missShaderBindingTableSize_;
114989       return *this;
114990     }
114991 
114992     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setMissShaderBindingTableStrideVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR114993       setMissShaderBindingTableStride( VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingTableStride_ ) VULKAN_HPP_NOEXCEPT
114994     {
114995       missShaderBindingTableStride = missShaderBindingTableStride_;
114996       return *this;
114997     }
114998 
114999     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setHitShaderBindingTableAddressVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR115000       setHitShaderBindingTableAddress( VULKAN_HPP_NAMESPACE::DeviceAddress hitShaderBindingTableAddress_ ) VULKAN_HPP_NOEXCEPT
115001     {
115002       hitShaderBindingTableAddress = hitShaderBindingTableAddress_;
115003       return *this;
115004     }
115005 
115006     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setHitShaderBindingTableSizeVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR115007       setHitShaderBindingTableSize( VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingTableSize_ ) VULKAN_HPP_NOEXCEPT
115008     {
115009       hitShaderBindingTableSize = hitShaderBindingTableSize_;
115010       return *this;
115011     }
115012 
115013     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setHitShaderBindingTableStrideVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR115014       setHitShaderBindingTableStride( VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingTableStride_ ) VULKAN_HPP_NOEXCEPT
115015     {
115016       hitShaderBindingTableStride = hitShaderBindingTableStride_;
115017       return *this;
115018     }
115019 
115020     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setCallableShaderBindingTableAddressVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR115021       setCallableShaderBindingTableAddress( VULKAN_HPP_NAMESPACE::DeviceAddress callableShaderBindingTableAddress_ ) VULKAN_HPP_NOEXCEPT
115022     {
115023       callableShaderBindingTableAddress = callableShaderBindingTableAddress_;
115024       return *this;
115025     }
115026 
115027     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setCallableShaderBindingTableSizeVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR115028       setCallableShaderBindingTableSize( VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingTableSize_ ) VULKAN_HPP_NOEXCEPT
115029     {
115030       callableShaderBindingTableSize = callableShaderBindingTableSize_;
115031       return *this;
115032     }
115033 
115034     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR &
setCallableShaderBindingTableStrideVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR115035       setCallableShaderBindingTableStride( VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingTableStride_ ) VULKAN_HPP_NOEXCEPT
115036     {
115037       callableShaderBindingTableStride = callableShaderBindingTableStride_;
115038       return *this;
115039     }
115040 
setWidthVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR115041     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
115042     {
115043       width = width_;
115044       return *this;
115045     }
115046 
setHeightVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR115047     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
115048     {
115049       height = height_;
115050       return *this;
115051     }
115052 
setDepthVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR115053     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR & setDepth( uint32_t depth_ ) VULKAN_HPP_NOEXCEPT
115054     {
115055       depth = depth_;
115056       return *this;
115057     }
115058 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
115059 
operator VkTraceRaysIndirectCommand2KHR const&VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR115060     operator VkTraceRaysIndirectCommand2KHR const &() const VULKAN_HPP_NOEXCEPT
115061     {
115062       return *reinterpret_cast<const VkTraceRaysIndirectCommand2KHR *>( this );
115063     }
115064 
operator VkTraceRaysIndirectCommand2KHR&VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR115065     operator VkTraceRaysIndirectCommand2KHR &() VULKAN_HPP_NOEXCEPT
115066     {
115067       return *reinterpret_cast<VkTraceRaysIndirectCommand2KHR *>( this );
115068     }
115069 
115070 #if defined( VULKAN_HPP_USE_REFLECT )
115071 #  if 14 <= VULKAN_HPP_CPP_VERSION
115072     auto
115073 #  else
115074     std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &,
115075                VULKAN_HPP_NAMESPACE::DeviceSize const &,
115076                VULKAN_HPP_NAMESPACE::DeviceAddress const &,
115077                VULKAN_HPP_NAMESPACE::DeviceSize const &,
115078                VULKAN_HPP_NAMESPACE::DeviceSize const &,
115079                VULKAN_HPP_NAMESPACE::DeviceAddress const &,
115080                VULKAN_HPP_NAMESPACE::DeviceSize const &,
115081                VULKAN_HPP_NAMESPACE::DeviceSize const &,
115082                VULKAN_HPP_NAMESPACE::DeviceAddress const &,
115083                VULKAN_HPP_NAMESPACE::DeviceSize const &,
115084                VULKAN_HPP_NAMESPACE::DeviceSize const &,
115085                uint32_t const &,
115086                uint32_t const &,
115087                uint32_t const &>
115088 #  endif
reflectVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR115089       reflect() const VULKAN_HPP_NOEXCEPT
115090     {
115091       return std::tie( raygenShaderRecordAddress,
115092                        raygenShaderRecordSize,
115093                        missShaderBindingTableAddress,
115094                        missShaderBindingTableSize,
115095                        missShaderBindingTableStride,
115096                        hitShaderBindingTableAddress,
115097                        hitShaderBindingTableSize,
115098                        hitShaderBindingTableStride,
115099                        callableShaderBindingTableAddress,
115100                        callableShaderBindingTableSize,
115101                        callableShaderBindingTableStride,
115102                        width,
115103                        height,
115104                        depth );
115105     }
115106 #endif
115107 
115108 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
115109     auto operator<=>( TraceRaysIndirectCommand2KHR const & ) const = default;
115110 #else
operator ==VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR115111     bool operator==( TraceRaysIndirectCommand2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
115112     {
115113 #  if defined( VULKAN_HPP_USE_REFLECT )
115114       return this->reflect() == rhs.reflect();
115115 #  else
115116       return ( raygenShaderRecordAddress == rhs.raygenShaderRecordAddress ) && ( raygenShaderRecordSize == rhs.raygenShaderRecordSize ) &&
115117              ( missShaderBindingTableAddress == rhs.missShaderBindingTableAddress ) && ( missShaderBindingTableSize == rhs.missShaderBindingTableSize ) &&
115118              ( missShaderBindingTableStride == rhs.missShaderBindingTableStride ) && ( hitShaderBindingTableAddress == rhs.hitShaderBindingTableAddress ) &&
115119              ( hitShaderBindingTableSize == rhs.hitShaderBindingTableSize ) && ( hitShaderBindingTableStride == rhs.hitShaderBindingTableStride ) &&
115120              ( callableShaderBindingTableAddress == rhs.callableShaderBindingTableAddress ) &&
115121              ( callableShaderBindingTableSize == rhs.callableShaderBindingTableSize ) &&
115122              ( callableShaderBindingTableStride == rhs.callableShaderBindingTableStride ) && ( width == rhs.width ) && ( height == rhs.height ) &&
115123              ( depth == rhs.depth );
115124 #  endif
115125     }
115126 
operator !=VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR115127     bool operator!=( TraceRaysIndirectCommand2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
115128     {
115129       return !operator==( rhs );
115130     }
115131 #endif
115132 
115133   public:
115134     VULKAN_HPP_NAMESPACE::DeviceAddress raygenShaderRecordAddress         = {};
115135     VULKAN_HPP_NAMESPACE::DeviceSize    raygenShaderRecordSize            = {};
115136     VULKAN_HPP_NAMESPACE::DeviceAddress missShaderBindingTableAddress     = {};
115137     VULKAN_HPP_NAMESPACE::DeviceSize    missShaderBindingTableSize        = {};
115138     VULKAN_HPP_NAMESPACE::DeviceSize    missShaderBindingTableStride      = {};
115139     VULKAN_HPP_NAMESPACE::DeviceAddress hitShaderBindingTableAddress      = {};
115140     VULKAN_HPP_NAMESPACE::DeviceSize    hitShaderBindingTableSize         = {};
115141     VULKAN_HPP_NAMESPACE::DeviceSize    hitShaderBindingTableStride       = {};
115142     VULKAN_HPP_NAMESPACE::DeviceAddress callableShaderBindingTableAddress = {};
115143     VULKAN_HPP_NAMESPACE::DeviceSize    callableShaderBindingTableSize    = {};
115144     VULKAN_HPP_NAMESPACE::DeviceSize    callableShaderBindingTableStride  = {};
115145     uint32_t                            width                             = {};
115146     uint32_t                            height                            = {};
115147     uint32_t                            depth                             = {};
115148   };
115149 
115150   struct TraceRaysIndirectCommandKHR
115151   {
115152     using NativeType = VkTraceRaysIndirectCommandKHR;
115153 
115154 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
TraceRaysIndirectCommandKHRVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR115155     VULKAN_HPP_CONSTEXPR TraceRaysIndirectCommandKHR( uint32_t width_ = {}, uint32_t height_ = {}, uint32_t depth_ = {} ) VULKAN_HPP_NOEXCEPT
115156       : width{ width_ }
115157       , height{ height_ }
115158       , depth{ depth_ }
115159     {
115160     }
115161 
115162     VULKAN_HPP_CONSTEXPR TraceRaysIndirectCommandKHR( TraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115163 
TraceRaysIndirectCommandKHRVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR115164     TraceRaysIndirectCommandKHR( VkTraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT
115165       : TraceRaysIndirectCommandKHR( *reinterpret_cast<TraceRaysIndirectCommandKHR const *>( &rhs ) )
115166     {
115167     }
115168 
TraceRaysIndirectCommandKHRVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR115169     explicit TraceRaysIndirectCommandKHR( Extent2D const & extent2D, uint32_t depth_ = {} )
115170       : width( extent2D.width ), height( extent2D.height ), depth( depth_ )
115171     {
115172     }
115173 
115174     TraceRaysIndirectCommandKHR & operator=( TraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115175 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
115176 
operator =VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR115177     TraceRaysIndirectCommandKHR & operator=( VkTraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT
115178     {
115179       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR const *>( &rhs );
115180       return *this;
115181     }
115182 
115183 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setWidthVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR115184     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommandKHR & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
115185     {
115186       width = width_;
115187       return *this;
115188     }
115189 
setHeightVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR115190     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommandKHR & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
115191     {
115192       height = height_;
115193       return *this;
115194     }
115195 
setDepthVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR115196     VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommandKHR & setDepth( uint32_t depth_ ) VULKAN_HPP_NOEXCEPT
115197     {
115198       depth = depth_;
115199       return *this;
115200     }
115201 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
115202 
operator VkTraceRaysIndirectCommandKHR const&VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR115203     operator VkTraceRaysIndirectCommandKHR const &() const VULKAN_HPP_NOEXCEPT
115204     {
115205       return *reinterpret_cast<const VkTraceRaysIndirectCommandKHR *>( this );
115206     }
115207 
operator VkTraceRaysIndirectCommandKHR&VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR115208     operator VkTraceRaysIndirectCommandKHR &() VULKAN_HPP_NOEXCEPT
115209     {
115210       return *reinterpret_cast<VkTraceRaysIndirectCommandKHR *>( this );
115211     }
115212 
115213 #if defined( VULKAN_HPP_USE_REFLECT )
115214 #  if 14 <= VULKAN_HPP_CPP_VERSION
115215     auto
115216 #  else
115217     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
115218 #  endif
reflectVULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR115219       reflect() const VULKAN_HPP_NOEXCEPT
115220     {
115221       return std::tie( width, height, depth );
115222     }
115223 #endif
115224 
115225 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
115226     auto operator<=>( TraceRaysIndirectCommandKHR const & ) const = default;
115227 #else
operator ==VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR115228     bool operator==( TraceRaysIndirectCommandKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
115229     {
115230 #  if defined( VULKAN_HPP_USE_REFLECT )
115231       return this->reflect() == rhs.reflect();
115232 #  else
115233       return ( width == rhs.width ) && ( height == rhs.height ) && ( depth == rhs.depth );
115234 #  endif
115235     }
115236 
operator !=VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR115237     bool operator!=( TraceRaysIndirectCommandKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
115238     {
115239       return !operator==( rhs );
115240     }
115241 #endif
115242 
115243   public:
115244     uint32_t width  = {};
115245     uint32_t height = {};
115246     uint32_t depth  = {};
115247   };
115248 
115249   struct ValidationCacheCreateInfoEXT
115250   {
115251     using NativeType = VkValidationCacheCreateInfoEXT;
115252 
115253     static const bool                                  allowDuplicate = false;
115254     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eValidationCacheCreateInfoEXT;
115255 
115256 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ValidationCacheCreateInfoEXTVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT115257     VULKAN_HPP_CONSTEXPR ValidationCacheCreateInfoEXT( VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT flags_           = {},
115258                                                        size_t                                              initialDataSize_ = {},
115259                                                        const void *                                        pInitialData_    = {},
115260                                                        const void *                                        pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
115261       : pNext{ pNext_ }
115262       , flags{ flags_ }
115263       , initialDataSize{ initialDataSize_ }
115264       , pInitialData{ pInitialData_ }
115265     {
115266     }
115267 
115268     VULKAN_HPP_CONSTEXPR ValidationCacheCreateInfoEXT( ValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115269 
ValidationCacheCreateInfoEXTVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT115270     ValidationCacheCreateInfoEXT( VkValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
115271       : ValidationCacheCreateInfoEXT( *reinterpret_cast<ValidationCacheCreateInfoEXT const *>( &rhs ) )
115272     {
115273     }
115274 
115275 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
115276     template <typename T>
ValidationCacheCreateInfoEXTVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT115277     ValidationCacheCreateInfoEXT( VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT            flags_,
115278                                   VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & initialData_,
115279                                   const void *                                                   pNext_ = nullptr )
115280       : pNext( pNext_ ), flags( flags_ ), initialDataSize( initialData_.size() * sizeof( T ) ), pInitialData( initialData_.data() )
115281     {
115282     }
115283 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
115284 
115285     ValidationCacheCreateInfoEXT & operator=( ValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115286 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
115287 
operator =VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT115288     ValidationCacheCreateInfoEXT & operator=( VkValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
115289     {
115290       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT const *>( &rhs );
115291       return *this;
115292     }
115293 
115294 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT115295     VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
115296     {
115297       pNext = pNext_;
115298       return *this;
115299     }
115300 
setFlagsVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT115301     VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
115302     {
115303       flags = flags_;
115304       return *this;
115305     }
115306 
setInitialDataSizeVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT115307     VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT & setInitialDataSize( size_t initialDataSize_ ) VULKAN_HPP_NOEXCEPT
115308     {
115309       initialDataSize = initialDataSize_;
115310       return *this;
115311     }
115312 
setPInitialDataVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT115313     VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT & setPInitialData( const void * pInitialData_ ) VULKAN_HPP_NOEXCEPT
115314     {
115315       pInitialData = pInitialData_;
115316       return *this;
115317     }
115318 
115319 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
115320     template <typename T>
setInitialDataVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT115321     ValidationCacheCreateInfoEXT & setInitialData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & initialData_ ) VULKAN_HPP_NOEXCEPT
115322     {
115323       initialDataSize = initialData_.size() * sizeof( T );
115324       pInitialData    = initialData_.data();
115325       return *this;
115326     }
115327 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
115328 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
115329 
operator VkValidationCacheCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT115330     operator VkValidationCacheCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
115331     {
115332       return *reinterpret_cast<const VkValidationCacheCreateInfoEXT *>( this );
115333     }
115334 
operator VkValidationCacheCreateInfoEXT&VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT115335     operator VkValidationCacheCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
115336     {
115337       return *reinterpret_cast<VkValidationCacheCreateInfoEXT *>( this );
115338     }
115339 
115340 #if defined( VULKAN_HPP_USE_REFLECT )
115341 #  if 14 <= VULKAN_HPP_CPP_VERSION
115342     auto
115343 #  else
115344     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
115345                const void * const &,
115346                VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT const &,
115347                size_t const &,
115348                const void * const &>
115349 #  endif
reflectVULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT115350       reflect() const VULKAN_HPP_NOEXCEPT
115351     {
115352       return std::tie( sType, pNext, flags, initialDataSize, pInitialData );
115353     }
115354 #endif
115355 
115356 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
115357     auto operator<=>( ValidationCacheCreateInfoEXT const & ) const = default;
115358 #else
operator ==VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT115359     bool operator==( ValidationCacheCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115360     {
115361 #  if defined( VULKAN_HPP_USE_REFLECT )
115362       return this->reflect() == rhs.reflect();
115363 #  else
115364       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( initialDataSize == rhs.initialDataSize ) &&
115365              ( pInitialData == rhs.pInitialData );
115366 #  endif
115367     }
115368 
operator !=VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT115369     bool operator!=( ValidationCacheCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115370     {
115371       return !operator==( rhs );
115372     }
115373 #endif
115374 
115375   public:
115376     VULKAN_HPP_NAMESPACE::StructureType                 sType           = StructureType::eValidationCacheCreateInfoEXT;
115377     const void *                                        pNext           = {};
115378     VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT flags           = {};
115379     size_t                                              initialDataSize = {};
115380     const void *                                        pInitialData    = {};
115381   };
115382 
115383   template <>
115384   struct CppType<StructureType, StructureType::eValidationCacheCreateInfoEXT>
115385   {
115386     using Type = ValidationCacheCreateInfoEXT;
115387   };
115388 
115389   struct ValidationFeaturesEXT
115390   {
115391     using NativeType = VkValidationFeaturesEXT;
115392 
115393     static const bool                                  allowDuplicate = false;
115394     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eValidationFeaturesEXT;
115395 
115396 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ValidationFeaturesEXTVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT115397     VULKAN_HPP_CONSTEXPR ValidationFeaturesEXT( uint32_t                                                  enabledValidationFeatureCount_  = {},
115398                                                 const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT *  pEnabledValidationFeatures_     = {},
115399                                                 uint32_t                                                  disabledValidationFeatureCount_ = {},
115400                                                 const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT * pDisabledValidationFeatures_    = {},
115401                                                 const void *                                              pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
115402       : pNext{ pNext_ }
115403       , enabledValidationFeatureCount{ enabledValidationFeatureCount_ }
115404       , pEnabledValidationFeatures{ pEnabledValidationFeatures_ }
115405       , disabledValidationFeatureCount{ disabledValidationFeatureCount_ }
115406       , pDisabledValidationFeatures{ pDisabledValidationFeatures_ }
115407     {
115408     }
115409 
115410     VULKAN_HPP_CONSTEXPR ValidationFeaturesEXT( ValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115411 
ValidationFeaturesEXTVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT115412     ValidationFeaturesEXT( VkValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
115413       : ValidationFeaturesEXT( *reinterpret_cast<ValidationFeaturesEXT const *>( &rhs ) )
115414     {
115415     }
115416 
115417 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ValidationFeaturesEXTVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT115418     ValidationFeaturesEXT(
115419       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT> const &  enabledValidationFeatures_,
115420       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT> const & disabledValidationFeatures_ = {},
115421       const void *                                                                                                   pNext_                      = nullptr )
115422       : pNext( pNext_ )
115423       , enabledValidationFeatureCount( static_cast<uint32_t>( enabledValidationFeatures_.size() ) )
115424       , pEnabledValidationFeatures( enabledValidationFeatures_.data() )
115425       , disabledValidationFeatureCount( static_cast<uint32_t>( disabledValidationFeatures_.size() ) )
115426       , pDisabledValidationFeatures( disabledValidationFeatures_.data() )
115427     {
115428     }
115429 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
115430 
115431     ValidationFeaturesEXT & operator=( ValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115432 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
115433 
operator =VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT115434     ValidationFeaturesEXT & operator=( VkValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
115435     {
115436       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT const *>( &rhs );
115437       return *this;
115438     }
115439 
115440 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT115441     VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
115442     {
115443       pNext = pNext_;
115444       return *this;
115445     }
115446 
setEnabledValidationFeatureCountVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT115447     VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setEnabledValidationFeatureCount( uint32_t enabledValidationFeatureCount_ ) VULKAN_HPP_NOEXCEPT
115448     {
115449       enabledValidationFeatureCount = enabledValidationFeatureCount_;
115450       return *this;
115451     }
115452 
115453     VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT &
setPEnabledValidationFeaturesVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT115454       setPEnabledValidationFeatures( const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT * pEnabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT
115455     {
115456       pEnabledValidationFeatures = pEnabledValidationFeatures_;
115457       return *this;
115458     }
115459 
115460 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setEnabledValidationFeaturesVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT115461     ValidationFeaturesEXT & setEnabledValidationFeatures(
115462       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT> const & enabledValidationFeatures_ )
115463       VULKAN_HPP_NOEXCEPT
115464     {
115465       enabledValidationFeatureCount = static_cast<uint32_t>( enabledValidationFeatures_.size() );
115466       pEnabledValidationFeatures    = enabledValidationFeatures_.data();
115467       return *this;
115468     }
115469 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
115470 
setDisabledValidationFeatureCountVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT115471     VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setDisabledValidationFeatureCount( uint32_t disabledValidationFeatureCount_ ) VULKAN_HPP_NOEXCEPT
115472     {
115473       disabledValidationFeatureCount = disabledValidationFeatureCount_;
115474       return *this;
115475     }
115476 
115477     VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT &
setPDisabledValidationFeaturesVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT115478       setPDisabledValidationFeatures( const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT * pDisabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT
115479     {
115480       pDisabledValidationFeatures = pDisabledValidationFeatures_;
115481       return *this;
115482     }
115483 
115484 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDisabledValidationFeaturesVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT115485     ValidationFeaturesEXT & setDisabledValidationFeatures(
115486       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT> const & disabledValidationFeatures_ )
115487       VULKAN_HPP_NOEXCEPT
115488     {
115489       disabledValidationFeatureCount = static_cast<uint32_t>( disabledValidationFeatures_.size() );
115490       pDisabledValidationFeatures    = disabledValidationFeatures_.data();
115491       return *this;
115492     }
115493 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
115494 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
115495 
operator VkValidationFeaturesEXT const&VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT115496     operator VkValidationFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
115497     {
115498       return *reinterpret_cast<const VkValidationFeaturesEXT *>( this );
115499     }
115500 
operator VkValidationFeaturesEXT&VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT115501     operator VkValidationFeaturesEXT &() VULKAN_HPP_NOEXCEPT
115502     {
115503       return *reinterpret_cast<VkValidationFeaturesEXT *>( this );
115504     }
115505 
115506 #if defined( VULKAN_HPP_USE_REFLECT )
115507 #  if 14 <= VULKAN_HPP_CPP_VERSION
115508     auto
115509 #  else
115510     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
115511                const void * const &,
115512                uint32_t const &,
115513                const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT * const &,
115514                uint32_t const &,
115515                const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT * const &>
115516 #  endif
reflectVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT115517       reflect() const VULKAN_HPP_NOEXCEPT
115518     {
115519       return std::tie( sType, pNext, enabledValidationFeatureCount, pEnabledValidationFeatures, disabledValidationFeatureCount, pDisabledValidationFeatures );
115520     }
115521 #endif
115522 
115523 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
115524     auto operator<=>( ValidationFeaturesEXT const & ) const = default;
115525 #else
operator ==VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT115526     bool operator==( ValidationFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115527     {
115528 #  if defined( VULKAN_HPP_USE_REFLECT )
115529       return this->reflect() == rhs.reflect();
115530 #  else
115531       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( enabledValidationFeatureCount == rhs.enabledValidationFeatureCount ) &&
115532              ( pEnabledValidationFeatures == rhs.pEnabledValidationFeatures ) && ( disabledValidationFeatureCount == rhs.disabledValidationFeatureCount ) &&
115533              ( pDisabledValidationFeatures == rhs.pDisabledValidationFeatures );
115534 #  endif
115535     }
115536 
operator !=VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT115537     bool operator!=( ValidationFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115538     {
115539       return !operator==( rhs );
115540     }
115541 #endif
115542 
115543   public:
115544     VULKAN_HPP_NAMESPACE::StructureType                       sType                          = StructureType::eValidationFeaturesEXT;
115545     const void *                                              pNext                          = {};
115546     uint32_t                                                  enabledValidationFeatureCount  = {};
115547     const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT *  pEnabledValidationFeatures     = {};
115548     uint32_t                                                  disabledValidationFeatureCount = {};
115549     const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT * pDisabledValidationFeatures    = {};
115550   };
115551 
115552   template <>
115553   struct CppType<StructureType, StructureType::eValidationFeaturesEXT>
115554   {
115555     using Type = ValidationFeaturesEXT;
115556   };
115557 
115558   struct ValidationFlagsEXT
115559   {
115560     using NativeType = VkValidationFlagsEXT;
115561 
115562     static const bool                                  allowDuplicate = false;
115563     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eValidationFlagsEXT;
115564 
115565 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ValidationFlagsEXTVULKAN_HPP_NAMESPACE::ValidationFlagsEXT115566     VULKAN_HPP_CONSTEXPR ValidationFlagsEXT( uint32_t                                         disabledValidationCheckCount_ = {},
115567                                              const VULKAN_HPP_NAMESPACE::ValidationCheckEXT * pDisabledValidationChecks_    = {},
115568                                              const void *                                     pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
115569       : pNext{ pNext_ }
115570       , disabledValidationCheckCount{ disabledValidationCheckCount_ }
115571       , pDisabledValidationChecks{ pDisabledValidationChecks_ }
115572     {
115573     }
115574 
115575     VULKAN_HPP_CONSTEXPR ValidationFlagsEXT( ValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115576 
ValidationFlagsEXTVULKAN_HPP_NAMESPACE::ValidationFlagsEXT115577     ValidationFlagsEXT( VkValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT : ValidationFlagsEXT( *reinterpret_cast<ValidationFlagsEXT const *>( &rhs ) ) {}
115578 
115579 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ValidationFlagsEXTVULKAN_HPP_NAMESPACE::ValidationFlagsEXT115580     ValidationFlagsEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationCheckEXT> const & disabledValidationChecks_,
115581                         const void *                                                                                          pNext_ = nullptr )
115582       : pNext( pNext_ )
115583       , disabledValidationCheckCount( static_cast<uint32_t>( disabledValidationChecks_.size() ) )
115584       , pDisabledValidationChecks( disabledValidationChecks_.data() )
115585     {
115586     }
115587 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
115588 
115589     ValidationFlagsEXT & operator=( ValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115590 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
115591 
operator =VULKAN_HPP_NAMESPACE::ValidationFlagsEXT115592     ValidationFlagsEXT & operator=( VkValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
115593     {
115594       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ValidationFlagsEXT const *>( &rhs );
115595       return *this;
115596     }
115597 
115598 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ValidationFlagsEXT115599     VULKAN_HPP_CONSTEXPR_14 ValidationFlagsEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
115600     {
115601       pNext = pNext_;
115602       return *this;
115603     }
115604 
setDisabledValidationCheckCountVULKAN_HPP_NAMESPACE::ValidationFlagsEXT115605     VULKAN_HPP_CONSTEXPR_14 ValidationFlagsEXT & setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ ) VULKAN_HPP_NOEXCEPT
115606     {
115607       disabledValidationCheckCount = disabledValidationCheckCount_;
115608       return *this;
115609     }
115610 
115611     VULKAN_HPP_CONSTEXPR_14 ValidationFlagsEXT &
setPDisabledValidationChecksVULKAN_HPP_NAMESPACE::ValidationFlagsEXT115612       setPDisabledValidationChecks( const VULKAN_HPP_NAMESPACE::ValidationCheckEXT * pDisabledValidationChecks_ ) VULKAN_HPP_NOEXCEPT
115613     {
115614       pDisabledValidationChecks = pDisabledValidationChecks_;
115615       return *this;
115616     }
115617 
115618 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDisabledValidationChecksVULKAN_HPP_NAMESPACE::ValidationFlagsEXT115619     ValidationFlagsEXT & setDisabledValidationChecks(
115620       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationCheckEXT> const & disabledValidationChecks_ ) VULKAN_HPP_NOEXCEPT
115621     {
115622       disabledValidationCheckCount = static_cast<uint32_t>( disabledValidationChecks_.size() );
115623       pDisabledValidationChecks    = disabledValidationChecks_.data();
115624       return *this;
115625     }
115626 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
115627 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
115628 
operator VkValidationFlagsEXT const&VULKAN_HPP_NAMESPACE::ValidationFlagsEXT115629     operator VkValidationFlagsEXT const &() const VULKAN_HPP_NOEXCEPT
115630     {
115631       return *reinterpret_cast<const VkValidationFlagsEXT *>( this );
115632     }
115633 
operator VkValidationFlagsEXT&VULKAN_HPP_NAMESPACE::ValidationFlagsEXT115634     operator VkValidationFlagsEXT &() VULKAN_HPP_NOEXCEPT
115635     {
115636       return *reinterpret_cast<VkValidationFlagsEXT *>( this );
115637     }
115638 
115639 #if defined( VULKAN_HPP_USE_REFLECT )
115640 #  if 14 <= VULKAN_HPP_CPP_VERSION
115641     auto
115642 #  else
115643     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::ValidationCheckEXT * const &>
115644 #  endif
reflectVULKAN_HPP_NAMESPACE::ValidationFlagsEXT115645       reflect() const VULKAN_HPP_NOEXCEPT
115646     {
115647       return std::tie( sType, pNext, disabledValidationCheckCount, pDisabledValidationChecks );
115648     }
115649 #endif
115650 
115651 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
115652     auto operator<=>( ValidationFlagsEXT const & ) const = default;
115653 #else
operator ==VULKAN_HPP_NAMESPACE::ValidationFlagsEXT115654     bool operator==( ValidationFlagsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115655     {
115656 #  if defined( VULKAN_HPP_USE_REFLECT )
115657       return this->reflect() == rhs.reflect();
115658 #  else
115659       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount ) &&
115660              ( pDisabledValidationChecks == rhs.pDisabledValidationChecks );
115661 #  endif
115662     }
115663 
operator !=VULKAN_HPP_NAMESPACE::ValidationFlagsEXT115664     bool operator!=( ValidationFlagsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115665     {
115666       return !operator==( rhs );
115667     }
115668 #endif
115669 
115670   public:
115671     VULKAN_HPP_NAMESPACE::StructureType              sType                        = StructureType::eValidationFlagsEXT;
115672     const void *                                     pNext                        = {};
115673     uint32_t                                         disabledValidationCheckCount = {};
115674     const VULKAN_HPP_NAMESPACE::ValidationCheckEXT * pDisabledValidationChecks    = {};
115675   };
115676 
115677   template <>
115678   struct CppType<StructureType, StructureType::eValidationFlagsEXT>
115679   {
115680     using Type = ValidationFlagsEXT;
115681   };
115682 
115683   struct VertexInputAttributeDescription2EXT
115684   {
115685     using NativeType = VkVertexInputAttributeDescription2EXT;
115686 
115687     static const bool                                  allowDuplicate = false;
115688     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVertexInputAttributeDescription2EXT;
115689 
115690 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VertexInputAttributeDescription2EXTVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT115691     VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription2EXT( uint32_t                     location_ = {},
115692                                                               uint32_t                     binding_  = {},
115693                                                               VULKAN_HPP_NAMESPACE::Format format_   = VULKAN_HPP_NAMESPACE::Format::eUndefined,
115694                                                               uint32_t                     offset_   = {},
115695                                                               void *                       pNext_    = nullptr ) VULKAN_HPP_NOEXCEPT
115696       : pNext{ pNext_ }
115697       , location{ location_ }
115698       , binding{ binding_ }
115699       , format{ format_ }
115700       , offset{ offset_ }
115701     {
115702     }
115703 
115704     VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription2EXT( VertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115705 
VertexInputAttributeDescription2EXTVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT115706     VertexInputAttributeDescription2EXT( VkVertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
115707       : VertexInputAttributeDescription2EXT( *reinterpret_cast<VertexInputAttributeDescription2EXT const *>( &rhs ) )
115708     {
115709     }
115710 
115711     VertexInputAttributeDescription2EXT & operator=( VertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115712 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
115713 
operator =VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT115714     VertexInputAttributeDescription2EXT & operator=( VkVertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
115715     {
115716       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT const *>( &rhs );
115717       return *this;
115718     }
115719 
115720 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT115721     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
115722     {
115723       pNext = pNext_;
115724       return *this;
115725     }
115726 
setLocationVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT115727     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setLocation( uint32_t location_ ) VULKAN_HPP_NOEXCEPT
115728     {
115729       location = location_;
115730       return *this;
115731     }
115732 
setBindingVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT115733     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
115734     {
115735       binding = binding_;
115736       return *this;
115737     }
115738 
setFormatVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT115739     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
115740     {
115741       format = format_;
115742       return *this;
115743     }
115744 
setOffsetVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT115745     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT
115746     {
115747       offset = offset_;
115748       return *this;
115749     }
115750 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
115751 
operator VkVertexInputAttributeDescription2EXT const&VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT115752     operator VkVertexInputAttributeDescription2EXT const &() const VULKAN_HPP_NOEXCEPT
115753     {
115754       return *reinterpret_cast<const VkVertexInputAttributeDescription2EXT *>( this );
115755     }
115756 
operator VkVertexInputAttributeDescription2EXT&VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT115757     operator VkVertexInputAttributeDescription2EXT &() VULKAN_HPP_NOEXCEPT
115758     {
115759       return *reinterpret_cast<VkVertexInputAttributeDescription2EXT *>( this );
115760     }
115761 
115762 #if defined( VULKAN_HPP_USE_REFLECT )
115763 #  if 14 <= VULKAN_HPP_CPP_VERSION
115764     auto
115765 #  else
115766     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
115767                void * const &,
115768                uint32_t const &,
115769                uint32_t const &,
115770                VULKAN_HPP_NAMESPACE::Format const &,
115771                uint32_t const &>
115772 #  endif
reflectVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT115773       reflect() const VULKAN_HPP_NOEXCEPT
115774     {
115775       return std::tie( sType, pNext, location, binding, format, offset );
115776     }
115777 #endif
115778 
115779 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
115780     auto operator<=>( VertexInputAttributeDescription2EXT const & ) const = default;
115781 #else
operator ==VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT115782     bool operator==( VertexInputAttributeDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115783     {
115784 #  if defined( VULKAN_HPP_USE_REFLECT )
115785       return this->reflect() == rhs.reflect();
115786 #  else
115787       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( location == rhs.location ) && ( binding == rhs.binding ) && ( format == rhs.format ) &&
115788              ( offset == rhs.offset );
115789 #  endif
115790     }
115791 
operator !=VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT115792     bool operator!=( VertexInputAttributeDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115793     {
115794       return !operator==( rhs );
115795     }
115796 #endif
115797 
115798   public:
115799     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eVertexInputAttributeDescription2EXT;
115800     void *                              pNext    = {};
115801     uint32_t                            location = {};
115802     uint32_t                            binding  = {};
115803     VULKAN_HPP_NAMESPACE::Format        format   = VULKAN_HPP_NAMESPACE::Format::eUndefined;
115804     uint32_t                            offset   = {};
115805   };
115806 
115807   template <>
115808   struct CppType<StructureType, StructureType::eVertexInputAttributeDescription2EXT>
115809   {
115810     using Type = VertexInputAttributeDescription2EXT;
115811   };
115812 
115813   struct VertexInputBindingDescription2EXT
115814   {
115815     using NativeType = VkVertexInputBindingDescription2EXT;
115816 
115817     static const bool                                  allowDuplicate = false;
115818     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVertexInputBindingDescription2EXT;
115819 
115820 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VertexInputBindingDescription2EXTVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT115821     VULKAN_HPP_CONSTEXPR VertexInputBindingDescription2EXT( uint32_t                              binding_   = {},
115822                                                             uint32_t                              stride_    = {},
115823                                                             VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ = VULKAN_HPP_NAMESPACE::VertexInputRate::eVertex,
115824                                                             uint32_t                              divisor_   = {},
115825                                                             void *                                pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
115826       : pNext{ pNext_ }
115827       , binding{ binding_ }
115828       , stride{ stride_ }
115829       , inputRate{ inputRate_ }
115830       , divisor{ divisor_ }
115831     {
115832     }
115833 
115834     VULKAN_HPP_CONSTEXPR VertexInputBindingDescription2EXT( VertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115835 
VertexInputBindingDescription2EXTVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT115836     VertexInputBindingDescription2EXT( VkVertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
115837       : VertexInputBindingDescription2EXT( *reinterpret_cast<VertexInputBindingDescription2EXT const *>( &rhs ) )
115838     {
115839     }
115840 
115841     VertexInputBindingDescription2EXT & operator=( VertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115842 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
115843 
operator =VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT115844     VertexInputBindingDescription2EXT & operator=( VkVertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
115845     {
115846       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT const *>( &rhs );
115847       return *this;
115848     }
115849 
115850 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT115851     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
115852     {
115853       pNext = pNext_;
115854       return *this;
115855     }
115856 
setBindingVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT115857     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
115858     {
115859       binding = binding_;
115860       return *this;
115861     }
115862 
setStrideVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT115863     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT
115864     {
115865       stride = stride_;
115866       return *this;
115867     }
115868 
setInputRateVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT115869     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setInputRate( VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ ) VULKAN_HPP_NOEXCEPT
115870     {
115871       inputRate = inputRate_;
115872       return *this;
115873     }
115874 
setDivisorVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT115875     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setDivisor( uint32_t divisor_ ) VULKAN_HPP_NOEXCEPT
115876     {
115877       divisor = divisor_;
115878       return *this;
115879     }
115880 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
115881 
operator VkVertexInputBindingDescription2EXT const&VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT115882     operator VkVertexInputBindingDescription2EXT const &() const VULKAN_HPP_NOEXCEPT
115883     {
115884       return *reinterpret_cast<const VkVertexInputBindingDescription2EXT *>( this );
115885     }
115886 
operator VkVertexInputBindingDescription2EXT&VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT115887     operator VkVertexInputBindingDescription2EXT &() VULKAN_HPP_NOEXCEPT
115888     {
115889       return *reinterpret_cast<VkVertexInputBindingDescription2EXT *>( this );
115890     }
115891 
115892 #if defined( VULKAN_HPP_USE_REFLECT )
115893 #  if 14 <= VULKAN_HPP_CPP_VERSION
115894     auto
115895 #  else
115896     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
115897                void * const &,
115898                uint32_t const &,
115899                uint32_t const &,
115900                VULKAN_HPP_NAMESPACE::VertexInputRate const &,
115901                uint32_t const &>
115902 #  endif
reflectVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT115903       reflect() const VULKAN_HPP_NOEXCEPT
115904     {
115905       return std::tie( sType, pNext, binding, stride, inputRate, divisor );
115906     }
115907 #endif
115908 
115909 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
115910     auto operator<=>( VertexInputBindingDescription2EXT const & ) const = default;
115911 #else
operator ==VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT115912     bool operator==( VertexInputBindingDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115913     {
115914 #  if defined( VULKAN_HPP_USE_REFLECT )
115915       return this->reflect() == rhs.reflect();
115916 #  else
115917       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( binding == rhs.binding ) && ( stride == rhs.stride ) && ( inputRate == rhs.inputRate ) &&
115918              ( divisor == rhs.divisor );
115919 #  endif
115920     }
115921 
operator !=VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT115922     bool operator!=( VertexInputBindingDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
115923     {
115924       return !operator==( rhs );
115925     }
115926 #endif
115927 
115928   public:
115929     VULKAN_HPP_NAMESPACE::StructureType   sType     = StructureType::eVertexInputBindingDescription2EXT;
115930     void *                                pNext     = {};
115931     uint32_t                              binding   = {};
115932     uint32_t                              stride    = {};
115933     VULKAN_HPP_NAMESPACE::VertexInputRate inputRate = VULKAN_HPP_NAMESPACE::VertexInputRate::eVertex;
115934     uint32_t                              divisor   = {};
115935   };
115936 
115937   template <>
115938   struct CppType<StructureType, StructureType::eVertexInputBindingDescription2EXT>
115939   {
115940     using Type = VertexInputBindingDescription2EXT;
115941   };
115942 
115943 #if defined( VK_USE_PLATFORM_VI_NN )
115944   struct ViSurfaceCreateInfoNN
115945   {
115946     using NativeType = VkViSurfaceCreateInfoNN;
115947 
115948     static const bool                                  allowDuplicate = false;
115949     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eViSurfaceCreateInfoNN;
115950 
115951 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
115952     VULKAN_HPP_CONSTEXPR
ViSurfaceCreateInfoNNVULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN115953       ViSurfaceCreateInfoNN( VULKAN_HPP_NAMESPACE::ViSurfaceCreateFlagsNN flags_ = {}, void * window_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
115954       : pNext{ pNext_ }
115955       , flags{ flags_ }
115956       , window{ window_ }
115957     {
115958     }
115959 
115960     VULKAN_HPP_CONSTEXPR ViSurfaceCreateInfoNN( ViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115961 
ViSurfaceCreateInfoNNVULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN115962     ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT
115963       : ViSurfaceCreateInfoNN( *reinterpret_cast<ViSurfaceCreateInfoNN const *>( &rhs ) )
115964     {
115965     }
115966 
115967     ViSurfaceCreateInfoNN & operator=( ViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT = default;
115968 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
115969 
operator =VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN115970     ViSurfaceCreateInfoNN & operator=( VkViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT
115971     {
115972       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN const *>( &rhs );
115973       return *this;
115974     }
115975 
115976 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN115977     VULKAN_HPP_CONSTEXPR_14 ViSurfaceCreateInfoNN & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
115978     {
115979       pNext = pNext_;
115980       return *this;
115981     }
115982 
setFlagsVULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN115983     VULKAN_HPP_CONSTEXPR_14 ViSurfaceCreateInfoNN & setFlags( VULKAN_HPP_NAMESPACE::ViSurfaceCreateFlagsNN flags_ ) VULKAN_HPP_NOEXCEPT
115984     {
115985       flags = flags_;
115986       return *this;
115987     }
115988 
setWindowVULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN115989     VULKAN_HPP_CONSTEXPR_14 ViSurfaceCreateInfoNN & setWindow( void * window_ ) VULKAN_HPP_NOEXCEPT
115990     {
115991       window = window_;
115992       return *this;
115993     }
115994 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
115995 
operator VkViSurfaceCreateInfoNN const&VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN115996     operator VkViSurfaceCreateInfoNN const &() const VULKAN_HPP_NOEXCEPT
115997     {
115998       return *reinterpret_cast<const VkViSurfaceCreateInfoNN *>( this );
115999     }
116000 
operator VkViSurfaceCreateInfoNN&VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN116001     operator VkViSurfaceCreateInfoNN &() VULKAN_HPP_NOEXCEPT
116002     {
116003       return *reinterpret_cast<VkViSurfaceCreateInfoNN *>( this );
116004     }
116005 
116006 #  if defined( VULKAN_HPP_USE_REFLECT )
116007 #    if 14 <= VULKAN_HPP_CPP_VERSION
116008     auto
116009 #    else
116010     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ViSurfaceCreateFlagsNN const &, void * const &>
116011 #    endif
reflectVULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN116012       reflect() const VULKAN_HPP_NOEXCEPT
116013     {
116014       return std::tie( sType, pNext, flags, window );
116015     }
116016 #  endif
116017 
116018 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
116019     auto operator<=>( ViSurfaceCreateInfoNN const & ) const = default;
116020 #  else
operator ==VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN116021     bool operator==( ViSurfaceCreateInfoNN const & rhs ) const VULKAN_HPP_NOEXCEPT
116022     {
116023 #    if defined( VULKAN_HPP_USE_REFLECT )
116024       return this->reflect() == rhs.reflect();
116025 #    else
116026       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( window == rhs.window );
116027 #    endif
116028     }
116029 
operator !=VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN116030     bool operator!=( ViSurfaceCreateInfoNN const & rhs ) const VULKAN_HPP_NOEXCEPT
116031     {
116032       return !operator==( rhs );
116033     }
116034 #  endif
116035 
116036   public:
116037     VULKAN_HPP_NAMESPACE::StructureType          sType  = StructureType::eViSurfaceCreateInfoNN;
116038     const void *                                 pNext  = {};
116039     VULKAN_HPP_NAMESPACE::ViSurfaceCreateFlagsNN flags  = {};
116040     void *                                       window = {};
116041   };
116042 
116043   template <>
116044   struct CppType<StructureType, StructureType::eViSurfaceCreateInfoNN>
116045   {
116046     using Type = ViSurfaceCreateInfoNN;
116047   };
116048 #endif /*VK_USE_PLATFORM_VI_NN*/
116049 
116050   struct VideoPictureResourceInfoKHR
116051   {
116052     using NativeType = VkVideoPictureResourceInfoKHR;
116053 
116054     static const bool                                  allowDuplicate = false;
116055     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoPictureResourceInfoKHR;
116056 
116057 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoPictureResourceInfoKHRVULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR116058     VULKAN_HPP_CONSTEXPR VideoPictureResourceInfoKHR( VULKAN_HPP_NAMESPACE::Offset2D  codedOffset_      = {},
116059                                                       VULKAN_HPP_NAMESPACE::Extent2D  codedExtent_      = {},
116060                                                       uint32_t                        baseArrayLayer_   = {},
116061                                                       VULKAN_HPP_NAMESPACE::ImageView imageViewBinding_ = {},
116062                                                       const void *                    pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
116063       : pNext{ pNext_ }
116064       , codedOffset{ codedOffset_ }
116065       , codedExtent{ codedExtent_ }
116066       , baseArrayLayer{ baseArrayLayer_ }
116067       , imageViewBinding{ imageViewBinding_ }
116068     {
116069     }
116070 
116071     VULKAN_HPP_CONSTEXPR VideoPictureResourceInfoKHR( VideoPictureResourceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116072 
VideoPictureResourceInfoKHRVULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR116073     VideoPictureResourceInfoKHR( VkVideoPictureResourceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
116074       : VideoPictureResourceInfoKHR( *reinterpret_cast<VideoPictureResourceInfoKHR const *>( &rhs ) )
116075     {
116076     }
116077 
116078     VideoPictureResourceInfoKHR & operator=( VideoPictureResourceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116079 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
116080 
operator =VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR116081     VideoPictureResourceInfoKHR & operator=( VkVideoPictureResourceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
116082     {
116083       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR const *>( &rhs );
116084       return *this;
116085     }
116086 
116087 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR116088     VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
116089     {
116090       pNext = pNext_;
116091       return *this;
116092     }
116093 
setCodedOffsetVULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR116094     VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceInfoKHR & setCodedOffset( VULKAN_HPP_NAMESPACE::Offset2D const & codedOffset_ ) VULKAN_HPP_NOEXCEPT
116095     {
116096       codedOffset = codedOffset_;
116097       return *this;
116098     }
116099 
setCodedExtentVULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR116100     VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceInfoKHR & setCodedExtent( VULKAN_HPP_NAMESPACE::Extent2D const & codedExtent_ ) VULKAN_HPP_NOEXCEPT
116101     {
116102       codedExtent = codedExtent_;
116103       return *this;
116104     }
116105 
setBaseArrayLayerVULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR116106     VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceInfoKHR & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT
116107     {
116108       baseArrayLayer = baseArrayLayer_;
116109       return *this;
116110     }
116111 
setImageViewBindingVULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR116112     VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceInfoKHR & setImageViewBinding( VULKAN_HPP_NAMESPACE::ImageView imageViewBinding_ ) VULKAN_HPP_NOEXCEPT
116113     {
116114       imageViewBinding = imageViewBinding_;
116115       return *this;
116116     }
116117 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
116118 
operator VkVideoPictureResourceInfoKHR const&VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR116119     operator VkVideoPictureResourceInfoKHR const &() const VULKAN_HPP_NOEXCEPT
116120     {
116121       return *reinterpret_cast<const VkVideoPictureResourceInfoKHR *>( this );
116122     }
116123 
operator VkVideoPictureResourceInfoKHR&VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR116124     operator VkVideoPictureResourceInfoKHR &() VULKAN_HPP_NOEXCEPT
116125     {
116126       return *reinterpret_cast<VkVideoPictureResourceInfoKHR *>( this );
116127     }
116128 
116129 #if defined( VULKAN_HPP_USE_REFLECT )
116130 #  if 14 <= VULKAN_HPP_CPP_VERSION
116131     auto
116132 #  else
116133     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
116134                const void * const &,
116135                VULKAN_HPP_NAMESPACE::Offset2D const &,
116136                VULKAN_HPP_NAMESPACE::Extent2D const &,
116137                uint32_t const &,
116138                VULKAN_HPP_NAMESPACE::ImageView const &>
116139 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR116140       reflect() const VULKAN_HPP_NOEXCEPT
116141     {
116142       return std::tie( sType, pNext, codedOffset, codedExtent, baseArrayLayer, imageViewBinding );
116143     }
116144 #endif
116145 
116146 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
116147     auto operator<=>( VideoPictureResourceInfoKHR const & ) const = default;
116148 #else
operator ==VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR116149     bool operator==( VideoPictureResourceInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
116150     {
116151 #  if defined( VULKAN_HPP_USE_REFLECT )
116152       return this->reflect() == rhs.reflect();
116153 #  else
116154       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( codedOffset == rhs.codedOffset ) && ( codedExtent == rhs.codedExtent ) &&
116155              ( baseArrayLayer == rhs.baseArrayLayer ) && ( imageViewBinding == rhs.imageViewBinding );
116156 #  endif
116157     }
116158 
operator !=VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR116159     bool operator!=( VideoPictureResourceInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
116160     {
116161       return !operator==( rhs );
116162     }
116163 #endif
116164 
116165   public:
116166     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::eVideoPictureResourceInfoKHR;
116167     const void *                        pNext            = {};
116168     VULKAN_HPP_NAMESPACE::Offset2D      codedOffset      = {};
116169     VULKAN_HPP_NAMESPACE::Extent2D      codedExtent      = {};
116170     uint32_t                            baseArrayLayer   = {};
116171     VULKAN_HPP_NAMESPACE::ImageView     imageViewBinding = {};
116172   };
116173 
116174   template <>
116175   struct CppType<StructureType, StructureType::eVideoPictureResourceInfoKHR>
116176   {
116177     using Type = VideoPictureResourceInfoKHR;
116178   };
116179 
116180   struct VideoReferenceSlotInfoKHR
116181   {
116182     using NativeType = VkVideoReferenceSlotInfoKHR;
116183 
116184     static const bool                                  allowDuplicate = false;
116185     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoReferenceSlotInfoKHR;
116186 
116187 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoReferenceSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR116188     VULKAN_HPP_CONSTEXPR VideoReferenceSlotInfoKHR( int32_t                                                   slotIndex_        = {},
116189                                                     const VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR * pPictureResource_ = {},
116190                                                     const void *                                              pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
116191       : pNext{ pNext_ }
116192       , slotIndex{ slotIndex_ }
116193       , pPictureResource{ pPictureResource_ }
116194     {
116195     }
116196 
116197     VULKAN_HPP_CONSTEXPR VideoReferenceSlotInfoKHR( VideoReferenceSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116198 
VideoReferenceSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR116199     VideoReferenceSlotInfoKHR( VkVideoReferenceSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
116200       : VideoReferenceSlotInfoKHR( *reinterpret_cast<VideoReferenceSlotInfoKHR const *>( &rhs ) )
116201     {
116202     }
116203 
116204     VideoReferenceSlotInfoKHR & operator=( VideoReferenceSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116205 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
116206 
operator =VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR116207     VideoReferenceSlotInfoKHR & operator=( VkVideoReferenceSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
116208     {
116209       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR const *>( &rhs );
116210       return *this;
116211     }
116212 
116213 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR116214     VULKAN_HPP_CONSTEXPR_14 VideoReferenceSlotInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
116215     {
116216       pNext = pNext_;
116217       return *this;
116218     }
116219 
setSlotIndexVULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR116220     VULKAN_HPP_CONSTEXPR_14 VideoReferenceSlotInfoKHR & setSlotIndex( int32_t slotIndex_ ) VULKAN_HPP_NOEXCEPT
116221     {
116222       slotIndex = slotIndex_;
116223       return *this;
116224     }
116225 
116226     VULKAN_HPP_CONSTEXPR_14 VideoReferenceSlotInfoKHR &
setPPictureResourceVULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR116227       setPPictureResource( const VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR * pPictureResource_ ) VULKAN_HPP_NOEXCEPT
116228     {
116229       pPictureResource = pPictureResource_;
116230       return *this;
116231     }
116232 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
116233 
operator VkVideoReferenceSlotInfoKHR const&VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR116234     operator VkVideoReferenceSlotInfoKHR const &() const VULKAN_HPP_NOEXCEPT
116235     {
116236       return *reinterpret_cast<const VkVideoReferenceSlotInfoKHR *>( this );
116237     }
116238 
operator VkVideoReferenceSlotInfoKHR&VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR116239     operator VkVideoReferenceSlotInfoKHR &() VULKAN_HPP_NOEXCEPT
116240     {
116241       return *reinterpret_cast<VkVideoReferenceSlotInfoKHR *>( this );
116242     }
116243 
116244 #if defined( VULKAN_HPP_USE_REFLECT )
116245 #  if 14 <= VULKAN_HPP_CPP_VERSION
116246     auto
116247 #  else
116248     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
116249                const void * const &,
116250                int32_t const &,
116251                const VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR * const &>
116252 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR116253       reflect() const VULKAN_HPP_NOEXCEPT
116254     {
116255       return std::tie( sType, pNext, slotIndex, pPictureResource );
116256     }
116257 #endif
116258 
116259 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
116260     auto operator<=>( VideoReferenceSlotInfoKHR const & ) const = default;
116261 #else
operator ==VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR116262     bool operator==( VideoReferenceSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
116263     {
116264 #  if defined( VULKAN_HPP_USE_REFLECT )
116265       return this->reflect() == rhs.reflect();
116266 #  else
116267       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( slotIndex == rhs.slotIndex ) && ( pPictureResource == rhs.pPictureResource );
116268 #  endif
116269     }
116270 
operator !=VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR116271     bool operator!=( VideoReferenceSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
116272     {
116273       return !operator==( rhs );
116274     }
116275 #endif
116276 
116277   public:
116278     VULKAN_HPP_NAMESPACE::StructureType                       sType            = StructureType::eVideoReferenceSlotInfoKHR;
116279     const void *                                              pNext            = {};
116280     int32_t                                                   slotIndex        = {};
116281     const VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR * pPictureResource = {};
116282   };
116283 
116284   template <>
116285   struct CppType<StructureType, StructureType::eVideoReferenceSlotInfoKHR>
116286   {
116287     using Type = VideoReferenceSlotInfoKHR;
116288   };
116289 
116290   struct VideoBeginCodingInfoKHR
116291   {
116292     using NativeType = VkVideoBeginCodingInfoKHR;
116293 
116294     static const bool                                  allowDuplicate = false;
116295     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoBeginCodingInfoKHR;
116296 
116297 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoBeginCodingInfoKHRVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR116298     VULKAN_HPP_CONSTEXPR VideoBeginCodingInfoKHR( VULKAN_HPP_NAMESPACE::VideoBeginCodingFlagsKHR          flags_                  = {},
116299                                                   VULKAN_HPP_NAMESPACE::VideoSessionKHR                   videoSession_           = {},
116300                                                   VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR         videoSessionParameters_ = {},
116301                                                   uint32_t                                                referenceSlotCount_     = {},
116302                                                   const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pReferenceSlots_        = {},
116303                                                   const void *                                            pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
116304       : pNext{ pNext_ }
116305       , flags{ flags_ }
116306       , videoSession{ videoSession_ }
116307       , videoSessionParameters{ videoSessionParameters_ }
116308       , referenceSlotCount{ referenceSlotCount_ }
116309       , pReferenceSlots{ pReferenceSlots_ }
116310     {
116311     }
116312 
116313     VULKAN_HPP_CONSTEXPR VideoBeginCodingInfoKHR( VideoBeginCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116314 
VideoBeginCodingInfoKHRVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR116315     VideoBeginCodingInfoKHR( VkVideoBeginCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
116316       : VideoBeginCodingInfoKHR( *reinterpret_cast<VideoBeginCodingInfoKHR const *>( &rhs ) )
116317     {
116318     }
116319 
116320 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoBeginCodingInfoKHRVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR116321     VideoBeginCodingInfoKHR( VULKAN_HPP_NAMESPACE::VideoBeginCodingFlagsKHR  flags_,
116322                              VULKAN_HPP_NAMESPACE::VideoSessionKHR           videoSession_,
116323                              VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters_,
116324                              VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR> const & referenceSlots_,
116325                              const void *                                                                                                 pNext_ = nullptr )
116326       : pNext( pNext_ )
116327       , flags( flags_ )
116328       , videoSession( videoSession_ )
116329       , videoSessionParameters( videoSessionParameters_ )
116330       , referenceSlotCount( static_cast<uint32_t>( referenceSlots_.size() ) )
116331       , pReferenceSlots( referenceSlots_.data() )
116332     {
116333     }
116334 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
116335 
116336     VideoBeginCodingInfoKHR & operator=( VideoBeginCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116337 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
116338 
operator =VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR116339     VideoBeginCodingInfoKHR & operator=( VkVideoBeginCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
116340     {
116341       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR const *>( &rhs );
116342       return *this;
116343     }
116344 
116345 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR116346     VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
116347     {
116348       pNext = pNext_;
116349       return *this;
116350     }
116351 
setFlagsVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR116352     VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::VideoBeginCodingFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
116353     {
116354       flags = flags_;
116355       return *this;
116356     }
116357 
setVideoSessionVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR116358     VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & setVideoSession( VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession_ ) VULKAN_HPP_NOEXCEPT
116359     {
116360       videoSession = videoSession_;
116361       return *this;
116362     }
116363 
116364     VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR &
setVideoSessionParametersVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR116365       setVideoSessionParameters( VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters_ ) VULKAN_HPP_NOEXCEPT
116366     {
116367       videoSessionParameters = videoSessionParameters_;
116368       return *this;
116369     }
116370 
setReferenceSlotCountVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR116371     VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & setReferenceSlotCount( uint32_t referenceSlotCount_ ) VULKAN_HPP_NOEXCEPT
116372     {
116373       referenceSlotCount = referenceSlotCount_;
116374       return *this;
116375     }
116376 
116377     VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR &
setPReferenceSlotsVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR116378       setPReferenceSlots( const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pReferenceSlots_ ) VULKAN_HPP_NOEXCEPT
116379     {
116380       pReferenceSlots = pReferenceSlots_;
116381       return *this;
116382     }
116383 
116384 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setReferenceSlotsVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR116385     VideoBeginCodingInfoKHR & setReferenceSlots(
116386       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR> const & referenceSlots_ ) VULKAN_HPP_NOEXCEPT
116387     {
116388       referenceSlotCount = static_cast<uint32_t>( referenceSlots_.size() );
116389       pReferenceSlots    = referenceSlots_.data();
116390       return *this;
116391     }
116392 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
116393 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
116394 
operator VkVideoBeginCodingInfoKHR const&VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR116395     operator VkVideoBeginCodingInfoKHR const &() const VULKAN_HPP_NOEXCEPT
116396     {
116397       return *reinterpret_cast<const VkVideoBeginCodingInfoKHR *>( this );
116398     }
116399 
operator VkVideoBeginCodingInfoKHR&VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR116400     operator VkVideoBeginCodingInfoKHR &() VULKAN_HPP_NOEXCEPT
116401     {
116402       return *reinterpret_cast<VkVideoBeginCodingInfoKHR *>( this );
116403     }
116404 
116405 #if defined( VULKAN_HPP_USE_REFLECT )
116406 #  if 14 <= VULKAN_HPP_CPP_VERSION
116407     auto
116408 #  else
116409     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
116410                const void * const &,
116411                VULKAN_HPP_NAMESPACE::VideoBeginCodingFlagsKHR const &,
116412                VULKAN_HPP_NAMESPACE::VideoSessionKHR const &,
116413                VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR const &,
116414                uint32_t const &,
116415                const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * const &>
116416 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR116417       reflect() const VULKAN_HPP_NOEXCEPT
116418     {
116419       return std::tie( sType, pNext, flags, videoSession, videoSessionParameters, referenceSlotCount, pReferenceSlots );
116420     }
116421 #endif
116422 
116423 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
116424     auto operator<=>( VideoBeginCodingInfoKHR const & ) const = default;
116425 #else
operator ==VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR116426     bool operator==( VideoBeginCodingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
116427     {
116428 #  if defined( VULKAN_HPP_USE_REFLECT )
116429       return this->reflect() == rhs.reflect();
116430 #  else
116431       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( videoSession == rhs.videoSession ) &&
116432              ( videoSessionParameters == rhs.videoSessionParameters ) && ( referenceSlotCount == rhs.referenceSlotCount ) &&
116433              ( pReferenceSlots == rhs.pReferenceSlots );
116434 #  endif
116435     }
116436 
operator !=VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR116437     bool operator!=( VideoBeginCodingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
116438     {
116439       return !operator==( rhs );
116440     }
116441 #endif
116442 
116443   public:
116444     VULKAN_HPP_NAMESPACE::StructureType                     sType                  = StructureType::eVideoBeginCodingInfoKHR;
116445     const void *                                            pNext                  = {};
116446     VULKAN_HPP_NAMESPACE::VideoBeginCodingFlagsKHR          flags                  = {};
116447     VULKAN_HPP_NAMESPACE::VideoSessionKHR                   videoSession           = {};
116448     VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR         videoSessionParameters = {};
116449     uint32_t                                                referenceSlotCount     = {};
116450     const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pReferenceSlots        = {};
116451   };
116452 
116453   template <>
116454   struct CppType<StructureType, StructureType::eVideoBeginCodingInfoKHR>
116455   {
116456     using Type = VideoBeginCodingInfoKHR;
116457   };
116458 
116459   struct VideoCapabilitiesKHR
116460   {
116461     using NativeType = VkVideoCapabilitiesKHR;
116462 
116463     static const bool                                  allowDuplicate = false;
116464     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoCapabilitiesKHR;
116465 
116466 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoCapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR116467     VULKAN_HPP_CONSTEXPR_14 VideoCapabilitiesKHR( VULKAN_HPP_NAMESPACE::VideoCapabilityFlagsKHR flags_                             = {},
116468                                                   VULKAN_HPP_NAMESPACE::DeviceSize              minBitstreamBufferOffsetAlignment_ = {},
116469                                                   VULKAN_HPP_NAMESPACE::DeviceSize              minBitstreamBufferSizeAlignment_   = {},
116470                                                   VULKAN_HPP_NAMESPACE::Extent2D                pictureAccessGranularity_          = {},
116471                                                   VULKAN_HPP_NAMESPACE::Extent2D                minCodedExtent_                    = {},
116472                                                   VULKAN_HPP_NAMESPACE::Extent2D                maxCodedExtent_                    = {},
116473                                                   uint32_t                                      maxDpbSlots_                       = {},
116474                                                   uint32_t                                      maxActiveReferencePictures_        = {},
116475                                                   VULKAN_HPP_NAMESPACE::ExtensionProperties     stdHeaderVersion_                  = {},
116476                                                   void *                                        pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
116477       : pNext{ pNext_ }
116478       , flags{ flags_ }
116479       , minBitstreamBufferOffsetAlignment{ minBitstreamBufferOffsetAlignment_ }
116480       , minBitstreamBufferSizeAlignment{ minBitstreamBufferSizeAlignment_ }
116481       , pictureAccessGranularity{ pictureAccessGranularity_ }
116482       , minCodedExtent{ minCodedExtent_ }
116483       , maxCodedExtent{ maxCodedExtent_ }
116484       , maxDpbSlots{ maxDpbSlots_ }
116485       , maxActiveReferencePictures{ maxActiveReferencePictures_ }
116486       , stdHeaderVersion{ stdHeaderVersion_ }
116487     {
116488     }
116489 
116490     VULKAN_HPP_CONSTEXPR_14 VideoCapabilitiesKHR( VideoCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116491 
VideoCapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR116492     VideoCapabilitiesKHR( VkVideoCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
116493       : VideoCapabilitiesKHR( *reinterpret_cast<VideoCapabilitiesKHR const *>( &rhs ) )
116494     {
116495     }
116496 
116497     VideoCapabilitiesKHR & operator=( VideoCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116498 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
116499 
operator =VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR116500     VideoCapabilitiesKHR & operator=( VkVideoCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
116501     {
116502       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR const *>( &rhs );
116503       return *this;
116504     }
116505 
operator VkVideoCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR116506     operator VkVideoCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
116507     {
116508       return *reinterpret_cast<const VkVideoCapabilitiesKHR *>( this );
116509     }
116510 
operator VkVideoCapabilitiesKHR&VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR116511     operator VkVideoCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
116512     {
116513       return *reinterpret_cast<VkVideoCapabilitiesKHR *>( this );
116514     }
116515 
116516 #if defined( VULKAN_HPP_USE_REFLECT )
116517 #  if 14 <= VULKAN_HPP_CPP_VERSION
116518     auto
116519 #  else
116520     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
116521                void * const &,
116522                VULKAN_HPP_NAMESPACE::VideoCapabilityFlagsKHR const &,
116523                VULKAN_HPP_NAMESPACE::DeviceSize const &,
116524                VULKAN_HPP_NAMESPACE::DeviceSize const &,
116525                VULKAN_HPP_NAMESPACE::Extent2D const &,
116526                VULKAN_HPP_NAMESPACE::Extent2D const &,
116527                VULKAN_HPP_NAMESPACE::Extent2D const &,
116528                uint32_t const &,
116529                uint32_t const &,
116530                VULKAN_HPP_NAMESPACE::ExtensionProperties const &>
116531 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR116532       reflect() const VULKAN_HPP_NOEXCEPT
116533     {
116534       return std::tie( sType,
116535                        pNext,
116536                        flags,
116537                        minBitstreamBufferOffsetAlignment,
116538                        minBitstreamBufferSizeAlignment,
116539                        pictureAccessGranularity,
116540                        minCodedExtent,
116541                        maxCodedExtent,
116542                        maxDpbSlots,
116543                        maxActiveReferencePictures,
116544                        stdHeaderVersion );
116545     }
116546 #endif
116547 
116548 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
116549     auto operator<=>( VideoCapabilitiesKHR const & ) const = default;
116550 #else
operator ==VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR116551     bool operator==( VideoCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
116552     {
116553 #  if defined( VULKAN_HPP_USE_REFLECT )
116554       return this->reflect() == rhs.reflect();
116555 #  else
116556       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) &&
116557              ( minBitstreamBufferOffsetAlignment == rhs.minBitstreamBufferOffsetAlignment ) &&
116558              ( minBitstreamBufferSizeAlignment == rhs.minBitstreamBufferSizeAlignment ) && ( pictureAccessGranularity == rhs.pictureAccessGranularity ) &&
116559              ( minCodedExtent == rhs.minCodedExtent ) && ( maxCodedExtent == rhs.maxCodedExtent ) && ( maxDpbSlots == rhs.maxDpbSlots ) &&
116560              ( maxActiveReferencePictures == rhs.maxActiveReferencePictures ) && ( stdHeaderVersion == rhs.stdHeaderVersion );
116561 #  endif
116562     }
116563 
operator !=VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR116564     bool operator!=( VideoCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
116565     {
116566       return !operator==( rhs );
116567     }
116568 #endif
116569 
116570   public:
116571     VULKAN_HPP_NAMESPACE::StructureType           sType                             = StructureType::eVideoCapabilitiesKHR;
116572     void *                                        pNext                             = {};
116573     VULKAN_HPP_NAMESPACE::VideoCapabilityFlagsKHR flags                             = {};
116574     VULKAN_HPP_NAMESPACE::DeviceSize              minBitstreamBufferOffsetAlignment = {};
116575     VULKAN_HPP_NAMESPACE::DeviceSize              minBitstreamBufferSizeAlignment   = {};
116576     VULKAN_HPP_NAMESPACE::Extent2D                pictureAccessGranularity          = {};
116577     VULKAN_HPP_NAMESPACE::Extent2D                minCodedExtent                    = {};
116578     VULKAN_HPP_NAMESPACE::Extent2D                maxCodedExtent                    = {};
116579     uint32_t                                      maxDpbSlots                       = {};
116580     uint32_t                                      maxActiveReferencePictures        = {};
116581     VULKAN_HPP_NAMESPACE::ExtensionProperties     stdHeaderVersion                  = {};
116582   };
116583 
116584   template <>
116585   struct CppType<StructureType, StructureType::eVideoCapabilitiesKHR>
116586   {
116587     using Type = VideoCapabilitiesKHR;
116588   };
116589 
116590   struct VideoCodingControlInfoKHR
116591   {
116592     using NativeType = VkVideoCodingControlInfoKHR;
116593 
116594     static const bool                                  allowDuplicate = false;
116595     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoCodingControlInfoKHR;
116596 
116597 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoCodingControlInfoKHRVULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR116598     VULKAN_HPP_CONSTEXPR VideoCodingControlInfoKHR( VULKAN_HPP_NAMESPACE::VideoCodingControlFlagsKHR flags_ = {},
116599                                                     const void *                                     pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
116600       : pNext{ pNext_ }
116601       , flags{ flags_ }
116602     {
116603     }
116604 
116605     VULKAN_HPP_CONSTEXPR VideoCodingControlInfoKHR( VideoCodingControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116606 
VideoCodingControlInfoKHRVULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR116607     VideoCodingControlInfoKHR( VkVideoCodingControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
116608       : VideoCodingControlInfoKHR( *reinterpret_cast<VideoCodingControlInfoKHR const *>( &rhs ) )
116609     {
116610     }
116611 
116612     VideoCodingControlInfoKHR & operator=( VideoCodingControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116613 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
116614 
operator =VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR116615     VideoCodingControlInfoKHR & operator=( VkVideoCodingControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
116616     {
116617       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR const *>( &rhs );
116618       return *this;
116619     }
116620 
116621 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR116622     VULKAN_HPP_CONSTEXPR_14 VideoCodingControlInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
116623     {
116624       pNext = pNext_;
116625       return *this;
116626     }
116627 
setFlagsVULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR116628     VULKAN_HPP_CONSTEXPR_14 VideoCodingControlInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::VideoCodingControlFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
116629     {
116630       flags = flags_;
116631       return *this;
116632     }
116633 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
116634 
operator VkVideoCodingControlInfoKHR const&VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR116635     operator VkVideoCodingControlInfoKHR const &() const VULKAN_HPP_NOEXCEPT
116636     {
116637       return *reinterpret_cast<const VkVideoCodingControlInfoKHR *>( this );
116638     }
116639 
operator VkVideoCodingControlInfoKHR&VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR116640     operator VkVideoCodingControlInfoKHR &() VULKAN_HPP_NOEXCEPT
116641     {
116642       return *reinterpret_cast<VkVideoCodingControlInfoKHR *>( this );
116643     }
116644 
116645 #if defined( VULKAN_HPP_USE_REFLECT )
116646 #  if 14 <= VULKAN_HPP_CPP_VERSION
116647     auto
116648 #  else
116649     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::VideoCodingControlFlagsKHR const &>
116650 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR116651       reflect() const VULKAN_HPP_NOEXCEPT
116652     {
116653       return std::tie( sType, pNext, flags );
116654     }
116655 #endif
116656 
116657 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
116658     auto operator<=>( VideoCodingControlInfoKHR const & ) const = default;
116659 #else
operator ==VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR116660     bool operator==( VideoCodingControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
116661     {
116662 #  if defined( VULKAN_HPP_USE_REFLECT )
116663       return this->reflect() == rhs.reflect();
116664 #  else
116665       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
116666 #  endif
116667     }
116668 
operator !=VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR116669     bool operator!=( VideoCodingControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
116670     {
116671       return !operator==( rhs );
116672     }
116673 #endif
116674 
116675   public:
116676     VULKAN_HPP_NAMESPACE::StructureType              sType = StructureType::eVideoCodingControlInfoKHR;
116677     const void *                                     pNext = {};
116678     VULKAN_HPP_NAMESPACE::VideoCodingControlFlagsKHR flags = {};
116679   };
116680 
116681   template <>
116682   struct CppType<StructureType, StructureType::eVideoCodingControlInfoKHR>
116683   {
116684     using Type = VideoCodingControlInfoKHR;
116685   };
116686 
116687   struct VideoDecodeAV1CapabilitiesKHR
116688   {
116689     using NativeType = VkVideoDecodeAV1CapabilitiesKHR;
116690 
116691     static const bool                                  allowDuplicate = false;
116692     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeAv1CapabilitiesKHR;
116693 
116694 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeAV1CapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR116695     VULKAN_HPP_CONSTEXPR VideoDecodeAV1CapabilitiesKHR( StdVideoAV1Level maxLevel_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
116696       : pNext{ pNext_ }
116697       , maxLevel{ maxLevel_ }
116698     {
116699     }
116700 
116701     VULKAN_HPP_CONSTEXPR VideoDecodeAV1CapabilitiesKHR( VideoDecodeAV1CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116702 
VideoDecodeAV1CapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR116703     VideoDecodeAV1CapabilitiesKHR( VkVideoDecodeAV1CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
116704       : VideoDecodeAV1CapabilitiesKHR( *reinterpret_cast<VideoDecodeAV1CapabilitiesKHR const *>( &rhs ) )
116705     {
116706     }
116707 
116708     VideoDecodeAV1CapabilitiesKHR & operator=( VideoDecodeAV1CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116709 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
116710 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR116711     VideoDecodeAV1CapabilitiesKHR & operator=( VkVideoDecodeAV1CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
116712     {
116713       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR const *>( &rhs );
116714       return *this;
116715     }
116716 
operator VkVideoDecodeAV1CapabilitiesKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR116717     operator VkVideoDecodeAV1CapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
116718     {
116719       return *reinterpret_cast<const VkVideoDecodeAV1CapabilitiesKHR *>( this );
116720     }
116721 
operator VkVideoDecodeAV1CapabilitiesKHR&VULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR116722     operator VkVideoDecodeAV1CapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
116723     {
116724       return *reinterpret_cast<VkVideoDecodeAV1CapabilitiesKHR *>( this );
116725     }
116726 
116727 #if defined( VULKAN_HPP_USE_REFLECT )
116728 #  if 14 <= VULKAN_HPP_CPP_VERSION
116729     auto
116730 #  else
116731     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, StdVideoAV1Level const &>
116732 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR116733       reflect() const VULKAN_HPP_NOEXCEPT
116734     {
116735       return std::tie( sType, pNext, maxLevel );
116736     }
116737 #endif
116738 
116739 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR116740     std::strong_ordering operator<=>( VideoDecodeAV1CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
116741     {
116742       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
116743         return cmp;
116744       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
116745         return cmp;
116746       if ( auto cmp = memcmp( &maxLevel, &rhs.maxLevel, sizeof( StdVideoAV1Level ) ); cmp != 0 )
116747         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
116748 
116749       return std::strong_ordering::equivalent;
116750     }
116751 #endif
116752 
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR116753     bool operator==( VideoDecodeAV1CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
116754     {
116755       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &maxLevel, &rhs.maxLevel, sizeof( StdVideoAV1Level ) ) == 0 );
116756     }
116757 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR116758     bool operator!=( VideoDecodeAV1CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
116759     {
116760       return !operator==( rhs );
116761     }
116762 
116763   public:
116764     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eVideoDecodeAv1CapabilitiesKHR;
116765     void *                              pNext    = {};
116766     StdVideoAV1Level                    maxLevel = {};
116767   };
116768 
116769   template <>
116770   struct CppType<StructureType, StructureType::eVideoDecodeAv1CapabilitiesKHR>
116771   {
116772     using Type = VideoDecodeAV1CapabilitiesKHR;
116773   };
116774 
116775   struct VideoDecodeAV1DpbSlotInfoKHR
116776   {
116777     using NativeType = VkVideoDecodeAV1DpbSlotInfoKHR;
116778 
116779     static const bool                                  allowDuplicate = false;
116780     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeAv1DpbSlotInfoKHR;
116781 
116782 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeAV1DpbSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR116783     VULKAN_HPP_CONSTEXPR VideoDecodeAV1DpbSlotInfoKHR( const StdVideoDecodeAV1ReferenceInfo * pStdReferenceInfo_ = {},
116784                                                        const void *                           pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
116785       : pNext{ pNext_ }
116786       , pStdReferenceInfo{ pStdReferenceInfo_ }
116787     {
116788     }
116789 
116790     VULKAN_HPP_CONSTEXPR VideoDecodeAV1DpbSlotInfoKHR( VideoDecodeAV1DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116791 
VideoDecodeAV1DpbSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR116792     VideoDecodeAV1DpbSlotInfoKHR( VkVideoDecodeAV1DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
116793       : VideoDecodeAV1DpbSlotInfoKHR( *reinterpret_cast<VideoDecodeAV1DpbSlotInfoKHR const *>( &rhs ) )
116794     {
116795     }
116796 
116797     VideoDecodeAV1DpbSlotInfoKHR & operator=( VideoDecodeAV1DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116798 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
116799 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR116800     VideoDecodeAV1DpbSlotInfoKHR & operator=( VkVideoDecodeAV1DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
116801     {
116802       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR const *>( &rhs );
116803       return *this;
116804     }
116805 
116806 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR116807     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1DpbSlotInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
116808     {
116809       pNext = pNext_;
116810       return *this;
116811     }
116812 
setPStdReferenceInfoVULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR116813     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1DpbSlotInfoKHR & setPStdReferenceInfo( const StdVideoDecodeAV1ReferenceInfo * pStdReferenceInfo_ ) VULKAN_HPP_NOEXCEPT
116814     {
116815       pStdReferenceInfo = pStdReferenceInfo_;
116816       return *this;
116817     }
116818 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
116819 
operator VkVideoDecodeAV1DpbSlotInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR116820     operator VkVideoDecodeAV1DpbSlotInfoKHR const &() const VULKAN_HPP_NOEXCEPT
116821     {
116822       return *reinterpret_cast<const VkVideoDecodeAV1DpbSlotInfoKHR *>( this );
116823     }
116824 
operator VkVideoDecodeAV1DpbSlotInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR116825     operator VkVideoDecodeAV1DpbSlotInfoKHR &() VULKAN_HPP_NOEXCEPT
116826     {
116827       return *reinterpret_cast<VkVideoDecodeAV1DpbSlotInfoKHR *>( this );
116828     }
116829 
116830 #if defined( VULKAN_HPP_USE_REFLECT )
116831 #  if 14 <= VULKAN_HPP_CPP_VERSION
116832     auto
116833 #  else
116834     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const StdVideoDecodeAV1ReferenceInfo * const &>
116835 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR116836       reflect() const VULKAN_HPP_NOEXCEPT
116837     {
116838       return std::tie( sType, pNext, pStdReferenceInfo );
116839     }
116840 #endif
116841 
116842 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
116843     auto operator<=>( VideoDecodeAV1DpbSlotInfoKHR const & ) const = default;
116844 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR116845     bool operator==( VideoDecodeAV1DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
116846     {
116847 #  if defined( VULKAN_HPP_USE_REFLECT )
116848       return this->reflect() == rhs.reflect();
116849 #  else
116850       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdReferenceInfo == rhs.pStdReferenceInfo );
116851 #  endif
116852     }
116853 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR116854     bool operator!=( VideoDecodeAV1DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
116855     {
116856       return !operator==( rhs );
116857     }
116858 #endif
116859 
116860   public:
116861     VULKAN_HPP_NAMESPACE::StructureType    sType             = StructureType::eVideoDecodeAv1DpbSlotInfoKHR;
116862     const void *                           pNext             = {};
116863     const StdVideoDecodeAV1ReferenceInfo * pStdReferenceInfo = {};
116864   };
116865 
116866   template <>
116867   struct CppType<StructureType, StructureType::eVideoDecodeAv1DpbSlotInfoKHR>
116868   {
116869     using Type = VideoDecodeAV1DpbSlotInfoKHR;
116870   };
116871 
116872   struct VideoDecodeAV1PictureInfoKHR
116873   {
116874     using NativeType = VkVideoDecodeAV1PictureInfoKHR;
116875 
116876     static const bool                                  allowDuplicate = false;
116877     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeAv1PictureInfoKHR;
116878 
116879 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeAV1PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR116880     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR( const StdVideoDecodeAV1PictureInfo *                                   pStdPictureInfo_          = {},
116881                                                           std::array<int32_t, VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR> const & referenceNameSlotIndices_ = {},
116882                                                           uint32_t                                                               frameHeaderOffset_        = {},
116883                                                           uint32_t                                                               tileCount_                = {},
116884                                                           const uint32_t *                                                       pTileOffsets_             = {},
116885                                                           const uint32_t *                                                       pTileSizes_               = {},
116886                                                           const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
116887       : pNext{ pNext_ }
116888       , pStdPictureInfo{ pStdPictureInfo_ }
116889       , referenceNameSlotIndices{ referenceNameSlotIndices_ }
116890       , frameHeaderOffset{ frameHeaderOffset_ }
116891       , tileCount{ tileCount_ }
116892       , pTileOffsets{ pTileOffsets_ }
116893       , pTileSizes{ pTileSizes_ }
116894     {
116895     }
116896 
116897     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR( VideoDecodeAV1PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116898 
VideoDecodeAV1PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR116899     VideoDecodeAV1PictureInfoKHR( VkVideoDecodeAV1PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
116900       : VideoDecodeAV1PictureInfoKHR( *reinterpret_cast<VideoDecodeAV1PictureInfoKHR const *>( &rhs ) )
116901     {
116902     }
116903 
116904 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoDecodeAV1PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR116905     VideoDecodeAV1PictureInfoKHR( const StdVideoDecodeAV1PictureInfo *                                   pStdPictureInfo_,
116906                                   std::array<int32_t, VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR> const & referenceNameSlotIndices_,
116907                                   uint32_t                                                               frameHeaderOffset_,
116908                                   VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &  tileOffsets_,
116909                                   VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &  tileSizes_ = {},
116910                                   const void *                                                           pNext_     = nullptr )
116911       : pNext( pNext_ )
116912       , pStdPictureInfo( pStdPictureInfo_ )
116913       , referenceNameSlotIndices( referenceNameSlotIndices_ )
116914       , frameHeaderOffset( frameHeaderOffset_ )
116915       , tileCount( static_cast<uint32_t>( tileOffsets_.size() ) )
116916       , pTileOffsets( tileOffsets_.data() )
116917       , pTileSizes( tileSizes_.data() )
116918     {
116919 #    ifdef VULKAN_HPP_NO_EXCEPTIONS
116920       VULKAN_HPP_ASSERT( tileOffsets_.size() == tileSizes_.size() );
116921 #    else
116922       if ( tileOffsets_.size() != tileSizes_.size() )
116923       {
116924         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
116925                           "::VideoDecodeAV1PictureInfoKHR::VideoDecodeAV1PictureInfoKHR: tileOffsets_.size() != tileSizes_.size()" );
116926       }
116927 #    endif /*VULKAN_HPP_NO_EXCEPTIONS*/
116928     }
116929 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
116930 
116931     VideoDecodeAV1PictureInfoKHR & operator=( VideoDecodeAV1PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
116932 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
116933 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR116934     VideoDecodeAV1PictureInfoKHR & operator=( VkVideoDecodeAV1PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
116935     {
116936       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR const *>( &rhs );
116937       return *this;
116938     }
116939 
116940 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR116941     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
116942     {
116943       pNext = pNext_;
116944       return *this;
116945     }
116946 
setPStdPictureInfoVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR116947     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR & setPStdPictureInfo( const StdVideoDecodeAV1PictureInfo * pStdPictureInfo_ ) VULKAN_HPP_NOEXCEPT
116948     {
116949       pStdPictureInfo = pStdPictureInfo_;
116950       return *this;
116951     }
116952 
116953     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR &
setReferenceNameSlotIndicesVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR116954       setReferenceNameSlotIndices( std::array<int32_t, VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR> referenceNameSlotIndices_ ) VULKAN_HPP_NOEXCEPT
116955     {
116956       referenceNameSlotIndices = referenceNameSlotIndices_;
116957       return *this;
116958     }
116959 
setFrameHeaderOffsetVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR116960     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR & setFrameHeaderOffset( uint32_t frameHeaderOffset_ ) VULKAN_HPP_NOEXCEPT
116961     {
116962       frameHeaderOffset = frameHeaderOffset_;
116963       return *this;
116964     }
116965 
setTileCountVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR116966     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR & setTileCount( uint32_t tileCount_ ) VULKAN_HPP_NOEXCEPT
116967     {
116968       tileCount = tileCount_;
116969       return *this;
116970     }
116971 
setPTileOffsetsVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR116972     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR & setPTileOffsets( const uint32_t * pTileOffsets_ ) VULKAN_HPP_NOEXCEPT
116973     {
116974       pTileOffsets = pTileOffsets_;
116975       return *this;
116976     }
116977 
116978 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setTileOffsetsVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR116979     VideoDecodeAV1PictureInfoKHR & setTileOffsets( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & tileOffsets_ ) VULKAN_HPP_NOEXCEPT
116980     {
116981       tileCount    = static_cast<uint32_t>( tileOffsets_.size() );
116982       pTileOffsets = tileOffsets_.data();
116983       return *this;
116984     }
116985 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
116986 
setPTileSizesVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR116987     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR & setPTileSizes( const uint32_t * pTileSizes_ ) VULKAN_HPP_NOEXCEPT
116988     {
116989       pTileSizes = pTileSizes_;
116990       return *this;
116991     }
116992 
116993 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setTileSizesVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR116994     VideoDecodeAV1PictureInfoKHR & setTileSizes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & tileSizes_ ) VULKAN_HPP_NOEXCEPT
116995     {
116996       tileCount  = static_cast<uint32_t>( tileSizes_.size() );
116997       pTileSizes = tileSizes_.data();
116998       return *this;
116999     }
117000 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
117001 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
117002 
operator VkVideoDecodeAV1PictureInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR117003     operator VkVideoDecodeAV1PictureInfoKHR const &() const VULKAN_HPP_NOEXCEPT
117004     {
117005       return *reinterpret_cast<const VkVideoDecodeAV1PictureInfoKHR *>( this );
117006     }
117007 
operator VkVideoDecodeAV1PictureInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR117008     operator VkVideoDecodeAV1PictureInfoKHR &() VULKAN_HPP_NOEXCEPT
117009     {
117010       return *reinterpret_cast<VkVideoDecodeAV1PictureInfoKHR *>( this );
117011     }
117012 
117013 #if defined( VULKAN_HPP_USE_REFLECT )
117014 #  if 14 <= VULKAN_HPP_CPP_VERSION
117015     auto
117016 #  else
117017     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
117018                const void * const &,
117019                const StdVideoDecodeAV1PictureInfo * const &,
117020                VULKAN_HPP_NAMESPACE::ArrayWrapper1D<int32_t, VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR> const &,
117021                uint32_t const &,
117022                uint32_t const &,
117023                const uint32_t * const &,
117024                const uint32_t * const &>
117025 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR117026       reflect() const VULKAN_HPP_NOEXCEPT
117027     {
117028       return std::tie( sType, pNext, pStdPictureInfo, referenceNameSlotIndices, frameHeaderOffset, tileCount, pTileOffsets, pTileSizes );
117029     }
117030 #endif
117031 
117032 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
117033     auto operator<=>( VideoDecodeAV1PictureInfoKHR const & ) const = default;
117034 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR117035     bool operator==( VideoDecodeAV1PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117036     {
117037 #  if defined( VULKAN_HPP_USE_REFLECT )
117038       return this->reflect() == rhs.reflect();
117039 #  else
117040       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdPictureInfo == rhs.pStdPictureInfo ) &&
117041              ( referenceNameSlotIndices == rhs.referenceNameSlotIndices ) && ( frameHeaderOffset == rhs.frameHeaderOffset ) && ( tileCount == rhs.tileCount ) &&
117042              ( pTileOffsets == rhs.pTileOffsets ) && ( pTileSizes == rhs.pTileSizes );
117043 #  endif
117044     }
117045 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR117046     bool operator!=( VideoDecodeAV1PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117047     {
117048       return !operator==( rhs );
117049     }
117050 #endif
117051 
117052   public:
117053     VULKAN_HPP_NAMESPACE::StructureType                                                      sType           = StructureType::eVideoDecodeAv1PictureInfoKHR;
117054     const void *                                                                             pNext           = {};
117055     const StdVideoDecodeAV1PictureInfo *                                                     pStdPictureInfo = {};
117056     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<int32_t, VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR> referenceNameSlotIndices = {};
117057     uint32_t                                                                                 frameHeaderOffset        = {};
117058     uint32_t                                                                                 tileCount                = {};
117059     const uint32_t *                                                                         pTileOffsets             = {};
117060     const uint32_t *                                                                         pTileSizes               = {};
117061   };
117062 
117063   template <>
117064   struct CppType<StructureType, StructureType::eVideoDecodeAv1PictureInfoKHR>
117065   {
117066     using Type = VideoDecodeAV1PictureInfoKHR;
117067   };
117068 
117069   struct VideoDecodeAV1ProfileInfoKHR
117070   {
117071     using NativeType = VkVideoDecodeAV1ProfileInfoKHR;
117072 
117073     static const bool                                  allowDuplicate = false;
117074     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeAv1ProfileInfoKHR;
117075 
117076 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeAV1ProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR117077     VULKAN_HPP_CONSTEXPR VideoDecodeAV1ProfileInfoKHR( StdVideoAV1Profile           stdProfile_       = {},
117078                                                        VULKAN_HPP_NAMESPACE::Bool32 filmGrainSupport_ = {},
117079                                                        const void *                 pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
117080       : pNext{ pNext_ }
117081       , stdProfile{ stdProfile_ }
117082       , filmGrainSupport{ filmGrainSupport_ }
117083     {
117084     }
117085 
117086     VULKAN_HPP_CONSTEXPR VideoDecodeAV1ProfileInfoKHR( VideoDecodeAV1ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117087 
VideoDecodeAV1ProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR117088     VideoDecodeAV1ProfileInfoKHR( VkVideoDecodeAV1ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
117089       : VideoDecodeAV1ProfileInfoKHR( *reinterpret_cast<VideoDecodeAV1ProfileInfoKHR const *>( &rhs ) )
117090     {
117091     }
117092 
117093     VideoDecodeAV1ProfileInfoKHR & operator=( VideoDecodeAV1ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117094 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
117095 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR117096     VideoDecodeAV1ProfileInfoKHR & operator=( VkVideoDecodeAV1ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
117097     {
117098       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR const *>( &rhs );
117099       return *this;
117100     }
117101 
117102 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR117103     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1ProfileInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
117104     {
117105       pNext = pNext_;
117106       return *this;
117107     }
117108 
setStdProfileVULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR117109     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1ProfileInfoKHR & setStdProfile( StdVideoAV1Profile stdProfile_ ) VULKAN_HPP_NOEXCEPT
117110     {
117111       stdProfile = stdProfile_;
117112       return *this;
117113     }
117114 
setFilmGrainSupportVULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR117115     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1ProfileInfoKHR & setFilmGrainSupport( VULKAN_HPP_NAMESPACE::Bool32 filmGrainSupport_ ) VULKAN_HPP_NOEXCEPT
117116     {
117117       filmGrainSupport = filmGrainSupport_;
117118       return *this;
117119     }
117120 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
117121 
operator VkVideoDecodeAV1ProfileInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR117122     operator VkVideoDecodeAV1ProfileInfoKHR const &() const VULKAN_HPP_NOEXCEPT
117123     {
117124       return *reinterpret_cast<const VkVideoDecodeAV1ProfileInfoKHR *>( this );
117125     }
117126 
operator VkVideoDecodeAV1ProfileInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR117127     operator VkVideoDecodeAV1ProfileInfoKHR &() VULKAN_HPP_NOEXCEPT
117128     {
117129       return *reinterpret_cast<VkVideoDecodeAV1ProfileInfoKHR *>( this );
117130     }
117131 
117132 #if defined( VULKAN_HPP_USE_REFLECT )
117133 #  if 14 <= VULKAN_HPP_CPP_VERSION
117134     auto
117135 #  else
117136     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, StdVideoAV1Profile const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
117137 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR117138       reflect() const VULKAN_HPP_NOEXCEPT
117139     {
117140       return std::tie( sType, pNext, stdProfile, filmGrainSupport );
117141     }
117142 #endif
117143 
117144 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR117145     std::strong_ordering operator<=>( VideoDecodeAV1ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117146     {
117147       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
117148         return cmp;
117149       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
117150         return cmp;
117151       if ( auto cmp = memcmp( &stdProfile, &rhs.stdProfile, sizeof( StdVideoAV1Profile ) ); cmp != 0 )
117152         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
117153       if ( auto cmp = filmGrainSupport <=> rhs.filmGrainSupport; cmp != 0 )
117154         return cmp;
117155 
117156       return std::strong_ordering::equivalent;
117157     }
117158 #endif
117159 
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR117160     bool operator==( VideoDecodeAV1ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117161     {
117162       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &stdProfile, &rhs.stdProfile, sizeof( StdVideoAV1Profile ) ) == 0 ) &&
117163              ( filmGrainSupport == rhs.filmGrainSupport );
117164     }
117165 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR117166     bool operator!=( VideoDecodeAV1ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117167     {
117168       return !operator==( rhs );
117169     }
117170 
117171   public:
117172     VULKAN_HPP_NAMESPACE::StructureType sType            = StructureType::eVideoDecodeAv1ProfileInfoKHR;
117173     const void *                        pNext            = {};
117174     StdVideoAV1Profile                  stdProfile       = {};
117175     VULKAN_HPP_NAMESPACE::Bool32        filmGrainSupport = {};
117176   };
117177 
117178   template <>
117179   struct CppType<StructureType, StructureType::eVideoDecodeAv1ProfileInfoKHR>
117180   {
117181     using Type = VideoDecodeAV1ProfileInfoKHR;
117182   };
117183 
117184   struct VideoDecodeAV1SessionParametersCreateInfoKHR
117185   {
117186     using NativeType = VkVideoDecodeAV1SessionParametersCreateInfoKHR;
117187 
117188     static const bool                                  allowDuplicate = false;
117189     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeAv1SessionParametersCreateInfoKHR;
117190 
117191 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeAV1SessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR117192     VULKAN_HPP_CONSTEXPR VideoDecodeAV1SessionParametersCreateInfoKHR( const StdVideoAV1SequenceHeader * pStdSequenceHeader_ = {},
117193                                                                        const void *                      pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
117194       : pNext{ pNext_ }
117195       , pStdSequenceHeader{ pStdSequenceHeader_ }
117196     {
117197     }
117198 
117199     VULKAN_HPP_CONSTEXPR VideoDecodeAV1SessionParametersCreateInfoKHR( VideoDecodeAV1SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117200 
VideoDecodeAV1SessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR117201     VideoDecodeAV1SessionParametersCreateInfoKHR( VkVideoDecodeAV1SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
117202       : VideoDecodeAV1SessionParametersCreateInfoKHR( *reinterpret_cast<VideoDecodeAV1SessionParametersCreateInfoKHR const *>( &rhs ) )
117203     {
117204     }
117205 
117206     VideoDecodeAV1SessionParametersCreateInfoKHR & operator=( VideoDecodeAV1SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117207 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
117208 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR117209     VideoDecodeAV1SessionParametersCreateInfoKHR & operator=( VkVideoDecodeAV1SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
117210     {
117211       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR const *>( &rhs );
117212       return *this;
117213     }
117214 
117215 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR117216     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1SessionParametersCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
117217     {
117218       pNext = pNext_;
117219       return *this;
117220     }
117221 
117222     VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1SessionParametersCreateInfoKHR &
setPStdSequenceHeaderVULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR117223       setPStdSequenceHeader( const StdVideoAV1SequenceHeader * pStdSequenceHeader_ ) VULKAN_HPP_NOEXCEPT
117224     {
117225       pStdSequenceHeader = pStdSequenceHeader_;
117226       return *this;
117227     }
117228 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
117229 
operator VkVideoDecodeAV1SessionParametersCreateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR117230     operator VkVideoDecodeAV1SessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
117231     {
117232       return *reinterpret_cast<const VkVideoDecodeAV1SessionParametersCreateInfoKHR *>( this );
117233     }
117234 
operator VkVideoDecodeAV1SessionParametersCreateInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR117235     operator VkVideoDecodeAV1SessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
117236     {
117237       return *reinterpret_cast<VkVideoDecodeAV1SessionParametersCreateInfoKHR *>( this );
117238     }
117239 
117240 #if defined( VULKAN_HPP_USE_REFLECT )
117241 #  if 14 <= VULKAN_HPP_CPP_VERSION
117242     auto
117243 #  else
117244     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const StdVideoAV1SequenceHeader * const &>
117245 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR117246       reflect() const VULKAN_HPP_NOEXCEPT
117247     {
117248       return std::tie( sType, pNext, pStdSequenceHeader );
117249     }
117250 #endif
117251 
117252 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
117253     auto operator<=>( VideoDecodeAV1SessionParametersCreateInfoKHR const & ) const = default;
117254 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR117255     bool operator==( VideoDecodeAV1SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117256     {
117257 #  if defined( VULKAN_HPP_USE_REFLECT )
117258       return this->reflect() == rhs.reflect();
117259 #  else
117260       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdSequenceHeader == rhs.pStdSequenceHeader );
117261 #  endif
117262     }
117263 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR117264     bool operator!=( VideoDecodeAV1SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117265     {
117266       return !operator==( rhs );
117267     }
117268 #endif
117269 
117270   public:
117271     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::eVideoDecodeAv1SessionParametersCreateInfoKHR;
117272     const void *                        pNext              = {};
117273     const StdVideoAV1SequenceHeader *   pStdSequenceHeader = {};
117274   };
117275 
117276   template <>
117277   struct CppType<StructureType, StructureType::eVideoDecodeAv1SessionParametersCreateInfoKHR>
117278   {
117279     using Type = VideoDecodeAV1SessionParametersCreateInfoKHR;
117280   };
117281 
117282   struct VideoDecodeCapabilitiesKHR
117283   {
117284     using NativeType = VkVideoDecodeCapabilitiesKHR;
117285 
117286     static const bool                                  allowDuplicate = false;
117287     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeCapabilitiesKHR;
117288 
117289 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeCapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR117290     VULKAN_HPP_CONSTEXPR VideoDecodeCapabilitiesKHR( VULKAN_HPP_NAMESPACE::VideoDecodeCapabilityFlagsKHR flags_ = {},
117291                                                      void *                                              pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
117292       : pNext{ pNext_ }
117293       , flags{ flags_ }
117294     {
117295     }
117296 
117297     VULKAN_HPP_CONSTEXPR VideoDecodeCapabilitiesKHR( VideoDecodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117298 
VideoDecodeCapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR117299     VideoDecodeCapabilitiesKHR( VkVideoDecodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
117300       : VideoDecodeCapabilitiesKHR( *reinterpret_cast<VideoDecodeCapabilitiesKHR const *>( &rhs ) )
117301     {
117302     }
117303 
117304     VideoDecodeCapabilitiesKHR & operator=( VideoDecodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117305 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
117306 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR117307     VideoDecodeCapabilitiesKHR & operator=( VkVideoDecodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
117308     {
117309       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR const *>( &rhs );
117310       return *this;
117311     }
117312 
operator VkVideoDecodeCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR117313     operator VkVideoDecodeCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
117314     {
117315       return *reinterpret_cast<const VkVideoDecodeCapabilitiesKHR *>( this );
117316     }
117317 
operator VkVideoDecodeCapabilitiesKHR&VULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR117318     operator VkVideoDecodeCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
117319     {
117320       return *reinterpret_cast<VkVideoDecodeCapabilitiesKHR *>( this );
117321     }
117322 
117323 #if defined( VULKAN_HPP_USE_REFLECT )
117324 #  if 14 <= VULKAN_HPP_CPP_VERSION
117325     auto
117326 #  else
117327     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::VideoDecodeCapabilityFlagsKHR const &>
117328 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR117329       reflect() const VULKAN_HPP_NOEXCEPT
117330     {
117331       return std::tie( sType, pNext, flags );
117332     }
117333 #endif
117334 
117335 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
117336     auto operator<=>( VideoDecodeCapabilitiesKHR const & ) const = default;
117337 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR117338     bool operator==( VideoDecodeCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117339     {
117340 #  if defined( VULKAN_HPP_USE_REFLECT )
117341       return this->reflect() == rhs.reflect();
117342 #  else
117343       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
117344 #  endif
117345     }
117346 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR117347     bool operator!=( VideoDecodeCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117348     {
117349       return !operator==( rhs );
117350     }
117351 #endif
117352 
117353   public:
117354     VULKAN_HPP_NAMESPACE::StructureType                 sType = StructureType::eVideoDecodeCapabilitiesKHR;
117355     void *                                              pNext = {};
117356     VULKAN_HPP_NAMESPACE::VideoDecodeCapabilityFlagsKHR flags = {};
117357   };
117358 
117359   template <>
117360   struct CppType<StructureType, StructureType::eVideoDecodeCapabilitiesKHR>
117361   {
117362     using Type = VideoDecodeCapabilitiesKHR;
117363   };
117364 
117365   struct VideoDecodeH264CapabilitiesKHR
117366   {
117367     using NativeType = VkVideoDecodeH264CapabilitiesKHR;
117368 
117369     static const bool                                  allowDuplicate = false;
117370     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH264CapabilitiesKHR;
117371 
117372 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH264CapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR117373     VULKAN_HPP_CONSTEXPR VideoDecodeH264CapabilitiesKHR( StdVideoH264LevelIdc           maxLevelIdc_            = {},
117374                                                          VULKAN_HPP_NAMESPACE::Offset2D fieldOffsetGranularity_ = {},
117375                                                          void *                         pNext_                  = nullptr ) VULKAN_HPP_NOEXCEPT
117376       : pNext{ pNext_ }
117377       , maxLevelIdc{ maxLevelIdc_ }
117378       , fieldOffsetGranularity{ fieldOffsetGranularity_ }
117379     {
117380     }
117381 
117382     VULKAN_HPP_CONSTEXPR VideoDecodeH264CapabilitiesKHR( VideoDecodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117383 
VideoDecodeH264CapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR117384     VideoDecodeH264CapabilitiesKHR( VkVideoDecodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
117385       : VideoDecodeH264CapabilitiesKHR( *reinterpret_cast<VideoDecodeH264CapabilitiesKHR const *>( &rhs ) )
117386     {
117387     }
117388 
117389     VideoDecodeH264CapabilitiesKHR & operator=( VideoDecodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117390 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
117391 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR117392     VideoDecodeH264CapabilitiesKHR & operator=( VkVideoDecodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
117393     {
117394       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR const *>( &rhs );
117395       return *this;
117396     }
117397 
operator VkVideoDecodeH264CapabilitiesKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR117398     operator VkVideoDecodeH264CapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
117399     {
117400       return *reinterpret_cast<const VkVideoDecodeH264CapabilitiesKHR *>( this );
117401     }
117402 
operator VkVideoDecodeH264CapabilitiesKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR117403     operator VkVideoDecodeH264CapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
117404     {
117405       return *reinterpret_cast<VkVideoDecodeH264CapabilitiesKHR *>( this );
117406     }
117407 
117408 #if defined( VULKAN_HPP_USE_REFLECT )
117409 #  if 14 <= VULKAN_HPP_CPP_VERSION
117410     auto
117411 #  else
117412     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, StdVideoH264LevelIdc const &, VULKAN_HPP_NAMESPACE::Offset2D const &>
117413 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR117414       reflect() const VULKAN_HPP_NOEXCEPT
117415     {
117416       return std::tie( sType, pNext, maxLevelIdc, fieldOffsetGranularity );
117417     }
117418 #endif
117419 
117420 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR117421     std::strong_ordering operator<=>( VideoDecodeH264CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117422     {
117423       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
117424         return cmp;
117425       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
117426         return cmp;
117427       if ( auto cmp = memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH264LevelIdc ) ); cmp != 0 )
117428         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
117429       if ( auto cmp = fieldOffsetGranularity <=> rhs.fieldOffsetGranularity; cmp != 0 )
117430         return cmp;
117431 
117432       return std::strong_ordering::equivalent;
117433     }
117434 #endif
117435 
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR117436     bool operator==( VideoDecodeH264CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117437     {
117438       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH264LevelIdc ) ) == 0 ) &&
117439              ( fieldOffsetGranularity == rhs.fieldOffsetGranularity );
117440     }
117441 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR117442     bool operator!=( VideoDecodeH264CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117443     {
117444       return !operator==( rhs );
117445     }
117446 
117447   public:
117448     VULKAN_HPP_NAMESPACE::StructureType sType                  = StructureType::eVideoDecodeH264CapabilitiesKHR;
117449     void *                              pNext                  = {};
117450     StdVideoH264LevelIdc                maxLevelIdc            = {};
117451     VULKAN_HPP_NAMESPACE::Offset2D      fieldOffsetGranularity = {};
117452   };
117453 
117454   template <>
117455   struct CppType<StructureType, StructureType::eVideoDecodeH264CapabilitiesKHR>
117456   {
117457     using Type = VideoDecodeH264CapabilitiesKHR;
117458   };
117459 
117460   struct VideoDecodeH264DpbSlotInfoKHR
117461   {
117462     using NativeType = VkVideoDecodeH264DpbSlotInfoKHR;
117463 
117464     static const bool                                  allowDuplicate = false;
117465     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH264DpbSlotInfoKHR;
117466 
117467 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH264DpbSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR117468     VULKAN_HPP_CONSTEXPR VideoDecodeH264DpbSlotInfoKHR( const StdVideoDecodeH264ReferenceInfo * pStdReferenceInfo_ = {},
117469                                                         const void *                            pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
117470       : pNext{ pNext_ }
117471       , pStdReferenceInfo{ pStdReferenceInfo_ }
117472     {
117473     }
117474 
117475     VULKAN_HPP_CONSTEXPR VideoDecodeH264DpbSlotInfoKHR( VideoDecodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117476 
VideoDecodeH264DpbSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR117477     VideoDecodeH264DpbSlotInfoKHR( VkVideoDecodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
117478       : VideoDecodeH264DpbSlotInfoKHR( *reinterpret_cast<VideoDecodeH264DpbSlotInfoKHR const *>( &rhs ) )
117479     {
117480     }
117481 
117482     VideoDecodeH264DpbSlotInfoKHR & operator=( VideoDecodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117483 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
117484 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR117485     VideoDecodeH264DpbSlotInfoKHR & operator=( VkVideoDecodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
117486     {
117487       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR const *>( &rhs );
117488       return *this;
117489     }
117490 
117491 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR117492     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264DpbSlotInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
117493     {
117494       pNext = pNext_;
117495       return *this;
117496     }
117497 
117498     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264DpbSlotInfoKHR &
setPStdReferenceInfoVULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR117499       setPStdReferenceInfo( const StdVideoDecodeH264ReferenceInfo * pStdReferenceInfo_ ) VULKAN_HPP_NOEXCEPT
117500     {
117501       pStdReferenceInfo = pStdReferenceInfo_;
117502       return *this;
117503     }
117504 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
117505 
operator VkVideoDecodeH264DpbSlotInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR117506     operator VkVideoDecodeH264DpbSlotInfoKHR const &() const VULKAN_HPP_NOEXCEPT
117507     {
117508       return *reinterpret_cast<const VkVideoDecodeH264DpbSlotInfoKHR *>( this );
117509     }
117510 
operator VkVideoDecodeH264DpbSlotInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR117511     operator VkVideoDecodeH264DpbSlotInfoKHR &() VULKAN_HPP_NOEXCEPT
117512     {
117513       return *reinterpret_cast<VkVideoDecodeH264DpbSlotInfoKHR *>( this );
117514     }
117515 
117516 #if defined( VULKAN_HPP_USE_REFLECT )
117517 #  if 14 <= VULKAN_HPP_CPP_VERSION
117518     auto
117519 #  else
117520     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const StdVideoDecodeH264ReferenceInfo * const &>
117521 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR117522       reflect() const VULKAN_HPP_NOEXCEPT
117523     {
117524       return std::tie( sType, pNext, pStdReferenceInfo );
117525     }
117526 #endif
117527 
117528 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
117529     auto operator<=>( VideoDecodeH264DpbSlotInfoKHR const & ) const = default;
117530 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR117531     bool operator==( VideoDecodeH264DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117532     {
117533 #  if defined( VULKAN_HPP_USE_REFLECT )
117534       return this->reflect() == rhs.reflect();
117535 #  else
117536       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdReferenceInfo == rhs.pStdReferenceInfo );
117537 #  endif
117538     }
117539 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR117540     bool operator!=( VideoDecodeH264DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117541     {
117542       return !operator==( rhs );
117543     }
117544 #endif
117545 
117546   public:
117547     VULKAN_HPP_NAMESPACE::StructureType     sType             = StructureType::eVideoDecodeH264DpbSlotInfoKHR;
117548     const void *                            pNext             = {};
117549     const StdVideoDecodeH264ReferenceInfo * pStdReferenceInfo = {};
117550   };
117551 
117552   template <>
117553   struct CppType<StructureType, StructureType::eVideoDecodeH264DpbSlotInfoKHR>
117554   {
117555     using Type = VideoDecodeH264DpbSlotInfoKHR;
117556   };
117557 
117558   struct VideoDecodeH264PictureInfoKHR
117559   {
117560     using NativeType = VkVideoDecodeH264PictureInfoKHR;
117561 
117562     static const bool                                  allowDuplicate = false;
117563     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH264PictureInfoKHR;
117564 
117565 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH264PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR117566     VULKAN_HPP_CONSTEXPR VideoDecodeH264PictureInfoKHR( const StdVideoDecodeH264PictureInfo * pStdPictureInfo_ = {},
117567                                                         uint32_t                              sliceCount_      = {},
117568                                                         const uint32_t *                      pSliceOffsets_   = {},
117569                                                         const void *                          pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
117570       : pNext{ pNext_ }
117571       , pStdPictureInfo{ pStdPictureInfo_ }
117572       , sliceCount{ sliceCount_ }
117573       , pSliceOffsets{ pSliceOffsets_ }
117574     {
117575     }
117576 
117577     VULKAN_HPP_CONSTEXPR VideoDecodeH264PictureInfoKHR( VideoDecodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117578 
VideoDecodeH264PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR117579     VideoDecodeH264PictureInfoKHR( VkVideoDecodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
117580       : VideoDecodeH264PictureInfoKHR( *reinterpret_cast<VideoDecodeH264PictureInfoKHR const *>( &rhs ) )
117581     {
117582     }
117583 
117584 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoDecodeH264PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR117585     VideoDecodeH264PictureInfoKHR( const StdVideoDecodeH264PictureInfo *                                 pStdPictureInfo_,
117586                                    VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & sliceOffsets_,
117587                                    const void *                                                          pNext_ = nullptr )
117588       : pNext( pNext_ ), pStdPictureInfo( pStdPictureInfo_ ), sliceCount( static_cast<uint32_t>( sliceOffsets_.size() ) ), pSliceOffsets( sliceOffsets_.data() )
117589     {
117590     }
117591 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
117592 
117593     VideoDecodeH264PictureInfoKHR & operator=( VideoDecodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117594 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
117595 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR117596     VideoDecodeH264PictureInfoKHR & operator=( VkVideoDecodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
117597     {
117598       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR const *>( &rhs );
117599       return *this;
117600     }
117601 
117602 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR117603     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
117604     {
117605       pNext = pNext_;
117606       return *this;
117607     }
117608 
setPStdPictureInfoVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR117609     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoKHR & setPStdPictureInfo( const StdVideoDecodeH264PictureInfo * pStdPictureInfo_ ) VULKAN_HPP_NOEXCEPT
117610     {
117611       pStdPictureInfo = pStdPictureInfo_;
117612       return *this;
117613     }
117614 
setSliceCountVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR117615     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoKHR & setSliceCount( uint32_t sliceCount_ ) VULKAN_HPP_NOEXCEPT
117616     {
117617       sliceCount = sliceCount_;
117618       return *this;
117619     }
117620 
setPSliceOffsetsVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR117621     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoKHR & setPSliceOffsets( const uint32_t * pSliceOffsets_ ) VULKAN_HPP_NOEXCEPT
117622     {
117623       pSliceOffsets = pSliceOffsets_;
117624       return *this;
117625     }
117626 
117627 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSliceOffsetsVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR117628     VideoDecodeH264PictureInfoKHR & setSliceOffsets( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & sliceOffsets_ ) VULKAN_HPP_NOEXCEPT
117629     {
117630       sliceCount    = static_cast<uint32_t>( sliceOffsets_.size() );
117631       pSliceOffsets = sliceOffsets_.data();
117632       return *this;
117633     }
117634 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
117635 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
117636 
operator VkVideoDecodeH264PictureInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR117637     operator VkVideoDecodeH264PictureInfoKHR const &() const VULKAN_HPP_NOEXCEPT
117638     {
117639       return *reinterpret_cast<const VkVideoDecodeH264PictureInfoKHR *>( this );
117640     }
117641 
operator VkVideoDecodeH264PictureInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR117642     operator VkVideoDecodeH264PictureInfoKHR &() VULKAN_HPP_NOEXCEPT
117643     {
117644       return *reinterpret_cast<VkVideoDecodeH264PictureInfoKHR *>( this );
117645     }
117646 
117647 #if defined( VULKAN_HPP_USE_REFLECT )
117648 #  if 14 <= VULKAN_HPP_CPP_VERSION
117649     auto
117650 #  else
117651     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
117652                const void * const &,
117653                const StdVideoDecodeH264PictureInfo * const &,
117654                uint32_t const &,
117655                const uint32_t * const &>
117656 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR117657       reflect() const VULKAN_HPP_NOEXCEPT
117658     {
117659       return std::tie( sType, pNext, pStdPictureInfo, sliceCount, pSliceOffsets );
117660     }
117661 #endif
117662 
117663 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
117664     auto operator<=>( VideoDecodeH264PictureInfoKHR const & ) const = default;
117665 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR117666     bool operator==( VideoDecodeH264PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117667     {
117668 #  if defined( VULKAN_HPP_USE_REFLECT )
117669       return this->reflect() == rhs.reflect();
117670 #  else
117671       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdPictureInfo == rhs.pStdPictureInfo ) && ( sliceCount == rhs.sliceCount ) &&
117672              ( pSliceOffsets == rhs.pSliceOffsets );
117673 #  endif
117674     }
117675 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR117676     bool operator!=( VideoDecodeH264PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117677     {
117678       return !operator==( rhs );
117679     }
117680 #endif
117681 
117682   public:
117683     VULKAN_HPP_NAMESPACE::StructureType   sType           = StructureType::eVideoDecodeH264PictureInfoKHR;
117684     const void *                          pNext           = {};
117685     const StdVideoDecodeH264PictureInfo * pStdPictureInfo = {};
117686     uint32_t                              sliceCount      = {};
117687     const uint32_t *                      pSliceOffsets   = {};
117688   };
117689 
117690   template <>
117691   struct CppType<StructureType, StructureType::eVideoDecodeH264PictureInfoKHR>
117692   {
117693     using Type = VideoDecodeH264PictureInfoKHR;
117694   };
117695 
117696   struct VideoDecodeH264ProfileInfoKHR
117697   {
117698     using NativeType = VkVideoDecodeH264ProfileInfoKHR;
117699 
117700     static const bool                                  allowDuplicate = false;
117701     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH264ProfileInfoKHR;
117702 
117703 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH264ProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR117704     VULKAN_HPP_CONSTEXPR VideoDecodeH264ProfileInfoKHR( StdVideoH264ProfileIdc                                        stdProfileIdc_ = {},
117705                                                         VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureLayoutFlagBitsKHR pictureLayout_ =
117706                                                           VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureLayoutFlagBitsKHR::eProgressive,
117707                                                         const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
117708       : pNext{ pNext_ }
117709       , stdProfileIdc{ stdProfileIdc_ }
117710       , pictureLayout{ pictureLayout_ }
117711     {
117712     }
117713 
117714     VULKAN_HPP_CONSTEXPR VideoDecodeH264ProfileInfoKHR( VideoDecodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117715 
VideoDecodeH264ProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR117716     VideoDecodeH264ProfileInfoKHR( VkVideoDecodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
117717       : VideoDecodeH264ProfileInfoKHR( *reinterpret_cast<VideoDecodeH264ProfileInfoKHR const *>( &rhs ) )
117718     {
117719     }
117720 
117721     VideoDecodeH264ProfileInfoKHR & operator=( VideoDecodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117722 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
117723 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR117724     VideoDecodeH264ProfileInfoKHR & operator=( VkVideoDecodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
117725     {
117726       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR const *>( &rhs );
117727       return *this;
117728     }
117729 
117730 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR117731     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264ProfileInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
117732     {
117733       pNext = pNext_;
117734       return *this;
117735     }
117736 
setStdProfileIdcVULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR117737     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264ProfileInfoKHR & setStdProfileIdc( StdVideoH264ProfileIdc stdProfileIdc_ ) VULKAN_HPP_NOEXCEPT
117738     {
117739       stdProfileIdc = stdProfileIdc_;
117740       return *this;
117741     }
117742 
117743     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264ProfileInfoKHR &
setPictureLayoutVULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR117744       setPictureLayout( VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureLayoutFlagBitsKHR pictureLayout_ ) VULKAN_HPP_NOEXCEPT
117745     {
117746       pictureLayout = pictureLayout_;
117747       return *this;
117748     }
117749 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
117750 
operator VkVideoDecodeH264ProfileInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR117751     operator VkVideoDecodeH264ProfileInfoKHR const &() const VULKAN_HPP_NOEXCEPT
117752     {
117753       return *reinterpret_cast<const VkVideoDecodeH264ProfileInfoKHR *>( this );
117754     }
117755 
operator VkVideoDecodeH264ProfileInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR117756     operator VkVideoDecodeH264ProfileInfoKHR &() VULKAN_HPP_NOEXCEPT
117757     {
117758       return *reinterpret_cast<VkVideoDecodeH264ProfileInfoKHR *>( this );
117759     }
117760 
117761 #if defined( VULKAN_HPP_USE_REFLECT )
117762 #  if 14 <= VULKAN_HPP_CPP_VERSION
117763     auto
117764 #  else
117765     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
117766                const void * const &,
117767                StdVideoH264ProfileIdc const &,
117768                VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureLayoutFlagBitsKHR const &>
117769 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR117770       reflect() const VULKAN_HPP_NOEXCEPT
117771     {
117772       return std::tie( sType, pNext, stdProfileIdc, pictureLayout );
117773     }
117774 #endif
117775 
117776 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR117777     std::strong_ordering operator<=>( VideoDecodeH264ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117778     {
117779       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
117780         return cmp;
117781       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
117782         return cmp;
117783       if ( auto cmp = memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH264ProfileIdc ) ); cmp != 0 )
117784         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
117785       if ( auto cmp = pictureLayout <=> rhs.pictureLayout; cmp != 0 )
117786         return cmp;
117787 
117788       return std::strong_ordering::equivalent;
117789     }
117790 #endif
117791 
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR117792     bool operator==( VideoDecodeH264ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117793     {
117794       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH264ProfileIdc ) ) == 0 ) &&
117795              ( pictureLayout == rhs.pictureLayout );
117796     }
117797 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR117798     bool operator!=( VideoDecodeH264ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117799     {
117800       return !operator==( rhs );
117801     }
117802 
117803   public:
117804     VULKAN_HPP_NAMESPACE::StructureType                           sType         = StructureType::eVideoDecodeH264ProfileInfoKHR;
117805     const void *                                                  pNext         = {};
117806     StdVideoH264ProfileIdc                                        stdProfileIdc = {};
117807     VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureLayoutFlagBitsKHR pictureLayout = VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureLayoutFlagBitsKHR::eProgressive;
117808   };
117809 
117810   template <>
117811   struct CppType<StructureType, StructureType::eVideoDecodeH264ProfileInfoKHR>
117812   {
117813     using Type = VideoDecodeH264ProfileInfoKHR;
117814   };
117815 
117816   struct VideoDecodeH264SessionParametersAddInfoKHR
117817   {
117818     using NativeType = VkVideoDecodeH264SessionParametersAddInfoKHR;
117819 
117820     static const bool                                  allowDuplicate = false;
117821     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH264SessionParametersAddInfoKHR;
117822 
117823 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH264SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR117824     VULKAN_HPP_CONSTEXPR VideoDecodeH264SessionParametersAddInfoKHR( uint32_t                                 stdSPSCount_ = {},
117825                                                                      const StdVideoH264SequenceParameterSet * pStdSPSs_    = {},
117826                                                                      uint32_t                                 stdPPSCount_ = {},
117827                                                                      const StdVideoH264PictureParameterSet *  pStdPPSs_    = {},
117828                                                                      const void *                             pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
117829       : pNext{ pNext_ }
117830       , stdSPSCount{ stdSPSCount_ }
117831       , pStdSPSs{ pStdSPSs_ }
117832       , stdPPSCount{ stdPPSCount_ }
117833       , pStdPPSs{ pStdPPSs_ }
117834     {
117835     }
117836 
117837     VULKAN_HPP_CONSTEXPR VideoDecodeH264SessionParametersAddInfoKHR( VideoDecodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117838 
VideoDecodeH264SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR117839     VideoDecodeH264SessionParametersAddInfoKHR( VkVideoDecodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
117840       : VideoDecodeH264SessionParametersAddInfoKHR( *reinterpret_cast<VideoDecodeH264SessionParametersAddInfoKHR const *>( &rhs ) )
117841     {
117842     }
117843 
117844 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoDecodeH264SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR117845     VideoDecodeH264SessionParametersAddInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264SequenceParameterSet> const & stdSPSs_,
117846                                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264PictureParameterSet> const &  stdPPSs_ = {},
117847                                                 const void *                                                                                  pNext_ = nullptr )
117848       : pNext( pNext_ )
117849       , stdSPSCount( static_cast<uint32_t>( stdSPSs_.size() ) )
117850       , pStdSPSs( stdSPSs_.data() )
117851       , stdPPSCount( static_cast<uint32_t>( stdPPSs_.size() ) )
117852       , pStdPPSs( stdPPSs_.data() )
117853     {
117854     }
117855 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
117856 
117857     VideoDecodeH264SessionParametersAddInfoKHR & operator=( VideoDecodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
117858 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
117859 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR117860     VideoDecodeH264SessionParametersAddInfoKHR & operator=( VkVideoDecodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
117861     {
117862       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR const *>( &rhs );
117863       return *this;
117864     }
117865 
117866 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR117867     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
117868     {
117869       pNext = pNext_;
117870       return *this;
117871     }
117872 
setStdSPSCountVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR117873     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoKHR & setStdSPSCount( uint32_t stdSPSCount_ ) VULKAN_HPP_NOEXCEPT
117874     {
117875       stdSPSCount = stdSPSCount_;
117876       return *this;
117877     }
117878 
setPStdSPSsVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR117879     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoKHR & setPStdSPSs( const StdVideoH264SequenceParameterSet * pStdSPSs_ ) VULKAN_HPP_NOEXCEPT
117880     {
117881       pStdSPSs = pStdSPSs_;
117882       return *this;
117883     }
117884 
117885 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
117886     VideoDecodeH264SessionParametersAddInfoKHR &
setStdSPSsVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR117887       setStdSPSs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264SequenceParameterSet> const & stdSPSs_ ) VULKAN_HPP_NOEXCEPT
117888     {
117889       stdSPSCount = static_cast<uint32_t>( stdSPSs_.size() );
117890       pStdSPSs    = stdSPSs_.data();
117891       return *this;
117892     }
117893 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
117894 
setStdPPSCountVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR117895     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoKHR & setStdPPSCount( uint32_t stdPPSCount_ ) VULKAN_HPP_NOEXCEPT
117896     {
117897       stdPPSCount = stdPPSCount_;
117898       return *this;
117899     }
117900 
setPStdPPSsVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR117901     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoKHR & setPStdPPSs( const StdVideoH264PictureParameterSet * pStdPPSs_ ) VULKAN_HPP_NOEXCEPT
117902     {
117903       pStdPPSs = pStdPPSs_;
117904       return *this;
117905     }
117906 
117907 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
117908     VideoDecodeH264SessionParametersAddInfoKHR &
setStdPPSsVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR117909       setStdPPSs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264PictureParameterSet> const & stdPPSs_ ) VULKAN_HPP_NOEXCEPT
117910     {
117911       stdPPSCount = static_cast<uint32_t>( stdPPSs_.size() );
117912       pStdPPSs    = stdPPSs_.data();
117913       return *this;
117914     }
117915 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
117916 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
117917 
operator VkVideoDecodeH264SessionParametersAddInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR117918     operator VkVideoDecodeH264SessionParametersAddInfoKHR const &() const VULKAN_HPP_NOEXCEPT
117919     {
117920       return *reinterpret_cast<const VkVideoDecodeH264SessionParametersAddInfoKHR *>( this );
117921     }
117922 
operator VkVideoDecodeH264SessionParametersAddInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR117923     operator VkVideoDecodeH264SessionParametersAddInfoKHR &() VULKAN_HPP_NOEXCEPT
117924     {
117925       return *reinterpret_cast<VkVideoDecodeH264SessionParametersAddInfoKHR *>( this );
117926     }
117927 
117928 #if defined( VULKAN_HPP_USE_REFLECT )
117929 #  if 14 <= VULKAN_HPP_CPP_VERSION
117930     auto
117931 #  else
117932     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
117933                const void * const &,
117934                uint32_t const &,
117935                const StdVideoH264SequenceParameterSet * const &,
117936                uint32_t const &,
117937                const StdVideoH264PictureParameterSet * const &>
117938 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR117939       reflect() const VULKAN_HPP_NOEXCEPT
117940     {
117941       return std::tie( sType, pNext, stdSPSCount, pStdSPSs, stdPPSCount, pStdPPSs );
117942     }
117943 #endif
117944 
117945 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
117946     auto operator<=>( VideoDecodeH264SessionParametersAddInfoKHR const & ) const = default;
117947 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR117948     bool operator==( VideoDecodeH264SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117949     {
117950 #  if defined( VULKAN_HPP_USE_REFLECT )
117951       return this->reflect() == rhs.reflect();
117952 #  else
117953       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stdSPSCount == rhs.stdSPSCount ) && ( pStdSPSs == rhs.pStdSPSs ) &&
117954              ( stdPPSCount == rhs.stdPPSCount ) && ( pStdPPSs == rhs.pStdPPSs );
117955 #  endif
117956     }
117957 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR117958     bool operator!=( VideoDecodeH264SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
117959     {
117960       return !operator==( rhs );
117961     }
117962 #endif
117963 
117964   public:
117965     VULKAN_HPP_NAMESPACE::StructureType      sType       = StructureType::eVideoDecodeH264SessionParametersAddInfoKHR;
117966     const void *                             pNext       = {};
117967     uint32_t                                 stdSPSCount = {};
117968     const StdVideoH264SequenceParameterSet * pStdSPSs    = {};
117969     uint32_t                                 stdPPSCount = {};
117970     const StdVideoH264PictureParameterSet *  pStdPPSs    = {};
117971   };
117972 
117973   template <>
117974   struct CppType<StructureType, StructureType::eVideoDecodeH264SessionParametersAddInfoKHR>
117975   {
117976     using Type = VideoDecodeH264SessionParametersAddInfoKHR;
117977   };
117978 
117979   struct VideoDecodeH264SessionParametersCreateInfoKHR
117980   {
117981     using NativeType = VkVideoDecodeH264SessionParametersCreateInfoKHR;
117982 
117983     static const bool                                  allowDuplicate = false;
117984     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH264SessionParametersCreateInfoKHR;
117985 
117986 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
117987     VULKAN_HPP_CONSTEXPR
VideoDecodeH264SessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR117988       VideoDecodeH264SessionParametersCreateInfoKHR( uint32_t                                                                 maxStdSPSCount_     = {},
117989                                                      uint32_t                                                                 maxStdPPSCount_     = {},
117990                                                      const VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR * pParametersAddInfo_ = {},
117991                                                      const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
117992       : pNext{ pNext_ }
117993       , maxStdSPSCount{ maxStdSPSCount_ }
117994       , maxStdPPSCount{ maxStdPPSCount_ }
117995       , pParametersAddInfo{ pParametersAddInfo_ }
117996     {
117997     }
117998 
117999     VULKAN_HPP_CONSTEXPR
118000       VideoDecodeH264SessionParametersCreateInfoKHR( VideoDecodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118001 
VideoDecodeH264SessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR118002     VideoDecodeH264SessionParametersCreateInfoKHR( VkVideoDecodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
118003       : VideoDecodeH264SessionParametersCreateInfoKHR( *reinterpret_cast<VideoDecodeH264SessionParametersCreateInfoKHR const *>( &rhs ) )
118004     {
118005     }
118006 
118007     VideoDecodeH264SessionParametersCreateInfoKHR & operator=( VideoDecodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118008 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
118009 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR118010     VideoDecodeH264SessionParametersCreateInfoKHR & operator=( VkVideoDecodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
118011     {
118012       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR const *>( &rhs );
118013       return *this;
118014     }
118015 
118016 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR118017     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
118018     {
118019       pNext = pNext_;
118020       return *this;
118021     }
118022 
setMaxStdSPSCountVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR118023     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoKHR & setMaxStdSPSCount( uint32_t maxStdSPSCount_ ) VULKAN_HPP_NOEXCEPT
118024     {
118025       maxStdSPSCount = maxStdSPSCount_;
118026       return *this;
118027     }
118028 
setMaxStdPPSCountVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR118029     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoKHR & setMaxStdPPSCount( uint32_t maxStdPPSCount_ ) VULKAN_HPP_NOEXCEPT
118030     {
118031       maxStdPPSCount = maxStdPPSCount_;
118032       return *this;
118033     }
118034 
118035     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoKHR &
setPParametersAddInfoVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR118036       setPParametersAddInfo( const VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR * pParametersAddInfo_ ) VULKAN_HPP_NOEXCEPT
118037     {
118038       pParametersAddInfo = pParametersAddInfo_;
118039       return *this;
118040     }
118041 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
118042 
operator VkVideoDecodeH264SessionParametersCreateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR118043     operator VkVideoDecodeH264SessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
118044     {
118045       return *reinterpret_cast<const VkVideoDecodeH264SessionParametersCreateInfoKHR *>( this );
118046     }
118047 
operator VkVideoDecodeH264SessionParametersCreateInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR118048     operator VkVideoDecodeH264SessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
118049     {
118050       return *reinterpret_cast<VkVideoDecodeH264SessionParametersCreateInfoKHR *>( this );
118051     }
118052 
118053 #if defined( VULKAN_HPP_USE_REFLECT )
118054 #  if 14 <= VULKAN_HPP_CPP_VERSION
118055     auto
118056 #  else
118057     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
118058                const void * const &,
118059                uint32_t const &,
118060                uint32_t const &,
118061                const VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR * const &>
118062 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR118063       reflect() const VULKAN_HPP_NOEXCEPT
118064     {
118065       return std::tie( sType, pNext, maxStdSPSCount, maxStdPPSCount, pParametersAddInfo );
118066     }
118067 #endif
118068 
118069 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
118070     auto operator<=>( VideoDecodeH264SessionParametersCreateInfoKHR const & ) const = default;
118071 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR118072     bool operator==( VideoDecodeH264SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
118073     {
118074 #  if defined( VULKAN_HPP_USE_REFLECT )
118075       return this->reflect() == rhs.reflect();
118076 #  else
118077       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxStdSPSCount == rhs.maxStdSPSCount ) && ( maxStdPPSCount == rhs.maxStdPPSCount ) &&
118078              ( pParametersAddInfo == rhs.pParametersAddInfo );
118079 #  endif
118080     }
118081 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR118082     bool operator!=( VideoDecodeH264SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
118083     {
118084       return !operator==( rhs );
118085     }
118086 #endif
118087 
118088   public:
118089     VULKAN_HPP_NAMESPACE::StructureType                                      sType              = StructureType::eVideoDecodeH264SessionParametersCreateInfoKHR;
118090     const void *                                                             pNext              = {};
118091     uint32_t                                                                 maxStdSPSCount     = {};
118092     uint32_t                                                                 maxStdPPSCount     = {};
118093     const VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR * pParametersAddInfo = {};
118094   };
118095 
118096   template <>
118097   struct CppType<StructureType, StructureType::eVideoDecodeH264SessionParametersCreateInfoKHR>
118098   {
118099     using Type = VideoDecodeH264SessionParametersCreateInfoKHR;
118100   };
118101 
118102   struct VideoDecodeH265CapabilitiesKHR
118103   {
118104     using NativeType = VkVideoDecodeH265CapabilitiesKHR;
118105 
118106     static const bool                                  allowDuplicate = false;
118107     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH265CapabilitiesKHR;
118108 
118109 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH265CapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR118110     VULKAN_HPP_CONSTEXPR VideoDecodeH265CapabilitiesKHR( StdVideoH265LevelIdc maxLevelIdc_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
118111       : pNext{ pNext_ }
118112       , maxLevelIdc{ maxLevelIdc_ }
118113     {
118114     }
118115 
118116     VULKAN_HPP_CONSTEXPR VideoDecodeH265CapabilitiesKHR( VideoDecodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118117 
VideoDecodeH265CapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR118118     VideoDecodeH265CapabilitiesKHR( VkVideoDecodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
118119       : VideoDecodeH265CapabilitiesKHR( *reinterpret_cast<VideoDecodeH265CapabilitiesKHR const *>( &rhs ) )
118120     {
118121     }
118122 
118123     VideoDecodeH265CapabilitiesKHR & operator=( VideoDecodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118124 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
118125 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR118126     VideoDecodeH265CapabilitiesKHR & operator=( VkVideoDecodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
118127     {
118128       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR const *>( &rhs );
118129       return *this;
118130     }
118131 
operator VkVideoDecodeH265CapabilitiesKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR118132     operator VkVideoDecodeH265CapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
118133     {
118134       return *reinterpret_cast<const VkVideoDecodeH265CapabilitiesKHR *>( this );
118135     }
118136 
operator VkVideoDecodeH265CapabilitiesKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR118137     operator VkVideoDecodeH265CapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
118138     {
118139       return *reinterpret_cast<VkVideoDecodeH265CapabilitiesKHR *>( this );
118140     }
118141 
118142 #if defined( VULKAN_HPP_USE_REFLECT )
118143 #  if 14 <= VULKAN_HPP_CPP_VERSION
118144     auto
118145 #  else
118146     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, StdVideoH265LevelIdc const &>
118147 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR118148       reflect() const VULKAN_HPP_NOEXCEPT
118149     {
118150       return std::tie( sType, pNext, maxLevelIdc );
118151     }
118152 #endif
118153 
118154 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR118155     std::strong_ordering operator<=>( VideoDecodeH265CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
118156     {
118157       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
118158         return cmp;
118159       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
118160         return cmp;
118161       if ( auto cmp = memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH265LevelIdc ) ); cmp != 0 )
118162         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
118163 
118164       return std::strong_ordering::equivalent;
118165     }
118166 #endif
118167 
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR118168     bool operator==( VideoDecodeH265CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
118169     {
118170       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH265LevelIdc ) ) == 0 );
118171     }
118172 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR118173     bool operator!=( VideoDecodeH265CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
118174     {
118175       return !operator==( rhs );
118176     }
118177 
118178   public:
118179     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eVideoDecodeH265CapabilitiesKHR;
118180     void *                              pNext       = {};
118181     StdVideoH265LevelIdc                maxLevelIdc = {};
118182   };
118183 
118184   template <>
118185   struct CppType<StructureType, StructureType::eVideoDecodeH265CapabilitiesKHR>
118186   {
118187     using Type = VideoDecodeH265CapabilitiesKHR;
118188   };
118189 
118190   struct VideoDecodeH265DpbSlotInfoKHR
118191   {
118192     using NativeType = VkVideoDecodeH265DpbSlotInfoKHR;
118193 
118194     static const bool                                  allowDuplicate = false;
118195     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH265DpbSlotInfoKHR;
118196 
118197 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH265DpbSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR118198     VULKAN_HPP_CONSTEXPR VideoDecodeH265DpbSlotInfoKHR( const StdVideoDecodeH265ReferenceInfo * pStdReferenceInfo_ = {},
118199                                                         const void *                            pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
118200       : pNext{ pNext_ }
118201       , pStdReferenceInfo{ pStdReferenceInfo_ }
118202     {
118203     }
118204 
118205     VULKAN_HPP_CONSTEXPR VideoDecodeH265DpbSlotInfoKHR( VideoDecodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118206 
VideoDecodeH265DpbSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR118207     VideoDecodeH265DpbSlotInfoKHR( VkVideoDecodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
118208       : VideoDecodeH265DpbSlotInfoKHR( *reinterpret_cast<VideoDecodeH265DpbSlotInfoKHR const *>( &rhs ) )
118209     {
118210     }
118211 
118212     VideoDecodeH265DpbSlotInfoKHR & operator=( VideoDecodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118213 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
118214 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR118215     VideoDecodeH265DpbSlotInfoKHR & operator=( VkVideoDecodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
118216     {
118217       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR const *>( &rhs );
118218       return *this;
118219     }
118220 
118221 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR118222     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265DpbSlotInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
118223     {
118224       pNext = pNext_;
118225       return *this;
118226     }
118227 
118228     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265DpbSlotInfoKHR &
setPStdReferenceInfoVULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR118229       setPStdReferenceInfo( const StdVideoDecodeH265ReferenceInfo * pStdReferenceInfo_ ) VULKAN_HPP_NOEXCEPT
118230     {
118231       pStdReferenceInfo = pStdReferenceInfo_;
118232       return *this;
118233     }
118234 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
118235 
operator VkVideoDecodeH265DpbSlotInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR118236     operator VkVideoDecodeH265DpbSlotInfoKHR const &() const VULKAN_HPP_NOEXCEPT
118237     {
118238       return *reinterpret_cast<const VkVideoDecodeH265DpbSlotInfoKHR *>( this );
118239     }
118240 
operator VkVideoDecodeH265DpbSlotInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR118241     operator VkVideoDecodeH265DpbSlotInfoKHR &() VULKAN_HPP_NOEXCEPT
118242     {
118243       return *reinterpret_cast<VkVideoDecodeH265DpbSlotInfoKHR *>( this );
118244     }
118245 
118246 #if defined( VULKAN_HPP_USE_REFLECT )
118247 #  if 14 <= VULKAN_HPP_CPP_VERSION
118248     auto
118249 #  else
118250     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const StdVideoDecodeH265ReferenceInfo * const &>
118251 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR118252       reflect() const VULKAN_HPP_NOEXCEPT
118253     {
118254       return std::tie( sType, pNext, pStdReferenceInfo );
118255     }
118256 #endif
118257 
118258 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
118259     auto operator<=>( VideoDecodeH265DpbSlotInfoKHR const & ) const = default;
118260 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR118261     bool operator==( VideoDecodeH265DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
118262     {
118263 #  if defined( VULKAN_HPP_USE_REFLECT )
118264       return this->reflect() == rhs.reflect();
118265 #  else
118266       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdReferenceInfo == rhs.pStdReferenceInfo );
118267 #  endif
118268     }
118269 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR118270     bool operator!=( VideoDecodeH265DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
118271     {
118272       return !operator==( rhs );
118273     }
118274 #endif
118275 
118276   public:
118277     VULKAN_HPP_NAMESPACE::StructureType     sType             = StructureType::eVideoDecodeH265DpbSlotInfoKHR;
118278     const void *                            pNext             = {};
118279     const StdVideoDecodeH265ReferenceInfo * pStdReferenceInfo = {};
118280   };
118281 
118282   template <>
118283   struct CppType<StructureType, StructureType::eVideoDecodeH265DpbSlotInfoKHR>
118284   {
118285     using Type = VideoDecodeH265DpbSlotInfoKHR;
118286   };
118287 
118288   struct VideoDecodeH265PictureInfoKHR
118289   {
118290     using NativeType = VkVideoDecodeH265PictureInfoKHR;
118291 
118292     static const bool                                  allowDuplicate = false;
118293     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH265PictureInfoKHR;
118294 
118295 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH265PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR118296     VULKAN_HPP_CONSTEXPR VideoDecodeH265PictureInfoKHR( const StdVideoDecodeH265PictureInfo * pStdPictureInfo_      = {},
118297                                                         uint32_t                              sliceSegmentCount_    = {},
118298                                                         const uint32_t *                      pSliceSegmentOffsets_ = {},
118299                                                         const void *                          pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
118300       : pNext{ pNext_ }
118301       , pStdPictureInfo{ pStdPictureInfo_ }
118302       , sliceSegmentCount{ sliceSegmentCount_ }
118303       , pSliceSegmentOffsets{ pSliceSegmentOffsets_ }
118304     {
118305     }
118306 
118307     VULKAN_HPP_CONSTEXPR VideoDecodeH265PictureInfoKHR( VideoDecodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118308 
VideoDecodeH265PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR118309     VideoDecodeH265PictureInfoKHR( VkVideoDecodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
118310       : VideoDecodeH265PictureInfoKHR( *reinterpret_cast<VideoDecodeH265PictureInfoKHR const *>( &rhs ) )
118311     {
118312     }
118313 
118314 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoDecodeH265PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR118315     VideoDecodeH265PictureInfoKHR( const StdVideoDecodeH265PictureInfo *                                 pStdPictureInfo_,
118316                                    VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & sliceSegmentOffsets_,
118317                                    const void *                                                          pNext_ = nullptr )
118318       : pNext( pNext_ )
118319       , pStdPictureInfo( pStdPictureInfo_ )
118320       , sliceSegmentCount( static_cast<uint32_t>( sliceSegmentOffsets_.size() ) )
118321       , pSliceSegmentOffsets( sliceSegmentOffsets_.data() )
118322     {
118323     }
118324 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
118325 
118326     VideoDecodeH265PictureInfoKHR & operator=( VideoDecodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118327 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
118328 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR118329     VideoDecodeH265PictureInfoKHR & operator=( VkVideoDecodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
118330     {
118331       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR const *>( &rhs );
118332       return *this;
118333     }
118334 
118335 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR118336     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
118337     {
118338       pNext = pNext_;
118339       return *this;
118340     }
118341 
setPStdPictureInfoVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR118342     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoKHR & setPStdPictureInfo( const StdVideoDecodeH265PictureInfo * pStdPictureInfo_ ) VULKAN_HPP_NOEXCEPT
118343     {
118344       pStdPictureInfo = pStdPictureInfo_;
118345       return *this;
118346     }
118347 
setSliceSegmentCountVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR118348     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoKHR & setSliceSegmentCount( uint32_t sliceSegmentCount_ ) VULKAN_HPP_NOEXCEPT
118349     {
118350       sliceSegmentCount = sliceSegmentCount_;
118351       return *this;
118352     }
118353 
setPSliceSegmentOffsetsVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR118354     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoKHR & setPSliceSegmentOffsets( const uint32_t * pSliceSegmentOffsets_ ) VULKAN_HPP_NOEXCEPT
118355     {
118356       pSliceSegmentOffsets = pSliceSegmentOffsets_;
118357       return *this;
118358     }
118359 
118360 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
118361     VideoDecodeH265PictureInfoKHR &
setSliceSegmentOffsetsVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR118362       setSliceSegmentOffsets( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & sliceSegmentOffsets_ ) VULKAN_HPP_NOEXCEPT
118363     {
118364       sliceSegmentCount    = static_cast<uint32_t>( sliceSegmentOffsets_.size() );
118365       pSliceSegmentOffsets = sliceSegmentOffsets_.data();
118366       return *this;
118367     }
118368 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
118369 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
118370 
operator VkVideoDecodeH265PictureInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR118371     operator VkVideoDecodeH265PictureInfoKHR const &() const VULKAN_HPP_NOEXCEPT
118372     {
118373       return *reinterpret_cast<const VkVideoDecodeH265PictureInfoKHR *>( this );
118374     }
118375 
operator VkVideoDecodeH265PictureInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR118376     operator VkVideoDecodeH265PictureInfoKHR &() VULKAN_HPP_NOEXCEPT
118377     {
118378       return *reinterpret_cast<VkVideoDecodeH265PictureInfoKHR *>( this );
118379     }
118380 
118381 #if defined( VULKAN_HPP_USE_REFLECT )
118382 #  if 14 <= VULKAN_HPP_CPP_VERSION
118383     auto
118384 #  else
118385     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
118386                const void * const &,
118387                const StdVideoDecodeH265PictureInfo * const &,
118388                uint32_t const &,
118389                const uint32_t * const &>
118390 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR118391       reflect() const VULKAN_HPP_NOEXCEPT
118392     {
118393       return std::tie( sType, pNext, pStdPictureInfo, sliceSegmentCount, pSliceSegmentOffsets );
118394     }
118395 #endif
118396 
118397 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
118398     auto operator<=>( VideoDecodeH265PictureInfoKHR const & ) const = default;
118399 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR118400     bool operator==( VideoDecodeH265PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
118401     {
118402 #  if defined( VULKAN_HPP_USE_REFLECT )
118403       return this->reflect() == rhs.reflect();
118404 #  else
118405       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdPictureInfo == rhs.pStdPictureInfo ) && ( sliceSegmentCount == rhs.sliceSegmentCount ) &&
118406              ( pSliceSegmentOffsets == rhs.pSliceSegmentOffsets );
118407 #  endif
118408     }
118409 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR118410     bool operator!=( VideoDecodeH265PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
118411     {
118412       return !operator==( rhs );
118413     }
118414 #endif
118415 
118416   public:
118417     VULKAN_HPP_NAMESPACE::StructureType   sType                = StructureType::eVideoDecodeH265PictureInfoKHR;
118418     const void *                          pNext                = {};
118419     const StdVideoDecodeH265PictureInfo * pStdPictureInfo      = {};
118420     uint32_t                              sliceSegmentCount    = {};
118421     const uint32_t *                      pSliceSegmentOffsets = {};
118422   };
118423 
118424   template <>
118425   struct CppType<StructureType, StructureType::eVideoDecodeH265PictureInfoKHR>
118426   {
118427     using Type = VideoDecodeH265PictureInfoKHR;
118428   };
118429 
118430   struct VideoDecodeH265ProfileInfoKHR
118431   {
118432     using NativeType = VkVideoDecodeH265ProfileInfoKHR;
118433 
118434     static const bool                                  allowDuplicate = false;
118435     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH265ProfileInfoKHR;
118436 
118437 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH265ProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR118438     VULKAN_HPP_CONSTEXPR VideoDecodeH265ProfileInfoKHR( StdVideoH265ProfileIdc stdProfileIdc_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
118439       : pNext{ pNext_ }
118440       , stdProfileIdc{ stdProfileIdc_ }
118441     {
118442     }
118443 
118444     VULKAN_HPP_CONSTEXPR VideoDecodeH265ProfileInfoKHR( VideoDecodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118445 
VideoDecodeH265ProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR118446     VideoDecodeH265ProfileInfoKHR( VkVideoDecodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
118447       : VideoDecodeH265ProfileInfoKHR( *reinterpret_cast<VideoDecodeH265ProfileInfoKHR const *>( &rhs ) )
118448     {
118449     }
118450 
118451     VideoDecodeH265ProfileInfoKHR & operator=( VideoDecodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118452 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
118453 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR118454     VideoDecodeH265ProfileInfoKHR & operator=( VkVideoDecodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
118455     {
118456       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR const *>( &rhs );
118457       return *this;
118458     }
118459 
118460 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR118461     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265ProfileInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
118462     {
118463       pNext = pNext_;
118464       return *this;
118465     }
118466 
setStdProfileIdcVULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR118467     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265ProfileInfoKHR & setStdProfileIdc( StdVideoH265ProfileIdc stdProfileIdc_ ) VULKAN_HPP_NOEXCEPT
118468     {
118469       stdProfileIdc = stdProfileIdc_;
118470       return *this;
118471     }
118472 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
118473 
operator VkVideoDecodeH265ProfileInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR118474     operator VkVideoDecodeH265ProfileInfoKHR const &() const VULKAN_HPP_NOEXCEPT
118475     {
118476       return *reinterpret_cast<const VkVideoDecodeH265ProfileInfoKHR *>( this );
118477     }
118478 
operator VkVideoDecodeH265ProfileInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR118479     operator VkVideoDecodeH265ProfileInfoKHR &() VULKAN_HPP_NOEXCEPT
118480     {
118481       return *reinterpret_cast<VkVideoDecodeH265ProfileInfoKHR *>( this );
118482     }
118483 
118484 #if defined( VULKAN_HPP_USE_REFLECT )
118485 #  if 14 <= VULKAN_HPP_CPP_VERSION
118486     auto
118487 #  else
118488     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, StdVideoH265ProfileIdc const &>
118489 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR118490       reflect() const VULKAN_HPP_NOEXCEPT
118491     {
118492       return std::tie( sType, pNext, stdProfileIdc );
118493     }
118494 #endif
118495 
118496 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR118497     std::strong_ordering operator<=>( VideoDecodeH265ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
118498     {
118499       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
118500         return cmp;
118501       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
118502         return cmp;
118503       if ( auto cmp = memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH265ProfileIdc ) ); cmp != 0 )
118504         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
118505 
118506       return std::strong_ordering::equivalent;
118507     }
118508 #endif
118509 
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR118510     bool operator==( VideoDecodeH265ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
118511     {
118512       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH265ProfileIdc ) ) == 0 );
118513     }
118514 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR118515     bool operator!=( VideoDecodeH265ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
118516     {
118517       return !operator==( rhs );
118518     }
118519 
118520   public:
118521     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eVideoDecodeH265ProfileInfoKHR;
118522     const void *                        pNext         = {};
118523     StdVideoH265ProfileIdc              stdProfileIdc = {};
118524   };
118525 
118526   template <>
118527   struct CppType<StructureType, StructureType::eVideoDecodeH265ProfileInfoKHR>
118528   {
118529     using Type = VideoDecodeH265ProfileInfoKHR;
118530   };
118531 
118532   struct VideoDecodeH265SessionParametersAddInfoKHR
118533   {
118534     using NativeType = VkVideoDecodeH265SessionParametersAddInfoKHR;
118535 
118536     static const bool                                  allowDuplicate = false;
118537     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH265SessionParametersAddInfoKHR;
118538 
118539 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeH265SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR118540     VULKAN_HPP_CONSTEXPR VideoDecodeH265SessionParametersAddInfoKHR( uint32_t                                 stdVPSCount_ = {},
118541                                                                      const StdVideoH265VideoParameterSet *    pStdVPSs_    = {},
118542                                                                      uint32_t                                 stdSPSCount_ = {},
118543                                                                      const StdVideoH265SequenceParameterSet * pStdSPSs_    = {},
118544                                                                      uint32_t                                 stdPPSCount_ = {},
118545                                                                      const StdVideoH265PictureParameterSet *  pStdPPSs_    = {},
118546                                                                      const void *                             pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
118547       : pNext{ pNext_ }
118548       , stdVPSCount{ stdVPSCount_ }
118549       , pStdVPSs{ pStdVPSs_ }
118550       , stdSPSCount{ stdSPSCount_ }
118551       , pStdSPSs{ pStdSPSs_ }
118552       , stdPPSCount{ stdPPSCount_ }
118553       , pStdPPSs{ pStdPPSs_ }
118554     {
118555     }
118556 
118557     VULKAN_HPP_CONSTEXPR VideoDecodeH265SessionParametersAddInfoKHR( VideoDecodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118558 
VideoDecodeH265SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR118559     VideoDecodeH265SessionParametersAddInfoKHR( VkVideoDecodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
118560       : VideoDecodeH265SessionParametersAddInfoKHR( *reinterpret_cast<VideoDecodeH265SessionParametersAddInfoKHR const *>( &rhs ) )
118561     {
118562     }
118563 
118564 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoDecodeH265SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR118565     VideoDecodeH265SessionParametersAddInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265VideoParameterSet> const &    stdVPSs_,
118566                                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265SequenceParameterSet> const & stdSPSs_ = {},
118567                                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265PictureParameterSet> const &  stdPPSs_ = {},
118568                                                 const void *                                                                                  pNext_ = nullptr )
118569       : pNext( pNext_ )
118570       , stdVPSCount( static_cast<uint32_t>( stdVPSs_.size() ) )
118571       , pStdVPSs( stdVPSs_.data() )
118572       , stdSPSCount( static_cast<uint32_t>( stdSPSs_.size() ) )
118573       , pStdSPSs( stdSPSs_.data() )
118574       , stdPPSCount( static_cast<uint32_t>( stdPPSs_.size() ) )
118575       , pStdPPSs( stdPPSs_.data() )
118576     {
118577     }
118578 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
118579 
118580     VideoDecodeH265SessionParametersAddInfoKHR & operator=( VideoDecodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118581 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
118582 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR118583     VideoDecodeH265SessionParametersAddInfoKHR & operator=( VkVideoDecodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
118584     {
118585       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR const *>( &rhs );
118586       return *this;
118587     }
118588 
118589 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR118590     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
118591     {
118592       pNext = pNext_;
118593       return *this;
118594     }
118595 
setStdVPSCountVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR118596     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR & setStdVPSCount( uint32_t stdVPSCount_ ) VULKAN_HPP_NOEXCEPT
118597     {
118598       stdVPSCount = stdVPSCount_;
118599       return *this;
118600     }
118601 
setPStdVPSsVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR118602     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR & setPStdVPSs( const StdVideoH265VideoParameterSet * pStdVPSs_ ) VULKAN_HPP_NOEXCEPT
118603     {
118604       pStdVPSs = pStdVPSs_;
118605       return *this;
118606     }
118607 
118608 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
118609     VideoDecodeH265SessionParametersAddInfoKHR &
setStdVPSsVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR118610       setStdVPSs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265VideoParameterSet> const & stdVPSs_ ) VULKAN_HPP_NOEXCEPT
118611     {
118612       stdVPSCount = static_cast<uint32_t>( stdVPSs_.size() );
118613       pStdVPSs    = stdVPSs_.data();
118614       return *this;
118615     }
118616 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
118617 
setStdSPSCountVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR118618     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR & setStdSPSCount( uint32_t stdSPSCount_ ) VULKAN_HPP_NOEXCEPT
118619     {
118620       stdSPSCount = stdSPSCount_;
118621       return *this;
118622     }
118623 
setPStdSPSsVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR118624     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR & setPStdSPSs( const StdVideoH265SequenceParameterSet * pStdSPSs_ ) VULKAN_HPP_NOEXCEPT
118625     {
118626       pStdSPSs = pStdSPSs_;
118627       return *this;
118628     }
118629 
118630 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
118631     VideoDecodeH265SessionParametersAddInfoKHR &
setStdSPSsVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR118632       setStdSPSs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265SequenceParameterSet> const & stdSPSs_ ) VULKAN_HPP_NOEXCEPT
118633     {
118634       stdSPSCount = static_cast<uint32_t>( stdSPSs_.size() );
118635       pStdSPSs    = stdSPSs_.data();
118636       return *this;
118637     }
118638 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
118639 
setStdPPSCountVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR118640     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR & setStdPPSCount( uint32_t stdPPSCount_ ) VULKAN_HPP_NOEXCEPT
118641     {
118642       stdPPSCount = stdPPSCount_;
118643       return *this;
118644     }
118645 
setPStdPPSsVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR118646     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR & setPStdPPSs( const StdVideoH265PictureParameterSet * pStdPPSs_ ) VULKAN_HPP_NOEXCEPT
118647     {
118648       pStdPPSs = pStdPPSs_;
118649       return *this;
118650     }
118651 
118652 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
118653     VideoDecodeH265SessionParametersAddInfoKHR &
setStdPPSsVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR118654       setStdPPSs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265PictureParameterSet> const & stdPPSs_ ) VULKAN_HPP_NOEXCEPT
118655     {
118656       stdPPSCount = static_cast<uint32_t>( stdPPSs_.size() );
118657       pStdPPSs    = stdPPSs_.data();
118658       return *this;
118659     }
118660 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
118661 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
118662 
operator VkVideoDecodeH265SessionParametersAddInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR118663     operator VkVideoDecodeH265SessionParametersAddInfoKHR const &() const VULKAN_HPP_NOEXCEPT
118664     {
118665       return *reinterpret_cast<const VkVideoDecodeH265SessionParametersAddInfoKHR *>( this );
118666     }
118667 
operator VkVideoDecodeH265SessionParametersAddInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR118668     operator VkVideoDecodeH265SessionParametersAddInfoKHR &() VULKAN_HPP_NOEXCEPT
118669     {
118670       return *reinterpret_cast<VkVideoDecodeH265SessionParametersAddInfoKHR *>( this );
118671     }
118672 
118673 #if defined( VULKAN_HPP_USE_REFLECT )
118674 #  if 14 <= VULKAN_HPP_CPP_VERSION
118675     auto
118676 #  else
118677     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
118678                const void * const &,
118679                uint32_t const &,
118680                const StdVideoH265VideoParameterSet * const &,
118681                uint32_t const &,
118682                const StdVideoH265SequenceParameterSet * const &,
118683                uint32_t const &,
118684                const StdVideoH265PictureParameterSet * const &>
118685 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR118686       reflect() const VULKAN_HPP_NOEXCEPT
118687     {
118688       return std::tie( sType, pNext, stdVPSCount, pStdVPSs, stdSPSCount, pStdSPSs, stdPPSCount, pStdPPSs );
118689     }
118690 #endif
118691 
118692 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
118693     auto operator<=>( VideoDecodeH265SessionParametersAddInfoKHR const & ) const = default;
118694 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR118695     bool operator==( VideoDecodeH265SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
118696     {
118697 #  if defined( VULKAN_HPP_USE_REFLECT )
118698       return this->reflect() == rhs.reflect();
118699 #  else
118700       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stdVPSCount == rhs.stdVPSCount ) && ( pStdVPSs == rhs.pStdVPSs ) &&
118701              ( stdSPSCount == rhs.stdSPSCount ) && ( pStdSPSs == rhs.pStdSPSs ) && ( stdPPSCount == rhs.stdPPSCount ) && ( pStdPPSs == rhs.pStdPPSs );
118702 #  endif
118703     }
118704 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR118705     bool operator!=( VideoDecodeH265SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
118706     {
118707       return !operator==( rhs );
118708     }
118709 #endif
118710 
118711   public:
118712     VULKAN_HPP_NAMESPACE::StructureType      sType       = StructureType::eVideoDecodeH265SessionParametersAddInfoKHR;
118713     const void *                             pNext       = {};
118714     uint32_t                                 stdVPSCount = {};
118715     const StdVideoH265VideoParameterSet *    pStdVPSs    = {};
118716     uint32_t                                 stdSPSCount = {};
118717     const StdVideoH265SequenceParameterSet * pStdSPSs    = {};
118718     uint32_t                                 stdPPSCount = {};
118719     const StdVideoH265PictureParameterSet *  pStdPPSs    = {};
118720   };
118721 
118722   template <>
118723   struct CppType<StructureType, StructureType::eVideoDecodeH265SessionParametersAddInfoKHR>
118724   {
118725     using Type = VideoDecodeH265SessionParametersAddInfoKHR;
118726   };
118727 
118728   struct VideoDecodeH265SessionParametersCreateInfoKHR
118729   {
118730     using NativeType = VkVideoDecodeH265SessionParametersCreateInfoKHR;
118731 
118732     static const bool                                  allowDuplicate = false;
118733     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeH265SessionParametersCreateInfoKHR;
118734 
118735 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
118736     VULKAN_HPP_CONSTEXPR
VideoDecodeH265SessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR118737       VideoDecodeH265SessionParametersCreateInfoKHR( uint32_t                                                                 maxStdVPSCount_     = {},
118738                                                      uint32_t                                                                 maxStdSPSCount_     = {},
118739                                                      uint32_t                                                                 maxStdPPSCount_     = {},
118740                                                      const VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR * pParametersAddInfo_ = {},
118741                                                      const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
118742       : pNext{ pNext_ }
118743       , maxStdVPSCount{ maxStdVPSCount_ }
118744       , maxStdSPSCount{ maxStdSPSCount_ }
118745       , maxStdPPSCount{ maxStdPPSCount_ }
118746       , pParametersAddInfo{ pParametersAddInfo_ }
118747     {
118748     }
118749 
118750     VULKAN_HPP_CONSTEXPR
118751       VideoDecodeH265SessionParametersCreateInfoKHR( VideoDecodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118752 
VideoDecodeH265SessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR118753     VideoDecodeH265SessionParametersCreateInfoKHR( VkVideoDecodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
118754       : VideoDecodeH265SessionParametersCreateInfoKHR( *reinterpret_cast<VideoDecodeH265SessionParametersCreateInfoKHR const *>( &rhs ) )
118755     {
118756     }
118757 
118758     VideoDecodeH265SessionParametersCreateInfoKHR & operator=( VideoDecodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118759 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
118760 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR118761     VideoDecodeH265SessionParametersCreateInfoKHR & operator=( VkVideoDecodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
118762     {
118763       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR const *>( &rhs );
118764       return *this;
118765     }
118766 
118767 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR118768     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
118769     {
118770       pNext = pNext_;
118771       return *this;
118772     }
118773 
setMaxStdVPSCountVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR118774     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoKHR & setMaxStdVPSCount( uint32_t maxStdVPSCount_ ) VULKAN_HPP_NOEXCEPT
118775     {
118776       maxStdVPSCount = maxStdVPSCount_;
118777       return *this;
118778     }
118779 
setMaxStdSPSCountVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR118780     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoKHR & setMaxStdSPSCount( uint32_t maxStdSPSCount_ ) VULKAN_HPP_NOEXCEPT
118781     {
118782       maxStdSPSCount = maxStdSPSCount_;
118783       return *this;
118784     }
118785 
setMaxStdPPSCountVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR118786     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoKHR & setMaxStdPPSCount( uint32_t maxStdPPSCount_ ) VULKAN_HPP_NOEXCEPT
118787     {
118788       maxStdPPSCount = maxStdPPSCount_;
118789       return *this;
118790     }
118791 
118792     VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoKHR &
setPParametersAddInfoVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR118793       setPParametersAddInfo( const VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR * pParametersAddInfo_ ) VULKAN_HPP_NOEXCEPT
118794     {
118795       pParametersAddInfo = pParametersAddInfo_;
118796       return *this;
118797     }
118798 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
118799 
operator VkVideoDecodeH265SessionParametersCreateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR118800     operator VkVideoDecodeH265SessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
118801     {
118802       return *reinterpret_cast<const VkVideoDecodeH265SessionParametersCreateInfoKHR *>( this );
118803     }
118804 
operator VkVideoDecodeH265SessionParametersCreateInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR118805     operator VkVideoDecodeH265SessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
118806     {
118807       return *reinterpret_cast<VkVideoDecodeH265SessionParametersCreateInfoKHR *>( this );
118808     }
118809 
118810 #if defined( VULKAN_HPP_USE_REFLECT )
118811 #  if 14 <= VULKAN_HPP_CPP_VERSION
118812     auto
118813 #  else
118814     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
118815                const void * const &,
118816                uint32_t const &,
118817                uint32_t const &,
118818                uint32_t const &,
118819                const VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR * const &>
118820 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR118821       reflect() const VULKAN_HPP_NOEXCEPT
118822     {
118823       return std::tie( sType, pNext, maxStdVPSCount, maxStdSPSCount, maxStdPPSCount, pParametersAddInfo );
118824     }
118825 #endif
118826 
118827 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
118828     auto operator<=>( VideoDecodeH265SessionParametersCreateInfoKHR const & ) const = default;
118829 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR118830     bool operator==( VideoDecodeH265SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
118831     {
118832 #  if defined( VULKAN_HPP_USE_REFLECT )
118833       return this->reflect() == rhs.reflect();
118834 #  else
118835       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxStdVPSCount == rhs.maxStdVPSCount ) && ( maxStdSPSCount == rhs.maxStdSPSCount ) &&
118836              ( maxStdPPSCount == rhs.maxStdPPSCount ) && ( pParametersAddInfo == rhs.pParametersAddInfo );
118837 #  endif
118838     }
118839 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR118840     bool operator!=( VideoDecodeH265SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
118841     {
118842       return !operator==( rhs );
118843     }
118844 #endif
118845 
118846   public:
118847     VULKAN_HPP_NAMESPACE::StructureType                                      sType              = StructureType::eVideoDecodeH265SessionParametersCreateInfoKHR;
118848     const void *                                                             pNext              = {};
118849     uint32_t                                                                 maxStdVPSCount     = {};
118850     uint32_t                                                                 maxStdSPSCount     = {};
118851     uint32_t                                                                 maxStdPPSCount     = {};
118852     const VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR * pParametersAddInfo = {};
118853   };
118854 
118855   template <>
118856   struct CppType<StructureType, StructureType::eVideoDecodeH265SessionParametersCreateInfoKHR>
118857   {
118858     using Type = VideoDecodeH265SessionParametersCreateInfoKHR;
118859   };
118860 
118861   struct VideoDecodeInfoKHR
118862   {
118863     using NativeType = VkVideoDecodeInfoKHR;
118864 
118865     static const bool                                  allowDuplicate = false;
118866     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeInfoKHR;
118867 
118868 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR118869     VULKAN_HPP_CONSTEXPR VideoDecodeInfoKHR( VULKAN_HPP_NAMESPACE::VideoDecodeFlagsKHR               flags_               = {},
118870                                              VULKAN_HPP_NAMESPACE::Buffer                            srcBuffer_           = {},
118871                                              VULKAN_HPP_NAMESPACE::DeviceSize                        srcBufferOffset_     = {},
118872                                              VULKAN_HPP_NAMESPACE::DeviceSize                        srcBufferRange_      = {},
118873                                              VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR       dstPictureResource_  = {},
118874                                              const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pSetupReferenceSlot_ = {},
118875                                              uint32_t                                                referenceSlotCount_  = {},
118876                                              const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pReferenceSlots_     = {},
118877                                              const void *                                            pNext_               = nullptr ) VULKAN_HPP_NOEXCEPT
118878       : pNext{ pNext_ }
118879       , flags{ flags_ }
118880       , srcBuffer{ srcBuffer_ }
118881       , srcBufferOffset{ srcBufferOffset_ }
118882       , srcBufferRange{ srcBufferRange_ }
118883       , dstPictureResource{ dstPictureResource_ }
118884       , pSetupReferenceSlot{ pSetupReferenceSlot_ }
118885       , referenceSlotCount{ referenceSlotCount_ }
118886       , pReferenceSlots{ pReferenceSlots_ }
118887     {
118888     }
118889 
118890     VULKAN_HPP_CONSTEXPR VideoDecodeInfoKHR( VideoDecodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118891 
VideoDecodeInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR118892     VideoDecodeInfoKHR( VkVideoDecodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : VideoDecodeInfoKHR( *reinterpret_cast<VideoDecodeInfoKHR const *>( &rhs ) ) {}
118893 
118894 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoDecodeInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR118895     VideoDecodeInfoKHR( VULKAN_HPP_NAMESPACE::VideoDecodeFlagsKHR                                                                    flags_,
118896                         VULKAN_HPP_NAMESPACE::Buffer                                                                                 srcBuffer_,
118897                         VULKAN_HPP_NAMESPACE::DeviceSize                                                                             srcBufferOffset_,
118898                         VULKAN_HPP_NAMESPACE::DeviceSize                                                                             srcBufferRange_,
118899                         VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR                                                            dstPictureResource_,
118900                         const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR *                                                      pSetupReferenceSlot_,
118901                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR> const & referenceSlots_,
118902                         const void *                                                                                                 pNext_ = nullptr )
118903       : pNext( pNext_ )
118904       , flags( flags_ )
118905       , srcBuffer( srcBuffer_ )
118906       , srcBufferOffset( srcBufferOffset_ )
118907       , srcBufferRange( srcBufferRange_ )
118908       , dstPictureResource( dstPictureResource_ )
118909       , pSetupReferenceSlot( pSetupReferenceSlot_ )
118910       , referenceSlotCount( static_cast<uint32_t>( referenceSlots_.size() ) )
118911       , pReferenceSlots( referenceSlots_.data() )
118912     {
118913     }
118914 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
118915 
118916     VideoDecodeInfoKHR & operator=( VideoDecodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
118917 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
118918 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR118919     VideoDecodeInfoKHR & operator=( VkVideoDecodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
118920     {
118921       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR const *>( &rhs );
118922       return *this;
118923     }
118924 
118925 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR118926     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
118927     {
118928       pNext = pNext_;
118929       return *this;
118930     }
118931 
setFlagsVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR118932     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::VideoDecodeFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
118933     {
118934       flags = flags_;
118935       return *this;
118936     }
118937 
setSrcBufferVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR118938     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setSrcBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ ) VULKAN_HPP_NOEXCEPT
118939     {
118940       srcBuffer = srcBuffer_;
118941       return *this;
118942     }
118943 
setSrcBufferOffsetVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR118944     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setSrcBufferOffset( VULKAN_HPP_NAMESPACE::DeviceSize srcBufferOffset_ ) VULKAN_HPP_NOEXCEPT
118945     {
118946       srcBufferOffset = srcBufferOffset_;
118947       return *this;
118948     }
118949 
setSrcBufferRangeVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR118950     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setSrcBufferRange( VULKAN_HPP_NAMESPACE::DeviceSize srcBufferRange_ ) VULKAN_HPP_NOEXCEPT
118951     {
118952       srcBufferRange = srcBufferRange_;
118953       return *this;
118954     }
118955 
118956     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR &
setDstPictureResourceVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR118957       setDstPictureResource( VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR const & dstPictureResource_ ) VULKAN_HPP_NOEXCEPT
118958     {
118959       dstPictureResource = dstPictureResource_;
118960       return *this;
118961     }
118962 
118963     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR &
setPSetupReferenceSlotVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR118964       setPSetupReferenceSlot( const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pSetupReferenceSlot_ ) VULKAN_HPP_NOEXCEPT
118965     {
118966       pSetupReferenceSlot = pSetupReferenceSlot_;
118967       return *this;
118968     }
118969 
setReferenceSlotCountVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR118970     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setReferenceSlotCount( uint32_t referenceSlotCount_ ) VULKAN_HPP_NOEXCEPT
118971     {
118972       referenceSlotCount = referenceSlotCount_;
118973       return *this;
118974     }
118975 
118976     VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR &
setPReferenceSlotsVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR118977       setPReferenceSlots( const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pReferenceSlots_ ) VULKAN_HPP_NOEXCEPT
118978     {
118979       pReferenceSlots = pReferenceSlots_;
118980       return *this;
118981     }
118982 
118983 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setReferenceSlotsVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR118984     VideoDecodeInfoKHR & setReferenceSlots(
118985       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR> const & referenceSlots_ ) VULKAN_HPP_NOEXCEPT
118986     {
118987       referenceSlotCount = static_cast<uint32_t>( referenceSlots_.size() );
118988       pReferenceSlots    = referenceSlots_.data();
118989       return *this;
118990     }
118991 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
118992 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
118993 
operator VkVideoDecodeInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR118994     operator VkVideoDecodeInfoKHR const &() const VULKAN_HPP_NOEXCEPT
118995     {
118996       return *reinterpret_cast<const VkVideoDecodeInfoKHR *>( this );
118997     }
118998 
operator VkVideoDecodeInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR118999     operator VkVideoDecodeInfoKHR &() VULKAN_HPP_NOEXCEPT
119000     {
119001       return *reinterpret_cast<VkVideoDecodeInfoKHR *>( this );
119002     }
119003 
119004 #if defined( VULKAN_HPP_USE_REFLECT )
119005 #  if 14 <= VULKAN_HPP_CPP_VERSION
119006     auto
119007 #  else
119008     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
119009                const void * const &,
119010                VULKAN_HPP_NAMESPACE::VideoDecodeFlagsKHR const &,
119011                VULKAN_HPP_NAMESPACE::Buffer const &,
119012                VULKAN_HPP_NAMESPACE::DeviceSize const &,
119013                VULKAN_HPP_NAMESPACE::DeviceSize const &,
119014                VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR const &,
119015                const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * const &,
119016                uint32_t const &,
119017                const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * const &>
119018 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR119019       reflect() const VULKAN_HPP_NOEXCEPT
119020     {
119021       return std::tie(
119022         sType, pNext, flags, srcBuffer, srcBufferOffset, srcBufferRange, dstPictureResource, pSetupReferenceSlot, referenceSlotCount, pReferenceSlots );
119023     }
119024 #endif
119025 
119026 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
119027     auto operator<=>( VideoDecodeInfoKHR const & ) const = default;
119028 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR119029     bool operator==( VideoDecodeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119030     {
119031 #  if defined( VULKAN_HPP_USE_REFLECT )
119032       return this->reflect() == rhs.reflect();
119033 #  else
119034       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( srcBuffer == rhs.srcBuffer ) &&
119035              ( srcBufferOffset == rhs.srcBufferOffset ) && ( srcBufferRange == rhs.srcBufferRange ) && ( dstPictureResource == rhs.dstPictureResource ) &&
119036              ( pSetupReferenceSlot == rhs.pSetupReferenceSlot ) && ( referenceSlotCount == rhs.referenceSlotCount ) &&
119037              ( pReferenceSlots == rhs.pReferenceSlots );
119038 #  endif
119039     }
119040 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR119041     bool operator!=( VideoDecodeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119042     {
119043       return !operator==( rhs );
119044     }
119045 #endif
119046 
119047   public:
119048     VULKAN_HPP_NAMESPACE::StructureType                     sType               = StructureType::eVideoDecodeInfoKHR;
119049     const void *                                            pNext               = {};
119050     VULKAN_HPP_NAMESPACE::VideoDecodeFlagsKHR               flags               = {};
119051     VULKAN_HPP_NAMESPACE::Buffer                            srcBuffer           = {};
119052     VULKAN_HPP_NAMESPACE::DeviceSize                        srcBufferOffset     = {};
119053     VULKAN_HPP_NAMESPACE::DeviceSize                        srcBufferRange      = {};
119054     VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR       dstPictureResource  = {};
119055     const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pSetupReferenceSlot = {};
119056     uint32_t                                                referenceSlotCount  = {};
119057     const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pReferenceSlots     = {};
119058   };
119059 
119060   template <>
119061   struct CppType<StructureType, StructureType::eVideoDecodeInfoKHR>
119062   {
119063     using Type = VideoDecodeInfoKHR;
119064   };
119065 
119066   struct VideoDecodeUsageInfoKHR
119067   {
119068     using NativeType = VkVideoDecodeUsageInfoKHR;
119069 
119070     static const bool                                  allowDuplicate = false;
119071     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoDecodeUsageInfoKHR;
119072 
119073 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoDecodeUsageInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR119074     VULKAN_HPP_CONSTEXPR VideoDecodeUsageInfoKHR( VULKAN_HPP_NAMESPACE::VideoDecodeUsageFlagsKHR videoUsageHints_ = {},
119075                                                   const void *                                   pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
119076       : pNext{ pNext_ }
119077       , videoUsageHints{ videoUsageHints_ }
119078     {
119079     }
119080 
119081     VULKAN_HPP_CONSTEXPR VideoDecodeUsageInfoKHR( VideoDecodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119082 
VideoDecodeUsageInfoKHRVULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR119083     VideoDecodeUsageInfoKHR( VkVideoDecodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119084       : VideoDecodeUsageInfoKHR( *reinterpret_cast<VideoDecodeUsageInfoKHR const *>( &rhs ) )
119085     {
119086     }
119087 
119088     VideoDecodeUsageInfoKHR & operator=( VideoDecodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119089 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
119090 
operator =VULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR119091     VideoDecodeUsageInfoKHR & operator=( VkVideoDecodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119092     {
119093       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR const *>( &rhs );
119094       return *this;
119095     }
119096 
119097 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR119098     VULKAN_HPP_CONSTEXPR_14 VideoDecodeUsageInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
119099     {
119100       pNext = pNext_;
119101       return *this;
119102     }
119103 
setVideoUsageHintsVULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR119104     VULKAN_HPP_CONSTEXPR_14 VideoDecodeUsageInfoKHR & setVideoUsageHints( VULKAN_HPP_NAMESPACE::VideoDecodeUsageFlagsKHR videoUsageHints_ ) VULKAN_HPP_NOEXCEPT
119105     {
119106       videoUsageHints = videoUsageHints_;
119107       return *this;
119108     }
119109 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
119110 
operator VkVideoDecodeUsageInfoKHR const&VULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR119111     operator VkVideoDecodeUsageInfoKHR const &() const VULKAN_HPP_NOEXCEPT
119112     {
119113       return *reinterpret_cast<const VkVideoDecodeUsageInfoKHR *>( this );
119114     }
119115 
operator VkVideoDecodeUsageInfoKHR&VULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR119116     operator VkVideoDecodeUsageInfoKHR &() VULKAN_HPP_NOEXCEPT
119117     {
119118       return *reinterpret_cast<VkVideoDecodeUsageInfoKHR *>( this );
119119     }
119120 
119121 #if defined( VULKAN_HPP_USE_REFLECT )
119122 #  if 14 <= VULKAN_HPP_CPP_VERSION
119123     auto
119124 #  else
119125     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::VideoDecodeUsageFlagsKHR const &>
119126 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR119127       reflect() const VULKAN_HPP_NOEXCEPT
119128     {
119129       return std::tie( sType, pNext, videoUsageHints );
119130     }
119131 #endif
119132 
119133 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
119134     auto operator<=>( VideoDecodeUsageInfoKHR const & ) const = default;
119135 #else
operator ==VULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR119136     bool operator==( VideoDecodeUsageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119137     {
119138 #  if defined( VULKAN_HPP_USE_REFLECT )
119139       return this->reflect() == rhs.reflect();
119140 #  else
119141       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoUsageHints == rhs.videoUsageHints );
119142 #  endif
119143     }
119144 
operator !=VULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR119145     bool operator!=( VideoDecodeUsageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119146     {
119147       return !operator==( rhs );
119148     }
119149 #endif
119150 
119151   public:
119152     VULKAN_HPP_NAMESPACE::StructureType            sType           = StructureType::eVideoDecodeUsageInfoKHR;
119153     const void *                                   pNext           = {};
119154     VULKAN_HPP_NAMESPACE::VideoDecodeUsageFlagsKHR videoUsageHints = {};
119155   };
119156 
119157   template <>
119158   struct CppType<StructureType, StructureType::eVideoDecodeUsageInfoKHR>
119159   {
119160     using Type = VideoDecodeUsageInfoKHR;
119161   };
119162 
119163   struct VideoEncodeCapabilitiesKHR
119164   {
119165     using NativeType = VkVideoEncodeCapabilitiesKHR;
119166 
119167     static const bool                                  allowDuplicate = false;
119168     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeCapabilitiesKHR;
119169 
119170 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeCapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR119171     VULKAN_HPP_CONSTEXPR VideoEncodeCapabilitiesKHR( VULKAN_HPP_NAMESPACE::VideoEncodeCapabilityFlagsKHR      flags_                         = {},
119172                                                      VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagsKHR rateControlModes_              = {},
119173                                                      uint32_t                                                 maxRateControlLayers_          = {},
119174                                                      uint64_t                                                 maxBitrate_                    = {},
119175                                                      uint32_t                                                 maxQualityLevels_              = {},
119176                                                      VULKAN_HPP_NAMESPACE::Extent2D                           encodeInputPictureGranularity_ = {},
119177                                                      VULKAN_HPP_NAMESPACE::VideoEncodeFeedbackFlagsKHR        supportedEncodeFeedbackFlags_  = {},
119178                                                      void *                                                   pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
119179       : pNext{ pNext_ }
119180       , flags{ flags_ }
119181       , rateControlModes{ rateControlModes_ }
119182       , maxRateControlLayers{ maxRateControlLayers_ }
119183       , maxBitrate{ maxBitrate_ }
119184       , maxQualityLevels{ maxQualityLevels_ }
119185       , encodeInputPictureGranularity{ encodeInputPictureGranularity_ }
119186       , supportedEncodeFeedbackFlags{ supportedEncodeFeedbackFlags_ }
119187     {
119188     }
119189 
119190     VULKAN_HPP_CONSTEXPR VideoEncodeCapabilitiesKHR( VideoEncodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119191 
VideoEncodeCapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR119192     VideoEncodeCapabilitiesKHR( VkVideoEncodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119193       : VideoEncodeCapabilitiesKHR( *reinterpret_cast<VideoEncodeCapabilitiesKHR const *>( &rhs ) )
119194     {
119195     }
119196 
119197     VideoEncodeCapabilitiesKHR & operator=( VideoEncodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119198 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
119199 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR119200     VideoEncodeCapabilitiesKHR & operator=( VkVideoEncodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119201     {
119202       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR const *>( &rhs );
119203       return *this;
119204     }
119205 
operator VkVideoEncodeCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR119206     operator VkVideoEncodeCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
119207     {
119208       return *reinterpret_cast<const VkVideoEncodeCapabilitiesKHR *>( this );
119209     }
119210 
operator VkVideoEncodeCapabilitiesKHR&VULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR119211     operator VkVideoEncodeCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
119212     {
119213       return *reinterpret_cast<VkVideoEncodeCapabilitiesKHR *>( this );
119214     }
119215 
119216 #if defined( VULKAN_HPP_USE_REFLECT )
119217 #  if 14 <= VULKAN_HPP_CPP_VERSION
119218     auto
119219 #  else
119220     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
119221                void * const &,
119222                VULKAN_HPP_NAMESPACE::VideoEncodeCapabilityFlagsKHR const &,
119223                VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagsKHR const &,
119224                uint32_t const &,
119225                uint64_t const &,
119226                uint32_t const &,
119227                VULKAN_HPP_NAMESPACE::Extent2D const &,
119228                VULKAN_HPP_NAMESPACE::VideoEncodeFeedbackFlagsKHR const &>
119229 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR119230       reflect() const VULKAN_HPP_NOEXCEPT
119231     {
119232       return std::tie( sType,
119233                        pNext,
119234                        flags,
119235                        rateControlModes,
119236                        maxRateControlLayers,
119237                        maxBitrate,
119238                        maxQualityLevels,
119239                        encodeInputPictureGranularity,
119240                        supportedEncodeFeedbackFlags );
119241     }
119242 #endif
119243 
119244 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
119245     auto operator<=>( VideoEncodeCapabilitiesKHR const & ) const = default;
119246 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR119247     bool operator==( VideoEncodeCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119248     {
119249 #  if defined( VULKAN_HPP_USE_REFLECT )
119250       return this->reflect() == rhs.reflect();
119251 #  else
119252       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( rateControlModes == rhs.rateControlModes ) &&
119253              ( maxRateControlLayers == rhs.maxRateControlLayers ) && ( maxBitrate == rhs.maxBitrate ) && ( maxQualityLevels == rhs.maxQualityLevels ) &&
119254              ( encodeInputPictureGranularity == rhs.encodeInputPictureGranularity ) && ( supportedEncodeFeedbackFlags == rhs.supportedEncodeFeedbackFlags );
119255 #  endif
119256     }
119257 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR119258     bool operator!=( VideoEncodeCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119259     {
119260       return !operator==( rhs );
119261     }
119262 #endif
119263 
119264   public:
119265     VULKAN_HPP_NAMESPACE::StructureType                      sType                         = StructureType::eVideoEncodeCapabilitiesKHR;
119266     void *                                                   pNext                         = {};
119267     VULKAN_HPP_NAMESPACE::VideoEncodeCapabilityFlagsKHR      flags                         = {};
119268     VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagsKHR rateControlModes              = {};
119269     uint32_t                                                 maxRateControlLayers          = {};
119270     uint64_t                                                 maxBitrate                    = {};
119271     uint32_t                                                 maxQualityLevels              = {};
119272     VULKAN_HPP_NAMESPACE::Extent2D                           encodeInputPictureGranularity = {};
119273     VULKAN_HPP_NAMESPACE::VideoEncodeFeedbackFlagsKHR        supportedEncodeFeedbackFlags  = {};
119274   };
119275 
119276   template <>
119277   struct CppType<StructureType, StructureType::eVideoEncodeCapabilitiesKHR>
119278   {
119279     using Type = VideoEncodeCapabilitiesKHR;
119280   };
119281 
119282   struct VideoEncodeH264CapabilitiesKHR
119283   {
119284     using NativeType = VkVideoEncodeH264CapabilitiesKHR;
119285 
119286     static const bool                                  allowDuplicate = false;
119287     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264CapabilitiesKHR;
119288 
119289 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264CapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR119290     VULKAN_HPP_CONSTEXPR VideoEncodeH264CapabilitiesKHR( VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilityFlagsKHR flags_                            = {},
119291                                                          StdVideoH264LevelIdc                                    maxLevelIdc_                      = {},
119292                                                          uint32_t                                                maxSliceCount_                    = {},
119293                                                          uint32_t                                                maxPPictureL0ReferenceCount_      = {},
119294                                                          uint32_t                                                maxBPictureL0ReferenceCount_      = {},
119295                                                          uint32_t                                                maxL1ReferenceCount_              = {},
119296                                                          uint32_t                                                maxTemporalLayerCount_            = {},
119297                                                          VULKAN_HPP_NAMESPACE::Bool32                            expectDyadicTemporalLayerPattern_ = {},
119298                                                          int32_t                                                 minQp_                            = {},
119299                                                          int32_t                                                 maxQp_                            = {},
119300                                                          VULKAN_HPP_NAMESPACE::Bool32                            prefersGopRemainingFrames_        = {},
119301                                                          VULKAN_HPP_NAMESPACE::Bool32                            requiresGopRemainingFrames_       = {},
119302                                                          VULKAN_HPP_NAMESPACE::VideoEncodeH264StdFlagsKHR        stdSyntaxFlags_                   = {},
119303                                                          void *                                                  pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
119304       : pNext{ pNext_ }
119305       , flags{ flags_ }
119306       , maxLevelIdc{ maxLevelIdc_ }
119307       , maxSliceCount{ maxSliceCount_ }
119308       , maxPPictureL0ReferenceCount{ maxPPictureL0ReferenceCount_ }
119309       , maxBPictureL0ReferenceCount{ maxBPictureL0ReferenceCount_ }
119310       , maxL1ReferenceCount{ maxL1ReferenceCount_ }
119311       , maxTemporalLayerCount{ maxTemporalLayerCount_ }
119312       , expectDyadicTemporalLayerPattern{ expectDyadicTemporalLayerPattern_ }
119313       , minQp{ minQp_ }
119314       , maxQp{ maxQp_ }
119315       , prefersGopRemainingFrames{ prefersGopRemainingFrames_ }
119316       , requiresGopRemainingFrames{ requiresGopRemainingFrames_ }
119317       , stdSyntaxFlags{ stdSyntaxFlags_ }
119318     {
119319     }
119320 
119321     VULKAN_HPP_CONSTEXPR VideoEncodeH264CapabilitiesKHR( VideoEncodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119322 
VideoEncodeH264CapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR119323     VideoEncodeH264CapabilitiesKHR( VkVideoEncodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119324       : VideoEncodeH264CapabilitiesKHR( *reinterpret_cast<VideoEncodeH264CapabilitiesKHR const *>( &rhs ) )
119325     {
119326     }
119327 
119328     VideoEncodeH264CapabilitiesKHR & operator=( VideoEncodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119329 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
119330 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR119331     VideoEncodeH264CapabilitiesKHR & operator=( VkVideoEncodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119332     {
119333       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR const *>( &rhs );
119334       return *this;
119335     }
119336 
operator VkVideoEncodeH264CapabilitiesKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR119337     operator VkVideoEncodeH264CapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
119338     {
119339       return *reinterpret_cast<const VkVideoEncodeH264CapabilitiesKHR *>( this );
119340     }
119341 
operator VkVideoEncodeH264CapabilitiesKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR119342     operator VkVideoEncodeH264CapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
119343     {
119344       return *reinterpret_cast<VkVideoEncodeH264CapabilitiesKHR *>( this );
119345     }
119346 
119347 #if defined( VULKAN_HPP_USE_REFLECT )
119348 #  if 14 <= VULKAN_HPP_CPP_VERSION
119349     auto
119350 #  else
119351     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
119352                void * const &,
119353                VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilityFlagsKHR const &,
119354                StdVideoH264LevelIdc const &,
119355                uint32_t const &,
119356                uint32_t const &,
119357                uint32_t const &,
119358                uint32_t const &,
119359                uint32_t const &,
119360                VULKAN_HPP_NAMESPACE::Bool32 const &,
119361                int32_t const &,
119362                int32_t const &,
119363                VULKAN_HPP_NAMESPACE::Bool32 const &,
119364                VULKAN_HPP_NAMESPACE::Bool32 const &,
119365                VULKAN_HPP_NAMESPACE::VideoEncodeH264StdFlagsKHR const &>
119366 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR119367       reflect() const VULKAN_HPP_NOEXCEPT
119368     {
119369       return std::tie( sType,
119370                        pNext,
119371                        flags,
119372                        maxLevelIdc,
119373                        maxSliceCount,
119374                        maxPPictureL0ReferenceCount,
119375                        maxBPictureL0ReferenceCount,
119376                        maxL1ReferenceCount,
119377                        maxTemporalLayerCount,
119378                        expectDyadicTemporalLayerPattern,
119379                        minQp,
119380                        maxQp,
119381                        prefersGopRemainingFrames,
119382                        requiresGopRemainingFrames,
119383                        stdSyntaxFlags );
119384     }
119385 #endif
119386 
119387 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR119388     std::strong_ordering operator<=>( VideoEncodeH264CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119389     {
119390       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
119391         return cmp;
119392       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
119393         return cmp;
119394       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
119395         return cmp;
119396       if ( auto cmp = memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH264LevelIdc ) ); cmp != 0 )
119397         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
119398       if ( auto cmp = maxSliceCount <=> rhs.maxSliceCount; cmp != 0 )
119399         return cmp;
119400       if ( auto cmp = maxPPictureL0ReferenceCount <=> rhs.maxPPictureL0ReferenceCount; cmp != 0 )
119401         return cmp;
119402       if ( auto cmp = maxBPictureL0ReferenceCount <=> rhs.maxBPictureL0ReferenceCount; cmp != 0 )
119403         return cmp;
119404       if ( auto cmp = maxL1ReferenceCount <=> rhs.maxL1ReferenceCount; cmp != 0 )
119405         return cmp;
119406       if ( auto cmp = maxTemporalLayerCount <=> rhs.maxTemporalLayerCount; cmp != 0 )
119407         return cmp;
119408       if ( auto cmp = expectDyadicTemporalLayerPattern <=> rhs.expectDyadicTemporalLayerPattern; cmp != 0 )
119409         return cmp;
119410       if ( auto cmp = minQp <=> rhs.minQp; cmp != 0 )
119411         return cmp;
119412       if ( auto cmp = maxQp <=> rhs.maxQp; cmp != 0 )
119413         return cmp;
119414       if ( auto cmp = prefersGopRemainingFrames <=> rhs.prefersGopRemainingFrames; cmp != 0 )
119415         return cmp;
119416       if ( auto cmp = requiresGopRemainingFrames <=> rhs.requiresGopRemainingFrames; cmp != 0 )
119417         return cmp;
119418       if ( auto cmp = stdSyntaxFlags <=> rhs.stdSyntaxFlags; cmp != 0 )
119419         return cmp;
119420 
119421       return std::strong_ordering::equivalent;
119422     }
119423 #endif
119424 
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR119425     bool operator==( VideoEncodeH264CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119426     {
119427       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) &&
119428              ( memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH264LevelIdc ) ) == 0 ) && ( maxSliceCount == rhs.maxSliceCount ) &&
119429              ( maxPPictureL0ReferenceCount == rhs.maxPPictureL0ReferenceCount ) && ( maxBPictureL0ReferenceCount == rhs.maxBPictureL0ReferenceCount ) &&
119430              ( maxL1ReferenceCount == rhs.maxL1ReferenceCount ) && ( maxTemporalLayerCount == rhs.maxTemporalLayerCount ) &&
119431              ( expectDyadicTemporalLayerPattern == rhs.expectDyadicTemporalLayerPattern ) && ( minQp == rhs.minQp ) && ( maxQp == rhs.maxQp ) &&
119432              ( prefersGopRemainingFrames == rhs.prefersGopRemainingFrames ) && ( requiresGopRemainingFrames == rhs.requiresGopRemainingFrames ) &&
119433              ( stdSyntaxFlags == rhs.stdSyntaxFlags );
119434     }
119435 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR119436     bool operator!=( VideoEncodeH264CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119437     {
119438       return !operator==( rhs );
119439     }
119440 
119441   public:
119442     VULKAN_HPP_NAMESPACE::StructureType                     sType                            = StructureType::eVideoEncodeH264CapabilitiesKHR;
119443     void *                                                  pNext                            = {};
119444     VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilityFlagsKHR flags                            = {};
119445     StdVideoH264LevelIdc                                    maxLevelIdc                      = {};
119446     uint32_t                                                maxSliceCount                    = {};
119447     uint32_t                                                maxPPictureL0ReferenceCount      = {};
119448     uint32_t                                                maxBPictureL0ReferenceCount      = {};
119449     uint32_t                                                maxL1ReferenceCount              = {};
119450     uint32_t                                                maxTemporalLayerCount            = {};
119451     VULKAN_HPP_NAMESPACE::Bool32                            expectDyadicTemporalLayerPattern = {};
119452     int32_t                                                 minQp                            = {};
119453     int32_t                                                 maxQp                            = {};
119454     VULKAN_HPP_NAMESPACE::Bool32                            prefersGopRemainingFrames        = {};
119455     VULKAN_HPP_NAMESPACE::Bool32                            requiresGopRemainingFrames       = {};
119456     VULKAN_HPP_NAMESPACE::VideoEncodeH264StdFlagsKHR        stdSyntaxFlags                   = {};
119457   };
119458 
119459   template <>
119460   struct CppType<StructureType, StructureType::eVideoEncodeH264CapabilitiesKHR>
119461   {
119462     using Type = VideoEncodeH264CapabilitiesKHR;
119463   };
119464 
119465   struct VideoEncodeH264DpbSlotInfoKHR
119466   {
119467     using NativeType = VkVideoEncodeH264DpbSlotInfoKHR;
119468 
119469     static const bool                                  allowDuplicate = false;
119470     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264DpbSlotInfoKHR;
119471 
119472 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264DpbSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR119473     VULKAN_HPP_CONSTEXPR VideoEncodeH264DpbSlotInfoKHR( const StdVideoEncodeH264ReferenceInfo * pStdReferenceInfo_ = {},
119474                                                         const void *                            pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
119475       : pNext{ pNext_ }
119476       , pStdReferenceInfo{ pStdReferenceInfo_ }
119477     {
119478     }
119479 
119480     VULKAN_HPP_CONSTEXPR VideoEncodeH264DpbSlotInfoKHR( VideoEncodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119481 
VideoEncodeH264DpbSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR119482     VideoEncodeH264DpbSlotInfoKHR( VkVideoEncodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119483       : VideoEncodeH264DpbSlotInfoKHR( *reinterpret_cast<VideoEncodeH264DpbSlotInfoKHR const *>( &rhs ) )
119484     {
119485     }
119486 
119487     VideoEncodeH264DpbSlotInfoKHR & operator=( VideoEncodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119488 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
119489 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR119490     VideoEncodeH264DpbSlotInfoKHR & operator=( VkVideoEncodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119491     {
119492       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR const *>( &rhs );
119493       return *this;
119494     }
119495 
119496 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR119497     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264DpbSlotInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
119498     {
119499       pNext = pNext_;
119500       return *this;
119501     }
119502 
119503     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264DpbSlotInfoKHR &
setPStdReferenceInfoVULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR119504       setPStdReferenceInfo( const StdVideoEncodeH264ReferenceInfo * pStdReferenceInfo_ ) VULKAN_HPP_NOEXCEPT
119505     {
119506       pStdReferenceInfo = pStdReferenceInfo_;
119507       return *this;
119508     }
119509 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
119510 
operator VkVideoEncodeH264DpbSlotInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR119511     operator VkVideoEncodeH264DpbSlotInfoKHR const &() const VULKAN_HPP_NOEXCEPT
119512     {
119513       return *reinterpret_cast<const VkVideoEncodeH264DpbSlotInfoKHR *>( this );
119514     }
119515 
operator VkVideoEncodeH264DpbSlotInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR119516     operator VkVideoEncodeH264DpbSlotInfoKHR &() VULKAN_HPP_NOEXCEPT
119517     {
119518       return *reinterpret_cast<VkVideoEncodeH264DpbSlotInfoKHR *>( this );
119519     }
119520 
119521 #if defined( VULKAN_HPP_USE_REFLECT )
119522 #  if 14 <= VULKAN_HPP_CPP_VERSION
119523     auto
119524 #  else
119525     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const StdVideoEncodeH264ReferenceInfo * const &>
119526 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR119527       reflect() const VULKAN_HPP_NOEXCEPT
119528     {
119529       return std::tie( sType, pNext, pStdReferenceInfo );
119530     }
119531 #endif
119532 
119533 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
119534     auto operator<=>( VideoEncodeH264DpbSlotInfoKHR const & ) const = default;
119535 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR119536     bool operator==( VideoEncodeH264DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119537     {
119538 #  if defined( VULKAN_HPP_USE_REFLECT )
119539       return this->reflect() == rhs.reflect();
119540 #  else
119541       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdReferenceInfo == rhs.pStdReferenceInfo );
119542 #  endif
119543     }
119544 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR119545     bool operator!=( VideoEncodeH264DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119546     {
119547       return !operator==( rhs );
119548     }
119549 #endif
119550 
119551   public:
119552     VULKAN_HPP_NAMESPACE::StructureType     sType             = StructureType::eVideoEncodeH264DpbSlotInfoKHR;
119553     const void *                            pNext             = {};
119554     const StdVideoEncodeH264ReferenceInfo * pStdReferenceInfo = {};
119555   };
119556 
119557   template <>
119558   struct CppType<StructureType, StructureType::eVideoEncodeH264DpbSlotInfoKHR>
119559   {
119560     using Type = VideoEncodeH264DpbSlotInfoKHR;
119561   };
119562 
119563   struct VideoEncodeH264FrameSizeKHR
119564   {
119565     using NativeType = VkVideoEncodeH264FrameSizeKHR;
119566 
119567 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264FrameSizeKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR119568     VULKAN_HPP_CONSTEXPR VideoEncodeH264FrameSizeKHR( uint32_t frameISize_ = {}, uint32_t framePSize_ = {}, uint32_t frameBSize_ = {} ) VULKAN_HPP_NOEXCEPT
119569       : frameISize{ frameISize_ }
119570       , framePSize{ framePSize_ }
119571       , frameBSize{ frameBSize_ }
119572     {
119573     }
119574 
119575     VULKAN_HPP_CONSTEXPR VideoEncodeH264FrameSizeKHR( VideoEncodeH264FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119576 
VideoEncodeH264FrameSizeKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR119577     VideoEncodeH264FrameSizeKHR( VkVideoEncodeH264FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119578       : VideoEncodeH264FrameSizeKHR( *reinterpret_cast<VideoEncodeH264FrameSizeKHR const *>( &rhs ) )
119579     {
119580     }
119581 
119582     VideoEncodeH264FrameSizeKHR & operator=( VideoEncodeH264FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119583 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
119584 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR119585     VideoEncodeH264FrameSizeKHR & operator=( VkVideoEncodeH264FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119586     {
119587       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR const *>( &rhs );
119588       return *this;
119589     }
119590 
119591 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFrameISizeVULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR119592     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264FrameSizeKHR & setFrameISize( uint32_t frameISize_ ) VULKAN_HPP_NOEXCEPT
119593     {
119594       frameISize = frameISize_;
119595       return *this;
119596     }
119597 
setFramePSizeVULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR119598     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264FrameSizeKHR & setFramePSize( uint32_t framePSize_ ) VULKAN_HPP_NOEXCEPT
119599     {
119600       framePSize = framePSize_;
119601       return *this;
119602     }
119603 
setFrameBSizeVULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR119604     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264FrameSizeKHR & setFrameBSize( uint32_t frameBSize_ ) VULKAN_HPP_NOEXCEPT
119605     {
119606       frameBSize = frameBSize_;
119607       return *this;
119608     }
119609 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
119610 
operator VkVideoEncodeH264FrameSizeKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR119611     operator VkVideoEncodeH264FrameSizeKHR const &() const VULKAN_HPP_NOEXCEPT
119612     {
119613       return *reinterpret_cast<const VkVideoEncodeH264FrameSizeKHR *>( this );
119614     }
119615 
operator VkVideoEncodeH264FrameSizeKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR119616     operator VkVideoEncodeH264FrameSizeKHR &() VULKAN_HPP_NOEXCEPT
119617     {
119618       return *reinterpret_cast<VkVideoEncodeH264FrameSizeKHR *>( this );
119619     }
119620 
119621 #if defined( VULKAN_HPP_USE_REFLECT )
119622 #  if 14 <= VULKAN_HPP_CPP_VERSION
119623     auto
119624 #  else
119625     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
119626 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR119627       reflect() const VULKAN_HPP_NOEXCEPT
119628     {
119629       return std::tie( frameISize, framePSize, frameBSize );
119630     }
119631 #endif
119632 
119633 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
119634     auto operator<=>( VideoEncodeH264FrameSizeKHR const & ) const = default;
119635 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR119636     bool operator==( VideoEncodeH264FrameSizeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119637     {
119638 #  if defined( VULKAN_HPP_USE_REFLECT )
119639       return this->reflect() == rhs.reflect();
119640 #  else
119641       return ( frameISize == rhs.frameISize ) && ( framePSize == rhs.framePSize ) && ( frameBSize == rhs.frameBSize );
119642 #  endif
119643     }
119644 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR119645     bool operator!=( VideoEncodeH264FrameSizeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119646     {
119647       return !operator==( rhs );
119648     }
119649 #endif
119650 
119651   public:
119652     uint32_t frameISize = {};
119653     uint32_t framePSize = {};
119654     uint32_t frameBSize = {};
119655   };
119656 
119657   struct VideoEncodeH264GopRemainingFrameInfoKHR
119658   {
119659     using NativeType = VkVideoEncodeH264GopRemainingFrameInfoKHR;
119660 
119661     static const bool                                  allowDuplicate = false;
119662     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264GopRemainingFrameInfoKHR;
119663 
119664 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264GopRemainingFrameInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR119665     VULKAN_HPP_CONSTEXPR VideoEncodeH264GopRemainingFrameInfoKHR( VULKAN_HPP_NAMESPACE::Bool32 useGopRemainingFrames_ = {},
119666                                                                   uint32_t                     gopRemainingI_         = {},
119667                                                                   uint32_t                     gopRemainingP_         = {},
119668                                                                   uint32_t                     gopRemainingB_         = {},
119669                                                                   const void *                 pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
119670       : pNext{ pNext_ }
119671       , useGopRemainingFrames{ useGopRemainingFrames_ }
119672       , gopRemainingI{ gopRemainingI_ }
119673       , gopRemainingP{ gopRemainingP_ }
119674       , gopRemainingB{ gopRemainingB_ }
119675     {
119676     }
119677 
119678     VULKAN_HPP_CONSTEXPR VideoEncodeH264GopRemainingFrameInfoKHR( VideoEncodeH264GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119679 
VideoEncodeH264GopRemainingFrameInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR119680     VideoEncodeH264GopRemainingFrameInfoKHR( VkVideoEncodeH264GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119681       : VideoEncodeH264GopRemainingFrameInfoKHR( *reinterpret_cast<VideoEncodeH264GopRemainingFrameInfoKHR const *>( &rhs ) )
119682     {
119683     }
119684 
119685     VideoEncodeH264GopRemainingFrameInfoKHR & operator=( VideoEncodeH264GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119686 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
119687 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR119688     VideoEncodeH264GopRemainingFrameInfoKHR & operator=( VkVideoEncodeH264GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119689     {
119690       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR const *>( &rhs );
119691       return *this;
119692     }
119693 
119694 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR119695     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264GopRemainingFrameInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
119696     {
119697       pNext = pNext_;
119698       return *this;
119699     }
119700 
119701     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264GopRemainingFrameInfoKHR &
setUseGopRemainingFramesVULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR119702       setUseGopRemainingFrames( VULKAN_HPP_NAMESPACE::Bool32 useGopRemainingFrames_ ) VULKAN_HPP_NOEXCEPT
119703     {
119704       useGopRemainingFrames = useGopRemainingFrames_;
119705       return *this;
119706     }
119707 
setGopRemainingIVULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR119708     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264GopRemainingFrameInfoKHR & setGopRemainingI( uint32_t gopRemainingI_ ) VULKAN_HPP_NOEXCEPT
119709     {
119710       gopRemainingI = gopRemainingI_;
119711       return *this;
119712     }
119713 
setGopRemainingPVULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR119714     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264GopRemainingFrameInfoKHR & setGopRemainingP( uint32_t gopRemainingP_ ) VULKAN_HPP_NOEXCEPT
119715     {
119716       gopRemainingP = gopRemainingP_;
119717       return *this;
119718     }
119719 
setGopRemainingBVULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR119720     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264GopRemainingFrameInfoKHR & setGopRemainingB( uint32_t gopRemainingB_ ) VULKAN_HPP_NOEXCEPT
119721     {
119722       gopRemainingB = gopRemainingB_;
119723       return *this;
119724     }
119725 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
119726 
operator VkVideoEncodeH264GopRemainingFrameInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR119727     operator VkVideoEncodeH264GopRemainingFrameInfoKHR const &() const VULKAN_HPP_NOEXCEPT
119728     {
119729       return *reinterpret_cast<const VkVideoEncodeH264GopRemainingFrameInfoKHR *>( this );
119730     }
119731 
operator VkVideoEncodeH264GopRemainingFrameInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR119732     operator VkVideoEncodeH264GopRemainingFrameInfoKHR &() VULKAN_HPP_NOEXCEPT
119733     {
119734       return *reinterpret_cast<VkVideoEncodeH264GopRemainingFrameInfoKHR *>( this );
119735     }
119736 
119737 #if defined( VULKAN_HPP_USE_REFLECT )
119738 #  if 14 <= VULKAN_HPP_CPP_VERSION
119739     auto
119740 #  else
119741     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
119742                const void * const &,
119743                VULKAN_HPP_NAMESPACE::Bool32 const &,
119744                uint32_t const &,
119745                uint32_t const &,
119746                uint32_t const &>
119747 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR119748       reflect() const VULKAN_HPP_NOEXCEPT
119749     {
119750       return std::tie( sType, pNext, useGopRemainingFrames, gopRemainingI, gopRemainingP, gopRemainingB );
119751     }
119752 #endif
119753 
119754 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
119755     auto operator<=>( VideoEncodeH264GopRemainingFrameInfoKHR const & ) const = default;
119756 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR119757     bool operator==( VideoEncodeH264GopRemainingFrameInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119758     {
119759 #  if defined( VULKAN_HPP_USE_REFLECT )
119760       return this->reflect() == rhs.reflect();
119761 #  else
119762       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( useGopRemainingFrames == rhs.useGopRemainingFrames ) &&
119763              ( gopRemainingI == rhs.gopRemainingI ) && ( gopRemainingP == rhs.gopRemainingP ) && ( gopRemainingB == rhs.gopRemainingB );
119764 #  endif
119765     }
119766 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR119767     bool operator!=( VideoEncodeH264GopRemainingFrameInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119768     {
119769       return !operator==( rhs );
119770     }
119771 #endif
119772 
119773   public:
119774     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::eVideoEncodeH264GopRemainingFrameInfoKHR;
119775     const void *                        pNext                 = {};
119776     VULKAN_HPP_NAMESPACE::Bool32        useGopRemainingFrames = {};
119777     uint32_t                            gopRemainingI         = {};
119778     uint32_t                            gopRemainingP         = {};
119779     uint32_t                            gopRemainingB         = {};
119780   };
119781 
119782   template <>
119783   struct CppType<StructureType, StructureType::eVideoEncodeH264GopRemainingFrameInfoKHR>
119784   {
119785     using Type = VideoEncodeH264GopRemainingFrameInfoKHR;
119786   };
119787 
119788   struct VideoEncodeH264NaluSliceInfoKHR
119789   {
119790     using NativeType = VkVideoEncodeH264NaluSliceInfoKHR;
119791 
119792     static const bool                                  allowDuplicate = false;
119793     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264NaluSliceInfoKHR;
119794 
119795 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264NaluSliceInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR119796     VULKAN_HPP_CONSTEXPR VideoEncodeH264NaluSliceInfoKHR( int32_t                               constantQp_      = {},
119797                                                           const StdVideoEncodeH264SliceHeader * pStdSliceHeader_ = {},
119798                                                           const void *                          pNext_           = nullptr ) VULKAN_HPP_NOEXCEPT
119799       : pNext{ pNext_ }
119800       , constantQp{ constantQp_ }
119801       , pStdSliceHeader{ pStdSliceHeader_ }
119802     {
119803     }
119804 
119805     VULKAN_HPP_CONSTEXPR VideoEncodeH264NaluSliceInfoKHR( VideoEncodeH264NaluSliceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119806 
VideoEncodeH264NaluSliceInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR119807     VideoEncodeH264NaluSliceInfoKHR( VkVideoEncodeH264NaluSliceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119808       : VideoEncodeH264NaluSliceInfoKHR( *reinterpret_cast<VideoEncodeH264NaluSliceInfoKHR const *>( &rhs ) )
119809     {
119810     }
119811 
119812     VideoEncodeH264NaluSliceInfoKHR & operator=( VideoEncodeH264NaluSliceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119813 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
119814 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR119815     VideoEncodeH264NaluSliceInfoKHR & operator=( VkVideoEncodeH264NaluSliceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119816     {
119817       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR const *>( &rhs );
119818       return *this;
119819     }
119820 
119821 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR119822     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
119823     {
119824       pNext = pNext_;
119825       return *this;
119826     }
119827 
setConstantQpVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR119828     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceInfoKHR & setConstantQp( int32_t constantQp_ ) VULKAN_HPP_NOEXCEPT
119829     {
119830       constantQp = constantQp_;
119831       return *this;
119832     }
119833 
setPStdSliceHeaderVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR119834     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceInfoKHR & setPStdSliceHeader( const StdVideoEncodeH264SliceHeader * pStdSliceHeader_ ) VULKAN_HPP_NOEXCEPT
119835     {
119836       pStdSliceHeader = pStdSliceHeader_;
119837       return *this;
119838     }
119839 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
119840 
operator VkVideoEncodeH264NaluSliceInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR119841     operator VkVideoEncodeH264NaluSliceInfoKHR const &() const VULKAN_HPP_NOEXCEPT
119842     {
119843       return *reinterpret_cast<const VkVideoEncodeH264NaluSliceInfoKHR *>( this );
119844     }
119845 
operator VkVideoEncodeH264NaluSliceInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR119846     operator VkVideoEncodeH264NaluSliceInfoKHR &() VULKAN_HPP_NOEXCEPT
119847     {
119848       return *reinterpret_cast<VkVideoEncodeH264NaluSliceInfoKHR *>( this );
119849     }
119850 
119851 #if defined( VULKAN_HPP_USE_REFLECT )
119852 #  if 14 <= VULKAN_HPP_CPP_VERSION
119853     auto
119854 #  else
119855     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, int32_t const &, const StdVideoEncodeH264SliceHeader * const &>
119856 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR119857       reflect() const VULKAN_HPP_NOEXCEPT
119858     {
119859       return std::tie( sType, pNext, constantQp, pStdSliceHeader );
119860     }
119861 #endif
119862 
119863 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
119864     auto operator<=>( VideoEncodeH264NaluSliceInfoKHR const & ) const = default;
119865 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR119866     bool operator==( VideoEncodeH264NaluSliceInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119867     {
119868 #  if defined( VULKAN_HPP_USE_REFLECT )
119869       return this->reflect() == rhs.reflect();
119870 #  else
119871       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( constantQp == rhs.constantQp ) && ( pStdSliceHeader == rhs.pStdSliceHeader );
119872 #  endif
119873     }
119874 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR119875     bool operator!=( VideoEncodeH264NaluSliceInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
119876     {
119877       return !operator==( rhs );
119878     }
119879 #endif
119880 
119881   public:
119882     VULKAN_HPP_NAMESPACE::StructureType   sType           = StructureType::eVideoEncodeH264NaluSliceInfoKHR;
119883     const void *                          pNext           = {};
119884     int32_t                               constantQp      = {};
119885     const StdVideoEncodeH264SliceHeader * pStdSliceHeader = {};
119886   };
119887 
119888   template <>
119889   struct CppType<StructureType, StructureType::eVideoEncodeH264NaluSliceInfoKHR>
119890   {
119891     using Type = VideoEncodeH264NaluSliceInfoKHR;
119892   };
119893 
119894   struct VideoEncodeH264PictureInfoKHR
119895   {
119896     using NativeType = VkVideoEncodeH264PictureInfoKHR;
119897 
119898     static const bool                                  allowDuplicate = false;
119899     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264PictureInfoKHR;
119900 
119901 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR119902     VULKAN_HPP_CONSTEXPR VideoEncodeH264PictureInfoKHR( uint32_t                                                      naluSliceEntryCount_ = {},
119903                                                         const VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR * pNaluSliceEntries_   = {},
119904                                                         const StdVideoEncodeH264PictureInfo *                         pStdPictureInfo_     = {},
119905                                                         VULKAN_HPP_NAMESPACE::Bool32                                  generatePrefixNalu_  = {},
119906                                                         const void *                                                  pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
119907       : pNext{ pNext_ }
119908       , naluSliceEntryCount{ naluSliceEntryCount_ }
119909       , pNaluSliceEntries{ pNaluSliceEntries_ }
119910       , pStdPictureInfo{ pStdPictureInfo_ }
119911       , generatePrefixNalu{ generatePrefixNalu_ }
119912     {
119913     }
119914 
119915     VULKAN_HPP_CONSTEXPR VideoEncodeH264PictureInfoKHR( VideoEncodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119916 
VideoEncodeH264PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR119917     VideoEncodeH264PictureInfoKHR( VkVideoEncodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119918       : VideoEncodeH264PictureInfoKHR( *reinterpret_cast<VideoEncodeH264PictureInfoKHR const *>( &rhs ) )
119919     {
119920     }
119921 
119922 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeH264PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR119923     VideoEncodeH264PictureInfoKHR(
119924       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR> const & naluSliceEntries_,
119925       const StdVideoEncodeH264PictureInfo *                                                                              pStdPictureInfo_    = {},
119926       VULKAN_HPP_NAMESPACE::Bool32                                                                                       generatePrefixNalu_ = {},
119927       const void *                                                                                                       pNext_              = nullptr )
119928       : pNext( pNext_ )
119929       , naluSliceEntryCount( static_cast<uint32_t>( naluSliceEntries_.size() ) )
119930       , pNaluSliceEntries( naluSliceEntries_.data() )
119931       , pStdPictureInfo( pStdPictureInfo_ )
119932       , generatePrefixNalu( generatePrefixNalu_ )
119933     {
119934     }
119935 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
119936 
119937     VideoEncodeH264PictureInfoKHR & operator=( VideoEncodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
119938 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
119939 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR119940     VideoEncodeH264PictureInfoKHR & operator=( VkVideoEncodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
119941     {
119942       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR const *>( &rhs );
119943       return *this;
119944     }
119945 
119946 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR119947     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264PictureInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
119948     {
119949       pNext = pNext_;
119950       return *this;
119951     }
119952 
setNaluSliceEntryCountVULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR119953     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264PictureInfoKHR & setNaluSliceEntryCount( uint32_t naluSliceEntryCount_ ) VULKAN_HPP_NOEXCEPT
119954     {
119955       naluSliceEntryCount = naluSliceEntryCount_;
119956       return *this;
119957     }
119958 
119959     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264PictureInfoKHR &
setPNaluSliceEntriesVULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR119960       setPNaluSliceEntries( const VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR * pNaluSliceEntries_ ) VULKAN_HPP_NOEXCEPT
119961     {
119962       pNaluSliceEntries = pNaluSliceEntries_;
119963       return *this;
119964     }
119965 
119966 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setNaluSliceEntriesVULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR119967     VideoEncodeH264PictureInfoKHR & setNaluSliceEntries(
119968       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR> const & naluSliceEntries_ ) VULKAN_HPP_NOEXCEPT
119969     {
119970       naluSliceEntryCount = static_cast<uint32_t>( naluSliceEntries_.size() );
119971       pNaluSliceEntries   = naluSliceEntries_.data();
119972       return *this;
119973     }
119974 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
119975 
setPStdPictureInfoVULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR119976     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264PictureInfoKHR & setPStdPictureInfo( const StdVideoEncodeH264PictureInfo * pStdPictureInfo_ ) VULKAN_HPP_NOEXCEPT
119977     {
119978       pStdPictureInfo = pStdPictureInfo_;
119979       return *this;
119980     }
119981 
setGeneratePrefixNaluVULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR119982     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264PictureInfoKHR & setGeneratePrefixNalu( VULKAN_HPP_NAMESPACE::Bool32 generatePrefixNalu_ ) VULKAN_HPP_NOEXCEPT
119983     {
119984       generatePrefixNalu = generatePrefixNalu_;
119985       return *this;
119986     }
119987 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
119988 
operator VkVideoEncodeH264PictureInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR119989     operator VkVideoEncodeH264PictureInfoKHR const &() const VULKAN_HPP_NOEXCEPT
119990     {
119991       return *reinterpret_cast<const VkVideoEncodeH264PictureInfoKHR *>( this );
119992     }
119993 
operator VkVideoEncodeH264PictureInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR119994     operator VkVideoEncodeH264PictureInfoKHR &() VULKAN_HPP_NOEXCEPT
119995     {
119996       return *reinterpret_cast<VkVideoEncodeH264PictureInfoKHR *>( this );
119997     }
119998 
119999 #if defined( VULKAN_HPP_USE_REFLECT )
120000 #  if 14 <= VULKAN_HPP_CPP_VERSION
120001     auto
120002 #  else
120003     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
120004                const void * const &,
120005                uint32_t const &,
120006                const VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR * const &,
120007                const StdVideoEncodeH264PictureInfo * const &,
120008                VULKAN_HPP_NAMESPACE::Bool32 const &>
120009 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR120010       reflect() const VULKAN_HPP_NOEXCEPT
120011     {
120012       return std::tie( sType, pNext, naluSliceEntryCount, pNaluSliceEntries, pStdPictureInfo, generatePrefixNalu );
120013     }
120014 #endif
120015 
120016 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
120017     auto operator<=>( VideoEncodeH264PictureInfoKHR const & ) const = default;
120018 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR120019     bool operator==( VideoEncodeH264PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120020     {
120021 #  if defined( VULKAN_HPP_USE_REFLECT )
120022       return this->reflect() == rhs.reflect();
120023 #  else
120024       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( naluSliceEntryCount == rhs.naluSliceEntryCount ) &&
120025              ( pNaluSliceEntries == rhs.pNaluSliceEntries ) && ( pStdPictureInfo == rhs.pStdPictureInfo ) && ( generatePrefixNalu == rhs.generatePrefixNalu );
120026 #  endif
120027     }
120028 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR120029     bool operator!=( VideoEncodeH264PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120030     {
120031       return !operator==( rhs );
120032     }
120033 #endif
120034 
120035   public:
120036     VULKAN_HPP_NAMESPACE::StructureType                           sType               = StructureType::eVideoEncodeH264PictureInfoKHR;
120037     const void *                                                  pNext               = {};
120038     uint32_t                                                      naluSliceEntryCount = {};
120039     const VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR * pNaluSliceEntries   = {};
120040     const StdVideoEncodeH264PictureInfo *                         pStdPictureInfo     = {};
120041     VULKAN_HPP_NAMESPACE::Bool32                                  generatePrefixNalu  = {};
120042   };
120043 
120044   template <>
120045   struct CppType<StructureType, StructureType::eVideoEncodeH264PictureInfoKHR>
120046   {
120047     using Type = VideoEncodeH264PictureInfoKHR;
120048   };
120049 
120050   struct VideoEncodeH264ProfileInfoKHR
120051   {
120052     using NativeType = VkVideoEncodeH264ProfileInfoKHR;
120053 
120054     static const bool                                  allowDuplicate = false;
120055     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264ProfileInfoKHR;
120056 
120057 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264ProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR120058     VULKAN_HPP_CONSTEXPR VideoEncodeH264ProfileInfoKHR( StdVideoH264ProfileIdc stdProfileIdc_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
120059       : pNext{ pNext_ }
120060       , stdProfileIdc{ stdProfileIdc_ }
120061     {
120062     }
120063 
120064     VULKAN_HPP_CONSTEXPR VideoEncodeH264ProfileInfoKHR( VideoEncodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120065 
VideoEncodeH264ProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR120066     VideoEncodeH264ProfileInfoKHR( VkVideoEncodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120067       : VideoEncodeH264ProfileInfoKHR( *reinterpret_cast<VideoEncodeH264ProfileInfoKHR const *>( &rhs ) )
120068     {
120069     }
120070 
120071     VideoEncodeH264ProfileInfoKHR & operator=( VideoEncodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120072 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
120073 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR120074     VideoEncodeH264ProfileInfoKHR & operator=( VkVideoEncodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120075     {
120076       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR const *>( &rhs );
120077       return *this;
120078     }
120079 
120080 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR120081     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264ProfileInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
120082     {
120083       pNext = pNext_;
120084       return *this;
120085     }
120086 
setStdProfileIdcVULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR120087     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264ProfileInfoKHR & setStdProfileIdc( StdVideoH264ProfileIdc stdProfileIdc_ ) VULKAN_HPP_NOEXCEPT
120088     {
120089       stdProfileIdc = stdProfileIdc_;
120090       return *this;
120091     }
120092 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
120093 
operator VkVideoEncodeH264ProfileInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR120094     operator VkVideoEncodeH264ProfileInfoKHR const &() const VULKAN_HPP_NOEXCEPT
120095     {
120096       return *reinterpret_cast<const VkVideoEncodeH264ProfileInfoKHR *>( this );
120097     }
120098 
operator VkVideoEncodeH264ProfileInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR120099     operator VkVideoEncodeH264ProfileInfoKHR &() VULKAN_HPP_NOEXCEPT
120100     {
120101       return *reinterpret_cast<VkVideoEncodeH264ProfileInfoKHR *>( this );
120102     }
120103 
120104 #if defined( VULKAN_HPP_USE_REFLECT )
120105 #  if 14 <= VULKAN_HPP_CPP_VERSION
120106     auto
120107 #  else
120108     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, StdVideoH264ProfileIdc const &>
120109 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR120110       reflect() const VULKAN_HPP_NOEXCEPT
120111     {
120112       return std::tie( sType, pNext, stdProfileIdc );
120113     }
120114 #endif
120115 
120116 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR120117     std::strong_ordering operator<=>( VideoEncodeH264ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120118     {
120119       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
120120         return cmp;
120121       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
120122         return cmp;
120123       if ( auto cmp = memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH264ProfileIdc ) ); cmp != 0 )
120124         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
120125 
120126       return std::strong_ordering::equivalent;
120127     }
120128 #endif
120129 
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR120130     bool operator==( VideoEncodeH264ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120131     {
120132       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH264ProfileIdc ) ) == 0 );
120133     }
120134 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR120135     bool operator!=( VideoEncodeH264ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120136     {
120137       return !operator==( rhs );
120138     }
120139 
120140   public:
120141     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eVideoEncodeH264ProfileInfoKHR;
120142     const void *                        pNext         = {};
120143     StdVideoH264ProfileIdc              stdProfileIdc = {};
120144   };
120145 
120146   template <>
120147   struct CppType<StructureType, StructureType::eVideoEncodeH264ProfileInfoKHR>
120148   {
120149     using Type = VideoEncodeH264ProfileInfoKHR;
120150   };
120151 
120152   struct VideoEncodeH264QpKHR
120153   {
120154     using NativeType = VkVideoEncodeH264QpKHR;
120155 
120156 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264QpKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR120157     VULKAN_HPP_CONSTEXPR VideoEncodeH264QpKHR( int32_t qpI_ = {}, int32_t qpP_ = {}, int32_t qpB_ = {} ) VULKAN_HPP_NOEXCEPT
120158       : qpI{ qpI_ }
120159       , qpP{ qpP_ }
120160       , qpB{ qpB_ }
120161     {
120162     }
120163 
120164     VULKAN_HPP_CONSTEXPR VideoEncodeH264QpKHR( VideoEncodeH264QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120165 
VideoEncodeH264QpKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR120166     VideoEncodeH264QpKHR( VkVideoEncodeH264QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120167       : VideoEncodeH264QpKHR( *reinterpret_cast<VideoEncodeH264QpKHR const *>( &rhs ) )
120168     {
120169     }
120170 
120171     VideoEncodeH264QpKHR & operator=( VideoEncodeH264QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120172 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
120173 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR120174     VideoEncodeH264QpKHR & operator=( VkVideoEncodeH264QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120175     {
120176       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR const *>( &rhs );
120177       return *this;
120178     }
120179 
120180 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setQpIVULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR120181     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264QpKHR & setQpI( int32_t qpI_ ) VULKAN_HPP_NOEXCEPT
120182     {
120183       qpI = qpI_;
120184       return *this;
120185     }
120186 
setQpPVULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR120187     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264QpKHR & setQpP( int32_t qpP_ ) VULKAN_HPP_NOEXCEPT
120188     {
120189       qpP = qpP_;
120190       return *this;
120191     }
120192 
setQpBVULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR120193     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264QpKHR & setQpB( int32_t qpB_ ) VULKAN_HPP_NOEXCEPT
120194     {
120195       qpB = qpB_;
120196       return *this;
120197     }
120198 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
120199 
operator VkVideoEncodeH264QpKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR120200     operator VkVideoEncodeH264QpKHR const &() const VULKAN_HPP_NOEXCEPT
120201     {
120202       return *reinterpret_cast<const VkVideoEncodeH264QpKHR *>( this );
120203     }
120204 
operator VkVideoEncodeH264QpKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR120205     operator VkVideoEncodeH264QpKHR &() VULKAN_HPP_NOEXCEPT
120206     {
120207       return *reinterpret_cast<VkVideoEncodeH264QpKHR *>( this );
120208     }
120209 
120210 #if defined( VULKAN_HPP_USE_REFLECT )
120211 #  if 14 <= VULKAN_HPP_CPP_VERSION
120212     auto
120213 #  else
120214     std::tuple<int32_t const &, int32_t const &, int32_t const &>
120215 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR120216       reflect() const VULKAN_HPP_NOEXCEPT
120217     {
120218       return std::tie( qpI, qpP, qpB );
120219     }
120220 #endif
120221 
120222 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
120223     auto operator<=>( VideoEncodeH264QpKHR const & ) const = default;
120224 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR120225     bool operator==( VideoEncodeH264QpKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120226     {
120227 #  if defined( VULKAN_HPP_USE_REFLECT )
120228       return this->reflect() == rhs.reflect();
120229 #  else
120230       return ( qpI == rhs.qpI ) && ( qpP == rhs.qpP ) && ( qpB == rhs.qpB );
120231 #  endif
120232     }
120233 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR120234     bool operator!=( VideoEncodeH264QpKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120235     {
120236       return !operator==( rhs );
120237     }
120238 #endif
120239 
120240   public:
120241     int32_t qpI = {};
120242     int32_t qpP = {};
120243     int32_t qpB = {};
120244   };
120245 
120246   struct VideoEncodeH264QualityLevelPropertiesKHR
120247   {
120248     using NativeType = VkVideoEncodeH264QualityLevelPropertiesKHR;
120249 
120250     static const bool                                  allowDuplicate = false;
120251     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264QualityLevelPropertiesKHR;
120252 
120253 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264QualityLevelPropertiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264QualityLevelPropertiesKHR120254     VULKAN_HPP_CONSTEXPR VideoEncodeH264QualityLevelPropertiesKHR( VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlFlagsKHR preferredRateControlFlags_ = {},
120255                                                                    uint32_t                                                 preferredGopFrameCount_    = {},
120256                                                                    uint32_t                                                 preferredIdrPeriod_        = {},
120257                                                                    uint32_t                                   preferredConsecutiveBFrameCount_         = {},
120258                                                                    uint32_t                                   preferredTemporalLayerCount_             = {},
120259                                                                    VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR preferredConstantQp_                     = {},
120260                                                                    uint32_t                                   preferredMaxL0ReferenceCount_            = {},
120261                                                                    uint32_t                                   preferredMaxL1ReferenceCount_            = {},
120262                                                                    VULKAN_HPP_NAMESPACE::Bool32               preferredStdEntropyCodingModeFlag_       = {},
120263                                                                    void *                                     pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
120264       : pNext{ pNext_ }
120265       , preferredRateControlFlags{ preferredRateControlFlags_ }
120266       , preferredGopFrameCount{ preferredGopFrameCount_ }
120267       , preferredIdrPeriod{ preferredIdrPeriod_ }
120268       , preferredConsecutiveBFrameCount{ preferredConsecutiveBFrameCount_ }
120269       , preferredTemporalLayerCount{ preferredTemporalLayerCount_ }
120270       , preferredConstantQp{ preferredConstantQp_ }
120271       , preferredMaxL0ReferenceCount{ preferredMaxL0ReferenceCount_ }
120272       , preferredMaxL1ReferenceCount{ preferredMaxL1ReferenceCount_ }
120273       , preferredStdEntropyCodingModeFlag{ preferredStdEntropyCodingModeFlag_ }
120274     {
120275     }
120276 
120277     VULKAN_HPP_CONSTEXPR VideoEncodeH264QualityLevelPropertiesKHR( VideoEncodeH264QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120278 
VideoEncodeH264QualityLevelPropertiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264QualityLevelPropertiesKHR120279     VideoEncodeH264QualityLevelPropertiesKHR( VkVideoEncodeH264QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120280       : VideoEncodeH264QualityLevelPropertiesKHR( *reinterpret_cast<VideoEncodeH264QualityLevelPropertiesKHR const *>( &rhs ) )
120281     {
120282     }
120283 
120284     VideoEncodeH264QualityLevelPropertiesKHR & operator=( VideoEncodeH264QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120285 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
120286 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264QualityLevelPropertiesKHR120287     VideoEncodeH264QualityLevelPropertiesKHR & operator=( VkVideoEncodeH264QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120288     {
120289       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264QualityLevelPropertiesKHR const *>( &rhs );
120290       return *this;
120291     }
120292 
operator VkVideoEncodeH264QualityLevelPropertiesKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264QualityLevelPropertiesKHR120293     operator VkVideoEncodeH264QualityLevelPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
120294     {
120295       return *reinterpret_cast<const VkVideoEncodeH264QualityLevelPropertiesKHR *>( this );
120296     }
120297 
operator VkVideoEncodeH264QualityLevelPropertiesKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264QualityLevelPropertiesKHR120298     operator VkVideoEncodeH264QualityLevelPropertiesKHR &() VULKAN_HPP_NOEXCEPT
120299     {
120300       return *reinterpret_cast<VkVideoEncodeH264QualityLevelPropertiesKHR *>( this );
120301     }
120302 
120303 #if defined( VULKAN_HPP_USE_REFLECT )
120304 #  if 14 <= VULKAN_HPP_CPP_VERSION
120305     auto
120306 #  else
120307     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
120308                void * const &,
120309                VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlFlagsKHR const &,
120310                uint32_t const &,
120311                uint32_t const &,
120312                uint32_t const &,
120313                uint32_t const &,
120314                VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR const &,
120315                uint32_t const &,
120316                uint32_t const &,
120317                VULKAN_HPP_NAMESPACE::Bool32 const &>
120318 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264QualityLevelPropertiesKHR120319       reflect() const VULKAN_HPP_NOEXCEPT
120320     {
120321       return std::tie( sType,
120322                        pNext,
120323                        preferredRateControlFlags,
120324                        preferredGopFrameCount,
120325                        preferredIdrPeriod,
120326                        preferredConsecutiveBFrameCount,
120327                        preferredTemporalLayerCount,
120328                        preferredConstantQp,
120329                        preferredMaxL0ReferenceCount,
120330                        preferredMaxL1ReferenceCount,
120331                        preferredStdEntropyCodingModeFlag );
120332     }
120333 #endif
120334 
120335 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
120336     auto operator<=>( VideoEncodeH264QualityLevelPropertiesKHR const & ) const = default;
120337 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264QualityLevelPropertiesKHR120338     bool operator==( VideoEncodeH264QualityLevelPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120339     {
120340 #  if defined( VULKAN_HPP_USE_REFLECT )
120341       return this->reflect() == rhs.reflect();
120342 #  else
120343       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( preferredRateControlFlags == rhs.preferredRateControlFlags ) &&
120344              ( preferredGopFrameCount == rhs.preferredGopFrameCount ) && ( preferredIdrPeriod == rhs.preferredIdrPeriod ) &&
120345              ( preferredConsecutiveBFrameCount == rhs.preferredConsecutiveBFrameCount ) && ( preferredTemporalLayerCount == rhs.preferredTemporalLayerCount ) &&
120346              ( preferredConstantQp == rhs.preferredConstantQp ) && ( preferredMaxL0ReferenceCount == rhs.preferredMaxL0ReferenceCount ) &&
120347              ( preferredMaxL1ReferenceCount == rhs.preferredMaxL1ReferenceCount ) &&
120348              ( preferredStdEntropyCodingModeFlag == rhs.preferredStdEntropyCodingModeFlag );
120349 #  endif
120350     }
120351 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264QualityLevelPropertiesKHR120352     bool operator!=( VideoEncodeH264QualityLevelPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120353     {
120354       return !operator==( rhs );
120355     }
120356 #endif
120357 
120358   public:
120359     VULKAN_HPP_NAMESPACE::StructureType                      sType                             = StructureType::eVideoEncodeH264QualityLevelPropertiesKHR;
120360     void *                                                   pNext                             = {};
120361     VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlFlagsKHR preferredRateControlFlags         = {};
120362     uint32_t                                                 preferredGopFrameCount            = {};
120363     uint32_t                                                 preferredIdrPeriod                = {};
120364     uint32_t                                                 preferredConsecutiveBFrameCount   = {};
120365     uint32_t                                                 preferredTemporalLayerCount       = {};
120366     VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR               preferredConstantQp               = {};
120367     uint32_t                                                 preferredMaxL0ReferenceCount      = {};
120368     uint32_t                                                 preferredMaxL1ReferenceCount      = {};
120369     VULKAN_HPP_NAMESPACE::Bool32                             preferredStdEntropyCodingModeFlag = {};
120370   };
120371 
120372   template <>
120373   struct CppType<StructureType, StructureType::eVideoEncodeH264QualityLevelPropertiesKHR>
120374   {
120375     using Type = VideoEncodeH264QualityLevelPropertiesKHR;
120376   };
120377 
120378   struct VideoEncodeH264RateControlInfoKHR
120379   {
120380     using NativeType = VkVideoEncodeH264RateControlInfoKHR;
120381 
120382     static const bool                                  allowDuplicate = false;
120383     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264RateControlInfoKHR;
120384 
120385 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264RateControlInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR120386     VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlInfoKHR( VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlFlagsKHR flags_                  = {},
120387                                                             uint32_t                                                 gopFrameCount_          = {},
120388                                                             uint32_t                                                 idrPeriod_              = {},
120389                                                             uint32_t                                                 consecutiveBFrameCount_ = {},
120390                                                             uint32_t                                                 temporalLayerCount_     = {},
120391                                                             const void *                                             pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
120392       : pNext{ pNext_ }
120393       , flags{ flags_ }
120394       , gopFrameCount{ gopFrameCount_ }
120395       , idrPeriod{ idrPeriod_ }
120396       , consecutiveBFrameCount{ consecutiveBFrameCount_ }
120397       , temporalLayerCount{ temporalLayerCount_ }
120398     {
120399     }
120400 
120401     VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlInfoKHR( VideoEncodeH264RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120402 
VideoEncodeH264RateControlInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR120403     VideoEncodeH264RateControlInfoKHR( VkVideoEncodeH264RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120404       : VideoEncodeH264RateControlInfoKHR( *reinterpret_cast<VideoEncodeH264RateControlInfoKHR const *>( &rhs ) )
120405     {
120406     }
120407 
120408     VideoEncodeH264RateControlInfoKHR & operator=( VideoEncodeH264RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120409 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
120410 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR120411     VideoEncodeH264RateControlInfoKHR & operator=( VkVideoEncodeH264RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120412     {
120413       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR const *>( &rhs );
120414       return *this;
120415     }
120416 
120417 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR120418     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
120419     {
120420       pNext = pNext_;
120421       return *this;
120422     }
120423 
setFlagsVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR120424     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
120425     {
120426       flags = flags_;
120427       return *this;
120428     }
120429 
setGopFrameCountVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR120430     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR & setGopFrameCount( uint32_t gopFrameCount_ ) VULKAN_HPP_NOEXCEPT
120431     {
120432       gopFrameCount = gopFrameCount_;
120433       return *this;
120434     }
120435 
setIdrPeriodVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR120436     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR & setIdrPeriod( uint32_t idrPeriod_ ) VULKAN_HPP_NOEXCEPT
120437     {
120438       idrPeriod = idrPeriod_;
120439       return *this;
120440     }
120441 
setConsecutiveBFrameCountVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR120442     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR & setConsecutiveBFrameCount( uint32_t consecutiveBFrameCount_ ) VULKAN_HPP_NOEXCEPT
120443     {
120444       consecutiveBFrameCount = consecutiveBFrameCount_;
120445       return *this;
120446     }
120447 
setTemporalLayerCountVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR120448     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR & setTemporalLayerCount( uint32_t temporalLayerCount_ ) VULKAN_HPP_NOEXCEPT
120449     {
120450       temporalLayerCount = temporalLayerCount_;
120451       return *this;
120452     }
120453 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
120454 
operator VkVideoEncodeH264RateControlInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR120455     operator VkVideoEncodeH264RateControlInfoKHR const &() const VULKAN_HPP_NOEXCEPT
120456     {
120457       return *reinterpret_cast<const VkVideoEncodeH264RateControlInfoKHR *>( this );
120458     }
120459 
operator VkVideoEncodeH264RateControlInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR120460     operator VkVideoEncodeH264RateControlInfoKHR &() VULKAN_HPP_NOEXCEPT
120461     {
120462       return *reinterpret_cast<VkVideoEncodeH264RateControlInfoKHR *>( this );
120463     }
120464 
120465 #if defined( VULKAN_HPP_USE_REFLECT )
120466 #  if 14 <= VULKAN_HPP_CPP_VERSION
120467     auto
120468 #  else
120469     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
120470                const void * const &,
120471                VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlFlagsKHR const &,
120472                uint32_t const &,
120473                uint32_t const &,
120474                uint32_t const &,
120475                uint32_t const &>
120476 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR120477       reflect() const VULKAN_HPP_NOEXCEPT
120478     {
120479       return std::tie( sType, pNext, flags, gopFrameCount, idrPeriod, consecutiveBFrameCount, temporalLayerCount );
120480     }
120481 #endif
120482 
120483 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
120484     auto operator<=>( VideoEncodeH264RateControlInfoKHR const & ) const = default;
120485 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR120486     bool operator==( VideoEncodeH264RateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120487     {
120488 #  if defined( VULKAN_HPP_USE_REFLECT )
120489       return this->reflect() == rhs.reflect();
120490 #  else
120491       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( gopFrameCount == rhs.gopFrameCount ) &&
120492              ( idrPeriod == rhs.idrPeriod ) && ( consecutiveBFrameCount == rhs.consecutiveBFrameCount ) && ( temporalLayerCount == rhs.temporalLayerCount );
120493 #  endif
120494     }
120495 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR120496     bool operator!=( VideoEncodeH264RateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120497     {
120498       return !operator==( rhs );
120499     }
120500 #endif
120501 
120502   public:
120503     VULKAN_HPP_NAMESPACE::StructureType                      sType                  = StructureType::eVideoEncodeH264RateControlInfoKHR;
120504     const void *                                             pNext                  = {};
120505     VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlFlagsKHR flags                  = {};
120506     uint32_t                                                 gopFrameCount          = {};
120507     uint32_t                                                 idrPeriod              = {};
120508     uint32_t                                                 consecutiveBFrameCount = {};
120509     uint32_t                                                 temporalLayerCount     = {};
120510   };
120511 
120512   template <>
120513   struct CppType<StructureType, StructureType::eVideoEncodeH264RateControlInfoKHR>
120514   {
120515     using Type = VideoEncodeH264RateControlInfoKHR;
120516   };
120517 
120518   struct VideoEncodeH264RateControlLayerInfoKHR
120519   {
120520     using NativeType = VkVideoEncodeH264RateControlLayerInfoKHR;
120521 
120522     static const bool                                  allowDuplicate = false;
120523     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264RateControlLayerInfoKHR;
120524 
120525 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264RateControlLayerInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR120526     VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlLayerInfoKHR( VULKAN_HPP_NAMESPACE::Bool32                      useMinQp_        = {},
120527                                                                  VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR        minQp_           = {},
120528                                                                  VULKAN_HPP_NAMESPACE::Bool32                      useMaxQp_        = {},
120529                                                                  VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR        maxQp_           = {},
120530                                                                  VULKAN_HPP_NAMESPACE::Bool32                      useMaxFrameSize_ = {},
120531                                                                  VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR maxFrameSize_    = {},
120532                                                                  const void *                                      pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
120533       : pNext{ pNext_ }
120534       , useMinQp{ useMinQp_ }
120535       , minQp{ minQp_ }
120536       , useMaxQp{ useMaxQp_ }
120537       , maxQp{ maxQp_ }
120538       , useMaxFrameSize{ useMaxFrameSize_ }
120539       , maxFrameSize{ maxFrameSize_ }
120540     {
120541     }
120542 
120543     VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlLayerInfoKHR( VideoEncodeH264RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120544 
VideoEncodeH264RateControlLayerInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR120545     VideoEncodeH264RateControlLayerInfoKHR( VkVideoEncodeH264RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120546       : VideoEncodeH264RateControlLayerInfoKHR( *reinterpret_cast<VideoEncodeH264RateControlLayerInfoKHR const *>( &rhs ) )
120547     {
120548     }
120549 
120550     VideoEncodeH264RateControlLayerInfoKHR & operator=( VideoEncodeH264RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120551 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
120552 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR120553     VideoEncodeH264RateControlLayerInfoKHR & operator=( VkVideoEncodeH264RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120554     {
120555       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR const *>( &rhs );
120556       return *this;
120557     }
120558 
120559 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR120560     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
120561     {
120562       pNext = pNext_;
120563       return *this;
120564     }
120565 
setUseMinQpVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR120566     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR & setUseMinQp( VULKAN_HPP_NAMESPACE::Bool32 useMinQp_ ) VULKAN_HPP_NOEXCEPT
120567     {
120568       useMinQp = useMinQp_;
120569       return *this;
120570     }
120571 
setMinQpVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR120572     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR & setMinQp( VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR const & minQp_ ) VULKAN_HPP_NOEXCEPT
120573     {
120574       minQp = minQp_;
120575       return *this;
120576     }
120577 
setUseMaxQpVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR120578     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR & setUseMaxQp( VULKAN_HPP_NAMESPACE::Bool32 useMaxQp_ ) VULKAN_HPP_NOEXCEPT
120579     {
120580       useMaxQp = useMaxQp_;
120581       return *this;
120582     }
120583 
setMaxQpVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR120584     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR & setMaxQp( VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR const & maxQp_ ) VULKAN_HPP_NOEXCEPT
120585     {
120586       maxQp = maxQp_;
120587       return *this;
120588     }
120589 
setUseMaxFrameSizeVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR120590     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR & setUseMaxFrameSize( VULKAN_HPP_NAMESPACE::Bool32 useMaxFrameSize_ ) VULKAN_HPP_NOEXCEPT
120591     {
120592       useMaxFrameSize = useMaxFrameSize_;
120593       return *this;
120594     }
120595 
120596     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR &
setMaxFrameSizeVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR120597       setMaxFrameSize( VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR const & maxFrameSize_ ) VULKAN_HPP_NOEXCEPT
120598     {
120599       maxFrameSize = maxFrameSize_;
120600       return *this;
120601     }
120602 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
120603 
operator VkVideoEncodeH264RateControlLayerInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR120604     operator VkVideoEncodeH264RateControlLayerInfoKHR const &() const VULKAN_HPP_NOEXCEPT
120605     {
120606       return *reinterpret_cast<const VkVideoEncodeH264RateControlLayerInfoKHR *>( this );
120607     }
120608 
operator VkVideoEncodeH264RateControlLayerInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR120609     operator VkVideoEncodeH264RateControlLayerInfoKHR &() VULKAN_HPP_NOEXCEPT
120610     {
120611       return *reinterpret_cast<VkVideoEncodeH264RateControlLayerInfoKHR *>( this );
120612     }
120613 
120614 #if defined( VULKAN_HPP_USE_REFLECT )
120615 #  if 14 <= VULKAN_HPP_CPP_VERSION
120616     auto
120617 #  else
120618     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
120619                const void * const &,
120620                VULKAN_HPP_NAMESPACE::Bool32 const &,
120621                VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR const &,
120622                VULKAN_HPP_NAMESPACE::Bool32 const &,
120623                VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR const &,
120624                VULKAN_HPP_NAMESPACE::Bool32 const &,
120625                VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR const &>
120626 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR120627       reflect() const VULKAN_HPP_NOEXCEPT
120628     {
120629       return std::tie( sType, pNext, useMinQp, minQp, useMaxQp, maxQp, useMaxFrameSize, maxFrameSize );
120630     }
120631 #endif
120632 
120633 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
120634     auto operator<=>( VideoEncodeH264RateControlLayerInfoKHR const & ) const = default;
120635 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR120636     bool operator==( VideoEncodeH264RateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120637     {
120638 #  if defined( VULKAN_HPP_USE_REFLECT )
120639       return this->reflect() == rhs.reflect();
120640 #  else
120641       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( useMinQp == rhs.useMinQp ) && ( minQp == rhs.minQp ) && ( useMaxQp == rhs.useMaxQp ) &&
120642              ( maxQp == rhs.maxQp ) && ( useMaxFrameSize == rhs.useMaxFrameSize ) && ( maxFrameSize == rhs.maxFrameSize );
120643 #  endif
120644     }
120645 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR120646     bool operator!=( VideoEncodeH264RateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120647     {
120648       return !operator==( rhs );
120649     }
120650 #endif
120651 
120652   public:
120653     VULKAN_HPP_NAMESPACE::StructureType               sType           = StructureType::eVideoEncodeH264RateControlLayerInfoKHR;
120654     const void *                                      pNext           = {};
120655     VULKAN_HPP_NAMESPACE::Bool32                      useMinQp        = {};
120656     VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR        minQp           = {};
120657     VULKAN_HPP_NAMESPACE::Bool32                      useMaxQp        = {};
120658     VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR        maxQp           = {};
120659     VULKAN_HPP_NAMESPACE::Bool32                      useMaxFrameSize = {};
120660     VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR maxFrameSize    = {};
120661   };
120662 
120663   template <>
120664   struct CppType<StructureType, StructureType::eVideoEncodeH264RateControlLayerInfoKHR>
120665   {
120666     using Type = VideoEncodeH264RateControlLayerInfoKHR;
120667   };
120668 
120669   struct VideoEncodeH264SessionCreateInfoKHR
120670   {
120671     using NativeType = VkVideoEncodeH264SessionCreateInfoKHR;
120672 
120673     static const bool                                  allowDuplicate = false;
120674     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264SessionCreateInfoKHR;
120675 
120676 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264SessionCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR120677     VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionCreateInfoKHR( VULKAN_HPP_NAMESPACE::Bool32 useMaxLevelIdc_ = {},
120678                                                               StdVideoH264LevelIdc         maxLevelIdc_    = {},
120679                                                               const void *                 pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
120680       : pNext{ pNext_ }
120681       , useMaxLevelIdc{ useMaxLevelIdc_ }
120682       , maxLevelIdc{ maxLevelIdc_ }
120683     {
120684     }
120685 
120686     VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionCreateInfoKHR( VideoEncodeH264SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120687 
VideoEncodeH264SessionCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR120688     VideoEncodeH264SessionCreateInfoKHR( VkVideoEncodeH264SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120689       : VideoEncodeH264SessionCreateInfoKHR( *reinterpret_cast<VideoEncodeH264SessionCreateInfoKHR const *>( &rhs ) )
120690     {
120691     }
120692 
120693     VideoEncodeH264SessionCreateInfoKHR & operator=( VideoEncodeH264SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120694 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
120695 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR120696     VideoEncodeH264SessionCreateInfoKHR & operator=( VkVideoEncodeH264SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120697     {
120698       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR const *>( &rhs );
120699       return *this;
120700     }
120701 
120702 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR120703     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
120704     {
120705       pNext = pNext_;
120706       return *this;
120707     }
120708 
setUseMaxLevelIdcVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR120709     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoKHR & setUseMaxLevelIdc( VULKAN_HPP_NAMESPACE::Bool32 useMaxLevelIdc_ ) VULKAN_HPP_NOEXCEPT
120710     {
120711       useMaxLevelIdc = useMaxLevelIdc_;
120712       return *this;
120713     }
120714 
setMaxLevelIdcVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR120715     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoKHR & setMaxLevelIdc( StdVideoH264LevelIdc maxLevelIdc_ ) VULKAN_HPP_NOEXCEPT
120716     {
120717       maxLevelIdc = maxLevelIdc_;
120718       return *this;
120719     }
120720 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
120721 
operator VkVideoEncodeH264SessionCreateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR120722     operator VkVideoEncodeH264SessionCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
120723     {
120724       return *reinterpret_cast<const VkVideoEncodeH264SessionCreateInfoKHR *>( this );
120725     }
120726 
operator VkVideoEncodeH264SessionCreateInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR120727     operator VkVideoEncodeH264SessionCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
120728     {
120729       return *reinterpret_cast<VkVideoEncodeH264SessionCreateInfoKHR *>( this );
120730     }
120731 
120732 #if defined( VULKAN_HPP_USE_REFLECT )
120733 #  if 14 <= VULKAN_HPP_CPP_VERSION
120734     auto
120735 #  else
120736     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, StdVideoH264LevelIdc const &>
120737 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR120738       reflect() const VULKAN_HPP_NOEXCEPT
120739     {
120740       return std::tie( sType, pNext, useMaxLevelIdc, maxLevelIdc );
120741     }
120742 #endif
120743 
120744 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR120745     std::strong_ordering operator<=>( VideoEncodeH264SessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120746     {
120747       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
120748         return cmp;
120749       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
120750         return cmp;
120751       if ( auto cmp = useMaxLevelIdc <=> rhs.useMaxLevelIdc; cmp != 0 )
120752         return cmp;
120753       if ( auto cmp = memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH264LevelIdc ) ); cmp != 0 )
120754         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
120755 
120756       return std::strong_ordering::equivalent;
120757     }
120758 #endif
120759 
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR120760     bool operator==( VideoEncodeH264SessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120761     {
120762       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( useMaxLevelIdc == rhs.useMaxLevelIdc ) &&
120763              ( memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH264LevelIdc ) ) == 0 );
120764     }
120765 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR120766     bool operator!=( VideoEncodeH264SessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120767     {
120768       return !operator==( rhs );
120769     }
120770 
120771   public:
120772     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eVideoEncodeH264SessionCreateInfoKHR;
120773     const void *                        pNext          = {};
120774     VULKAN_HPP_NAMESPACE::Bool32        useMaxLevelIdc = {};
120775     StdVideoH264LevelIdc                maxLevelIdc    = {};
120776   };
120777 
120778   template <>
120779   struct CppType<StructureType, StructureType::eVideoEncodeH264SessionCreateInfoKHR>
120780   {
120781     using Type = VideoEncodeH264SessionCreateInfoKHR;
120782   };
120783 
120784   struct VideoEncodeH264SessionParametersAddInfoKHR
120785   {
120786     using NativeType = VkVideoEncodeH264SessionParametersAddInfoKHR;
120787 
120788     static const bool                                  allowDuplicate = false;
120789     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264SessionParametersAddInfoKHR;
120790 
120791 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR120792     VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersAddInfoKHR( uint32_t                                 stdSPSCount_ = {},
120793                                                                      const StdVideoH264SequenceParameterSet * pStdSPSs_    = {},
120794                                                                      uint32_t                                 stdPPSCount_ = {},
120795                                                                      const StdVideoH264PictureParameterSet *  pStdPPSs_    = {},
120796                                                                      const void *                             pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
120797       : pNext{ pNext_ }
120798       , stdSPSCount{ stdSPSCount_ }
120799       , pStdSPSs{ pStdSPSs_ }
120800       , stdPPSCount{ stdPPSCount_ }
120801       , pStdPPSs{ pStdPPSs_ }
120802     {
120803     }
120804 
120805     VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersAddInfoKHR( VideoEncodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120806 
VideoEncodeH264SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR120807     VideoEncodeH264SessionParametersAddInfoKHR( VkVideoEncodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120808       : VideoEncodeH264SessionParametersAddInfoKHR( *reinterpret_cast<VideoEncodeH264SessionParametersAddInfoKHR const *>( &rhs ) )
120809     {
120810     }
120811 
120812 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeH264SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR120813     VideoEncodeH264SessionParametersAddInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264SequenceParameterSet> const & stdSPSs_,
120814                                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264PictureParameterSet> const &  stdPPSs_ = {},
120815                                                 const void *                                                                                  pNext_ = nullptr )
120816       : pNext( pNext_ )
120817       , stdSPSCount( static_cast<uint32_t>( stdSPSs_.size() ) )
120818       , pStdSPSs( stdSPSs_.data() )
120819       , stdPPSCount( static_cast<uint32_t>( stdPPSs_.size() ) )
120820       , pStdPPSs( stdPPSs_.data() )
120821     {
120822     }
120823 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
120824 
120825     VideoEncodeH264SessionParametersAddInfoKHR & operator=( VideoEncodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120826 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
120827 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR120828     VideoEncodeH264SessionParametersAddInfoKHR & operator=( VkVideoEncodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120829     {
120830       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR const *>( &rhs );
120831       return *this;
120832     }
120833 
120834 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR120835     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
120836     {
120837       pNext = pNext_;
120838       return *this;
120839     }
120840 
setStdSPSCountVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR120841     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoKHR & setStdSPSCount( uint32_t stdSPSCount_ ) VULKAN_HPP_NOEXCEPT
120842     {
120843       stdSPSCount = stdSPSCount_;
120844       return *this;
120845     }
120846 
setPStdSPSsVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR120847     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoKHR & setPStdSPSs( const StdVideoH264SequenceParameterSet * pStdSPSs_ ) VULKAN_HPP_NOEXCEPT
120848     {
120849       pStdSPSs = pStdSPSs_;
120850       return *this;
120851     }
120852 
120853 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
120854     VideoEncodeH264SessionParametersAddInfoKHR &
setStdSPSsVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR120855       setStdSPSs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264SequenceParameterSet> const & stdSPSs_ ) VULKAN_HPP_NOEXCEPT
120856     {
120857       stdSPSCount = static_cast<uint32_t>( stdSPSs_.size() );
120858       pStdSPSs    = stdSPSs_.data();
120859       return *this;
120860     }
120861 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
120862 
setStdPPSCountVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR120863     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoKHR & setStdPPSCount( uint32_t stdPPSCount_ ) VULKAN_HPP_NOEXCEPT
120864     {
120865       stdPPSCount = stdPPSCount_;
120866       return *this;
120867     }
120868 
setPStdPPSsVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR120869     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoKHR & setPStdPPSs( const StdVideoH264PictureParameterSet * pStdPPSs_ ) VULKAN_HPP_NOEXCEPT
120870     {
120871       pStdPPSs = pStdPPSs_;
120872       return *this;
120873     }
120874 
120875 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
120876     VideoEncodeH264SessionParametersAddInfoKHR &
setStdPPSsVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR120877       setStdPPSs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH264PictureParameterSet> const & stdPPSs_ ) VULKAN_HPP_NOEXCEPT
120878     {
120879       stdPPSCount = static_cast<uint32_t>( stdPPSs_.size() );
120880       pStdPPSs    = stdPPSs_.data();
120881       return *this;
120882     }
120883 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
120884 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
120885 
operator VkVideoEncodeH264SessionParametersAddInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR120886     operator VkVideoEncodeH264SessionParametersAddInfoKHR const &() const VULKAN_HPP_NOEXCEPT
120887     {
120888       return *reinterpret_cast<const VkVideoEncodeH264SessionParametersAddInfoKHR *>( this );
120889     }
120890 
operator VkVideoEncodeH264SessionParametersAddInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR120891     operator VkVideoEncodeH264SessionParametersAddInfoKHR &() VULKAN_HPP_NOEXCEPT
120892     {
120893       return *reinterpret_cast<VkVideoEncodeH264SessionParametersAddInfoKHR *>( this );
120894     }
120895 
120896 #if defined( VULKAN_HPP_USE_REFLECT )
120897 #  if 14 <= VULKAN_HPP_CPP_VERSION
120898     auto
120899 #  else
120900     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
120901                const void * const &,
120902                uint32_t const &,
120903                const StdVideoH264SequenceParameterSet * const &,
120904                uint32_t const &,
120905                const StdVideoH264PictureParameterSet * const &>
120906 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR120907       reflect() const VULKAN_HPP_NOEXCEPT
120908     {
120909       return std::tie( sType, pNext, stdSPSCount, pStdSPSs, stdPPSCount, pStdPPSs );
120910     }
120911 #endif
120912 
120913 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
120914     auto operator<=>( VideoEncodeH264SessionParametersAddInfoKHR const & ) const = default;
120915 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR120916     bool operator==( VideoEncodeH264SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120917     {
120918 #  if defined( VULKAN_HPP_USE_REFLECT )
120919       return this->reflect() == rhs.reflect();
120920 #  else
120921       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stdSPSCount == rhs.stdSPSCount ) && ( pStdSPSs == rhs.pStdSPSs ) &&
120922              ( stdPPSCount == rhs.stdPPSCount ) && ( pStdPPSs == rhs.pStdPPSs );
120923 #  endif
120924     }
120925 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR120926     bool operator!=( VideoEncodeH264SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
120927     {
120928       return !operator==( rhs );
120929     }
120930 #endif
120931 
120932   public:
120933     VULKAN_HPP_NAMESPACE::StructureType      sType       = StructureType::eVideoEncodeH264SessionParametersAddInfoKHR;
120934     const void *                             pNext       = {};
120935     uint32_t                                 stdSPSCount = {};
120936     const StdVideoH264SequenceParameterSet * pStdSPSs    = {};
120937     uint32_t                                 stdPPSCount = {};
120938     const StdVideoH264PictureParameterSet *  pStdPPSs    = {};
120939   };
120940 
120941   template <>
120942   struct CppType<StructureType, StructureType::eVideoEncodeH264SessionParametersAddInfoKHR>
120943   {
120944     using Type = VideoEncodeH264SessionParametersAddInfoKHR;
120945   };
120946 
120947   struct VideoEncodeH264SessionParametersCreateInfoKHR
120948   {
120949     using NativeType = VkVideoEncodeH264SessionParametersCreateInfoKHR;
120950 
120951     static const bool                                  allowDuplicate = false;
120952     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264SessionParametersCreateInfoKHR;
120953 
120954 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
120955     VULKAN_HPP_CONSTEXPR
VideoEncodeH264SessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR120956       VideoEncodeH264SessionParametersCreateInfoKHR( uint32_t                                                                 maxStdSPSCount_     = {},
120957                                                      uint32_t                                                                 maxStdPPSCount_     = {},
120958                                                      const VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR * pParametersAddInfo_ = {},
120959                                                      const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
120960       : pNext{ pNext_ }
120961       , maxStdSPSCount{ maxStdSPSCount_ }
120962       , maxStdPPSCount{ maxStdPPSCount_ }
120963       , pParametersAddInfo{ pParametersAddInfo_ }
120964     {
120965     }
120966 
120967     VULKAN_HPP_CONSTEXPR
120968       VideoEncodeH264SessionParametersCreateInfoKHR( VideoEncodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120969 
VideoEncodeH264SessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR120970     VideoEncodeH264SessionParametersCreateInfoKHR( VkVideoEncodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120971       : VideoEncodeH264SessionParametersCreateInfoKHR( *reinterpret_cast<VideoEncodeH264SessionParametersCreateInfoKHR const *>( &rhs ) )
120972     {
120973     }
120974 
120975     VideoEncodeH264SessionParametersCreateInfoKHR & operator=( VideoEncodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
120976 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
120977 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR120978     VideoEncodeH264SessionParametersCreateInfoKHR & operator=( VkVideoEncodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
120979     {
120980       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR const *>( &rhs );
120981       return *this;
120982     }
120983 
120984 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR120985     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
120986     {
120987       pNext = pNext_;
120988       return *this;
120989     }
120990 
setMaxStdSPSCountVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR120991     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoKHR & setMaxStdSPSCount( uint32_t maxStdSPSCount_ ) VULKAN_HPP_NOEXCEPT
120992     {
120993       maxStdSPSCount = maxStdSPSCount_;
120994       return *this;
120995     }
120996 
setMaxStdPPSCountVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR120997     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoKHR & setMaxStdPPSCount( uint32_t maxStdPPSCount_ ) VULKAN_HPP_NOEXCEPT
120998     {
120999       maxStdPPSCount = maxStdPPSCount_;
121000       return *this;
121001     }
121002 
121003     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoKHR &
setPParametersAddInfoVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR121004       setPParametersAddInfo( const VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR * pParametersAddInfo_ ) VULKAN_HPP_NOEXCEPT
121005     {
121006       pParametersAddInfo = pParametersAddInfo_;
121007       return *this;
121008     }
121009 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
121010 
operator VkVideoEncodeH264SessionParametersCreateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR121011     operator VkVideoEncodeH264SessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
121012     {
121013       return *reinterpret_cast<const VkVideoEncodeH264SessionParametersCreateInfoKHR *>( this );
121014     }
121015 
operator VkVideoEncodeH264SessionParametersCreateInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR121016     operator VkVideoEncodeH264SessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
121017     {
121018       return *reinterpret_cast<VkVideoEncodeH264SessionParametersCreateInfoKHR *>( this );
121019     }
121020 
121021 #if defined( VULKAN_HPP_USE_REFLECT )
121022 #  if 14 <= VULKAN_HPP_CPP_VERSION
121023     auto
121024 #  else
121025     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
121026                const void * const &,
121027                uint32_t const &,
121028                uint32_t const &,
121029                const VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR * const &>
121030 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR121031       reflect() const VULKAN_HPP_NOEXCEPT
121032     {
121033       return std::tie( sType, pNext, maxStdSPSCount, maxStdPPSCount, pParametersAddInfo );
121034     }
121035 #endif
121036 
121037 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
121038     auto operator<=>( VideoEncodeH264SessionParametersCreateInfoKHR const & ) const = default;
121039 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR121040     bool operator==( VideoEncodeH264SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121041     {
121042 #  if defined( VULKAN_HPP_USE_REFLECT )
121043       return this->reflect() == rhs.reflect();
121044 #  else
121045       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxStdSPSCount == rhs.maxStdSPSCount ) && ( maxStdPPSCount == rhs.maxStdPPSCount ) &&
121046              ( pParametersAddInfo == rhs.pParametersAddInfo );
121047 #  endif
121048     }
121049 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR121050     bool operator!=( VideoEncodeH264SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121051     {
121052       return !operator==( rhs );
121053     }
121054 #endif
121055 
121056   public:
121057     VULKAN_HPP_NAMESPACE::StructureType                                      sType              = StructureType::eVideoEncodeH264SessionParametersCreateInfoKHR;
121058     const void *                                                             pNext              = {};
121059     uint32_t                                                                 maxStdSPSCount     = {};
121060     uint32_t                                                                 maxStdPPSCount     = {};
121061     const VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR * pParametersAddInfo = {};
121062   };
121063 
121064   template <>
121065   struct CppType<StructureType, StructureType::eVideoEncodeH264SessionParametersCreateInfoKHR>
121066   {
121067     using Type = VideoEncodeH264SessionParametersCreateInfoKHR;
121068   };
121069 
121070   struct VideoEncodeH264SessionParametersFeedbackInfoKHR
121071   {
121072     using NativeType = VkVideoEncodeH264SessionParametersFeedbackInfoKHR;
121073 
121074     static const bool                                  allowDuplicate = false;
121075     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264SessionParametersFeedbackInfoKHR;
121076 
121077 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264SessionParametersFeedbackInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersFeedbackInfoKHR121078     VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersFeedbackInfoKHR( VULKAN_HPP_NAMESPACE::Bool32 hasStdSPSOverrides_ = {},
121079                                                                           VULKAN_HPP_NAMESPACE::Bool32 hasStdPPSOverrides_ = {},
121080                                                                           void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
121081       : pNext{ pNext_ }
121082       , hasStdSPSOverrides{ hasStdSPSOverrides_ }
121083       , hasStdPPSOverrides{ hasStdPPSOverrides_ }
121084     {
121085     }
121086 
121087     VULKAN_HPP_CONSTEXPR
121088       VideoEncodeH264SessionParametersFeedbackInfoKHR( VideoEncodeH264SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121089 
VideoEncodeH264SessionParametersFeedbackInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersFeedbackInfoKHR121090     VideoEncodeH264SessionParametersFeedbackInfoKHR( VkVideoEncodeH264SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121091       : VideoEncodeH264SessionParametersFeedbackInfoKHR( *reinterpret_cast<VideoEncodeH264SessionParametersFeedbackInfoKHR const *>( &rhs ) )
121092     {
121093     }
121094 
121095     VideoEncodeH264SessionParametersFeedbackInfoKHR & operator=( VideoEncodeH264SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121096 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
121097 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersFeedbackInfoKHR121098     VideoEncodeH264SessionParametersFeedbackInfoKHR & operator=( VkVideoEncodeH264SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121099     {
121100       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersFeedbackInfoKHR const *>( &rhs );
121101       return *this;
121102     }
121103 
operator VkVideoEncodeH264SessionParametersFeedbackInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersFeedbackInfoKHR121104     operator VkVideoEncodeH264SessionParametersFeedbackInfoKHR const &() const VULKAN_HPP_NOEXCEPT
121105     {
121106       return *reinterpret_cast<const VkVideoEncodeH264SessionParametersFeedbackInfoKHR *>( this );
121107     }
121108 
operator VkVideoEncodeH264SessionParametersFeedbackInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersFeedbackInfoKHR121109     operator VkVideoEncodeH264SessionParametersFeedbackInfoKHR &() VULKAN_HPP_NOEXCEPT
121110     {
121111       return *reinterpret_cast<VkVideoEncodeH264SessionParametersFeedbackInfoKHR *>( this );
121112     }
121113 
121114 #if defined( VULKAN_HPP_USE_REFLECT )
121115 #  if 14 <= VULKAN_HPP_CPP_VERSION
121116     auto
121117 #  else
121118     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
121119 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersFeedbackInfoKHR121120       reflect() const VULKAN_HPP_NOEXCEPT
121121     {
121122       return std::tie( sType, pNext, hasStdSPSOverrides, hasStdPPSOverrides );
121123     }
121124 #endif
121125 
121126 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
121127     auto operator<=>( VideoEncodeH264SessionParametersFeedbackInfoKHR const & ) const = default;
121128 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersFeedbackInfoKHR121129     bool operator==( VideoEncodeH264SessionParametersFeedbackInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121130     {
121131 #  if defined( VULKAN_HPP_USE_REFLECT )
121132       return this->reflect() == rhs.reflect();
121133 #  else
121134       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hasStdSPSOverrides == rhs.hasStdSPSOverrides ) &&
121135              ( hasStdPPSOverrides == rhs.hasStdPPSOverrides );
121136 #  endif
121137     }
121138 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersFeedbackInfoKHR121139     bool operator!=( VideoEncodeH264SessionParametersFeedbackInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121140     {
121141       return !operator==( rhs );
121142     }
121143 #endif
121144 
121145   public:
121146     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::eVideoEncodeH264SessionParametersFeedbackInfoKHR;
121147     void *                              pNext              = {};
121148     VULKAN_HPP_NAMESPACE::Bool32        hasStdSPSOverrides = {};
121149     VULKAN_HPP_NAMESPACE::Bool32        hasStdPPSOverrides = {};
121150   };
121151 
121152   template <>
121153   struct CppType<StructureType, StructureType::eVideoEncodeH264SessionParametersFeedbackInfoKHR>
121154   {
121155     using Type = VideoEncodeH264SessionParametersFeedbackInfoKHR;
121156   };
121157 
121158   struct VideoEncodeH264SessionParametersGetInfoKHR
121159   {
121160     using NativeType = VkVideoEncodeH264SessionParametersGetInfoKHR;
121161 
121162     static const bool                                  allowDuplicate = false;
121163     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH264SessionParametersGetInfoKHR;
121164 
121165 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH264SessionParametersGetInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR121166     VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersGetInfoKHR( VULKAN_HPP_NAMESPACE::Bool32 writeStdSPS_ = {},
121167                                                                      VULKAN_HPP_NAMESPACE::Bool32 writeStdPPS_ = {},
121168                                                                      uint32_t                     stdSPSId_    = {},
121169                                                                      uint32_t                     stdPPSId_    = {},
121170                                                                      const void *                 pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
121171       : pNext{ pNext_ }
121172       , writeStdSPS{ writeStdSPS_ }
121173       , writeStdPPS{ writeStdPPS_ }
121174       , stdSPSId{ stdSPSId_ }
121175       , stdPPSId{ stdPPSId_ }
121176     {
121177     }
121178 
121179     VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersGetInfoKHR( VideoEncodeH264SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121180 
VideoEncodeH264SessionParametersGetInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR121181     VideoEncodeH264SessionParametersGetInfoKHR( VkVideoEncodeH264SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121182       : VideoEncodeH264SessionParametersGetInfoKHR( *reinterpret_cast<VideoEncodeH264SessionParametersGetInfoKHR const *>( &rhs ) )
121183     {
121184     }
121185 
121186     VideoEncodeH264SessionParametersGetInfoKHR & operator=( VideoEncodeH264SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121187 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
121188 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR121189     VideoEncodeH264SessionParametersGetInfoKHR & operator=( VkVideoEncodeH264SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121190     {
121191       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR const *>( &rhs );
121192       return *this;
121193     }
121194 
121195 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR121196     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersGetInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
121197     {
121198       pNext = pNext_;
121199       return *this;
121200     }
121201 
setWriteStdSPSVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR121202     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersGetInfoKHR & setWriteStdSPS( VULKAN_HPP_NAMESPACE::Bool32 writeStdSPS_ ) VULKAN_HPP_NOEXCEPT
121203     {
121204       writeStdSPS = writeStdSPS_;
121205       return *this;
121206     }
121207 
setWriteStdPPSVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR121208     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersGetInfoKHR & setWriteStdPPS( VULKAN_HPP_NAMESPACE::Bool32 writeStdPPS_ ) VULKAN_HPP_NOEXCEPT
121209     {
121210       writeStdPPS = writeStdPPS_;
121211       return *this;
121212     }
121213 
setStdSPSIdVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR121214     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersGetInfoKHR & setStdSPSId( uint32_t stdSPSId_ ) VULKAN_HPP_NOEXCEPT
121215     {
121216       stdSPSId = stdSPSId_;
121217       return *this;
121218     }
121219 
setStdPPSIdVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR121220     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersGetInfoKHR & setStdPPSId( uint32_t stdPPSId_ ) VULKAN_HPP_NOEXCEPT
121221     {
121222       stdPPSId = stdPPSId_;
121223       return *this;
121224     }
121225 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
121226 
operator VkVideoEncodeH264SessionParametersGetInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR121227     operator VkVideoEncodeH264SessionParametersGetInfoKHR const &() const VULKAN_HPP_NOEXCEPT
121228     {
121229       return *reinterpret_cast<const VkVideoEncodeH264SessionParametersGetInfoKHR *>( this );
121230     }
121231 
operator VkVideoEncodeH264SessionParametersGetInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR121232     operator VkVideoEncodeH264SessionParametersGetInfoKHR &() VULKAN_HPP_NOEXCEPT
121233     {
121234       return *reinterpret_cast<VkVideoEncodeH264SessionParametersGetInfoKHR *>( this );
121235     }
121236 
121237 #if defined( VULKAN_HPP_USE_REFLECT )
121238 #  if 14 <= VULKAN_HPP_CPP_VERSION
121239     auto
121240 #  else
121241     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
121242                const void * const &,
121243                VULKAN_HPP_NAMESPACE::Bool32 const &,
121244                VULKAN_HPP_NAMESPACE::Bool32 const &,
121245                uint32_t const &,
121246                uint32_t const &>
121247 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR121248       reflect() const VULKAN_HPP_NOEXCEPT
121249     {
121250       return std::tie( sType, pNext, writeStdSPS, writeStdPPS, stdSPSId, stdPPSId );
121251     }
121252 #endif
121253 
121254 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
121255     auto operator<=>( VideoEncodeH264SessionParametersGetInfoKHR const & ) const = default;
121256 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR121257     bool operator==( VideoEncodeH264SessionParametersGetInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121258     {
121259 #  if defined( VULKAN_HPP_USE_REFLECT )
121260       return this->reflect() == rhs.reflect();
121261 #  else
121262       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( writeStdSPS == rhs.writeStdSPS ) && ( writeStdPPS == rhs.writeStdPPS ) &&
121263              ( stdSPSId == rhs.stdSPSId ) && ( stdPPSId == rhs.stdPPSId );
121264 #  endif
121265     }
121266 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR121267     bool operator!=( VideoEncodeH264SessionParametersGetInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121268     {
121269       return !operator==( rhs );
121270     }
121271 #endif
121272 
121273   public:
121274     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eVideoEncodeH264SessionParametersGetInfoKHR;
121275     const void *                        pNext       = {};
121276     VULKAN_HPP_NAMESPACE::Bool32        writeStdSPS = {};
121277     VULKAN_HPP_NAMESPACE::Bool32        writeStdPPS = {};
121278     uint32_t                            stdSPSId    = {};
121279     uint32_t                            stdPPSId    = {};
121280   };
121281 
121282   template <>
121283   struct CppType<StructureType, StructureType::eVideoEncodeH264SessionParametersGetInfoKHR>
121284   {
121285     using Type = VideoEncodeH264SessionParametersGetInfoKHR;
121286   };
121287 
121288   struct VideoEncodeH265CapabilitiesKHR
121289   {
121290     using NativeType = VkVideoEncodeH265CapabilitiesKHR;
121291 
121292     static const bool                                  allowDuplicate = false;
121293     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265CapabilitiesKHR;
121294 
121295 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265CapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR121296     VULKAN_HPP_CONSTEXPR VideoEncodeH265CapabilitiesKHR( VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilityFlagsKHR         flags_                       = {},
121297                                                          StdVideoH265LevelIdc                                            maxLevelIdc_                 = {},
121298                                                          uint32_t                                                        maxSliceSegmentCount_        = {},
121299                                                          VULKAN_HPP_NAMESPACE::Extent2D                                  maxTiles_                    = {},
121300                                                          VULKAN_HPP_NAMESPACE::VideoEncodeH265CtbSizeFlagsKHR            ctbSizes_                    = {},
121301                                                          VULKAN_HPP_NAMESPACE::VideoEncodeH265TransformBlockSizeFlagsKHR transformBlockSizes_         = {},
121302                                                          uint32_t                                                        maxPPictureL0ReferenceCount_ = {},
121303                                                          uint32_t                                                        maxBPictureL0ReferenceCount_ = {},
121304                                                          uint32_t                                                        maxL1ReferenceCount_         = {},
121305                                                          uint32_t                                                        maxSubLayerCount_            = {},
121306                                                          VULKAN_HPP_NAMESPACE::Bool32                     expectDyadicTemporalSubLayerPattern_        = {},
121307                                                          int32_t                                          minQp_                                      = {},
121308                                                          int32_t                                          maxQp_                                      = {},
121309                                                          VULKAN_HPP_NAMESPACE::Bool32                     prefersGopRemainingFrames_                  = {},
121310                                                          VULKAN_HPP_NAMESPACE::Bool32                     requiresGopRemainingFrames_                 = {},
121311                                                          VULKAN_HPP_NAMESPACE::VideoEncodeH265StdFlagsKHR stdSyntaxFlags_                             = {},
121312                                                          void *                                           pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
121313       : pNext{ pNext_ }
121314       , flags{ flags_ }
121315       , maxLevelIdc{ maxLevelIdc_ }
121316       , maxSliceSegmentCount{ maxSliceSegmentCount_ }
121317       , maxTiles{ maxTiles_ }
121318       , ctbSizes{ ctbSizes_ }
121319       , transformBlockSizes{ transformBlockSizes_ }
121320       , maxPPictureL0ReferenceCount{ maxPPictureL0ReferenceCount_ }
121321       , maxBPictureL0ReferenceCount{ maxBPictureL0ReferenceCount_ }
121322       , maxL1ReferenceCount{ maxL1ReferenceCount_ }
121323       , maxSubLayerCount{ maxSubLayerCount_ }
121324       , expectDyadicTemporalSubLayerPattern{ expectDyadicTemporalSubLayerPattern_ }
121325       , minQp{ minQp_ }
121326       , maxQp{ maxQp_ }
121327       , prefersGopRemainingFrames{ prefersGopRemainingFrames_ }
121328       , requiresGopRemainingFrames{ requiresGopRemainingFrames_ }
121329       , stdSyntaxFlags{ stdSyntaxFlags_ }
121330     {
121331     }
121332 
121333     VULKAN_HPP_CONSTEXPR VideoEncodeH265CapabilitiesKHR( VideoEncodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121334 
VideoEncodeH265CapabilitiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR121335     VideoEncodeH265CapabilitiesKHR( VkVideoEncodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121336       : VideoEncodeH265CapabilitiesKHR( *reinterpret_cast<VideoEncodeH265CapabilitiesKHR const *>( &rhs ) )
121337     {
121338     }
121339 
121340     VideoEncodeH265CapabilitiesKHR & operator=( VideoEncodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121341 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
121342 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR121343     VideoEncodeH265CapabilitiesKHR & operator=( VkVideoEncodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121344     {
121345       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR const *>( &rhs );
121346       return *this;
121347     }
121348 
operator VkVideoEncodeH265CapabilitiesKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR121349     operator VkVideoEncodeH265CapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
121350     {
121351       return *reinterpret_cast<const VkVideoEncodeH265CapabilitiesKHR *>( this );
121352     }
121353 
operator VkVideoEncodeH265CapabilitiesKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR121354     operator VkVideoEncodeH265CapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
121355     {
121356       return *reinterpret_cast<VkVideoEncodeH265CapabilitiesKHR *>( this );
121357     }
121358 
121359 #if defined( VULKAN_HPP_USE_REFLECT )
121360 #  if 14 <= VULKAN_HPP_CPP_VERSION
121361     auto
121362 #  else
121363     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
121364                void * const &,
121365                VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilityFlagsKHR const &,
121366                StdVideoH265LevelIdc const &,
121367                uint32_t const &,
121368                VULKAN_HPP_NAMESPACE::Extent2D const &,
121369                VULKAN_HPP_NAMESPACE::VideoEncodeH265CtbSizeFlagsKHR const &,
121370                VULKAN_HPP_NAMESPACE::VideoEncodeH265TransformBlockSizeFlagsKHR const &,
121371                uint32_t const &,
121372                uint32_t const &,
121373                uint32_t const &,
121374                uint32_t const &,
121375                VULKAN_HPP_NAMESPACE::Bool32 const &,
121376                int32_t const &,
121377                int32_t const &,
121378                VULKAN_HPP_NAMESPACE::Bool32 const &,
121379                VULKAN_HPP_NAMESPACE::Bool32 const &,
121380                VULKAN_HPP_NAMESPACE::VideoEncodeH265StdFlagsKHR const &>
121381 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR121382       reflect() const VULKAN_HPP_NOEXCEPT
121383     {
121384       return std::tie( sType,
121385                        pNext,
121386                        flags,
121387                        maxLevelIdc,
121388                        maxSliceSegmentCount,
121389                        maxTiles,
121390                        ctbSizes,
121391                        transformBlockSizes,
121392                        maxPPictureL0ReferenceCount,
121393                        maxBPictureL0ReferenceCount,
121394                        maxL1ReferenceCount,
121395                        maxSubLayerCount,
121396                        expectDyadicTemporalSubLayerPattern,
121397                        minQp,
121398                        maxQp,
121399                        prefersGopRemainingFrames,
121400                        requiresGopRemainingFrames,
121401                        stdSyntaxFlags );
121402     }
121403 #endif
121404 
121405 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR121406     std::strong_ordering operator<=>( VideoEncodeH265CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121407     {
121408       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
121409         return cmp;
121410       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
121411         return cmp;
121412       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
121413         return cmp;
121414       if ( auto cmp = memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH265LevelIdc ) ); cmp != 0 )
121415         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
121416       if ( auto cmp = maxSliceSegmentCount <=> rhs.maxSliceSegmentCount; cmp != 0 )
121417         return cmp;
121418       if ( auto cmp = maxTiles <=> rhs.maxTiles; cmp != 0 )
121419         return cmp;
121420       if ( auto cmp = ctbSizes <=> rhs.ctbSizes; cmp != 0 )
121421         return cmp;
121422       if ( auto cmp = transformBlockSizes <=> rhs.transformBlockSizes; cmp != 0 )
121423         return cmp;
121424       if ( auto cmp = maxPPictureL0ReferenceCount <=> rhs.maxPPictureL0ReferenceCount; cmp != 0 )
121425         return cmp;
121426       if ( auto cmp = maxBPictureL0ReferenceCount <=> rhs.maxBPictureL0ReferenceCount; cmp != 0 )
121427         return cmp;
121428       if ( auto cmp = maxL1ReferenceCount <=> rhs.maxL1ReferenceCount; cmp != 0 )
121429         return cmp;
121430       if ( auto cmp = maxSubLayerCount <=> rhs.maxSubLayerCount; cmp != 0 )
121431         return cmp;
121432       if ( auto cmp = expectDyadicTemporalSubLayerPattern <=> rhs.expectDyadicTemporalSubLayerPattern; cmp != 0 )
121433         return cmp;
121434       if ( auto cmp = minQp <=> rhs.minQp; cmp != 0 )
121435         return cmp;
121436       if ( auto cmp = maxQp <=> rhs.maxQp; cmp != 0 )
121437         return cmp;
121438       if ( auto cmp = prefersGopRemainingFrames <=> rhs.prefersGopRemainingFrames; cmp != 0 )
121439         return cmp;
121440       if ( auto cmp = requiresGopRemainingFrames <=> rhs.requiresGopRemainingFrames; cmp != 0 )
121441         return cmp;
121442       if ( auto cmp = stdSyntaxFlags <=> rhs.stdSyntaxFlags; cmp != 0 )
121443         return cmp;
121444 
121445       return std::strong_ordering::equivalent;
121446     }
121447 #endif
121448 
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR121449     bool operator==( VideoEncodeH265CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121450     {
121451       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) &&
121452              ( memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH265LevelIdc ) ) == 0 ) && ( maxSliceSegmentCount == rhs.maxSliceSegmentCount ) &&
121453              ( maxTiles == rhs.maxTiles ) && ( ctbSizes == rhs.ctbSizes ) && ( transformBlockSizes == rhs.transformBlockSizes ) &&
121454              ( maxPPictureL0ReferenceCount == rhs.maxPPictureL0ReferenceCount ) && ( maxBPictureL0ReferenceCount == rhs.maxBPictureL0ReferenceCount ) &&
121455              ( maxL1ReferenceCount == rhs.maxL1ReferenceCount ) && ( maxSubLayerCount == rhs.maxSubLayerCount ) &&
121456              ( expectDyadicTemporalSubLayerPattern == rhs.expectDyadicTemporalSubLayerPattern ) && ( minQp == rhs.minQp ) && ( maxQp == rhs.maxQp ) &&
121457              ( prefersGopRemainingFrames == rhs.prefersGopRemainingFrames ) && ( requiresGopRemainingFrames == rhs.requiresGopRemainingFrames ) &&
121458              ( stdSyntaxFlags == rhs.stdSyntaxFlags );
121459     }
121460 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR121461     bool operator!=( VideoEncodeH265CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121462     {
121463       return !operator==( rhs );
121464     }
121465 
121466   public:
121467     VULKAN_HPP_NAMESPACE::StructureType                             sType                               = StructureType::eVideoEncodeH265CapabilitiesKHR;
121468     void *                                                          pNext                               = {};
121469     VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilityFlagsKHR         flags                               = {};
121470     StdVideoH265LevelIdc                                            maxLevelIdc                         = {};
121471     uint32_t                                                        maxSliceSegmentCount                = {};
121472     VULKAN_HPP_NAMESPACE::Extent2D                                  maxTiles                            = {};
121473     VULKAN_HPP_NAMESPACE::VideoEncodeH265CtbSizeFlagsKHR            ctbSizes                            = {};
121474     VULKAN_HPP_NAMESPACE::VideoEncodeH265TransformBlockSizeFlagsKHR transformBlockSizes                 = {};
121475     uint32_t                                                        maxPPictureL0ReferenceCount         = {};
121476     uint32_t                                                        maxBPictureL0ReferenceCount         = {};
121477     uint32_t                                                        maxL1ReferenceCount                 = {};
121478     uint32_t                                                        maxSubLayerCount                    = {};
121479     VULKAN_HPP_NAMESPACE::Bool32                                    expectDyadicTemporalSubLayerPattern = {};
121480     int32_t                                                         minQp                               = {};
121481     int32_t                                                         maxQp                               = {};
121482     VULKAN_HPP_NAMESPACE::Bool32                                    prefersGopRemainingFrames           = {};
121483     VULKAN_HPP_NAMESPACE::Bool32                                    requiresGopRemainingFrames          = {};
121484     VULKAN_HPP_NAMESPACE::VideoEncodeH265StdFlagsKHR                stdSyntaxFlags                      = {};
121485   };
121486 
121487   template <>
121488   struct CppType<StructureType, StructureType::eVideoEncodeH265CapabilitiesKHR>
121489   {
121490     using Type = VideoEncodeH265CapabilitiesKHR;
121491   };
121492 
121493   struct VideoEncodeH265DpbSlotInfoKHR
121494   {
121495     using NativeType = VkVideoEncodeH265DpbSlotInfoKHR;
121496 
121497     static const bool                                  allowDuplicate = false;
121498     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265DpbSlotInfoKHR;
121499 
121500 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265DpbSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR121501     VULKAN_HPP_CONSTEXPR VideoEncodeH265DpbSlotInfoKHR( const StdVideoEncodeH265ReferenceInfo * pStdReferenceInfo_ = {},
121502                                                         const void *                            pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
121503       : pNext{ pNext_ }
121504       , pStdReferenceInfo{ pStdReferenceInfo_ }
121505     {
121506     }
121507 
121508     VULKAN_HPP_CONSTEXPR VideoEncodeH265DpbSlotInfoKHR( VideoEncodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121509 
VideoEncodeH265DpbSlotInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR121510     VideoEncodeH265DpbSlotInfoKHR( VkVideoEncodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121511       : VideoEncodeH265DpbSlotInfoKHR( *reinterpret_cast<VideoEncodeH265DpbSlotInfoKHR const *>( &rhs ) )
121512     {
121513     }
121514 
121515     VideoEncodeH265DpbSlotInfoKHR & operator=( VideoEncodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121516 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
121517 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR121518     VideoEncodeH265DpbSlotInfoKHR & operator=( VkVideoEncodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121519     {
121520       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR const *>( &rhs );
121521       return *this;
121522     }
121523 
121524 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR121525     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265DpbSlotInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
121526     {
121527       pNext = pNext_;
121528       return *this;
121529     }
121530 
121531     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265DpbSlotInfoKHR &
setPStdReferenceInfoVULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR121532       setPStdReferenceInfo( const StdVideoEncodeH265ReferenceInfo * pStdReferenceInfo_ ) VULKAN_HPP_NOEXCEPT
121533     {
121534       pStdReferenceInfo = pStdReferenceInfo_;
121535       return *this;
121536     }
121537 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
121538 
operator VkVideoEncodeH265DpbSlotInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR121539     operator VkVideoEncodeH265DpbSlotInfoKHR const &() const VULKAN_HPP_NOEXCEPT
121540     {
121541       return *reinterpret_cast<const VkVideoEncodeH265DpbSlotInfoKHR *>( this );
121542     }
121543 
operator VkVideoEncodeH265DpbSlotInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR121544     operator VkVideoEncodeH265DpbSlotInfoKHR &() VULKAN_HPP_NOEXCEPT
121545     {
121546       return *reinterpret_cast<VkVideoEncodeH265DpbSlotInfoKHR *>( this );
121547     }
121548 
121549 #if defined( VULKAN_HPP_USE_REFLECT )
121550 #  if 14 <= VULKAN_HPP_CPP_VERSION
121551     auto
121552 #  else
121553     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const StdVideoEncodeH265ReferenceInfo * const &>
121554 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR121555       reflect() const VULKAN_HPP_NOEXCEPT
121556     {
121557       return std::tie( sType, pNext, pStdReferenceInfo );
121558     }
121559 #endif
121560 
121561 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
121562     auto operator<=>( VideoEncodeH265DpbSlotInfoKHR const & ) const = default;
121563 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR121564     bool operator==( VideoEncodeH265DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121565     {
121566 #  if defined( VULKAN_HPP_USE_REFLECT )
121567       return this->reflect() == rhs.reflect();
121568 #  else
121569       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdReferenceInfo == rhs.pStdReferenceInfo );
121570 #  endif
121571     }
121572 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR121573     bool operator!=( VideoEncodeH265DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121574     {
121575       return !operator==( rhs );
121576     }
121577 #endif
121578 
121579   public:
121580     VULKAN_HPP_NAMESPACE::StructureType     sType             = StructureType::eVideoEncodeH265DpbSlotInfoKHR;
121581     const void *                            pNext             = {};
121582     const StdVideoEncodeH265ReferenceInfo * pStdReferenceInfo = {};
121583   };
121584 
121585   template <>
121586   struct CppType<StructureType, StructureType::eVideoEncodeH265DpbSlotInfoKHR>
121587   {
121588     using Type = VideoEncodeH265DpbSlotInfoKHR;
121589   };
121590 
121591   struct VideoEncodeH265FrameSizeKHR
121592   {
121593     using NativeType = VkVideoEncodeH265FrameSizeKHR;
121594 
121595 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265FrameSizeKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR121596     VULKAN_HPP_CONSTEXPR VideoEncodeH265FrameSizeKHR( uint32_t frameISize_ = {}, uint32_t framePSize_ = {}, uint32_t frameBSize_ = {} ) VULKAN_HPP_NOEXCEPT
121597       : frameISize{ frameISize_ }
121598       , framePSize{ framePSize_ }
121599       , frameBSize{ frameBSize_ }
121600     {
121601     }
121602 
121603     VULKAN_HPP_CONSTEXPR VideoEncodeH265FrameSizeKHR( VideoEncodeH265FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121604 
VideoEncodeH265FrameSizeKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR121605     VideoEncodeH265FrameSizeKHR( VkVideoEncodeH265FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121606       : VideoEncodeH265FrameSizeKHR( *reinterpret_cast<VideoEncodeH265FrameSizeKHR const *>( &rhs ) )
121607     {
121608     }
121609 
121610     VideoEncodeH265FrameSizeKHR & operator=( VideoEncodeH265FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121611 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
121612 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR121613     VideoEncodeH265FrameSizeKHR & operator=( VkVideoEncodeH265FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121614     {
121615       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR const *>( &rhs );
121616       return *this;
121617     }
121618 
121619 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFrameISizeVULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR121620     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265FrameSizeKHR & setFrameISize( uint32_t frameISize_ ) VULKAN_HPP_NOEXCEPT
121621     {
121622       frameISize = frameISize_;
121623       return *this;
121624     }
121625 
setFramePSizeVULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR121626     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265FrameSizeKHR & setFramePSize( uint32_t framePSize_ ) VULKAN_HPP_NOEXCEPT
121627     {
121628       framePSize = framePSize_;
121629       return *this;
121630     }
121631 
setFrameBSizeVULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR121632     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265FrameSizeKHR & setFrameBSize( uint32_t frameBSize_ ) VULKAN_HPP_NOEXCEPT
121633     {
121634       frameBSize = frameBSize_;
121635       return *this;
121636     }
121637 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
121638 
operator VkVideoEncodeH265FrameSizeKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR121639     operator VkVideoEncodeH265FrameSizeKHR const &() const VULKAN_HPP_NOEXCEPT
121640     {
121641       return *reinterpret_cast<const VkVideoEncodeH265FrameSizeKHR *>( this );
121642     }
121643 
operator VkVideoEncodeH265FrameSizeKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR121644     operator VkVideoEncodeH265FrameSizeKHR &() VULKAN_HPP_NOEXCEPT
121645     {
121646       return *reinterpret_cast<VkVideoEncodeH265FrameSizeKHR *>( this );
121647     }
121648 
121649 #if defined( VULKAN_HPP_USE_REFLECT )
121650 #  if 14 <= VULKAN_HPP_CPP_VERSION
121651     auto
121652 #  else
121653     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
121654 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR121655       reflect() const VULKAN_HPP_NOEXCEPT
121656     {
121657       return std::tie( frameISize, framePSize, frameBSize );
121658     }
121659 #endif
121660 
121661 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
121662     auto operator<=>( VideoEncodeH265FrameSizeKHR const & ) const = default;
121663 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR121664     bool operator==( VideoEncodeH265FrameSizeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121665     {
121666 #  if defined( VULKAN_HPP_USE_REFLECT )
121667       return this->reflect() == rhs.reflect();
121668 #  else
121669       return ( frameISize == rhs.frameISize ) && ( framePSize == rhs.framePSize ) && ( frameBSize == rhs.frameBSize );
121670 #  endif
121671     }
121672 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR121673     bool operator!=( VideoEncodeH265FrameSizeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121674     {
121675       return !operator==( rhs );
121676     }
121677 #endif
121678 
121679   public:
121680     uint32_t frameISize = {};
121681     uint32_t framePSize = {};
121682     uint32_t frameBSize = {};
121683   };
121684 
121685   struct VideoEncodeH265GopRemainingFrameInfoKHR
121686   {
121687     using NativeType = VkVideoEncodeH265GopRemainingFrameInfoKHR;
121688 
121689     static const bool                                  allowDuplicate = false;
121690     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265GopRemainingFrameInfoKHR;
121691 
121692 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265GopRemainingFrameInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR121693     VULKAN_HPP_CONSTEXPR VideoEncodeH265GopRemainingFrameInfoKHR( VULKAN_HPP_NAMESPACE::Bool32 useGopRemainingFrames_ = {},
121694                                                                   uint32_t                     gopRemainingI_         = {},
121695                                                                   uint32_t                     gopRemainingP_         = {},
121696                                                                   uint32_t                     gopRemainingB_         = {},
121697                                                                   const void *                 pNext_                 = nullptr ) VULKAN_HPP_NOEXCEPT
121698       : pNext{ pNext_ }
121699       , useGopRemainingFrames{ useGopRemainingFrames_ }
121700       , gopRemainingI{ gopRemainingI_ }
121701       , gopRemainingP{ gopRemainingP_ }
121702       , gopRemainingB{ gopRemainingB_ }
121703     {
121704     }
121705 
121706     VULKAN_HPP_CONSTEXPR VideoEncodeH265GopRemainingFrameInfoKHR( VideoEncodeH265GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121707 
VideoEncodeH265GopRemainingFrameInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR121708     VideoEncodeH265GopRemainingFrameInfoKHR( VkVideoEncodeH265GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121709       : VideoEncodeH265GopRemainingFrameInfoKHR( *reinterpret_cast<VideoEncodeH265GopRemainingFrameInfoKHR const *>( &rhs ) )
121710     {
121711     }
121712 
121713     VideoEncodeH265GopRemainingFrameInfoKHR & operator=( VideoEncodeH265GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121714 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
121715 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR121716     VideoEncodeH265GopRemainingFrameInfoKHR & operator=( VkVideoEncodeH265GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121717     {
121718       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR const *>( &rhs );
121719       return *this;
121720     }
121721 
121722 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR121723     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265GopRemainingFrameInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
121724     {
121725       pNext = pNext_;
121726       return *this;
121727     }
121728 
121729     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265GopRemainingFrameInfoKHR &
setUseGopRemainingFramesVULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR121730       setUseGopRemainingFrames( VULKAN_HPP_NAMESPACE::Bool32 useGopRemainingFrames_ ) VULKAN_HPP_NOEXCEPT
121731     {
121732       useGopRemainingFrames = useGopRemainingFrames_;
121733       return *this;
121734     }
121735 
setGopRemainingIVULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR121736     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265GopRemainingFrameInfoKHR & setGopRemainingI( uint32_t gopRemainingI_ ) VULKAN_HPP_NOEXCEPT
121737     {
121738       gopRemainingI = gopRemainingI_;
121739       return *this;
121740     }
121741 
setGopRemainingPVULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR121742     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265GopRemainingFrameInfoKHR & setGopRemainingP( uint32_t gopRemainingP_ ) VULKAN_HPP_NOEXCEPT
121743     {
121744       gopRemainingP = gopRemainingP_;
121745       return *this;
121746     }
121747 
setGopRemainingBVULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR121748     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265GopRemainingFrameInfoKHR & setGopRemainingB( uint32_t gopRemainingB_ ) VULKAN_HPP_NOEXCEPT
121749     {
121750       gopRemainingB = gopRemainingB_;
121751       return *this;
121752     }
121753 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
121754 
operator VkVideoEncodeH265GopRemainingFrameInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR121755     operator VkVideoEncodeH265GopRemainingFrameInfoKHR const &() const VULKAN_HPP_NOEXCEPT
121756     {
121757       return *reinterpret_cast<const VkVideoEncodeH265GopRemainingFrameInfoKHR *>( this );
121758     }
121759 
operator VkVideoEncodeH265GopRemainingFrameInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR121760     operator VkVideoEncodeH265GopRemainingFrameInfoKHR &() VULKAN_HPP_NOEXCEPT
121761     {
121762       return *reinterpret_cast<VkVideoEncodeH265GopRemainingFrameInfoKHR *>( this );
121763     }
121764 
121765 #if defined( VULKAN_HPP_USE_REFLECT )
121766 #  if 14 <= VULKAN_HPP_CPP_VERSION
121767     auto
121768 #  else
121769     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
121770                const void * const &,
121771                VULKAN_HPP_NAMESPACE::Bool32 const &,
121772                uint32_t const &,
121773                uint32_t const &,
121774                uint32_t const &>
121775 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR121776       reflect() const VULKAN_HPP_NOEXCEPT
121777     {
121778       return std::tie( sType, pNext, useGopRemainingFrames, gopRemainingI, gopRemainingP, gopRemainingB );
121779     }
121780 #endif
121781 
121782 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
121783     auto operator<=>( VideoEncodeH265GopRemainingFrameInfoKHR const & ) const = default;
121784 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR121785     bool operator==( VideoEncodeH265GopRemainingFrameInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121786     {
121787 #  if defined( VULKAN_HPP_USE_REFLECT )
121788       return this->reflect() == rhs.reflect();
121789 #  else
121790       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( useGopRemainingFrames == rhs.useGopRemainingFrames ) &&
121791              ( gopRemainingI == rhs.gopRemainingI ) && ( gopRemainingP == rhs.gopRemainingP ) && ( gopRemainingB == rhs.gopRemainingB );
121792 #  endif
121793     }
121794 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR121795     bool operator!=( VideoEncodeH265GopRemainingFrameInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121796     {
121797       return !operator==( rhs );
121798     }
121799 #endif
121800 
121801   public:
121802     VULKAN_HPP_NAMESPACE::StructureType sType                 = StructureType::eVideoEncodeH265GopRemainingFrameInfoKHR;
121803     const void *                        pNext                 = {};
121804     VULKAN_HPP_NAMESPACE::Bool32        useGopRemainingFrames = {};
121805     uint32_t                            gopRemainingI         = {};
121806     uint32_t                            gopRemainingP         = {};
121807     uint32_t                            gopRemainingB         = {};
121808   };
121809 
121810   template <>
121811   struct CppType<StructureType, StructureType::eVideoEncodeH265GopRemainingFrameInfoKHR>
121812   {
121813     using Type = VideoEncodeH265GopRemainingFrameInfoKHR;
121814   };
121815 
121816   struct VideoEncodeH265NaluSliceSegmentInfoKHR
121817   {
121818     using NativeType = VkVideoEncodeH265NaluSliceSegmentInfoKHR;
121819 
121820     static const bool                                  allowDuplicate = false;
121821     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265NaluSliceSegmentInfoKHR;
121822 
121823 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265NaluSliceSegmentInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR121824     VULKAN_HPP_CONSTEXPR VideoEncodeH265NaluSliceSegmentInfoKHR( int32_t                                      constantQp_             = {},
121825                                                                  const StdVideoEncodeH265SliceSegmentHeader * pStdSliceSegmentHeader_ = {},
121826                                                                  const void *                                 pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
121827       : pNext{ pNext_ }
121828       , constantQp{ constantQp_ }
121829       , pStdSliceSegmentHeader{ pStdSliceSegmentHeader_ }
121830     {
121831     }
121832 
121833     VULKAN_HPP_CONSTEXPR VideoEncodeH265NaluSliceSegmentInfoKHR( VideoEncodeH265NaluSliceSegmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121834 
VideoEncodeH265NaluSliceSegmentInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR121835     VideoEncodeH265NaluSliceSegmentInfoKHR( VkVideoEncodeH265NaluSliceSegmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121836       : VideoEncodeH265NaluSliceSegmentInfoKHR( *reinterpret_cast<VideoEncodeH265NaluSliceSegmentInfoKHR const *>( &rhs ) )
121837     {
121838     }
121839 
121840     VideoEncodeH265NaluSliceSegmentInfoKHR & operator=( VideoEncodeH265NaluSliceSegmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121841 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
121842 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR121843     VideoEncodeH265NaluSliceSegmentInfoKHR & operator=( VkVideoEncodeH265NaluSliceSegmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121844     {
121845       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR const *>( &rhs );
121846       return *this;
121847     }
121848 
121849 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR121850     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265NaluSliceSegmentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
121851     {
121852       pNext = pNext_;
121853       return *this;
121854     }
121855 
setConstantQpVULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR121856     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265NaluSliceSegmentInfoKHR & setConstantQp( int32_t constantQp_ ) VULKAN_HPP_NOEXCEPT
121857     {
121858       constantQp = constantQp_;
121859       return *this;
121860     }
121861 
121862     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265NaluSliceSegmentInfoKHR &
setPStdSliceSegmentHeaderVULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR121863       setPStdSliceSegmentHeader( const StdVideoEncodeH265SliceSegmentHeader * pStdSliceSegmentHeader_ ) VULKAN_HPP_NOEXCEPT
121864     {
121865       pStdSliceSegmentHeader = pStdSliceSegmentHeader_;
121866       return *this;
121867     }
121868 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
121869 
operator VkVideoEncodeH265NaluSliceSegmentInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR121870     operator VkVideoEncodeH265NaluSliceSegmentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
121871     {
121872       return *reinterpret_cast<const VkVideoEncodeH265NaluSliceSegmentInfoKHR *>( this );
121873     }
121874 
operator VkVideoEncodeH265NaluSliceSegmentInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR121875     operator VkVideoEncodeH265NaluSliceSegmentInfoKHR &() VULKAN_HPP_NOEXCEPT
121876     {
121877       return *reinterpret_cast<VkVideoEncodeH265NaluSliceSegmentInfoKHR *>( this );
121878     }
121879 
121880 #if defined( VULKAN_HPP_USE_REFLECT )
121881 #  if 14 <= VULKAN_HPP_CPP_VERSION
121882     auto
121883 #  else
121884     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, int32_t const &, const StdVideoEncodeH265SliceSegmentHeader * const &>
121885 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR121886       reflect() const VULKAN_HPP_NOEXCEPT
121887     {
121888       return std::tie( sType, pNext, constantQp, pStdSliceSegmentHeader );
121889     }
121890 #endif
121891 
121892 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
121893     auto operator<=>( VideoEncodeH265NaluSliceSegmentInfoKHR const & ) const = default;
121894 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR121895     bool operator==( VideoEncodeH265NaluSliceSegmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121896     {
121897 #  if defined( VULKAN_HPP_USE_REFLECT )
121898       return this->reflect() == rhs.reflect();
121899 #  else
121900       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( constantQp == rhs.constantQp ) && ( pStdSliceSegmentHeader == rhs.pStdSliceSegmentHeader );
121901 #  endif
121902     }
121903 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR121904     bool operator!=( VideoEncodeH265NaluSliceSegmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
121905     {
121906       return !operator==( rhs );
121907     }
121908 #endif
121909 
121910   public:
121911     VULKAN_HPP_NAMESPACE::StructureType          sType                  = StructureType::eVideoEncodeH265NaluSliceSegmentInfoKHR;
121912     const void *                                 pNext                  = {};
121913     int32_t                                      constantQp             = {};
121914     const StdVideoEncodeH265SliceSegmentHeader * pStdSliceSegmentHeader = {};
121915   };
121916 
121917   template <>
121918   struct CppType<StructureType, StructureType::eVideoEncodeH265NaluSliceSegmentInfoKHR>
121919   {
121920     using Type = VideoEncodeH265NaluSliceSegmentInfoKHR;
121921   };
121922 
121923   struct VideoEncodeH265PictureInfoKHR
121924   {
121925     using NativeType = VkVideoEncodeH265PictureInfoKHR;
121926 
121927     static const bool                                  allowDuplicate = false;
121928     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265PictureInfoKHR;
121929 
121930 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR121931     VULKAN_HPP_CONSTEXPR VideoEncodeH265PictureInfoKHR( uint32_t                                                             naluSliceSegmentEntryCount_ = {},
121932                                                         const VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR * pNaluSliceSegmentEntries_   = {},
121933                                                         const StdVideoEncodeH265PictureInfo *                                pStdPictureInfo_            = {},
121934                                                         const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
121935       : pNext{ pNext_ }
121936       , naluSliceSegmentEntryCount{ naluSliceSegmentEntryCount_ }
121937       , pNaluSliceSegmentEntries{ pNaluSliceSegmentEntries_ }
121938       , pStdPictureInfo{ pStdPictureInfo_ }
121939     {
121940     }
121941 
121942     VULKAN_HPP_CONSTEXPR VideoEncodeH265PictureInfoKHR( VideoEncodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121943 
VideoEncodeH265PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR121944     VideoEncodeH265PictureInfoKHR( VkVideoEncodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121945       : VideoEncodeH265PictureInfoKHR( *reinterpret_cast<VideoEncodeH265PictureInfoKHR const *>( &rhs ) )
121946     {
121947     }
121948 
121949 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeH265PictureInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR121950     VideoEncodeH265PictureInfoKHR(
121951       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR> const & naluSliceSegmentEntries_,
121952       const StdVideoEncodeH265PictureInfo *                                                                                     pStdPictureInfo_ = {},
121953       const void *                                                                                                              pNext_           = nullptr )
121954       : pNext( pNext_ )
121955       , naluSliceSegmentEntryCount( static_cast<uint32_t>( naluSliceSegmentEntries_.size() ) )
121956       , pNaluSliceSegmentEntries( naluSliceSegmentEntries_.data() )
121957       , pStdPictureInfo( pStdPictureInfo_ )
121958     {
121959     }
121960 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
121961 
121962     VideoEncodeH265PictureInfoKHR & operator=( VideoEncodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
121963 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
121964 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR121965     VideoEncodeH265PictureInfoKHR & operator=( VkVideoEncodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
121966     {
121967       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR const *>( &rhs );
121968       return *this;
121969     }
121970 
121971 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR121972     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265PictureInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
121973     {
121974       pNext = pNext_;
121975       return *this;
121976     }
121977 
setNaluSliceSegmentEntryCountVULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR121978     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265PictureInfoKHR & setNaluSliceSegmentEntryCount( uint32_t naluSliceSegmentEntryCount_ ) VULKAN_HPP_NOEXCEPT
121979     {
121980       naluSliceSegmentEntryCount = naluSliceSegmentEntryCount_;
121981       return *this;
121982     }
121983 
121984     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265PictureInfoKHR &
setPNaluSliceSegmentEntriesVULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR121985       setPNaluSliceSegmentEntries( const VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR * pNaluSliceSegmentEntries_ ) VULKAN_HPP_NOEXCEPT
121986     {
121987       pNaluSliceSegmentEntries = pNaluSliceSegmentEntries_;
121988       return *this;
121989     }
121990 
121991 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setNaluSliceSegmentEntriesVULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR121992     VideoEncodeH265PictureInfoKHR & setNaluSliceSegmentEntries(
121993       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR> const & naluSliceSegmentEntries_ )
121994       VULKAN_HPP_NOEXCEPT
121995     {
121996       naluSliceSegmentEntryCount = static_cast<uint32_t>( naluSliceSegmentEntries_.size() );
121997       pNaluSliceSegmentEntries   = naluSliceSegmentEntries_.data();
121998       return *this;
121999     }
122000 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
122001 
setPStdPictureInfoVULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR122002     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265PictureInfoKHR & setPStdPictureInfo( const StdVideoEncodeH265PictureInfo * pStdPictureInfo_ ) VULKAN_HPP_NOEXCEPT
122003     {
122004       pStdPictureInfo = pStdPictureInfo_;
122005       return *this;
122006     }
122007 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
122008 
operator VkVideoEncodeH265PictureInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR122009     operator VkVideoEncodeH265PictureInfoKHR const &() const VULKAN_HPP_NOEXCEPT
122010     {
122011       return *reinterpret_cast<const VkVideoEncodeH265PictureInfoKHR *>( this );
122012     }
122013 
operator VkVideoEncodeH265PictureInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR122014     operator VkVideoEncodeH265PictureInfoKHR &() VULKAN_HPP_NOEXCEPT
122015     {
122016       return *reinterpret_cast<VkVideoEncodeH265PictureInfoKHR *>( this );
122017     }
122018 
122019 #if defined( VULKAN_HPP_USE_REFLECT )
122020 #  if 14 <= VULKAN_HPP_CPP_VERSION
122021     auto
122022 #  else
122023     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
122024                const void * const &,
122025                uint32_t const &,
122026                const VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR * const &,
122027                const StdVideoEncodeH265PictureInfo * const &>
122028 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR122029       reflect() const VULKAN_HPP_NOEXCEPT
122030     {
122031       return std::tie( sType, pNext, naluSliceSegmentEntryCount, pNaluSliceSegmentEntries, pStdPictureInfo );
122032     }
122033 #endif
122034 
122035 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
122036     auto operator<=>( VideoEncodeH265PictureInfoKHR const & ) const = default;
122037 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR122038     bool operator==( VideoEncodeH265PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122039     {
122040 #  if defined( VULKAN_HPP_USE_REFLECT )
122041       return this->reflect() == rhs.reflect();
122042 #  else
122043       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( naluSliceSegmentEntryCount == rhs.naluSliceSegmentEntryCount ) &&
122044              ( pNaluSliceSegmentEntries == rhs.pNaluSliceSegmentEntries ) && ( pStdPictureInfo == rhs.pStdPictureInfo );
122045 #  endif
122046     }
122047 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR122048     bool operator!=( VideoEncodeH265PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122049     {
122050       return !operator==( rhs );
122051     }
122052 #endif
122053 
122054   public:
122055     VULKAN_HPP_NAMESPACE::StructureType                                  sType                      = StructureType::eVideoEncodeH265PictureInfoKHR;
122056     const void *                                                         pNext                      = {};
122057     uint32_t                                                             naluSliceSegmentEntryCount = {};
122058     const VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR * pNaluSliceSegmentEntries   = {};
122059     const StdVideoEncodeH265PictureInfo *                                pStdPictureInfo            = {};
122060   };
122061 
122062   template <>
122063   struct CppType<StructureType, StructureType::eVideoEncodeH265PictureInfoKHR>
122064   {
122065     using Type = VideoEncodeH265PictureInfoKHR;
122066   };
122067 
122068   struct VideoEncodeH265ProfileInfoKHR
122069   {
122070     using NativeType = VkVideoEncodeH265ProfileInfoKHR;
122071 
122072     static const bool                                  allowDuplicate = false;
122073     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265ProfileInfoKHR;
122074 
122075 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265ProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR122076     VULKAN_HPP_CONSTEXPR VideoEncodeH265ProfileInfoKHR( StdVideoH265ProfileIdc stdProfileIdc_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
122077       : pNext{ pNext_ }
122078       , stdProfileIdc{ stdProfileIdc_ }
122079     {
122080     }
122081 
122082     VULKAN_HPP_CONSTEXPR VideoEncodeH265ProfileInfoKHR( VideoEncodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122083 
VideoEncodeH265ProfileInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR122084     VideoEncodeH265ProfileInfoKHR( VkVideoEncodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122085       : VideoEncodeH265ProfileInfoKHR( *reinterpret_cast<VideoEncodeH265ProfileInfoKHR const *>( &rhs ) )
122086     {
122087     }
122088 
122089     VideoEncodeH265ProfileInfoKHR & operator=( VideoEncodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122090 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
122091 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR122092     VideoEncodeH265ProfileInfoKHR & operator=( VkVideoEncodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122093     {
122094       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR const *>( &rhs );
122095       return *this;
122096     }
122097 
122098 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR122099     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ProfileInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
122100     {
122101       pNext = pNext_;
122102       return *this;
122103     }
122104 
setStdProfileIdcVULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR122105     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ProfileInfoKHR & setStdProfileIdc( StdVideoH265ProfileIdc stdProfileIdc_ ) VULKAN_HPP_NOEXCEPT
122106     {
122107       stdProfileIdc = stdProfileIdc_;
122108       return *this;
122109     }
122110 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
122111 
operator VkVideoEncodeH265ProfileInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR122112     operator VkVideoEncodeH265ProfileInfoKHR const &() const VULKAN_HPP_NOEXCEPT
122113     {
122114       return *reinterpret_cast<const VkVideoEncodeH265ProfileInfoKHR *>( this );
122115     }
122116 
operator VkVideoEncodeH265ProfileInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR122117     operator VkVideoEncodeH265ProfileInfoKHR &() VULKAN_HPP_NOEXCEPT
122118     {
122119       return *reinterpret_cast<VkVideoEncodeH265ProfileInfoKHR *>( this );
122120     }
122121 
122122 #if defined( VULKAN_HPP_USE_REFLECT )
122123 #  if 14 <= VULKAN_HPP_CPP_VERSION
122124     auto
122125 #  else
122126     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, StdVideoH265ProfileIdc const &>
122127 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR122128       reflect() const VULKAN_HPP_NOEXCEPT
122129     {
122130       return std::tie( sType, pNext, stdProfileIdc );
122131     }
122132 #endif
122133 
122134 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR122135     std::strong_ordering operator<=>( VideoEncodeH265ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122136     {
122137       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
122138         return cmp;
122139       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
122140         return cmp;
122141       if ( auto cmp = memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH265ProfileIdc ) ); cmp != 0 )
122142         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
122143 
122144       return std::strong_ordering::equivalent;
122145     }
122146 #endif
122147 
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR122148     bool operator==( VideoEncodeH265ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122149     {
122150       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH265ProfileIdc ) ) == 0 );
122151     }
122152 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR122153     bool operator!=( VideoEncodeH265ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122154     {
122155       return !operator==( rhs );
122156     }
122157 
122158   public:
122159     VULKAN_HPP_NAMESPACE::StructureType sType         = StructureType::eVideoEncodeH265ProfileInfoKHR;
122160     const void *                        pNext         = {};
122161     StdVideoH265ProfileIdc              stdProfileIdc = {};
122162   };
122163 
122164   template <>
122165   struct CppType<StructureType, StructureType::eVideoEncodeH265ProfileInfoKHR>
122166   {
122167     using Type = VideoEncodeH265ProfileInfoKHR;
122168   };
122169 
122170   struct VideoEncodeH265QpKHR
122171   {
122172     using NativeType = VkVideoEncodeH265QpKHR;
122173 
122174 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265QpKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR122175     VULKAN_HPP_CONSTEXPR VideoEncodeH265QpKHR( int32_t qpI_ = {}, int32_t qpP_ = {}, int32_t qpB_ = {} ) VULKAN_HPP_NOEXCEPT
122176       : qpI{ qpI_ }
122177       , qpP{ qpP_ }
122178       , qpB{ qpB_ }
122179     {
122180     }
122181 
122182     VULKAN_HPP_CONSTEXPR VideoEncodeH265QpKHR( VideoEncodeH265QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122183 
VideoEncodeH265QpKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR122184     VideoEncodeH265QpKHR( VkVideoEncodeH265QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122185       : VideoEncodeH265QpKHR( *reinterpret_cast<VideoEncodeH265QpKHR const *>( &rhs ) )
122186     {
122187     }
122188 
122189     VideoEncodeH265QpKHR & operator=( VideoEncodeH265QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122190 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
122191 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR122192     VideoEncodeH265QpKHR & operator=( VkVideoEncodeH265QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122193     {
122194       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR const *>( &rhs );
122195       return *this;
122196     }
122197 
122198 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setQpIVULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR122199     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265QpKHR & setQpI( int32_t qpI_ ) VULKAN_HPP_NOEXCEPT
122200     {
122201       qpI = qpI_;
122202       return *this;
122203     }
122204 
setQpPVULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR122205     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265QpKHR & setQpP( int32_t qpP_ ) VULKAN_HPP_NOEXCEPT
122206     {
122207       qpP = qpP_;
122208       return *this;
122209     }
122210 
setQpBVULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR122211     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265QpKHR & setQpB( int32_t qpB_ ) VULKAN_HPP_NOEXCEPT
122212     {
122213       qpB = qpB_;
122214       return *this;
122215     }
122216 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
122217 
operator VkVideoEncodeH265QpKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR122218     operator VkVideoEncodeH265QpKHR const &() const VULKAN_HPP_NOEXCEPT
122219     {
122220       return *reinterpret_cast<const VkVideoEncodeH265QpKHR *>( this );
122221     }
122222 
operator VkVideoEncodeH265QpKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR122223     operator VkVideoEncodeH265QpKHR &() VULKAN_HPP_NOEXCEPT
122224     {
122225       return *reinterpret_cast<VkVideoEncodeH265QpKHR *>( this );
122226     }
122227 
122228 #if defined( VULKAN_HPP_USE_REFLECT )
122229 #  if 14 <= VULKAN_HPP_CPP_VERSION
122230     auto
122231 #  else
122232     std::tuple<int32_t const &, int32_t const &, int32_t const &>
122233 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR122234       reflect() const VULKAN_HPP_NOEXCEPT
122235     {
122236       return std::tie( qpI, qpP, qpB );
122237     }
122238 #endif
122239 
122240 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
122241     auto operator<=>( VideoEncodeH265QpKHR const & ) const = default;
122242 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR122243     bool operator==( VideoEncodeH265QpKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122244     {
122245 #  if defined( VULKAN_HPP_USE_REFLECT )
122246       return this->reflect() == rhs.reflect();
122247 #  else
122248       return ( qpI == rhs.qpI ) && ( qpP == rhs.qpP ) && ( qpB == rhs.qpB );
122249 #  endif
122250     }
122251 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR122252     bool operator!=( VideoEncodeH265QpKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122253     {
122254       return !operator==( rhs );
122255     }
122256 #endif
122257 
122258   public:
122259     int32_t qpI = {};
122260     int32_t qpP = {};
122261     int32_t qpB = {};
122262   };
122263 
122264   struct VideoEncodeH265QualityLevelPropertiesKHR
122265   {
122266     using NativeType = VkVideoEncodeH265QualityLevelPropertiesKHR;
122267 
122268     static const bool                                  allowDuplicate = false;
122269     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265QualityLevelPropertiesKHR;
122270 
122271 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265QualityLevelPropertiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265QualityLevelPropertiesKHR122272     VULKAN_HPP_CONSTEXPR VideoEncodeH265QualityLevelPropertiesKHR( VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlFlagsKHR preferredRateControlFlags_ = {},
122273                                                                    uint32_t                                                 preferredGopFrameCount_    = {},
122274                                                                    uint32_t                                                 preferredIdrPeriod_        = {},
122275                                                                    uint32_t                                   preferredConsecutiveBFrameCount_         = {},
122276                                                                    uint32_t                                   preferredSubLayerCount_                  = {},
122277                                                                    VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR preferredConstantQp_                     = {},
122278                                                                    uint32_t                                   preferredMaxL0ReferenceCount_            = {},
122279                                                                    uint32_t                                   preferredMaxL1ReferenceCount_            = {},
122280                                                                    void *                                     pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
122281       : pNext{ pNext_ }
122282       , preferredRateControlFlags{ preferredRateControlFlags_ }
122283       , preferredGopFrameCount{ preferredGopFrameCount_ }
122284       , preferredIdrPeriod{ preferredIdrPeriod_ }
122285       , preferredConsecutiveBFrameCount{ preferredConsecutiveBFrameCount_ }
122286       , preferredSubLayerCount{ preferredSubLayerCount_ }
122287       , preferredConstantQp{ preferredConstantQp_ }
122288       , preferredMaxL0ReferenceCount{ preferredMaxL0ReferenceCount_ }
122289       , preferredMaxL1ReferenceCount{ preferredMaxL1ReferenceCount_ }
122290     {
122291     }
122292 
122293     VULKAN_HPP_CONSTEXPR VideoEncodeH265QualityLevelPropertiesKHR( VideoEncodeH265QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122294 
VideoEncodeH265QualityLevelPropertiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265QualityLevelPropertiesKHR122295     VideoEncodeH265QualityLevelPropertiesKHR( VkVideoEncodeH265QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122296       : VideoEncodeH265QualityLevelPropertiesKHR( *reinterpret_cast<VideoEncodeH265QualityLevelPropertiesKHR const *>( &rhs ) )
122297     {
122298     }
122299 
122300     VideoEncodeH265QualityLevelPropertiesKHR & operator=( VideoEncodeH265QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122301 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
122302 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265QualityLevelPropertiesKHR122303     VideoEncodeH265QualityLevelPropertiesKHR & operator=( VkVideoEncodeH265QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122304     {
122305       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265QualityLevelPropertiesKHR const *>( &rhs );
122306       return *this;
122307     }
122308 
operator VkVideoEncodeH265QualityLevelPropertiesKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265QualityLevelPropertiesKHR122309     operator VkVideoEncodeH265QualityLevelPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
122310     {
122311       return *reinterpret_cast<const VkVideoEncodeH265QualityLevelPropertiesKHR *>( this );
122312     }
122313 
operator VkVideoEncodeH265QualityLevelPropertiesKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265QualityLevelPropertiesKHR122314     operator VkVideoEncodeH265QualityLevelPropertiesKHR &() VULKAN_HPP_NOEXCEPT
122315     {
122316       return *reinterpret_cast<VkVideoEncodeH265QualityLevelPropertiesKHR *>( this );
122317     }
122318 
122319 #if defined( VULKAN_HPP_USE_REFLECT )
122320 #  if 14 <= VULKAN_HPP_CPP_VERSION
122321     auto
122322 #  else
122323     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
122324                void * const &,
122325                VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlFlagsKHR const &,
122326                uint32_t const &,
122327                uint32_t const &,
122328                uint32_t const &,
122329                uint32_t const &,
122330                VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR const &,
122331                uint32_t const &,
122332                uint32_t const &>
122333 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265QualityLevelPropertiesKHR122334       reflect() const VULKAN_HPP_NOEXCEPT
122335     {
122336       return std::tie( sType,
122337                        pNext,
122338                        preferredRateControlFlags,
122339                        preferredGopFrameCount,
122340                        preferredIdrPeriod,
122341                        preferredConsecutiveBFrameCount,
122342                        preferredSubLayerCount,
122343                        preferredConstantQp,
122344                        preferredMaxL0ReferenceCount,
122345                        preferredMaxL1ReferenceCount );
122346     }
122347 #endif
122348 
122349 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
122350     auto operator<=>( VideoEncodeH265QualityLevelPropertiesKHR const & ) const = default;
122351 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265QualityLevelPropertiesKHR122352     bool operator==( VideoEncodeH265QualityLevelPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122353     {
122354 #  if defined( VULKAN_HPP_USE_REFLECT )
122355       return this->reflect() == rhs.reflect();
122356 #  else
122357       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( preferredRateControlFlags == rhs.preferredRateControlFlags ) &&
122358              ( preferredGopFrameCount == rhs.preferredGopFrameCount ) && ( preferredIdrPeriod == rhs.preferredIdrPeriod ) &&
122359              ( preferredConsecutiveBFrameCount == rhs.preferredConsecutiveBFrameCount ) && ( preferredSubLayerCount == rhs.preferredSubLayerCount ) &&
122360              ( preferredConstantQp == rhs.preferredConstantQp ) && ( preferredMaxL0ReferenceCount == rhs.preferredMaxL0ReferenceCount ) &&
122361              ( preferredMaxL1ReferenceCount == rhs.preferredMaxL1ReferenceCount );
122362 #  endif
122363     }
122364 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265QualityLevelPropertiesKHR122365     bool operator!=( VideoEncodeH265QualityLevelPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122366     {
122367       return !operator==( rhs );
122368     }
122369 #endif
122370 
122371   public:
122372     VULKAN_HPP_NAMESPACE::StructureType                      sType                           = StructureType::eVideoEncodeH265QualityLevelPropertiesKHR;
122373     void *                                                   pNext                           = {};
122374     VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlFlagsKHR preferredRateControlFlags       = {};
122375     uint32_t                                                 preferredGopFrameCount          = {};
122376     uint32_t                                                 preferredIdrPeriod              = {};
122377     uint32_t                                                 preferredConsecutiveBFrameCount = {};
122378     uint32_t                                                 preferredSubLayerCount          = {};
122379     VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR               preferredConstantQp             = {};
122380     uint32_t                                                 preferredMaxL0ReferenceCount    = {};
122381     uint32_t                                                 preferredMaxL1ReferenceCount    = {};
122382   };
122383 
122384   template <>
122385   struct CppType<StructureType, StructureType::eVideoEncodeH265QualityLevelPropertiesKHR>
122386   {
122387     using Type = VideoEncodeH265QualityLevelPropertiesKHR;
122388   };
122389 
122390   struct VideoEncodeH265RateControlInfoKHR
122391   {
122392     using NativeType = VkVideoEncodeH265RateControlInfoKHR;
122393 
122394     static const bool                                  allowDuplicate = false;
122395     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265RateControlInfoKHR;
122396 
122397 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265RateControlInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR122398     VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlInfoKHR( VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlFlagsKHR flags_                  = {},
122399                                                             uint32_t                                                 gopFrameCount_          = {},
122400                                                             uint32_t                                                 idrPeriod_              = {},
122401                                                             uint32_t                                                 consecutiveBFrameCount_ = {},
122402                                                             uint32_t                                                 subLayerCount_          = {},
122403                                                             const void *                                             pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
122404       : pNext{ pNext_ }
122405       , flags{ flags_ }
122406       , gopFrameCount{ gopFrameCount_ }
122407       , idrPeriod{ idrPeriod_ }
122408       , consecutiveBFrameCount{ consecutiveBFrameCount_ }
122409       , subLayerCount{ subLayerCount_ }
122410     {
122411     }
122412 
122413     VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlInfoKHR( VideoEncodeH265RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122414 
VideoEncodeH265RateControlInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR122415     VideoEncodeH265RateControlInfoKHR( VkVideoEncodeH265RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122416       : VideoEncodeH265RateControlInfoKHR( *reinterpret_cast<VideoEncodeH265RateControlInfoKHR const *>( &rhs ) )
122417     {
122418     }
122419 
122420     VideoEncodeH265RateControlInfoKHR & operator=( VideoEncodeH265RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122421 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
122422 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR122423     VideoEncodeH265RateControlInfoKHR & operator=( VkVideoEncodeH265RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122424     {
122425       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR const *>( &rhs );
122426       return *this;
122427     }
122428 
122429 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR122430     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
122431     {
122432       pNext = pNext_;
122433       return *this;
122434     }
122435 
setFlagsVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR122436     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
122437     {
122438       flags = flags_;
122439       return *this;
122440     }
122441 
setGopFrameCountVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR122442     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR & setGopFrameCount( uint32_t gopFrameCount_ ) VULKAN_HPP_NOEXCEPT
122443     {
122444       gopFrameCount = gopFrameCount_;
122445       return *this;
122446     }
122447 
setIdrPeriodVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR122448     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR & setIdrPeriod( uint32_t idrPeriod_ ) VULKAN_HPP_NOEXCEPT
122449     {
122450       idrPeriod = idrPeriod_;
122451       return *this;
122452     }
122453 
setConsecutiveBFrameCountVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR122454     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR & setConsecutiveBFrameCount( uint32_t consecutiveBFrameCount_ ) VULKAN_HPP_NOEXCEPT
122455     {
122456       consecutiveBFrameCount = consecutiveBFrameCount_;
122457       return *this;
122458     }
122459 
setSubLayerCountVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR122460     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR & setSubLayerCount( uint32_t subLayerCount_ ) VULKAN_HPP_NOEXCEPT
122461     {
122462       subLayerCount = subLayerCount_;
122463       return *this;
122464     }
122465 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
122466 
operator VkVideoEncodeH265RateControlInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR122467     operator VkVideoEncodeH265RateControlInfoKHR const &() const VULKAN_HPP_NOEXCEPT
122468     {
122469       return *reinterpret_cast<const VkVideoEncodeH265RateControlInfoKHR *>( this );
122470     }
122471 
operator VkVideoEncodeH265RateControlInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR122472     operator VkVideoEncodeH265RateControlInfoKHR &() VULKAN_HPP_NOEXCEPT
122473     {
122474       return *reinterpret_cast<VkVideoEncodeH265RateControlInfoKHR *>( this );
122475     }
122476 
122477 #if defined( VULKAN_HPP_USE_REFLECT )
122478 #  if 14 <= VULKAN_HPP_CPP_VERSION
122479     auto
122480 #  else
122481     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
122482                const void * const &,
122483                VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlFlagsKHR const &,
122484                uint32_t const &,
122485                uint32_t const &,
122486                uint32_t const &,
122487                uint32_t const &>
122488 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR122489       reflect() const VULKAN_HPP_NOEXCEPT
122490     {
122491       return std::tie( sType, pNext, flags, gopFrameCount, idrPeriod, consecutiveBFrameCount, subLayerCount );
122492     }
122493 #endif
122494 
122495 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
122496     auto operator<=>( VideoEncodeH265RateControlInfoKHR const & ) const = default;
122497 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR122498     bool operator==( VideoEncodeH265RateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122499     {
122500 #  if defined( VULKAN_HPP_USE_REFLECT )
122501       return this->reflect() == rhs.reflect();
122502 #  else
122503       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( gopFrameCount == rhs.gopFrameCount ) &&
122504              ( idrPeriod == rhs.idrPeriod ) && ( consecutiveBFrameCount == rhs.consecutiveBFrameCount ) && ( subLayerCount == rhs.subLayerCount );
122505 #  endif
122506     }
122507 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR122508     bool operator!=( VideoEncodeH265RateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122509     {
122510       return !operator==( rhs );
122511     }
122512 #endif
122513 
122514   public:
122515     VULKAN_HPP_NAMESPACE::StructureType                      sType                  = StructureType::eVideoEncodeH265RateControlInfoKHR;
122516     const void *                                             pNext                  = {};
122517     VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlFlagsKHR flags                  = {};
122518     uint32_t                                                 gopFrameCount          = {};
122519     uint32_t                                                 idrPeriod              = {};
122520     uint32_t                                                 consecutiveBFrameCount = {};
122521     uint32_t                                                 subLayerCount          = {};
122522   };
122523 
122524   template <>
122525   struct CppType<StructureType, StructureType::eVideoEncodeH265RateControlInfoKHR>
122526   {
122527     using Type = VideoEncodeH265RateControlInfoKHR;
122528   };
122529 
122530   struct VideoEncodeH265RateControlLayerInfoKHR
122531   {
122532     using NativeType = VkVideoEncodeH265RateControlLayerInfoKHR;
122533 
122534     static const bool                                  allowDuplicate = false;
122535     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265RateControlLayerInfoKHR;
122536 
122537 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265RateControlLayerInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR122538     VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlLayerInfoKHR( VULKAN_HPP_NAMESPACE::Bool32                      useMinQp_        = {},
122539                                                                  VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR        minQp_           = {},
122540                                                                  VULKAN_HPP_NAMESPACE::Bool32                      useMaxQp_        = {},
122541                                                                  VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR        maxQp_           = {},
122542                                                                  VULKAN_HPP_NAMESPACE::Bool32                      useMaxFrameSize_ = {},
122543                                                                  VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR maxFrameSize_    = {},
122544                                                                  const void *                                      pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
122545       : pNext{ pNext_ }
122546       , useMinQp{ useMinQp_ }
122547       , minQp{ minQp_ }
122548       , useMaxQp{ useMaxQp_ }
122549       , maxQp{ maxQp_ }
122550       , useMaxFrameSize{ useMaxFrameSize_ }
122551       , maxFrameSize{ maxFrameSize_ }
122552     {
122553     }
122554 
122555     VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlLayerInfoKHR( VideoEncodeH265RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122556 
VideoEncodeH265RateControlLayerInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR122557     VideoEncodeH265RateControlLayerInfoKHR( VkVideoEncodeH265RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122558       : VideoEncodeH265RateControlLayerInfoKHR( *reinterpret_cast<VideoEncodeH265RateControlLayerInfoKHR const *>( &rhs ) )
122559     {
122560     }
122561 
122562     VideoEncodeH265RateControlLayerInfoKHR & operator=( VideoEncodeH265RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122563 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
122564 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR122565     VideoEncodeH265RateControlLayerInfoKHR & operator=( VkVideoEncodeH265RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122566     {
122567       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR const *>( &rhs );
122568       return *this;
122569     }
122570 
122571 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR122572     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
122573     {
122574       pNext = pNext_;
122575       return *this;
122576     }
122577 
setUseMinQpVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR122578     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR & setUseMinQp( VULKAN_HPP_NAMESPACE::Bool32 useMinQp_ ) VULKAN_HPP_NOEXCEPT
122579     {
122580       useMinQp = useMinQp_;
122581       return *this;
122582     }
122583 
setMinQpVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR122584     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR & setMinQp( VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR const & minQp_ ) VULKAN_HPP_NOEXCEPT
122585     {
122586       minQp = minQp_;
122587       return *this;
122588     }
122589 
setUseMaxQpVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR122590     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR & setUseMaxQp( VULKAN_HPP_NAMESPACE::Bool32 useMaxQp_ ) VULKAN_HPP_NOEXCEPT
122591     {
122592       useMaxQp = useMaxQp_;
122593       return *this;
122594     }
122595 
setMaxQpVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR122596     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR & setMaxQp( VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR const & maxQp_ ) VULKAN_HPP_NOEXCEPT
122597     {
122598       maxQp = maxQp_;
122599       return *this;
122600     }
122601 
setUseMaxFrameSizeVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR122602     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR & setUseMaxFrameSize( VULKAN_HPP_NAMESPACE::Bool32 useMaxFrameSize_ ) VULKAN_HPP_NOEXCEPT
122603     {
122604       useMaxFrameSize = useMaxFrameSize_;
122605       return *this;
122606     }
122607 
122608     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR &
setMaxFrameSizeVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR122609       setMaxFrameSize( VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR const & maxFrameSize_ ) VULKAN_HPP_NOEXCEPT
122610     {
122611       maxFrameSize = maxFrameSize_;
122612       return *this;
122613     }
122614 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
122615 
operator VkVideoEncodeH265RateControlLayerInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR122616     operator VkVideoEncodeH265RateControlLayerInfoKHR const &() const VULKAN_HPP_NOEXCEPT
122617     {
122618       return *reinterpret_cast<const VkVideoEncodeH265RateControlLayerInfoKHR *>( this );
122619     }
122620 
operator VkVideoEncodeH265RateControlLayerInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR122621     operator VkVideoEncodeH265RateControlLayerInfoKHR &() VULKAN_HPP_NOEXCEPT
122622     {
122623       return *reinterpret_cast<VkVideoEncodeH265RateControlLayerInfoKHR *>( this );
122624     }
122625 
122626 #if defined( VULKAN_HPP_USE_REFLECT )
122627 #  if 14 <= VULKAN_HPP_CPP_VERSION
122628     auto
122629 #  else
122630     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
122631                const void * const &,
122632                VULKAN_HPP_NAMESPACE::Bool32 const &,
122633                VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR const &,
122634                VULKAN_HPP_NAMESPACE::Bool32 const &,
122635                VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR const &,
122636                VULKAN_HPP_NAMESPACE::Bool32 const &,
122637                VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR const &>
122638 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR122639       reflect() const VULKAN_HPP_NOEXCEPT
122640     {
122641       return std::tie( sType, pNext, useMinQp, minQp, useMaxQp, maxQp, useMaxFrameSize, maxFrameSize );
122642     }
122643 #endif
122644 
122645 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
122646     auto operator<=>( VideoEncodeH265RateControlLayerInfoKHR const & ) const = default;
122647 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR122648     bool operator==( VideoEncodeH265RateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122649     {
122650 #  if defined( VULKAN_HPP_USE_REFLECT )
122651       return this->reflect() == rhs.reflect();
122652 #  else
122653       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( useMinQp == rhs.useMinQp ) && ( minQp == rhs.minQp ) && ( useMaxQp == rhs.useMaxQp ) &&
122654              ( maxQp == rhs.maxQp ) && ( useMaxFrameSize == rhs.useMaxFrameSize ) && ( maxFrameSize == rhs.maxFrameSize );
122655 #  endif
122656     }
122657 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR122658     bool operator!=( VideoEncodeH265RateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122659     {
122660       return !operator==( rhs );
122661     }
122662 #endif
122663 
122664   public:
122665     VULKAN_HPP_NAMESPACE::StructureType               sType           = StructureType::eVideoEncodeH265RateControlLayerInfoKHR;
122666     const void *                                      pNext           = {};
122667     VULKAN_HPP_NAMESPACE::Bool32                      useMinQp        = {};
122668     VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR        minQp           = {};
122669     VULKAN_HPP_NAMESPACE::Bool32                      useMaxQp        = {};
122670     VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR        maxQp           = {};
122671     VULKAN_HPP_NAMESPACE::Bool32                      useMaxFrameSize = {};
122672     VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR maxFrameSize    = {};
122673   };
122674 
122675   template <>
122676   struct CppType<StructureType, StructureType::eVideoEncodeH265RateControlLayerInfoKHR>
122677   {
122678     using Type = VideoEncodeH265RateControlLayerInfoKHR;
122679   };
122680 
122681   struct VideoEncodeH265SessionCreateInfoKHR
122682   {
122683     using NativeType = VkVideoEncodeH265SessionCreateInfoKHR;
122684 
122685     static const bool                                  allowDuplicate = false;
122686     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265SessionCreateInfoKHR;
122687 
122688 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265SessionCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR122689     VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionCreateInfoKHR( VULKAN_HPP_NAMESPACE::Bool32 useMaxLevelIdc_ = {},
122690                                                               StdVideoH265LevelIdc         maxLevelIdc_    = {},
122691                                                               const void *                 pNext_          = nullptr ) VULKAN_HPP_NOEXCEPT
122692       : pNext{ pNext_ }
122693       , useMaxLevelIdc{ useMaxLevelIdc_ }
122694       , maxLevelIdc{ maxLevelIdc_ }
122695     {
122696     }
122697 
122698     VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionCreateInfoKHR( VideoEncodeH265SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122699 
VideoEncodeH265SessionCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR122700     VideoEncodeH265SessionCreateInfoKHR( VkVideoEncodeH265SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122701       : VideoEncodeH265SessionCreateInfoKHR( *reinterpret_cast<VideoEncodeH265SessionCreateInfoKHR const *>( &rhs ) )
122702     {
122703     }
122704 
122705     VideoEncodeH265SessionCreateInfoKHR & operator=( VideoEncodeH265SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122706 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
122707 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR122708     VideoEncodeH265SessionCreateInfoKHR & operator=( VkVideoEncodeH265SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122709     {
122710       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR const *>( &rhs );
122711       return *this;
122712     }
122713 
122714 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR122715     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
122716     {
122717       pNext = pNext_;
122718       return *this;
122719     }
122720 
setUseMaxLevelIdcVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR122721     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoKHR & setUseMaxLevelIdc( VULKAN_HPP_NAMESPACE::Bool32 useMaxLevelIdc_ ) VULKAN_HPP_NOEXCEPT
122722     {
122723       useMaxLevelIdc = useMaxLevelIdc_;
122724       return *this;
122725     }
122726 
setMaxLevelIdcVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR122727     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoKHR & setMaxLevelIdc( StdVideoH265LevelIdc maxLevelIdc_ ) VULKAN_HPP_NOEXCEPT
122728     {
122729       maxLevelIdc = maxLevelIdc_;
122730       return *this;
122731     }
122732 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
122733 
operator VkVideoEncodeH265SessionCreateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR122734     operator VkVideoEncodeH265SessionCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
122735     {
122736       return *reinterpret_cast<const VkVideoEncodeH265SessionCreateInfoKHR *>( this );
122737     }
122738 
operator VkVideoEncodeH265SessionCreateInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR122739     operator VkVideoEncodeH265SessionCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
122740     {
122741       return *reinterpret_cast<VkVideoEncodeH265SessionCreateInfoKHR *>( this );
122742     }
122743 
122744 #if defined( VULKAN_HPP_USE_REFLECT )
122745 #  if 14 <= VULKAN_HPP_CPP_VERSION
122746     auto
122747 #  else
122748     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, StdVideoH265LevelIdc const &>
122749 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR122750       reflect() const VULKAN_HPP_NOEXCEPT
122751     {
122752       return std::tie( sType, pNext, useMaxLevelIdc, maxLevelIdc );
122753     }
122754 #endif
122755 
122756 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR122757     std::strong_ordering operator<=>( VideoEncodeH265SessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122758     {
122759       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
122760         return cmp;
122761       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
122762         return cmp;
122763       if ( auto cmp = useMaxLevelIdc <=> rhs.useMaxLevelIdc; cmp != 0 )
122764         return cmp;
122765       if ( auto cmp = memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH265LevelIdc ) ); cmp != 0 )
122766         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
122767 
122768       return std::strong_ordering::equivalent;
122769     }
122770 #endif
122771 
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR122772     bool operator==( VideoEncodeH265SessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122773     {
122774       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( useMaxLevelIdc == rhs.useMaxLevelIdc ) &&
122775              ( memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH265LevelIdc ) ) == 0 );
122776     }
122777 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR122778     bool operator!=( VideoEncodeH265SessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122779     {
122780       return !operator==( rhs );
122781     }
122782 
122783   public:
122784     VULKAN_HPP_NAMESPACE::StructureType sType          = StructureType::eVideoEncodeH265SessionCreateInfoKHR;
122785     const void *                        pNext          = {};
122786     VULKAN_HPP_NAMESPACE::Bool32        useMaxLevelIdc = {};
122787     StdVideoH265LevelIdc                maxLevelIdc    = {};
122788   };
122789 
122790   template <>
122791   struct CppType<StructureType, StructureType::eVideoEncodeH265SessionCreateInfoKHR>
122792   {
122793     using Type = VideoEncodeH265SessionCreateInfoKHR;
122794   };
122795 
122796   struct VideoEncodeH265SessionParametersAddInfoKHR
122797   {
122798     using NativeType = VkVideoEncodeH265SessionParametersAddInfoKHR;
122799 
122800     static const bool                                  allowDuplicate = false;
122801     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265SessionParametersAddInfoKHR;
122802 
122803 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR122804     VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersAddInfoKHR( uint32_t                                 stdVPSCount_ = {},
122805                                                                      const StdVideoH265VideoParameterSet *    pStdVPSs_    = {},
122806                                                                      uint32_t                                 stdSPSCount_ = {},
122807                                                                      const StdVideoH265SequenceParameterSet * pStdSPSs_    = {},
122808                                                                      uint32_t                                 stdPPSCount_ = {},
122809                                                                      const StdVideoH265PictureParameterSet *  pStdPPSs_    = {},
122810                                                                      const void *                             pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
122811       : pNext{ pNext_ }
122812       , stdVPSCount{ stdVPSCount_ }
122813       , pStdVPSs{ pStdVPSs_ }
122814       , stdSPSCount{ stdSPSCount_ }
122815       , pStdSPSs{ pStdSPSs_ }
122816       , stdPPSCount{ stdPPSCount_ }
122817       , pStdPPSs{ pStdPPSs_ }
122818     {
122819     }
122820 
122821     VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersAddInfoKHR( VideoEncodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122822 
VideoEncodeH265SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR122823     VideoEncodeH265SessionParametersAddInfoKHR( VkVideoEncodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122824       : VideoEncodeH265SessionParametersAddInfoKHR( *reinterpret_cast<VideoEncodeH265SessionParametersAddInfoKHR const *>( &rhs ) )
122825     {
122826     }
122827 
122828 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeH265SessionParametersAddInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR122829     VideoEncodeH265SessionParametersAddInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265VideoParameterSet> const &    stdVPSs_,
122830                                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265SequenceParameterSet> const & stdSPSs_ = {},
122831                                                 VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265PictureParameterSet> const &  stdPPSs_ = {},
122832                                                 const void *                                                                                  pNext_ = nullptr )
122833       : pNext( pNext_ )
122834       , stdVPSCount( static_cast<uint32_t>( stdVPSs_.size() ) )
122835       , pStdVPSs( stdVPSs_.data() )
122836       , stdSPSCount( static_cast<uint32_t>( stdSPSs_.size() ) )
122837       , pStdSPSs( stdSPSs_.data() )
122838       , stdPPSCount( static_cast<uint32_t>( stdPPSs_.size() ) )
122839       , pStdPPSs( stdPPSs_.data() )
122840     {
122841     }
122842 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
122843 
122844     VideoEncodeH265SessionParametersAddInfoKHR & operator=( VideoEncodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
122845 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
122846 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR122847     VideoEncodeH265SessionParametersAddInfoKHR & operator=( VkVideoEncodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
122848     {
122849       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR const *>( &rhs );
122850       return *this;
122851     }
122852 
122853 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR122854     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
122855     {
122856       pNext = pNext_;
122857       return *this;
122858     }
122859 
setStdVPSCountVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR122860     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR & setStdVPSCount( uint32_t stdVPSCount_ ) VULKAN_HPP_NOEXCEPT
122861     {
122862       stdVPSCount = stdVPSCount_;
122863       return *this;
122864     }
122865 
setPStdVPSsVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR122866     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR & setPStdVPSs( const StdVideoH265VideoParameterSet * pStdVPSs_ ) VULKAN_HPP_NOEXCEPT
122867     {
122868       pStdVPSs = pStdVPSs_;
122869       return *this;
122870     }
122871 
122872 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
122873     VideoEncodeH265SessionParametersAddInfoKHR &
setStdVPSsVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR122874       setStdVPSs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265VideoParameterSet> const & stdVPSs_ ) VULKAN_HPP_NOEXCEPT
122875     {
122876       stdVPSCount = static_cast<uint32_t>( stdVPSs_.size() );
122877       pStdVPSs    = stdVPSs_.data();
122878       return *this;
122879     }
122880 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
122881 
setStdSPSCountVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR122882     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR & setStdSPSCount( uint32_t stdSPSCount_ ) VULKAN_HPP_NOEXCEPT
122883     {
122884       stdSPSCount = stdSPSCount_;
122885       return *this;
122886     }
122887 
setPStdSPSsVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR122888     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR & setPStdSPSs( const StdVideoH265SequenceParameterSet * pStdSPSs_ ) VULKAN_HPP_NOEXCEPT
122889     {
122890       pStdSPSs = pStdSPSs_;
122891       return *this;
122892     }
122893 
122894 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
122895     VideoEncodeH265SessionParametersAddInfoKHR &
setStdSPSsVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR122896       setStdSPSs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265SequenceParameterSet> const & stdSPSs_ ) VULKAN_HPP_NOEXCEPT
122897     {
122898       stdSPSCount = static_cast<uint32_t>( stdSPSs_.size() );
122899       pStdSPSs    = stdSPSs_.data();
122900       return *this;
122901     }
122902 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
122903 
setStdPPSCountVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR122904     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR & setStdPPSCount( uint32_t stdPPSCount_ ) VULKAN_HPP_NOEXCEPT
122905     {
122906       stdPPSCount = stdPPSCount_;
122907       return *this;
122908     }
122909 
setPStdPPSsVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR122910     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR & setPStdPPSs( const StdVideoH265PictureParameterSet * pStdPPSs_ ) VULKAN_HPP_NOEXCEPT
122911     {
122912       pStdPPSs = pStdPPSs_;
122913       return *this;
122914     }
122915 
122916 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
122917     VideoEncodeH265SessionParametersAddInfoKHR &
setStdPPSsVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR122918       setStdPPSs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const StdVideoH265PictureParameterSet> const & stdPPSs_ ) VULKAN_HPP_NOEXCEPT
122919     {
122920       stdPPSCount = static_cast<uint32_t>( stdPPSs_.size() );
122921       pStdPPSs    = stdPPSs_.data();
122922       return *this;
122923     }
122924 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
122925 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
122926 
operator VkVideoEncodeH265SessionParametersAddInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR122927     operator VkVideoEncodeH265SessionParametersAddInfoKHR const &() const VULKAN_HPP_NOEXCEPT
122928     {
122929       return *reinterpret_cast<const VkVideoEncodeH265SessionParametersAddInfoKHR *>( this );
122930     }
122931 
operator VkVideoEncodeH265SessionParametersAddInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR122932     operator VkVideoEncodeH265SessionParametersAddInfoKHR &() VULKAN_HPP_NOEXCEPT
122933     {
122934       return *reinterpret_cast<VkVideoEncodeH265SessionParametersAddInfoKHR *>( this );
122935     }
122936 
122937 #if defined( VULKAN_HPP_USE_REFLECT )
122938 #  if 14 <= VULKAN_HPP_CPP_VERSION
122939     auto
122940 #  else
122941     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
122942                const void * const &,
122943                uint32_t const &,
122944                const StdVideoH265VideoParameterSet * const &,
122945                uint32_t const &,
122946                const StdVideoH265SequenceParameterSet * const &,
122947                uint32_t const &,
122948                const StdVideoH265PictureParameterSet * const &>
122949 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR122950       reflect() const VULKAN_HPP_NOEXCEPT
122951     {
122952       return std::tie( sType, pNext, stdVPSCount, pStdVPSs, stdSPSCount, pStdSPSs, stdPPSCount, pStdPPSs );
122953     }
122954 #endif
122955 
122956 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
122957     auto operator<=>( VideoEncodeH265SessionParametersAddInfoKHR const & ) const = default;
122958 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR122959     bool operator==( VideoEncodeH265SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122960     {
122961 #  if defined( VULKAN_HPP_USE_REFLECT )
122962       return this->reflect() == rhs.reflect();
122963 #  else
122964       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stdVPSCount == rhs.stdVPSCount ) && ( pStdVPSs == rhs.pStdVPSs ) &&
122965              ( stdSPSCount == rhs.stdSPSCount ) && ( pStdSPSs == rhs.pStdSPSs ) && ( stdPPSCount == rhs.stdPPSCount ) && ( pStdPPSs == rhs.pStdPPSs );
122966 #  endif
122967     }
122968 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR122969     bool operator!=( VideoEncodeH265SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
122970     {
122971       return !operator==( rhs );
122972     }
122973 #endif
122974 
122975   public:
122976     VULKAN_HPP_NAMESPACE::StructureType      sType       = StructureType::eVideoEncodeH265SessionParametersAddInfoKHR;
122977     const void *                             pNext       = {};
122978     uint32_t                                 stdVPSCount = {};
122979     const StdVideoH265VideoParameterSet *    pStdVPSs    = {};
122980     uint32_t                                 stdSPSCount = {};
122981     const StdVideoH265SequenceParameterSet * pStdSPSs    = {};
122982     uint32_t                                 stdPPSCount = {};
122983     const StdVideoH265PictureParameterSet *  pStdPPSs    = {};
122984   };
122985 
122986   template <>
122987   struct CppType<StructureType, StructureType::eVideoEncodeH265SessionParametersAddInfoKHR>
122988   {
122989     using Type = VideoEncodeH265SessionParametersAddInfoKHR;
122990   };
122991 
122992   struct VideoEncodeH265SessionParametersCreateInfoKHR
122993   {
122994     using NativeType = VkVideoEncodeH265SessionParametersCreateInfoKHR;
122995 
122996     static const bool                                  allowDuplicate = false;
122997     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265SessionParametersCreateInfoKHR;
122998 
122999 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
123000     VULKAN_HPP_CONSTEXPR
VideoEncodeH265SessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR123001       VideoEncodeH265SessionParametersCreateInfoKHR( uint32_t                                                                 maxStdVPSCount_     = {},
123002                                                      uint32_t                                                                 maxStdSPSCount_     = {},
123003                                                      uint32_t                                                                 maxStdPPSCount_     = {},
123004                                                      const VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR * pParametersAddInfo_ = {},
123005                                                      const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
123006       : pNext{ pNext_ }
123007       , maxStdVPSCount{ maxStdVPSCount_ }
123008       , maxStdSPSCount{ maxStdSPSCount_ }
123009       , maxStdPPSCount{ maxStdPPSCount_ }
123010       , pParametersAddInfo{ pParametersAddInfo_ }
123011     {
123012     }
123013 
123014     VULKAN_HPP_CONSTEXPR
123015       VideoEncodeH265SessionParametersCreateInfoKHR( VideoEncodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123016 
VideoEncodeH265SessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR123017     VideoEncodeH265SessionParametersCreateInfoKHR( VkVideoEncodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123018       : VideoEncodeH265SessionParametersCreateInfoKHR( *reinterpret_cast<VideoEncodeH265SessionParametersCreateInfoKHR const *>( &rhs ) )
123019     {
123020     }
123021 
123022     VideoEncodeH265SessionParametersCreateInfoKHR & operator=( VideoEncodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123023 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
123024 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR123025     VideoEncodeH265SessionParametersCreateInfoKHR & operator=( VkVideoEncodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123026     {
123027       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR const *>( &rhs );
123028       return *this;
123029     }
123030 
123031 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR123032     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
123033     {
123034       pNext = pNext_;
123035       return *this;
123036     }
123037 
setMaxStdVPSCountVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR123038     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoKHR & setMaxStdVPSCount( uint32_t maxStdVPSCount_ ) VULKAN_HPP_NOEXCEPT
123039     {
123040       maxStdVPSCount = maxStdVPSCount_;
123041       return *this;
123042     }
123043 
setMaxStdSPSCountVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR123044     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoKHR & setMaxStdSPSCount( uint32_t maxStdSPSCount_ ) VULKAN_HPP_NOEXCEPT
123045     {
123046       maxStdSPSCount = maxStdSPSCount_;
123047       return *this;
123048     }
123049 
setMaxStdPPSCountVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR123050     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoKHR & setMaxStdPPSCount( uint32_t maxStdPPSCount_ ) VULKAN_HPP_NOEXCEPT
123051     {
123052       maxStdPPSCount = maxStdPPSCount_;
123053       return *this;
123054     }
123055 
123056     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoKHR &
setPParametersAddInfoVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR123057       setPParametersAddInfo( const VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR * pParametersAddInfo_ ) VULKAN_HPP_NOEXCEPT
123058     {
123059       pParametersAddInfo = pParametersAddInfo_;
123060       return *this;
123061     }
123062 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
123063 
operator VkVideoEncodeH265SessionParametersCreateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR123064     operator VkVideoEncodeH265SessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
123065     {
123066       return *reinterpret_cast<const VkVideoEncodeH265SessionParametersCreateInfoKHR *>( this );
123067     }
123068 
operator VkVideoEncodeH265SessionParametersCreateInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR123069     operator VkVideoEncodeH265SessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
123070     {
123071       return *reinterpret_cast<VkVideoEncodeH265SessionParametersCreateInfoKHR *>( this );
123072     }
123073 
123074 #if defined( VULKAN_HPP_USE_REFLECT )
123075 #  if 14 <= VULKAN_HPP_CPP_VERSION
123076     auto
123077 #  else
123078     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
123079                const void * const &,
123080                uint32_t const &,
123081                uint32_t const &,
123082                uint32_t const &,
123083                const VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR * const &>
123084 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR123085       reflect() const VULKAN_HPP_NOEXCEPT
123086     {
123087       return std::tie( sType, pNext, maxStdVPSCount, maxStdSPSCount, maxStdPPSCount, pParametersAddInfo );
123088     }
123089 #endif
123090 
123091 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
123092     auto operator<=>( VideoEncodeH265SessionParametersCreateInfoKHR const & ) const = default;
123093 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR123094     bool operator==( VideoEncodeH265SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123095     {
123096 #  if defined( VULKAN_HPP_USE_REFLECT )
123097       return this->reflect() == rhs.reflect();
123098 #  else
123099       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxStdVPSCount == rhs.maxStdVPSCount ) && ( maxStdSPSCount == rhs.maxStdSPSCount ) &&
123100              ( maxStdPPSCount == rhs.maxStdPPSCount ) && ( pParametersAddInfo == rhs.pParametersAddInfo );
123101 #  endif
123102     }
123103 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR123104     bool operator!=( VideoEncodeH265SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123105     {
123106       return !operator==( rhs );
123107     }
123108 #endif
123109 
123110   public:
123111     VULKAN_HPP_NAMESPACE::StructureType                                      sType              = StructureType::eVideoEncodeH265SessionParametersCreateInfoKHR;
123112     const void *                                                             pNext              = {};
123113     uint32_t                                                                 maxStdVPSCount     = {};
123114     uint32_t                                                                 maxStdSPSCount     = {};
123115     uint32_t                                                                 maxStdPPSCount     = {};
123116     const VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR * pParametersAddInfo = {};
123117   };
123118 
123119   template <>
123120   struct CppType<StructureType, StructureType::eVideoEncodeH265SessionParametersCreateInfoKHR>
123121   {
123122     using Type = VideoEncodeH265SessionParametersCreateInfoKHR;
123123   };
123124 
123125   struct VideoEncodeH265SessionParametersFeedbackInfoKHR
123126   {
123127     using NativeType = VkVideoEncodeH265SessionParametersFeedbackInfoKHR;
123128 
123129     static const bool                                  allowDuplicate = false;
123130     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265SessionParametersFeedbackInfoKHR;
123131 
123132 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265SessionParametersFeedbackInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersFeedbackInfoKHR123133     VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersFeedbackInfoKHR( VULKAN_HPP_NAMESPACE::Bool32 hasStdVPSOverrides_ = {},
123134                                                                           VULKAN_HPP_NAMESPACE::Bool32 hasStdSPSOverrides_ = {},
123135                                                                           VULKAN_HPP_NAMESPACE::Bool32 hasStdPPSOverrides_ = {},
123136                                                                           void *                       pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
123137       : pNext{ pNext_ }
123138       , hasStdVPSOverrides{ hasStdVPSOverrides_ }
123139       , hasStdSPSOverrides{ hasStdSPSOverrides_ }
123140       , hasStdPPSOverrides{ hasStdPPSOverrides_ }
123141     {
123142     }
123143 
123144     VULKAN_HPP_CONSTEXPR
123145       VideoEncodeH265SessionParametersFeedbackInfoKHR( VideoEncodeH265SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123146 
VideoEncodeH265SessionParametersFeedbackInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersFeedbackInfoKHR123147     VideoEncodeH265SessionParametersFeedbackInfoKHR( VkVideoEncodeH265SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123148       : VideoEncodeH265SessionParametersFeedbackInfoKHR( *reinterpret_cast<VideoEncodeH265SessionParametersFeedbackInfoKHR const *>( &rhs ) )
123149     {
123150     }
123151 
123152     VideoEncodeH265SessionParametersFeedbackInfoKHR & operator=( VideoEncodeH265SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123153 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
123154 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersFeedbackInfoKHR123155     VideoEncodeH265SessionParametersFeedbackInfoKHR & operator=( VkVideoEncodeH265SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123156     {
123157       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersFeedbackInfoKHR const *>( &rhs );
123158       return *this;
123159     }
123160 
operator VkVideoEncodeH265SessionParametersFeedbackInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersFeedbackInfoKHR123161     operator VkVideoEncodeH265SessionParametersFeedbackInfoKHR const &() const VULKAN_HPP_NOEXCEPT
123162     {
123163       return *reinterpret_cast<const VkVideoEncodeH265SessionParametersFeedbackInfoKHR *>( this );
123164     }
123165 
operator VkVideoEncodeH265SessionParametersFeedbackInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersFeedbackInfoKHR123166     operator VkVideoEncodeH265SessionParametersFeedbackInfoKHR &() VULKAN_HPP_NOEXCEPT
123167     {
123168       return *reinterpret_cast<VkVideoEncodeH265SessionParametersFeedbackInfoKHR *>( this );
123169     }
123170 
123171 #if defined( VULKAN_HPP_USE_REFLECT )
123172 #  if 14 <= VULKAN_HPP_CPP_VERSION
123173     auto
123174 #  else
123175     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
123176                void * const &,
123177                VULKAN_HPP_NAMESPACE::Bool32 const &,
123178                VULKAN_HPP_NAMESPACE::Bool32 const &,
123179                VULKAN_HPP_NAMESPACE::Bool32 const &>
123180 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersFeedbackInfoKHR123181       reflect() const VULKAN_HPP_NOEXCEPT
123182     {
123183       return std::tie( sType, pNext, hasStdVPSOverrides, hasStdSPSOverrides, hasStdPPSOverrides );
123184     }
123185 #endif
123186 
123187 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
123188     auto operator<=>( VideoEncodeH265SessionParametersFeedbackInfoKHR const & ) const = default;
123189 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersFeedbackInfoKHR123190     bool operator==( VideoEncodeH265SessionParametersFeedbackInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123191     {
123192 #  if defined( VULKAN_HPP_USE_REFLECT )
123193       return this->reflect() == rhs.reflect();
123194 #  else
123195       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hasStdVPSOverrides == rhs.hasStdVPSOverrides ) &&
123196              ( hasStdSPSOverrides == rhs.hasStdSPSOverrides ) && ( hasStdPPSOverrides == rhs.hasStdPPSOverrides );
123197 #  endif
123198     }
123199 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersFeedbackInfoKHR123200     bool operator!=( VideoEncodeH265SessionParametersFeedbackInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123201     {
123202       return !operator==( rhs );
123203     }
123204 #endif
123205 
123206   public:
123207     VULKAN_HPP_NAMESPACE::StructureType sType              = StructureType::eVideoEncodeH265SessionParametersFeedbackInfoKHR;
123208     void *                              pNext              = {};
123209     VULKAN_HPP_NAMESPACE::Bool32        hasStdVPSOverrides = {};
123210     VULKAN_HPP_NAMESPACE::Bool32        hasStdSPSOverrides = {};
123211     VULKAN_HPP_NAMESPACE::Bool32        hasStdPPSOverrides = {};
123212   };
123213 
123214   template <>
123215   struct CppType<StructureType, StructureType::eVideoEncodeH265SessionParametersFeedbackInfoKHR>
123216   {
123217     using Type = VideoEncodeH265SessionParametersFeedbackInfoKHR;
123218   };
123219 
123220   struct VideoEncodeH265SessionParametersGetInfoKHR
123221   {
123222     using NativeType = VkVideoEncodeH265SessionParametersGetInfoKHR;
123223 
123224     static const bool                                  allowDuplicate = false;
123225     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeH265SessionParametersGetInfoKHR;
123226 
123227 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeH265SessionParametersGetInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR123228     VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersGetInfoKHR( VULKAN_HPP_NAMESPACE::Bool32 writeStdVPS_ = {},
123229                                                                      VULKAN_HPP_NAMESPACE::Bool32 writeStdSPS_ = {},
123230                                                                      VULKAN_HPP_NAMESPACE::Bool32 writeStdPPS_ = {},
123231                                                                      uint32_t                     stdVPSId_    = {},
123232                                                                      uint32_t                     stdSPSId_    = {},
123233                                                                      uint32_t                     stdPPSId_    = {},
123234                                                                      const void *                 pNext_       = nullptr ) VULKAN_HPP_NOEXCEPT
123235       : pNext{ pNext_ }
123236       , writeStdVPS{ writeStdVPS_ }
123237       , writeStdSPS{ writeStdSPS_ }
123238       , writeStdPPS{ writeStdPPS_ }
123239       , stdVPSId{ stdVPSId_ }
123240       , stdSPSId{ stdSPSId_ }
123241       , stdPPSId{ stdPPSId_ }
123242     {
123243     }
123244 
123245     VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersGetInfoKHR( VideoEncodeH265SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123246 
VideoEncodeH265SessionParametersGetInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR123247     VideoEncodeH265SessionParametersGetInfoKHR( VkVideoEncodeH265SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123248       : VideoEncodeH265SessionParametersGetInfoKHR( *reinterpret_cast<VideoEncodeH265SessionParametersGetInfoKHR const *>( &rhs ) )
123249     {
123250     }
123251 
123252     VideoEncodeH265SessionParametersGetInfoKHR & operator=( VideoEncodeH265SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123253 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
123254 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR123255     VideoEncodeH265SessionParametersGetInfoKHR & operator=( VkVideoEncodeH265SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123256     {
123257       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR const *>( &rhs );
123258       return *this;
123259     }
123260 
123261 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR123262     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
123263     {
123264       pNext = pNext_;
123265       return *this;
123266     }
123267 
setWriteStdVPSVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR123268     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR & setWriteStdVPS( VULKAN_HPP_NAMESPACE::Bool32 writeStdVPS_ ) VULKAN_HPP_NOEXCEPT
123269     {
123270       writeStdVPS = writeStdVPS_;
123271       return *this;
123272     }
123273 
setWriteStdSPSVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR123274     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR & setWriteStdSPS( VULKAN_HPP_NAMESPACE::Bool32 writeStdSPS_ ) VULKAN_HPP_NOEXCEPT
123275     {
123276       writeStdSPS = writeStdSPS_;
123277       return *this;
123278     }
123279 
setWriteStdPPSVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR123280     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR & setWriteStdPPS( VULKAN_HPP_NAMESPACE::Bool32 writeStdPPS_ ) VULKAN_HPP_NOEXCEPT
123281     {
123282       writeStdPPS = writeStdPPS_;
123283       return *this;
123284     }
123285 
setStdVPSIdVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR123286     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR & setStdVPSId( uint32_t stdVPSId_ ) VULKAN_HPP_NOEXCEPT
123287     {
123288       stdVPSId = stdVPSId_;
123289       return *this;
123290     }
123291 
setStdSPSIdVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR123292     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR & setStdSPSId( uint32_t stdSPSId_ ) VULKAN_HPP_NOEXCEPT
123293     {
123294       stdSPSId = stdSPSId_;
123295       return *this;
123296     }
123297 
setStdPPSIdVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR123298     VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR & setStdPPSId( uint32_t stdPPSId_ ) VULKAN_HPP_NOEXCEPT
123299     {
123300       stdPPSId = stdPPSId_;
123301       return *this;
123302     }
123303 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
123304 
operator VkVideoEncodeH265SessionParametersGetInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR123305     operator VkVideoEncodeH265SessionParametersGetInfoKHR const &() const VULKAN_HPP_NOEXCEPT
123306     {
123307       return *reinterpret_cast<const VkVideoEncodeH265SessionParametersGetInfoKHR *>( this );
123308     }
123309 
operator VkVideoEncodeH265SessionParametersGetInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR123310     operator VkVideoEncodeH265SessionParametersGetInfoKHR &() VULKAN_HPP_NOEXCEPT
123311     {
123312       return *reinterpret_cast<VkVideoEncodeH265SessionParametersGetInfoKHR *>( this );
123313     }
123314 
123315 #if defined( VULKAN_HPP_USE_REFLECT )
123316 #  if 14 <= VULKAN_HPP_CPP_VERSION
123317     auto
123318 #  else
123319     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
123320                const void * const &,
123321                VULKAN_HPP_NAMESPACE::Bool32 const &,
123322                VULKAN_HPP_NAMESPACE::Bool32 const &,
123323                VULKAN_HPP_NAMESPACE::Bool32 const &,
123324                uint32_t const &,
123325                uint32_t const &,
123326                uint32_t const &>
123327 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR123328       reflect() const VULKAN_HPP_NOEXCEPT
123329     {
123330       return std::tie( sType, pNext, writeStdVPS, writeStdSPS, writeStdPPS, stdVPSId, stdSPSId, stdPPSId );
123331     }
123332 #endif
123333 
123334 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
123335     auto operator<=>( VideoEncodeH265SessionParametersGetInfoKHR const & ) const = default;
123336 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR123337     bool operator==( VideoEncodeH265SessionParametersGetInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123338     {
123339 #  if defined( VULKAN_HPP_USE_REFLECT )
123340       return this->reflect() == rhs.reflect();
123341 #  else
123342       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( writeStdVPS == rhs.writeStdVPS ) && ( writeStdSPS == rhs.writeStdSPS ) &&
123343              ( writeStdPPS == rhs.writeStdPPS ) && ( stdVPSId == rhs.stdVPSId ) && ( stdSPSId == rhs.stdSPSId ) && ( stdPPSId == rhs.stdPPSId );
123344 #  endif
123345     }
123346 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR123347     bool operator!=( VideoEncodeH265SessionParametersGetInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123348     {
123349       return !operator==( rhs );
123350     }
123351 #endif
123352 
123353   public:
123354     VULKAN_HPP_NAMESPACE::StructureType sType       = StructureType::eVideoEncodeH265SessionParametersGetInfoKHR;
123355     const void *                        pNext       = {};
123356     VULKAN_HPP_NAMESPACE::Bool32        writeStdVPS = {};
123357     VULKAN_HPP_NAMESPACE::Bool32        writeStdSPS = {};
123358     VULKAN_HPP_NAMESPACE::Bool32        writeStdPPS = {};
123359     uint32_t                            stdVPSId    = {};
123360     uint32_t                            stdSPSId    = {};
123361     uint32_t                            stdPPSId    = {};
123362   };
123363 
123364   template <>
123365   struct CppType<StructureType, StructureType::eVideoEncodeH265SessionParametersGetInfoKHR>
123366   {
123367     using Type = VideoEncodeH265SessionParametersGetInfoKHR;
123368   };
123369 
123370   struct VideoEncodeInfoKHR
123371   {
123372     using NativeType = VkVideoEncodeInfoKHR;
123373 
123374     static const bool                                  allowDuplicate = false;
123375     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeInfoKHR;
123376 
123377 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR123378     VULKAN_HPP_CONSTEXPR VideoEncodeInfoKHR( VULKAN_HPP_NAMESPACE::VideoEncodeFlagsKHR               flags_                           = {},
123379                                              VULKAN_HPP_NAMESPACE::Buffer                            dstBuffer_                       = {},
123380                                              VULKAN_HPP_NAMESPACE::DeviceSize                        dstBufferOffset_                 = {},
123381                                              VULKAN_HPP_NAMESPACE::DeviceSize                        dstBufferRange_                  = {},
123382                                              VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR       srcPictureResource_              = {},
123383                                              const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pSetupReferenceSlot_             = {},
123384                                              uint32_t                                                referenceSlotCount_              = {},
123385                                              const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pReferenceSlots_                 = {},
123386                                              uint32_t                                                precedingExternallyEncodedBytes_ = {},
123387                                              const void *                                            pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
123388       : pNext{ pNext_ }
123389       , flags{ flags_ }
123390       , dstBuffer{ dstBuffer_ }
123391       , dstBufferOffset{ dstBufferOffset_ }
123392       , dstBufferRange{ dstBufferRange_ }
123393       , srcPictureResource{ srcPictureResource_ }
123394       , pSetupReferenceSlot{ pSetupReferenceSlot_ }
123395       , referenceSlotCount{ referenceSlotCount_ }
123396       , pReferenceSlots{ pReferenceSlots_ }
123397       , precedingExternallyEncodedBytes{ precedingExternallyEncodedBytes_ }
123398     {
123399     }
123400 
123401     VULKAN_HPP_CONSTEXPR VideoEncodeInfoKHR( VideoEncodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123402 
VideoEncodeInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR123403     VideoEncodeInfoKHR( VkVideoEncodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : VideoEncodeInfoKHR( *reinterpret_cast<VideoEncodeInfoKHR const *>( &rhs ) ) {}
123404 
123405 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR123406     VideoEncodeInfoKHR( VULKAN_HPP_NAMESPACE::VideoEncodeFlagsKHR                                                                    flags_,
123407                         VULKAN_HPP_NAMESPACE::Buffer                                                                                 dstBuffer_,
123408                         VULKAN_HPP_NAMESPACE::DeviceSize                                                                             dstBufferOffset_,
123409                         VULKAN_HPP_NAMESPACE::DeviceSize                                                                             dstBufferRange_,
123410                         VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR                                                            srcPictureResource_,
123411                         const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR *                                                      pSetupReferenceSlot_,
123412                         VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR> const & referenceSlots_,
123413                         uint32_t     precedingExternallyEncodedBytes_ = {},
123414                         const void * pNext_                           = nullptr )
123415       : pNext( pNext_ )
123416       , flags( flags_ )
123417       , dstBuffer( dstBuffer_ )
123418       , dstBufferOffset( dstBufferOffset_ )
123419       , dstBufferRange( dstBufferRange_ )
123420       , srcPictureResource( srcPictureResource_ )
123421       , pSetupReferenceSlot( pSetupReferenceSlot_ )
123422       , referenceSlotCount( static_cast<uint32_t>( referenceSlots_.size() ) )
123423       , pReferenceSlots( referenceSlots_.data() )
123424       , precedingExternallyEncodedBytes( precedingExternallyEncodedBytes_ )
123425     {
123426     }
123427 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
123428 
123429     VideoEncodeInfoKHR & operator=( VideoEncodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123430 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
123431 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR123432     VideoEncodeInfoKHR & operator=( VkVideoEncodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123433     {
123434       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR const *>( &rhs );
123435       return *this;
123436     }
123437 
123438 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR123439     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
123440     {
123441       pNext = pNext_;
123442       return *this;
123443     }
123444 
setFlagsVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR123445     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::VideoEncodeFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
123446     {
123447       flags = flags_;
123448       return *this;
123449     }
123450 
setDstBufferVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR123451     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setDstBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer_ ) VULKAN_HPP_NOEXCEPT
123452     {
123453       dstBuffer = dstBuffer_;
123454       return *this;
123455     }
123456 
setDstBufferOffsetVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR123457     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setDstBufferOffset( VULKAN_HPP_NAMESPACE::DeviceSize dstBufferOffset_ ) VULKAN_HPP_NOEXCEPT
123458     {
123459       dstBufferOffset = dstBufferOffset_;
123460       return *this;
123461     }
123462 
setDstBufferRangeVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR123463     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setDstBufferRange( VULKAN_HPP_NAMESPACE::DeviceSize dstBufferRange_ ) VULKAN_HPP_NOEXCEPT
123464     {
123465       dstBufferRange = dstBufferRange_;
123466       return *this;
123467     }
123468 
123469     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR &
setSrcPictureResourceVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR123470       setSrcPictureResource( VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR const & srcPictureResource_ ) VULKAN_HPP_NOEXCEPT
123471     {
123472       srcPictureResource = srcPictureResource_;
123473       return *this;
123474     }
123475 
123476     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR &
setPSetupReferenceSlotVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR123477       setPSetupReferenceSlot( const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pSetupReferenceSlot_ ) VULKAN_HPP_NOEXCEPT
123478     {
123479       pSetupReferenceSlot = pSetupReferenceSlot_;
123480       return *this;
123481     }
123482 
setReferenceSlotCountVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR123483     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setReferenceSlotCount( uint32_t referenceSlotCount_ ) VULKAN_HPP_NOEXCEPT
123484     {
123485       referenceSlotCount = referenceSlotCount_;
123486       return *this;
123487     }
123488 
123489     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR &
setPReferenceSlotsVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR123490       setPReferenceSlots( const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pReferenceSlots_ ) VULKAN_HPP_NOEXCEPT
123491     {
123492       pReferenceSlots = pReferenceSlots_;
123493       return *this;
123494     }
123495 
123496 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setReferenceSlotsVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR123497     VideoEncodeInfoKHR & setReferenceSlots(
123498       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR> const & referenceSlots_ ) VULKAN_HPP_NOEXCEPT
123499     {
123500       referenceSlotCount = static_cast<uint32_t>( referenceSlots_.size() );
123501       pReferenceSlots    = referenceSlots_.data();
123502       return *this;
123503     }
123504 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
123505 
setPrecedingExternallyEncodedBytesVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR123506     VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setPrecedingExternallyEncodedBytes( uint32_t precedingExternallyEncodedBytes_ ) VULKAN_HPP_NOEXCEPT
123507     {
123508       precedingExternallyEncodedBytes = precedingExternallyEncodedBytes_;
123509       return *this;
123510     }
123511 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
123512 
operator VkVideoEncodeInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR123513     operator VkVideoEncodeInfoKHR const &() const VULKAN_HPP_NOEXCEPT
123514     {
123515       return *reinterpret_cast<const VkVideoEncodeInfoKHR *>( this );
123516     }
123517 
operator VkVideoEncodeInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR123518     operator VkVideoEncodeInfoKHR &() VULKAN_HPP_NOEXCEPT
123519     {
123520       return *reinterpret_cast<VkVideoEncodeInfoKHR *>( this );
123521     }
123522 
123523 #if defined( VULKAN_HPP_USE_REFLECT )
123524 #  if 14 <= VULKAN_HPP_CPP_VERSION
123525     auto
123526 #  else
123527     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
123528                const void * const &,
123529                VULKAN_HPP_NAMESPACE::VideoEncodeFlagsKHR const &,
123530                VULKAN_HPP_NAMESPACE::Buffer const &,
123531                VULKAN_HPP_NAMESPACE::DeviceSize const &,
123532                VULKAN_HPP_NAMESPACE::DeviceSize const &,
123533                VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR const &,
123534                const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * const &,
123535                uint32_t const &,
123536                const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * const &,
123537                uint32_t const &>
123538 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR123539       reflect() const VULKAN_HPP_NOEXCEPT
123540     {
123541       return std::tie( sType,
123542                        pNext,
123543                        flags,
123544                        dstBuffer,
123545                        dstBufferOffset,
123546                        dstBufferRange,
123547                        srcPictureResource,
123548                        pSetupReferenceSlot,
123549                        referenceSlotCount,
123550                        pReferenceSlots,
123551                        precedingExternallyEncodedBytes );
123552     }
123553 #endif
123554 
123555 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
123556     auto operator<=>( VideoEncodeInfoKHR const & ) const = default;
123557 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR123558     bool operator==( VideoEncodeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123559     {
123560 #  if defined( VULKAN_HPP_USE_REFLECT )
123561       return this->reflect() == rhs.reflect();
123562 #  else
123563       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( dstBuffer == rhs.dstBuffer ) &&
123564              ( dstBufferOffset == rhs.dstBufferOffset ) && ( dstBufferRange == rhs.dstBufferRange ) && ( srcPictureResource == rhs.srcPictureResource ) &&
123565              ( pSetupReferenceSlot == rhs.pSetupReferenceSlot ) && ( referenceSlotCount == rhs.referenceSlotCount ) &&
123566              ( pReferenceSlots == rhs.pReferenceSlots ) && ( precedingExternallyEncodedBytes == rhs.precedingExternallyEncodedBytes );
123567 #  endif
123568     }
123569 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR123570     bool operator!=( VideoEncodeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123571     {
123572       return !operator==( rhs );
123573     }
123574 #endif
123575 
123576   public:
123577     VULKAN_HPP_NAMESPACE::StructureType                     sType                           = StructureType::eVideoEncodeInfoKHR;
123578     const void *                                            pNext                           = {};
123579     VULKAN_HPP_NAMESPACE::VideoEncodeFlagsKHR               flags                           = {};
123580     VULKAN_HPP_NAMESPACE::Buffer                            dstBuffer                       = {};
123581     VULKAN_HPP_NAMESPACE::DeviceSize                        dstBufferOffset                 = {};
123582     VULKAN_HPP_NAMESPACE::DeviceSize                        dstBufferRange                  = {};
123583     VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR       srcPictureResource              = {};
123584     const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pSetupReferenceSlot             = {};
123585     uint32_t                                                referenceSlotCount              = {};
123586     const VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR * pReferenceSlots                 = {};
123587     uint32_t                                                precedingExternallyEncodedBytes = {};
123588   };
123589 
123590   template <>
123591   struct CppType<StructureType, StructureType::eVideoEncodeInfoKHR>
123592   {
123593     using Type = VideoEncodeInfoKHR;
123594   };
123595 
123596   struct VideoEncodeQualityLevelInfoKHR
123597   {
123598     using NativeType = VkVideoEncodeQualityLevelInfoKHR;
123599 
123600     static const bool                                  allowDuplicate = false;
123601     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeQualityLevelInfoKHR;
123602 
123603 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeQualityLevelInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR123604     VULKAN_HPP_CONSTEXPR VideoEncodeQualityLevelInfoKHR( uint32_t qualityLevel_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
123605       : pNext{ pNext_ }
123606       , qualityLevel{ qualityLevel_ }
123607     {
123608     }
123609 
123610     VULKAN_HPP_CONSTEXPR VideoEncodeQualityLevelInfoKHR( VideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123611 
VideoEncodeQualityLevelInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR123612     VideoEncodeQualityLevelInfoKHR( VkVideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123613       : VideoEncodeQualityLevelInfoKHR( *reinterpret_cast<VideoEncodeQualityLevelInfoKHR const *>( &rhs ) )
123614     {
123615     }
123616 
123617     VideoEncodeQualityLevelInfoKHR & operator=( VideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123618 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
123619 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR123620     VideoEncodeQualityLevelInfoKHR & operator=( VkVideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123621     {
123622       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR const *>( &rhs );
123623       return *this;
123624     }
123625 
123626 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR123627     VULKAN_HPP_CONSTEXPR_14 VideoEncodeQualityLevelInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
123628     {
123629       pNext = pNext_;
123630       return *this;
123631     }
123632 
setQualityLevelVULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR123633     VULKAN_HPP_CONSTEXPR_14 VideoEncodeQualityLevelInfoKHR & setQualityLevel( uint32_t qualityLevel_ ) VULKAN_HPP_NOEXCEPT
123634     {
123635       qualityLevel = qualityLevel_;
123636       return *this;
123637     }
123638 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
123639 
operator VkVideoEncodeQualityLevelInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR123640     operator VkVideoEncodeQualityLevelInfoKHR const &() const VULKAN_HPP_NOEXCEPT
123641     {
123642       return *reinterpret_cast<const VkVideoEncodeQualityLevelInfoKHR *>( this );
123643     }
123644 
operator VkVideoEncodeQualityLevelInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR123645     operator VkVideoEncodeQualityLevelInfoKHR &() VULKAN_HPP_NOEXCEPT
123646     {
123647       return *reinterpret_cast<VkVideoEncodeQualityLevelInfoKHR *>( this );
123648     }
123649 
123650 #if defined( VULKAN_HPP_USE_REFLECT )
123651 #  if 14 <= VULKAN_HPP_CPP_VERSION
123652     auto
123653 #  else
123654     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
123655 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR123656       reflect() const VULKAN_HPP_NOEXCEPT
123657     {
123658       return std::tie( sType, pNext, qualityLevel );
123659     }
123660 #endif
123661 
123662 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
123663     auto operator<=>( VideoEncodeQualityLevelInfoKHR const & ) const = default;
123664 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR123665     bool operator==( VideoEncodeQualityLevelInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123666     {
123667 #  if defined( VULKAN_HPP_USE_REFLECT )
123668       return this->reflect() == rhs.reflect();
123669 #  else
123670       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( qualityLevel == rhs.qualityLevel );
123671 #  endif
123672     }
123673 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR123674     bool operator!=( VideoEncodeQualityLevelInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123675     {
123676       return !operator==( rhs );
123677     }
123678 #endif
123679 
123680   public:
123681     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eVideoEncodeQualityLevelInfoKHR;
123682     const void *                        pNext        = {};
123683     uint32_t                            qualityLevel = {};
123684   };
123685 
123686   template <>
123687   struct CppType<StructureType, StructureType::eVideoEncodeQualityLevelInfoKHR>
123688   {
123689     using Type = VideoEncodeQualityLevelInfoKHR;
123690   };
123691 
123692   struct VideoEncodeQualityLevelPropertiesKHR
123693   {
123694     using NativeType = VkVideoEncodeQualityLevelPropertiesKHR;
123695 
123696     static const bool                                  allowDuplicate = false;
123697     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeQualityLevelPropertiesKHR;
123698 
123699 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeQualityLevelPropertiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR123700     VULKAN_HPP_CONSTEXPR VideoEncodeQualityLevelPropertiesKHR( VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR preferredRateControlMode_ =
123701                                                                  VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR::eDefault,
123702                                                                uint32_t preferredRateControlLayerCount_ = {},
123703                                                                void *   pNext_                          = nullptr ) VULKAN_HPP_NOEXCEPT
123704       : pNext{ pNext_ }
123705       , preferredRateControlMode{ preferredRateControlMode_ }
123706       , preferredRateControlLayerCount{ preferredRateControlLayerCount_ }
123707     {
123708     }
123709 
123710     VULKAN_HPP_CONSTEXPR VideoEncodeQualityLevelPropertiesKHR( VideoEncodeQualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123711 
VideoEncodeQualityLevelPropertiesKHRVULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR123712     VideoEncodeQualityLevelPropertiesKHR( VkVideoEncodeQualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123713       : VideoEncodeQualityLevelPropertiesKHR( *reinterpret_cast<VideoEncodeQualityLevelPropertiesKHR const *>( &rhs ) )
123714     {
123715     }
123716 
123717     VideoEncodeQualityLevelPropertiesKHR & operator=( VideoEncodeQualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123718 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
123719 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR123720     VideoEncodeQualityLevelPropertiesKHR & operator=( VkVideoEncodeQualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123721     {
123722       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR const *>( &rhs );
123723       return *this;
123724     }
123725 
operator VkVideoEncodeQualityLevelPropertiesKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR123726     operator VkVideoEncodeQualityLevelPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
123727     {
123728       return *reinterpret_cast<const VkVideoEncodeQualityLevelPropertiesKHR *>( this );
123729     }
123730 
operator VkVideoEncodeQualityLevelPropertiesKHR&VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR123731     operator VkVideoEncodeQualityLevelPropertiesKHR &() VULKAN_HPP_NOEXCEPT
123732     {
123733       return *reinterpret_cast<VkVideoEncodeQualityLevelPropertiesKHR *>( this );
123734     }
123735 
123736 #if defined( VULKAN_HPP_USE_REFLECT )
123737 #  if 14 <= VULKAN_HPP_CPP_VERSION
123738     auto
123739 #  else
123740     std::
123741       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR const &, uint32_t const &>
123742 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR123743       reflect() const VULKAN_HPP_NOEXCEPT
123744     {
123745       return std::tie( sType, pNext, preferredRateControlMode, preferredRateControlLayerCount );
123746     }
123747 #endif
123748 
123749 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
123750     auto operator<=>( VideoEncodeQualityLevelPropertiesKHR const & ) const = default;
123751 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR123752     bool operator==( VideoEncodeQualityLevelPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123753     {
123754 #  if defined( VULKAN_HPP_USE_REFLECT )
123755       return this->reflect() == rhs.reflect();
123756 #  else
123757       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( preferredRateControlMode == rhs.preferredRateControlMode ) &&
123758              ( preferredRateControlLayerCount == rhs.preferredRateControlLayerCount );
123759 #  endif
123760     }
123761 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR123762     bool operator!=( VideoEncodeQualityLevelPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123763     {
123764       return !operator==( rhs );
123765     }
123766 #endif
123767 
123768   public:
123769     VULKAN_HPP_NAMESPACE::StructureType                         sType = StructureType::eVideoEncodeQualityLevelPropertiesKHR;
123770     void *                                                      pNext = {};
123771     VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR preferredRateControlMode =
123772       VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR::eDefault;
123773     uint32_t preferredRateControlLayerCount = {};
123774   };
123775 
123776   template <>
123777   struct CppType<StructureType, StructureType::eVideoEncodeQualityLevelPropertiesKHR>
123778   {
123779     using Type = VideoEncodeQualityLevelPropertiesKHR;
123780   };
123781 
123782   struct VideoEncodeRateControlLayerInfoKHR
123783   {
123784     using NativeType = VkVideoEncodeRateControlLayerInfoKHR;
123785 
123786     static const bool                                  allowDuplicate = false;
123787     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeRateControlLayerInfoKHR;
123788 
123789 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeRateControlLayerInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR123790     VULKAN_HPP_CONSTEXPR VideoEncodeRateControlLayerInfoKHR( uint64_t     averageBitrate_       = {},
123791                                                              uint64_t     maxBitrate_           = {},
123792                                                              uint32_t     frameRateNumerator_   = {},
123793                                                              uint32_t     frameRateDenominator_ = {},
123794                                                              const void * pNext_                = nullptr ) VULKAN_HPP_NOEXCEPT
123795       : pNext{ pNext_ }
123796       , averageBitrate{ averageBitrate_ }
123797       , maxBitrate{ maxBitrate_ }
123798       , frameRateNumerator{ frameRateNumerator_ }
123799       , frameRateDenominator{ frameRateDenominator_ }
123800     {
123801     }
123802 
123803     VULKAN_HPP_CONSTEXPR VideoEncodeRateControlLayerInfoKHR( VideoEncodeRateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123804 
VideoEncodeRateControlLayerInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR123805     VideoEncodeRateControlLayerInfoKHR( VkVideoEncodeRateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123806       : VideoEncodeRateControlLayerInfoKHR( *reinterpret_cast<VideoEncodeRateControlLayerInfoKHR const *>( &rhs ) )
123807     {
123808     }
123809 
123810     VideoEncodeRateControlLayerInfoKHR & operator=( VideoEncodeRateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123811 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
123812 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR123813     VideoEncodeRateControlLayerInfoKHR & operator=( VkVideoEncodeRateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123814     {
123815       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR const *>( &rhs );
123816       return *this;
123817     }
123818 
123819 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR123820     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
123821     {
123822       pNext = pNext_;
123823       return *this;
123824     }
123825 
setAverageBitrateVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR123826     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & setAverageBitrate( uint64_t averageBitrate_ ) VULKAN_HPP_NOEXCEPT
123827     {
123828       averageBitrate = averageBitrate_;
123829       return *this;
123830     }
123831 
setMaxBitrateVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR123832     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & setMaxBitrate( uint64_t maxBitrate_ ) VULKAN_HPP_NOEXCEPT
123833     {
123834       maxBitrate = maxBitrate_;
123835       return *this;
123836     }
123837 
setFrameRateNumeratorVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR123838     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & setFrameRateNumerator( uint32_t frameRateNumerator_ ) VULKAN_HPP_NOEXCEPT
123839     {
123840       frameRateNumerator = frameRateNumerator_;
123841       return *this;
123842     }
123843 
setFrameRateDenominatorVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR123844     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & setFrameRateDenominator( uint32_t frameRateDenominator_ ) VULKAN_HPP_NOEXCEPT
123845     {
123846       frameRateDenominator = frameRateDenominator_;
123847       return *this;
123848     }
123849 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
123850 
operator VkVideoEncodeRateControlLayerInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR123851     operator VkVideoEncodeRateControlLayerInfoKHR const &() const VULKAN_HPP_NOEXCEPT
123852     {
123853       return *reinterpret_cast<const VkVideoEncodeRateControlLayerInfoKHR *>( this );
123854     }
123855 
operator VkVideoEncodeRateControlLayerInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR123856     operator VkVideoEncodeRateControlLayerInfoKHR &() VULKAN_HPP_NOEXCEPT
123857     {
123858       return *reinterpret_cast<VkVideoEncodeRateControlLayerInfoKHR *>( this );
123859     }
123860 
123861 #if defined( VULKAN_HPP_USE_REFLECT )
123862 #  if 14 <= VULKAN_HPP_CPP_VERSION
123863     auto
123864 #  else
123865     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint64_t const &, uint64_t const &, uint32_t const &, uint32_t const &>
123866 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR123867       reflect() const VULKAN_HPP_NOEXCEPT
123868     {
123869       return std::tie( sType, pNext, averageBitrate, maxBitrate, frameRateNumerator, frameRateDenominator );
123870     }
123871 #endif
123872 
123873 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
123874     auto operator<=>( VideoEncodeRateControlLayerInfoKHR const & ) const = default;
123875 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR123876     bool operator==( VideoEncodeRateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123877     {
123878 #  if defined( VULKAN_HPP_USE_REFLECT )
123879       return this->reflect() == rhs.reflect();
123880 #  else
123881       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( averageBitrate == rhs.averageBitrate ) && ( maxBitrate == rhs.maxBitrate ) &&
123882              ( frameRateNumerator == rhs.frameRateNumerator ) && ( frameRateDenominator == rhs.frameRateDenominator );
123883 #  endif
123884     }
123885 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR123886     bool operator!=( VideoEncodeRateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
123887     {
123888       return !operator==( rhs );
123889     }
123890 #endif
123891 
123892   public:
123893     VULKAN_HPP_NAMESPACE::StructureType sType                = StructureType::eVideoEncodeRateControlLayerInfoKHR;
123894     const void *                        pNext                = {};
123895     uint64_t                            averageBitrate       = {};
123896     uint64_t                            maxBitrate           = {};
123897     uint32_t                            frameRateNumerator   = {};
123898     uint32_t                            frameRateDenominator = {};
123899   };
123900 
123901   template <>
123902   struct CppType<StructureType, StructureType::eVideoEncodeRateControlLayerInfoKHR>
123903   {
123904     using Type = VideoEncodeRateControlLayerInfoKHR;
123905   };
123906 
123907   struct VideoEncodeRateControlInfoKHR
123908   {
123909     using NativeType = VkVideoEncodeRateControlInfoKHR;
123910 
123911     static const bool                                  allowDuplicate = false;
123912     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeRateControlInfoKHR;
123913 
123914 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeRateControlInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR123915     VULKAN_HPP_CONSTEXPR VideoEncodeRateControlInfoKHR(
123916       VULKAN_HPP_NAMESPACE::VideoEncodeRateControlFlagsKHR             flags_           = {},
123917       VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR      rateControlMode_ = VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR::eDefault,
123918       uint32_t                                                         layerCount_      = {},
123919       const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR * pLayers_         = {},
123920       uint32_t                                                         virtualBufferSizeInMs_        = {},
123921       uint32_t                                                         initialVirtualBufferSizeInMs_ = {},
123922       const void *                                                     pNext_                        = nullptr ) VULKAN_HPP_NOEXCEPT
123923       : pNext{ pNext_ }
123924       , flags{ flags_ }
123925       , rateControlMode{ rateControlMode_ }
123926       , layerCount{ layerCount_ }
123927       , pLayers{ pLayers_ }
123928       , virtualBufferSizeInMs{ virtualBufferSizeInMs_ }
123929       , initialVirtualBufferSizeInMs{ initialVirtualBufferSizeInMs_ }
123930     {
123931     }
123932 
123933     VULKAN_HPP_CONSTEXPR VideoEncodeRateControlInfoKHR( VideoEncodeRateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123934 
VideoEncodeRateControlInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR123935     VideoEncodeRateControlInfoKHR( VkVideoEncodeRateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123936       : VideoEncodeRateControlInfoKHR( *reinterpret_cast<VideoEncodeRateControlInfoKHR const *>( &rhs ) )
123937     {
123938     }
123939 
123940 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoEncodeRateControlInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR123941     VideoEncodeRateControlInfoKHR(
123942       VULKAN_HPP_NAMESPACE::VideoEncodeRateControlFlagsKHR                                                                  flags_,
123943       VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR                                                           rateControlMode_,
123944       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR> const & layers_,
123945       uint32_t                                                                                                              virtualBufferSizeInMs_        = {},
123946       uint32_t                                                                                                              initialVirtualBufferSizeInMs_ = {},
123947       const void *                                                                                                          pNext_ = nullptr )
123948       : pNext( pNext_ )
123949       , flags( flags_ )
123950       , rateControlMode( rateControlMode_ )
123951       , layerCount( static_cast<uint32_t>( layers_.size() ) )
123952       , pLayers( layers_.data() )
123953       , virtualBufferSizeInMs( virtualBufferSizeInMs_ )
123954       , initialVirtualBufferSizeInMs( initialVirtualBufferSizeInMs_ )
123955     {
123956     }
123957 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
123958 
123959     VideoEncodeRateControlInfoKHR & operator=( VideoEncodeRateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
123960 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
123961 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR123962     VideoEncodeRateControlInfoKHR & operator=( VkVideoEncodeRateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
123963     {
123964       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR const *>( &rhs );
123965       return *this;
123966     }
123967 
123968 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR123969     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
123970     {
123971       pNext = pNext_;
123972       return *this;
123973     }
123974 
setFlagsVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR123975     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::VideoEncodeRateControlFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
123976     {
123977       flags = flags_;
123978       return *this;
123979     }
123980 
123981     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR &
setRateControlModeVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR123982       setRateControlMode( VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR rateControlMode_ ) VULKAN_HPP_NOEXCEPT
123983     {
123984       rateControlMode = rateControlMode_;
123985       return *this;
123986     }
123987 
setLayerCountVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR123988     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
123989     {
123990       layerCount = layerCount_;
123991       return *this;
123992     }
123993 
123994     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR &
setPLayersVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR123995       setPLayers( const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR * pLayers_ ) VULKAN_HPP_NOEXCEPT
123996     {
123997       pLayers = pLayers_;
123998       return *this;
123999     }
124000 
124001 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setLayersVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR124002     VideoEncodeRateControlInfoKHR & setLayers(
124003       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR> const & layers_ ) VULKAN_HPP_NOEXCEPT
124004     {
124005       layerCount = static_cast<uint32_t>( layers_.size() );
124006       pLayers    = layers_.data();
124007       return *this;
124008     }
124009 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
124010 
setVirtualBufferSizeInMsVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR124011     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setVirtualBufferSizeInMs( uint32_t virtualBufferSizeInMs_ ) VULKAN_HPP_NOEXCEPT
124012     {
124013       virtualBufferSizeInMs = virtualBufferSizeInMs_;
124014       return *this;
124015     }
124016 
setInitialVirtualBufferSizeInMsVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR124017     VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setInitialVirtualBufferSizeInMs( uint32_t initialVirtualBufferSizeInMs_ ) VULKAN_HPP_NOEXCEPT
124018     {
124019       initialVirtualBufferSizeInMs = initialVirtualBufferSizeInMs_;
124020       return *this;
124021     }
124022 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
124023 
operator VkVideoEncodeRateControlInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR124024     operator VkVideoEncodeRateControlInfoKHR const &() const VULKAN_HPP_NOEXCEPT
124025     {
124026       return *reinterpret_cast<const VkVideoEncodeRateControlInfoKHR *>( this );
124027     }
124028 
operator VkVideoEncodeRateControlInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR124029     operator VkVideoEncodeRateControlInfoKHR &() VULKAN_HPP_NOEXCEPT
124030     {
124031       return *reinterpret_cast<VkVideoEncodeRateControlInfoKHR *>( this );
124032     }
124033 
124034 #if defined( VULKAN_HPP_USE_REFLECT )
124035 #  if 14 <= VULKAN_HPP_CPP_VERSION
124036     auto
124037 #  else
124038     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
124039                const void * const &,
124040                VULKAN_HPP_NAMESPACE::VideoEncodeRateControlFlagsKHR const &,
124041                VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR const &,
124042                uint32_t const &,
124043                const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR * const &,
124044                uint32_t const &,
124045                uint32_t const &>
124046 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR124047       reflect() const VULKAN_HPP_NOEXCEPT
124048     {
124049       return std::tie( sType, pNext, flags, rateControlMode, layerCount, pLayers, virtualBufferSizeInMs, initialVirtualBufferSizeInMs );
124050     }
124051 #endif
124052 
124053 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
124054     auto operator<=>( VideoEncodeRateControlInfoKHR const & ) const = default;
124055 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR124056     bool operator==( VideoEncodeRateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124057     {
124058 #  if defined( VULKAN_HPP_USE_REFLECT )
124059       return this->reflect() == rhs.reflect();
124060 #  else
124061       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( rateControlMode == rhs.rateControlMode ) &&
124062              ( layerCount == rhs.layerCount ) && ( pLayers == rhs.pLayers ) && ( virtualBufferSizeInMs == rhs.virtualBufferSizeInMs ) &&
124063              ( initialVirtualBufferSizeInMs == rhs.initialVirtualBufferSizeInMs );
124064 #  endif
124065     }
124066 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR124067     bool operator!=( VideoEncodeRateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124068     {
124069       return !operator==( rhs );
124070     }
124071 #endif
124072 
124073   public:
124074     VULKAN_HPP_NAMESPACE::StructureType                              sType           = StructureType::eVideoEncodeRateControlInfoKHR;
124075     const void *                                                     pNext           = {};
124076     VULKAN_HPP_NAMESPACE::VideoEncodeRateControlFlagsKHR             flags           = {};
124077     VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR      rateControlMode = VULKAN_HPP_NAMESPACE::VideoEncodeRateControlModeFlagBitsKHR::eDefault;
124078     uint32_t                                                         layerCount      = {};
124079     const VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR * pLayers         = {};
124080     uint32_t                                                         virtualBufferSizeInMs        = {};
124081     uint32_t                                                         initialVirtualBufferSizeInMs = {};
124082   };
124083 
124084   template <>
124085   struct CppType<StructureType, StructureType::eVideoEncodeRateControlInfoKHR>
124086   {
124087     using Type = VideoEncodeRateControlInfoKHR;
124088   };
124089 
124090   struct VideoEncodeSessionParametersFeedbackInfoKHR
124091   {
124092     using NativeType = VkVideoEncodeSessionParametersFeedbackInfoKHR;
124093 
124094     static const bool                                  allowDuplicate = false;
124095     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeSessionParametersFeedbackInfoKHR;
124096 
124097 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeSessionParametersFeedbackInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR124098     VULKAN_HPP_CONSTEXPR VideoEncodeSessionParametersFeedbackInfoKHR( VULKAN_HPP_NAMESPACE::Bool32 hasOverrides_ = {},
124099                                                                       void *                       pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
124100       : pNext{ pNext_ }
124101       , hasOverrides{ hasOverrides_ }
124102     {
124103     }
124104 
124105     VULKAN_HPP_CONSTEXPR VideoEncodeSessionParametersFeedbackInfoKHR( VideoEncodeSessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124106 
VideoEncodeSessionParametersFeedbackInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR124107     VideoEncodeSessionParametersFeedbackInfoKHR( VkVideoEncodeSessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124108       : VideoEncodeSessionParametersFeedbackInfoKHR( *reinterpret_cast<VideoEncodeSessionParametersFeedbackInfoKHR const *>( &rhs ) )
124109     {
124110     }
124111 
124112     VideoEncodeSessionParametersFeedbackInfoKHR & operator=( VideoEncodeSessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124113 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
124114 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR124115     VideoEncodeSessionParametersFeedbackInfoKHR & operator=( VkVideoEncodeSessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124116     {
124117       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR const *>( &rhs );
124118       return *this;
124119     }
124120 
operator VkVideoEncodeSessionParametersFeedbackInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR124121     operator VkVideoEncodeSessionParametersFeedbackInfoKHR const &() const VULKAN_HPP_NOEXCEPT
124122     {
124123       return *reinterpret_cast<const VkVideoEncodeSessionParametersFeedbackInfoKHR *>( this );
124124     }
124125 
operator VkVideoEncodeSessionParametersFeedbackInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR124126     operator VkVideoEncodeSessionParametersFeedbackInfoKHR &() VULKAN_HPP_NOEXCEPT
124127     {
124128       return *reinterpret_cast<VkVideoEncodeSessionParametersFeedbackInfoKHR *>( this );
124129     }
124130 
124131 #if defined( VULKAN_HPP_USE_REFLECT )
124132 #  if 14 <= VULKAN_HPP_CPP_VERSION
124133     auto
124134 #  else
124135     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
124136 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR124137       reflect() const VULKAN_HPP_NOEXCEPT
124138     {
124139       return std::tie( sType, pNext, hasOverrides );
124140     }
124141 #endif
124142 
124143 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
124144     auto operator<=>( VideoEncodeSessionParametersFeedbackInfoKHR const & ) const = default;
124145 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR124146     bool operator==( VideoEncodeSessionParametersFeedbackInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124147     {
124148 #  if defined( VULKAN_HPP_USE_REFLECT )
124149       return this->reflect() == rhs.reflect();
124150 #  else
124151       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hasOverrides == rhs.hasOverrides );
124152 #  endif
124153     }
124154 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR124155     bool operator!=( VideoEncodeSessionParametersFeedbackInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124156     {
124157       return !operator==( rhs );
124158     }
124159 #endif
124160 
124161   public:
124162     VULKAN_HPP_NAMESPACE::StructureType sType        = StructureType::eVideoEncodeSessionParametersFeedbackInfoKHR;
124163     void *                              pNext        = {};
124164     VULKAN_HPP_NAMESPACE::Bool32        hasOverrides = {};
124165   };
124166 
124167   template <>
124168   struct CppType<StructureType, StructureType::eVideoEncodeSessionParametersFeedbackInfoKHR>
124169   {
124170     using Type = VideoEncodeSessionParametersFeedbackInfoKHR;
124171   };
124172 
124173   struct VideoEncodeSessionParametersGetInfoKHR
124174   {
124175     using NativeType = VkVideoEncodeSessionParametersGetInfoKHR;
124176 
124177     static const bool                                  allowDuplicate = false;
124178     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeSessionParametersGetInfoKHR;
124179 
124180 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEncodeSessionParametersGetInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR124181     VULKAN_HPP_CONSTEXPR VideoEncodeSessionParametersGetInfoKHR( VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters_ = {},
124182                                                                  const void *                                    pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
124183       : pNext{ pNext_ }
124184       , videoSessionParameters{ videoSessionParameters_ }
124185     {
124186     }
124187 
124188     VULKAN_HPP_CONSTEXPR VideoEncodeSessionParametersGetInfoKHR( VideoEncodeSessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124189 
VideoEncodeSessionParametersGetInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR124190     VideoEncodeSessionParametersGetInfoKHR( VkVideoEncodeSessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124191       : VideoEncodeSessionParametersGetInfoKHR( *reinterpret_cast<VideoEncodeSessionParametersGetInfoKHR const *>( &rhs ) )
124192     {
124193     }
124194 
124195     VideoEncodeSessionParametersGetInfoKHR & operator=( VideoEncodeSessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124196 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
124197 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR124198     VideoEncodeSessionParametersGetInfoKHR & operator=( VkVideoEncodeSessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124199     {
124200       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR const *>( &rhs );
124201       return *this;
124202     }
124203 
124204 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR124205     VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionParametersGetInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
124206     {
124207       pNext = pNext_;
124208       return *this;
124209     }
124210 
124211     VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionParametersGetInfoKHR &
setVideoSessionParametersVULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR124212       setVideoSessionParameters( VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters_ ) VULKAN_HPP_NOEXCEPT
124213     {
124214       videoSessionParameters = videoSessionParameters_;
124215       return *this;
124216     }
124217 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
124218 
operator VkVideoEncodeSessionParametersGetInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR124219     operator VkVideoEncodeSessionParametersGetInfoKHR const &() const VULKAN_HPP_NOEXCEPT
124220     {
124221       return *reinterpret_cast<const VkVideoEncodeSessionParametersGetInfoKHR *>( this );
124222     }
124223 
operator VkVideoEncodeSessionParametersGetInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR124224     operator VkVideoEncodeSessionParametersGetInfoKHR &() VULKAN_HPP_NOEXCEPT
124225     {
124226       return *reinterpret_cast<VkVideoEncodeSessionParametersGetInfoKHR *>( this );
124227     }
124228 
124229 #if defined( VULKAN_HPP_USE_REFLECT )
124230 #  if 14 <= VULKAN_HPP_CPP_VERSION
124231     auto
124232 #  else
124233     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR const &>
124234 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR124235       reflect() const VULKAN_HPP_NOEXCEPT
124236     {
124237       return std::tie( sType, pNext, videoSessionParameters );
124238     }
124239 #endif
124240 
124241 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
124242     auto operator<=>( VideoEncodeSessionParametersGetInfoKHR const & ) const = default;
124243 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR124244     bool operator==( VideoEncodeSessionParametersGetInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124245     {
124246 #  if defined( VULKAN_HPP_USE_REFLECT )
124247       return this->reflect() == rhs.reflect();
124248 #  else
124249       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoSessionParameters == rhs.videoSessionParameters );
124250 #  endif
124251     }
124252 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR124253     bool operator!=( VideoEncodeSessionParametersGetInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124254     {
124255       return !operator==( rhs );
124256     }
124257 #endif
124258 
124259   public:
124260     VULKAN_HPP_NAMESPACE::StructureType             sType                  = StructureType::eVideoEncodeSessionParametersGetInfoKHR;
124261     const void *                                    pNext                  = {};
124262     VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters = {};
124263   };
124264 
124265   template <>
124266   struct CppType<StructureType, StructureType::eVideoEncodeSessionParametersGetInfoKHR>
124267   {
124268     using Type = VideoEncodeSessionParametersGetInfoKHR;
124269   };
124270 
124271   struct VideoEncodeUsageInfoKHR
124272   {
124273     using NativeType = VkVideoEncodeUsageInfoKHR;
124274 
124275     static const bool                                  allowDuplicate = false;
124276     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEncodeUsageInfoKHR;
124277 
124278 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
124279     VULKAN_HPP_CONSTEXPR
VideoEncodeUsageInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR124280       VideoEncodeUsageInfoKHR( VULKAN_HPP_NAMESPACE::VideoEncodeUsageFlagsKHR   videoUsageHints_   = {},
124281                                VULKAN_HPP_NAMESPACE::VideoEncodeContentFlagsKHR videoContentHints_ = {},
124282                                VULKAN_HPP_NAMESPACE::VideoEncodeTuningModeKHR   tuningMode_        = VULKAN_HPP_NAMESPACE::VideoEncodeTuningModeKHR::eDefault,
124283                                const void *                                     pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
124284       : pNext{ pNext_ }
124285       , videoUsageHints{ videoUsageHints_ }
124286       , videoContentHints{ videoContentHints_ }
124287       , tuningMode{ tuningMode_ }
124288     {
124289     }
124290 
124291     VULKAN_HPP_CONSTEXPR VideoEncodeUsageInfoKHR( VideoEncodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124292 
VideoEncodeUsageInfoKHRVULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR124293     VideoEncodeUsageInfoKHR( VkVideoEncodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124294       : VideoEncodeUsageInfoKHR( *reinterpret_cast<VideoEncodeUsageInfoKHR const *>( &rhs ) )
124295     {
124296     }
124297 
124298     VideoEncodeUsageInfoKHR & operator=( VideoEncodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124299 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
124300 
operator =VULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR124301     VideoEncodeUsageInfoKHR & operator=( VkVideoEncodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124302     {
124303       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR const *>( &rhs );
124304       return *this;
124305     }
124306 
124307 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR124308     VULKAN_HPP_CONSTEXPR_14 VideoEncodeUsageInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
124309     {
124310       pNext = pNext_;
124311       return *this;
124312     }
124313 
setVideoUsageHintsVULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR124314     VULKAN_HPP_CONSTEXPR_14 VideoEncodeUsageInfoKHR & setVideoUsageHints( VULKAN_HPP_NAMESPACE::VideoEncodeUsageFlagsKHR videoUsageHints_ ) VULKAN_HPP_NOEXCEPT
124315     {
124316       videoUsageHints = videoUsageHints_;
124317       return *this;
124318     }
124319 
124320     VULKAN_HPP_CONSTEXPR_14 VideoEncodeUsageInfoKHR &
setVideoContentHintsVULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR124321       setVideoContentHints( VULKAN_HPP_NAMESPACE::VideoEncodeContentFlagsKHR videoContentHints_ ) VULKAN_HPP_NOEXCEPT
124322     {
124323       videoContentHints = videoContentHints_;
124324       return *this;
124325     }
124326 
setTuningModeVULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR124327     VULKAN_HPP_CONSTEXPR_14 VideoEncodeUsageInfoKHR & setTuningMode( VULKAN_HPP_NAMESPACE::VideoEncodeTuningModeKHR tuningMode_ ) VULKAN_HPP_NOEXCEPT
124328     {
124329       tuningMode = tuningMode_;
124330       return *this;
124331     }
124332 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
124333 
operator VkVideoEncodeUsageInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR124334     operator VkVideoEncodeUsageInfoKHR const &() const VULKAN_HPP_NOEXCEPT
124335     {
124336       return *reinterpret_cast<const VkVideoEncodeUsageInfoKHR *>( this );
124337     }
124338 
operator VkVideoEncodeUsageInfoKHR&VULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR124339     operator VkVideoEncodeUsageInfoKHR &() VULKAN_HPP_NOEXCEPT
124340     {
124341       return *reinterpret_cast<VkVideoEncodeUsageInfoKHR *>( this );
124342     }
124343 
124344 #if defined( VULKAN_HPP_USE_REFLECT )
124345 #  if 14 <= VULKAN_HPP_CPP_VERSION
124346     auto
124347 #  else
124348     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
124349                const void * const &,
124350                VULKAN_HPP_NAMESPACE::VideoEncodeUsageFlagsKHR const &,
124351                VULKAN_HPP_NAMESPACE::VideoEncodeContentFlagsKHR const &,
124352                VULKAN_HPP_NAMESPACE::VideoEncodeTuningModeKHR const &>
124353 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR124354       reflect() const VULKAN_HPP_NOEXCEPT
124355     {
124356       return std::tie( sType, pNext, videoUsageHints, videoContentHints, tuningMode );
124357     }
124358 #endif
124359 
124360 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
124361     auto operator<=>( VideoEncodeUsageInfoKHR const & ) const = default;
124362 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR124363     bool operator==( VideoEncodeUsageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124364     {
124365 #  if defined( VULKAN_HPP_USE_REFLECT )
124366       return this->reflect() == rhs.reflect();
124367 #  else
124368       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoUsageHints == rhs.videoUsageHints ) && ( videoContentHints == rhs.videoContentHints ) &&
124369              ( tuningMode == rhs.tuningMode );
124370 #  endif
124371     }
124372 
operator !=VULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR124373     bool operator!=( VideoEncodeUsageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124374     {
124375       return !operator==( rhs );
124376     }
124377 #endif
124378 
124379   public:
124380     VULKAN_HPP_NAMESPACE::StructureType              sType             = StructureType::eVideoEncodeUsageInfoKHR;
124381     const void *                                     pNext             = {};
124382     VULKAN_HPP_NAMESPACE::VideoEncodeUsageFlagsKHR   videoUsageHints   = {};
124383     VULKAN_HPP_NAMESPACE::VideoEncodeContentFlagsKHR videoContentHints = {};
124384     VULKAN_HPP_NAMESPACE::VideoEncodeTuningModeKHR   tuningMode        = VULKAN_HPP_NAMESPACE::VideoEncodeTuningModeKHR::eDefault;
124385   };
124386 
124387   template <>
124388   struct CppType<StructureType, StructureType::eVideoEncodeUsageInfoKHR>
124389   {
124390     using Type = VideoEncodeUsageInfoKHR;
124391   };
124392 
124393   struct VideoEndCodingInfoKHR
124394   {
124395     using NativeType = VkVideoEndCodingInfoKHR;
124396 
124397     static const bool                                  allowDuplicate = false;
124398     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoEndCodingInfoKHR;
124399 
124400 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoEndCodingInfoKHRVULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR124401     VULKAN_HPP_CONSTEXPR VideoEndCodingInfoKHR( VULKAN_HPP_NAMESPACE::VideoEndCodingFlagsKHR flags_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
124402       : pNext{ pNext_ }
124403       , flags{ flags_ }
124404     {
124405     }
124406 
124407     VULKAN_HPP_CONSTEXPR VideoEndCodingInfoKHR( VideoEndCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124408 
VideoEndCodingInfoKHRVULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR124409     VideoEndCodingInfoKHR( VkVideoEndCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124410       : VideoEndCodingInfoKHR( *reinterpret_cast<VideoEndCodingInfoKHR const *>( &rhs ) )
124411     {
124412     }
124413 
124414     VideoEndCodingInfoKHR & operator=( VideoEndCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124415 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
124416 
operator =VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR124417     VideoEndCodingInfoKHR & operator=( VkVideoEndCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124418     {
124419       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR const *>( &rhs );
124420       return *this;
124421     }
124422 
124423 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR124424     VULKAN_HPP_CONSTEXPR_14 VideoEndCodingInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
124425     {
124426       pNext = pNext_;
124427       return *this;
124428     }
124429 
setFlagsVULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR124430     VULKAN_HPP_CONSTEXPR_14 VideoEndCodingInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::VideoEndCodingFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
124431     {
124432       flags = flags_;
124433       return *this;
124434     }
124435 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
124436 
operator VkVideoEndCodingInfoKHR const&VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR124437     operator VkVideoEndCodingInfoKHR const &() const VULKAN_HPP_NOEXCEPT
124438     {
124439       return *reinterpret_cast<const VkVideoEndCodingInfoKHR *>( this );
124440     }
124441 
operator VkVideoEndCodingInfoKHR&VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR124442     operator VkVideoEndCodingInfoKHR &() VULKAN_HPP_NOEXCEPT
124443     {
124444       return *reinterpret_cast<VkVideoEndCodingInfoKHR *>( this );
124445     }
124446 
124447 #if defined( VULKAN_HPP_USE_REFLECT )
124448 #  if 14 <= VULKAN_HPP_CPP_VERSION
124449     auto
124450 #  else
124451     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::VideoEndCodingFlagsKHR const &>
124452 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR124453       reflect() const VULKAN_HPP_NOEXCEPT
124454     {
124455       return std::tie( sType, pNext, flags );
124456     }
124457 #endif
124458 
124459 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
124460     auto operator<=>( VideoEndCodingInfoKHR const & ) const = default;
124461 #else
operator ==VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR124462     bool operator==( VideoEndCodingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124463     {
124464 #  if defined( VULKAN_HPP_USE_REFLECT )
124465       return this->reflect() == rhs.reflect();
124466 #  else
124467       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags );
124468 #  endif
124469     }
124470 
operator !=VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR124471     bool operator!=( VideoEndCodingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124472     {
124473       return !operator==( rhs );
124474     }
124475 #endif
124476 
124477   public:
124478     VULKAN_HPP_NAMESPACE::StructureType          sType = StructureType::eVideoEndCodingInfoKHR;
124479     const void *                                 pNext = {};
124480     VULKAN_HPP_NAMESPACE::VideoEndCodingFlagsKHR flags = {};
124481   };
124482 
124483   template <>
124484   struct CppType<StructureType, StructureType::eVideoEndCodingInfoKHR>
124485   {
124486     using Type = VideoEndCodingInfoKHR;
124487   };
124488 
124489   struct VideoFormatPropertiesKHR
124490   {
124491     using NativeType = VkVideoFormatPropertiesKHR;
124492 
124493     static const bool                                  allowDuplicate = false;
124494     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoFormatPropertiesKHR;
124495 
124496 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoFormatPropertiesKHRVULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR124497     VULKAN_HPP_CONSTEXPR VideoFormatPropertiesKHR( VULKAN_HPP_NAMESPACE::Format           format_           = VULKAN_HPP_NAMESPACE::Format::eUndefined,
124498                                                    VULKAN_HPP_NAMESPACE::ComponentMapping componentMapping_ = {},
124499                                                    VULKAN_HPP_NAMESPACE::ImageCreateFlags imageCreateFlags_ = {},
124500                                                    VULKAN_HPP_NAMESPACE::ImageType        imageType_        = VULKAN_HPP_NAMESPACE::ImageType::e1D,
124501                                                    VULKAN_HPP_NAMESPACE::ImageTiling      imageTiling_      = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal,
124502                                                    VULKAN_HPP_NAMESPACE::ImageUsageFlags  imageUsageFlags_  = {},
124503                                                    void *                                 pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
124504       : pNext{ pNext_ }
124505       , format{ format_ }
124506       , componentMapping{ componentMapping_ }
124507       , imageCreateFlags{ imageCreateFlags_ }
124508       , imageType{ imageType_ }
124509       , imageTiling{ imageTiling_ }
124510       , imageUsageFlags{ imageUsageFlags_ }
124511     {
124512     }
124513 
124514     VULKAN_HPP_CONSTEXPR VideoFormatPropertiesKHR( VideoFormatPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124515 
VideoFormatPropertiesKHRVULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR124516     VideoFormatPropertiesKHR( VkVideoFormatPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124517       : VideoFormatPropertiesKHR( *reinterpret_cast<VideoFormatPropertiesKHR const *>( &rhs ) )
124518     {
124519     }
124520 
124521     VideoFormatPropertiesKHR & operator=( VideoFormatPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124522 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
124523 
operator =VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR124524     VideoFormatPropertiesKHR & operator=( VkVideoFormatPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124525     {
124526       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR const *>( &rhs );
124527       return *this;
124528     }
124529 
operator VkVideoFormatPropertiesKHR const&VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR124530     operator VkVideoFormatPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
124531     {
124532       return *reinterpret_cast<const VkVideoFormatPropertiesKHR *>( this );
124533     }
124534 
operator VkVideoFormatPropertiesKHR&VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR124535     operator VkVideoFormatPropertiesKHR &() VULKAN_HPP_NOEXCEPT
124536     {
124537       return *reinterpret_cast<VkVideoFormatPropertiesKHR *>( this );
124538     }
124539 
124540 #if defined( VULKAN_HPP_USE_REFLECT )
124541 #  if 14 <= VULKAN_HPP_CPP_VERSION
124542     auto
124543 #  else
124544     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
124545                void * const &,
124546                VULKAN_HPP_NAMESPACE::Format const &,
124547                VULKAN_HPP_NAMESPACE::ComponentMapping const &,
124548                VULKAN_HPP_NAMESPACE::ImageCreateFlags const &,
124549                VULKAN_HPP_NAMESPACE::ImageType const &,
124550                VULKAN_HPP_NAMESPACE::ImageTiling const &,
124551                VULKAN_HPP_NAMESPACE::ImageUsageFlags const &>
124552 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR124553       reflect() const VULKAN_HPP_NOEXCEPT
124554     {
124555       return std::tie( sType, pNext, format, componentMapping, imageCreateFlags, imageType, imageTiling, imageUsageFlags );
124556     }
124557 #endif
124558 
124559 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
124560     auto operator<=>( VideoFormatPropertiesKHR const & ) const = default;
124561 #else
operator ==VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR124562     bool operator==( VideoFormatPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124563     {
124564 #  if defined( VULKAN_HPP_USE_REFLECT )
124565       return this->reflect() == rhs.reflect();
124566 #  else
124567       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( componentMapping == rhs.componentMapping ) &&
124568              ( imageCreateFlags == rhs.imageCreateFlags ) && ( imageType == rhs.imageType ) && ( imageTiling == rhs.imageTiling ) &&
124569              ( imageUsageFlags == rhs.imageUsageFlags );
124570 #  endif
124571     }
124572 
operator !=VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR124573     bool operator!=( VideoFormatPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124574     {
124575       return !operator==( rhs );
124576     }
124577 #endif
124578 
124579   public:
124580     VULKAN_HPP_NAMESPACE::StructureType    sType            = StructureType::eVideoFormatPropertiesKHR;
124581     void *                                 pNext            = {};
124582     VULKAN_HPP_NAMESPACE::Format           format           = VULKAN_HPP_NAMESPACE::Format::eUndefined;
124583     VULKAN_HPP_NAMESPACE::ComponentMapping componentMapping = {};
124584     VULKAN_HPP_NAMESPACE::ImageCreateFlags imageCreateFlags = {};
124585     VULKAN_HPP_NAMESPACE::ImageType        imageType        = VULKAN_HPP_NAMESPACE::ImageType::e1D;
124586     VULKAN_HPP_NAMESPACE::ImageTiling      imageTiling      = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal;
124587     VULKAN_HPP_NAMESPACE::ImageUsageFlags  imageUsageFlags  = {};
124588   };
124589 
124590   template <>
124591   struct CppType<StructureType, StructureType::eVideoFormatPropertiesKHR>
124592   {
124593     using Type = VideoFormatPropertiesKHR;
124594   };
124595 
124596   struct VideoInlineQueryInfoKHR
124597   {
124598     using NativeType = VkVideoInlineQueryInfoKHR;
124599 
124600     static const bool                                  allowDuplicate = false;
124601     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoInlineQueryInfoKHR;
124602 
124603 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoInlineQueryInfoKHRVULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR124604     VULKAN_HPP_CONSTEXPR VideoInlineQueryInfoKHR( VULKAN_HPP_NAMESPACE::QueryPool queryPool_  = {},
124605                                                   uint32_t                        firstQuery_ = {},
124606                                                   uint32_t                        queryCount_ = {},
124607                                                   const void *                    pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
124608       : pNext{ pNext_ }
124609       , queryPool{ queryPool_ }
124610       , firstQuery{ firstQuery_ }
124611       , queryCount{ queryCount_ }
124612     {
124613     }
124614 
124615     VULKAN_HPP_CONSTEXPR VideoInlineQueryInfoKHR( VideoInlineQueryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124616 
VideoInlineQueryInfoKHRVULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR124617     VideoInlineQueryInfoKHR( VkVideoInlineQueryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124618       : VideoInlineQueryInfoKHR( *reinterpret_cast<VideoInlineQueryInfoKHR const *>( &rhs ) )
124619     {
124620     }
124621 
124622     VideoInlineQueryInfoKHR & operator=( VideoInlineQueryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124623 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
124624 
operator =VULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR124625     VideoInlineQueryInfoKHR & operator=( VkVideoInlineQueryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124626     {
124627       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR const *>( &rhs );
124628       return *this;
124629     }
124630 
124631 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR124632     VULKAN_HPP_CONSTEXPR_14 VideoInlineQueryInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
124633     {
124634       pNext = pNext_;
124635       return *this;
124636     }
124637 
setQueryPoolVULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR124638     VULKAN_HPP_CONSTEXPR_14 VideoInlineQueryInfoKHR & setQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool_ ) VULKAN_HPP_NOEXCEPT
124639     {
124640       queryPool = queryPool_;
124641       return *this;
124642     }
124643 
setFirstQueryVULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR124644     VULKAN_HPP_CONSTEXPR_14 VideoInlineQueryInfoKHR & setFirstQuery( uint32_t firstQuery_ ) VULKAN_HPP_NOEXCEPT
124645     {
124646       firstQuery = firstQuery_;
124647       return *this;
124648     }
124649 
setQueryCountVULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR124650     VULKAN_HPP_CONSTEXPR_14 VideoInlineQueryInfoKHR & setQueryCount( uint32_t queryCount_ ) VULKAN_HPP_NOEXCEPT
124651     {
124652       queryCount = queryCount_;
124653       return *this;
124654     }
124655 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
124656 
operator VkVideoInlineQueryInfoKHR const&VULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR124657     operator VkVideoInlineQueryInfoKHR const &() const VULKAN_HPP_NOEXCEPT
124658     {
124659       return *reinterpret_cast<const VkVideoInlineQueryInfoKHR *>( this );
124660     }
124661 
operator VkVideoInlineQueryInfoKHR&VULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR124662     operator VkVideoInlineQueryInfoKHR &() VULKAN_HPP_NOEXCEPT
124663     {
124664       return *reinterpret_cast<VkVideoInlineQueryInfoKHR *>( this );
124665     }
124666 
124667 #if defined( VULKAN_HPP_USE_REFLECT )
124668 #  if 14 <= VULKAN_HPP_CPP_VERSION
124669     auto
124670 #  else
124671     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::QueryPool const &, uint32_t const &, uint32_t const &>
124672 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR124673       reflect() const VULKAN_HPP_NOEXCEPT
124674     {
124675       return std::tie( sType, pNext, queryPool, firstQuery, queryCount );
124676     }
124677 #endif
124678 
124679 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
124680     auto operator<=>( VideoInlineQueryInfoKHR const & ) const = default;
124681 #else
operator ==VULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR124682     bool operator==( VideoInlineQueryInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124683     {
124684 #  if defined( VULKAN_HPP_USE_REFLECT )
124685       return this->reflect() == rhs.reflect();
124686 #  else
124687       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queryPool == rhs.queryPool ) && ( firstQuery == rhs.firstQuery ) &&
124688              ( queryCount == rhs.queryCount );
124689 #  endif
124690     }
124691 
operator !=VULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR124692     bool operator!=( VideoInlineQueryInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124693     {
124694       return !operator==( rhs );
124695     }
124696 #endif
124697 
124698   public:
124699     VULKAN_HPP_NAMESPACE::StructureType sType      = StructureType::eVideoInlineQueryInfoKHR;
124700     const void *                        pNext      = {};
124701     VULKAN_HPP_NAMESPACE::QueryPool     queryPool  = {};
124702     uint32_t                            firstQuery = {};
124703     uint32_t                            queryCount = {};
124704   };
124705 
124706   template <>
124707   struct CppType<StructureType, StructureType::eVideoInlineQueryInfoKHR>
124708   {
124709     using Type = VideoInlineQueryInfoKHR;
124710   };
124711 
124712   struct VideoProfileListInfoKHR
124713   {
124714     using NativeType = VkVideoProfileListInfoKHR;
124715 
124716     static const bool                                  allowDuplicate = false;
124717     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoProfileListInfoKHR;
124718 
124719 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoProfileListInfoKHRVULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR124720     VULKAN_HPP_CONSTEXPR VideoProfileListInfoKHR( uint32_t                                          profileCount_ = {},
124721                                                   const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * pProfiles_    = {},
124722                                                   const void *                                      pNext_        = nullptr ) VULKAN_HPP_NOEXCEPT
124723       : pNext{ pNext_ }
124724       , profileCount{ profileCount_ }
124725       , pProfiles{ pProfiles_ }
124726     {
124727     }
124728 
124729     VULKAN_HPP_CONSTEXPR VideoProfileListInfoKHR( VideoProfileListInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124730 
VideoProfileListInfoKHRVULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR124731     VideoProfileListInfoKHR( VkVideoProfileListInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124732       : VideoProfileListInfoKHR( *reinterpret_cast<VideoProfileListInfoKHR const *>( &rhs ) )
124733     {
124734     }
124735 
124736 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
VideoProfileListInfoKHRVULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR124737     VideoProfileListInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR> const & profiles_,
124738                              const void *                                                                                           pNext_ = nullptr )
124739       : pNext( pNext_ ), profileCount( static_cast<uint32_t>( profiles_.size() ) ), pProfiles( profiles_.data() )
124740     {
124741     }
124742 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
124743 
124744     VideoProfileListInfoKHR & operator=( VideoProfileListInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124745 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
124746 
operator =VULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR124747     VideoProfileListInfoKHR & operator=( VkVideoProfileListInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124748     {
124749       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR const *>( &rhs );
124750       return *this;
124751     }
124752 
124753 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR124754     VULKAN_HPP_CONSTEXPR_14 VideoProfileListInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
124755     {
124756       pNext = pNext_;
124757       return *this;
124758     }
124759 
setProfileCountVULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR124760     VULKAN_HPP_CONSTEXPR_14 VideoProfileListInfoKHR & setProfileCount( uint32_t profileCount_ ) VULKAN_HPP_NOEXCEPT
124761     {
124762       profileCount = profileCount_;
124763       return *this;
124764     }
124765 
setPProfilesVULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR124766     VULKAN_HPP_CONSTEXPR_14 VideoProfileListInfoKHR & setPProfiles( const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * pProfiles_ ) VULKAN_HPP_NOEXCEPT
124767     {
124768       pProfiles = pProfiles_;
124769       return *this;
124770     }
124771 
124772 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
124773     VideoProfileListInfoKHR &
setProfilesVULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR124774       setProfiles( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR> const & profiles_ ) VULKAN_HPP_NOEXCEPT
124775     {
124776       profileCount = static_cast<uint32_t>( profiles_.size() );
124777       pProfiles    = profiles_.data();
124778       return *this;
124779     }
124780 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
124781 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
124782 
operator VkVideoProfileListInfoKHR const&VULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR124783     operator VkVideoProfileListInfoKHR const &() const VULKAN_HPP_NOEXCEPT
124784     {
124785       return *reinterpret_cast<const VkVideoProfileListInfoKHR *>( this );
124786     }
124787 
operator VkVideoProfileListInfoKHR&VULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR124788     operator VkVideoProfileListInfoKHR &() VULKAN_HPP_NOEXCEPT
124789     {
124790       return *reinterpret_cast<VkVideoProfileListInfoKHR *>( this );
124791     }
124792 
124793 #if defined( VULKAN_HPP_USE_REFLECT )
124794 #  if 14 <= VULKAN_HPP_CPP_VERSION
124795     auto
124796 #  else
124797     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * const &>
124798 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR124799       reflect() const VULKAN_HPP_NOEXCEPT
124800     {
124801       return std::tie( sType, pNext, profileCount, pProfiles );
124802     }
124803 #endif
124804 
124805 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
124806     auto operator<=>( VideoProfileListInfoKHR const & ) const = default;
124807 #else
operator ==VULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR124808     bool operator==( VideoProfileListInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124809     {
124810 #  if defined( VULKAN_HPP_USE_REFLECT )
124811       return this->reflect() == rhs.reflect();
124812 #  else
124813       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( profileCount == rhs.profileCount ) && ( pProfiles == rhs.pProfiles );
124814 #  endif
124815     }
124816 
operator !=VULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR124817     bool operator!=( VideoProfileListInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124818     {
124819       return !operator==( rhs );
124820     }
124821 #endif
124822 
124823   public:
124824     VULKAN_HPP_NAMESPACE::StructureType               sType        = StructureType::eVideoProfileListInfoKHR;
124825     const void *                                      pNext        = {};
124826     uint32_t                                          profileCount = {};
124827     const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * pProfiles    = {};
124828   };
124829 
124830   template <>
124831   struct CppType<StructureType, StructureType::eVideoProfileListInfoKHR>
124832   {
124833     using Type = VideoProfileListInfoKHR;
124834   };
124835 
124836   struct VideoSessionCreateInfoKHR
124837   {
124838     using NativeType = VkVideoSessionCreateInfoKHR;
124839 
124840     static const bool                                  allowDuplicate = false;
124841     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoSessionCreateInfoKHR;
124842 
124843 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoSessionCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR124844     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR( uint32_t                                          queueFamilyIndex_ = {},
124845                                                        VULKAN_HPP_NAMESPACE::VideoSessionCreateFlagsKHR  flags_            = {},
124846                                                        const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * pVideoProfile_    = {},
124847                                                        VULKAN_HPP_NAMESPACE::Format   pictureFormat_              = VULKAN_HPP_NAMESPACE::Format::eUndefined,
124848                                                        VULKAN_HPP_NAMESPACE::Extent2D maxCodedExtent_             = {},
124849                                                        VULKAN_HPP_NAMESPACE::Format   referencePictureFormat_     = VULKAN_HPP_NAMESPACE::Format::eUndefined,
124850                                                        uint32_t                       maxDpbSlots_                = {},
124851                                                        uint32_t                       maxActiveReferencePictures_ = {},
124852                                                        const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdHeaderVersion_ = {},
124853                                                        const void *                                      pNext_             = nullptr ) VULKAN_HPP_NOEXCEPT
124854       : pNext{ pNext_ }
124855       , queueFamilyIndex{ queueFamilyIndex_ }
124856       , flags{ flags_ }
124857       , pVideoProfile{ pVideoProfile_ }
124858       , pictureFormat{ pictureFormat_ }
124859       , maxCodedExtent{ maxCodedExtent_ }
124860       , referencePictureFormat{ referencePictureFormat_ }
124861       , maxDpbSlots{ maxDpbSlots_ }
124862       , maxActiveReferencePictures{ maxActiveReferencePictures_ }
124863       , pStdHeaderVersion{ pStdHeaderVersion_ }
124864     {
124865     }
124866 
124867     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR( VideoSessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124868 
VideoSessionCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR124869     VideoSessionCreateInfoKHR( VkVideoSessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124870       : VideoSessionCreateInfoKHR( *reinterpret_cast<VideoSessionCreateInfoKHR const *>( &rhs ) )
124871     {
124872     }
124873 
124874     VideoSessionCreateInfoKHR & operator=( VideoSessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
124875 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
124876 
operator =VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR124877     VideoSessionCreateInfoKHR & operator=( VkVideoSessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
124878     {
124879       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR const *>( &rhs );
124880       return *this;
124881     }
124882 
124883 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR124884     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
124885     {
124886       pNext = pNext_;
124887       return *this;
124888     }
124889 
setQueueFamilyIndexVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR124890     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
124891     {
124892       queueFamilyIndex = queueFamilyIndex_;
124893       return *this;
124894     }
124895 
setFlagsVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR124896     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::VideoSessionCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
124897     {
124898       flags = flags_;
124899       return *this;
124900     }
124901 
setPVideoProfileVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR124902     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setPVideoProfile( const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * pVideoProfile_ ) VULKAN_HPP_NOEXCEPT
124903     {
124904       pVideoProfile = pVideoProfile_;
124905       return *this;
124906     }
124907 
setPictureFormatVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR124908     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setPictureFormat( VULKAN_HPP_NAMESPACE::Format pictureFormat_ ) VULKAN_HPP_NOEXCEPT
124909     {
124910       pictureFormat = pictureFormat_;
124911       return *this;
124912     }
124913 
setMaxCodedExtentVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR124914     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setMaxCodedExtent( VULKAN_HPP_NAMESPACE::Extent2D const & maxCodedExtent_ ) VULKAN_HPP_NOEXCEPT
124915     {
124916       maxCodedExtent = maxCodedExtent_;
124917       return *this;
124918     }
124919 
setReferencePictureFormatVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR124920     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setReferencePictureFormat( VULKAN_HPP_NAMESPACE::Format referencePictureFormat_ ) VULKAN_HPP_NOEXCEPT
124921     {
124922       referencePictureFormat = referencePictureFormat_;
124923       return *this;
124924     }
124925 
setMaxDpbSlotsVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR124926     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setMaxDpbSlots( uint32_t maxDpbSlots_ ) VULKAN_HPP_NOEXCEPT
124927     {
124928       maxDpbSlots = maxDpbSlots_;
124929       return *this;
124930     }
124931 
setMaxActiveReferencePicturesVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR124932     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setMaxActiveReferencePictures( uint32_t maxActiveReferencePictures_ ) VULKAN_HPP_NOEXCEPT
124933     {
124934       maxActiveReferencePictures = maxActiveReferencePictures_;
124935       return *this;
124936     }
124937 
124938     VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR &
setPStdHeaderVersionVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR124939       setPStdHeaderVersion( const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdHeaderVersion_ ) VULKAN_HPP_NOEXCEPT
124940     {
124941       pStdHeaderVersion = pStdHeaderVersion_;
124942       return *this;
124943     }
124944 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
124945 
operator VkVideoSessionCreateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR124946     operator VkVideoSessionCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
124947     {
124948       return *reinterpret_cast<const VkVideoSessionCreateInfoKHR *>( this );
124949     }
124950 
operator VkVideoSessionCreateInfoKHR&VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR124951     operator VkVideoSessionCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
124952     {
124953       return *reinterpret_cast<VkVideoSessionCreateInfoKHR *>( this );
124954     }
124955 
124956 #if defined( VULKAN_HPP_USE_REFLECT )
124957 #  if 14 <= VULKAN_HPP_CPP_VERSION
124958     auto
124959 #  else
124960     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
124961                const void * const &,
124962                uint32_t const &,
124963                VULKAN_HPP_NAMESPACE::VideoSessionCreateFlagsKHR const &,
124964                const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * const &,
124965                VULKAN_HPP_NAMESPACE::Format const &,
124966                VULKAN_HPP_NAMESPACE::Extent2D const &,
124967                VULKAN_HPP_NAMESPACE::Format const &,
124968                uint32_t const &,
124969                uint32_t const &,
124970                const VULKAN_HPP_NAMESPACE::ExtensionProperties * const &>
124971 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR124972       reflect() const VULKAN_HPP_NOEXCEPT
124973     {
124974       return std::tie( sType,
124975                        pNext,
124976                        queueFamilyIndex,
124977                        flags,
124978                        pVideoProfile,
124979                        pictureFormat,
124980                        maxCodedExtent,
124981                        referencePictureFormat,
124982                        maxDpbSlots,
124983                        maxActiveReferencePictures,
124984                        pStdHeaderVersion );
124985     }
124986 #endif
124987 
124988 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
124989     auto operator<=>( VideoSessionCreateInfoKHR const & ) const = default;
124990 #else
operator ==VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR124991     bool operator==( VideoSessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
124992     {
124993 #  if defined( VULKAN_HPP_USE_REFLECT )
124994       return this->reflect() == rhs.reflect();
124995 #  else
124996       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queueFamilyIndex == rhs.queueFamilyIndex ) && ( flags == rhs.flags ) &&
124997              ( pVideoProfile == rhs.pVideoProfile ) && ( pictureFormat == rhs.pictureFormat ) && ( maxCodedExtent == rhs.maxCodedExtent ) &&
124998              ( referencePictureFormat == rhs.referencePictureFormat ) && ( maxDpbSlots == rhs.maxDpbSlots ) &&
124999              ( maxActiveReferencePictures == rhs.maxActiveReferencePictures ) && ( pStdHeaderVersion == rhs.pStdHeaderVersion );
125000 #  endif
125001     }
125002 
operator !=VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR125003     bool operator!=( VideoSessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125004     {
125005       return !operator==( rhs );
125006     }
125007 #endif
125008 
125009   public:
125010     VULKAN_HPP_NAMESPACE::StructureType               sType                      = StructureType::eVideoSessionCreateInfoKHR;
125011     const void *                                      pNext                      = {};
125012     uint32_t                                          queueFamilyIndex           = {};
125013     VULKAN_HPP_NAMESPACE::VideoSessionCreateFlagsKHR  flags                      = {};
125014     const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR * pVideoProfile              = {};
125015     VULKAN_HPP_NAMESPACE::Format                      pictureFormat              = VULKAN_HPP_NAMESPACE::Format::eUndefined;
125016     VULKAN_HPP_NAMESPACE::Extent2D                    maxCodedExtent             = {};
125017     VULKAN_HPP_NAMESPACE::Format                      referencePictureFormat     = VULKAN_HPP_NAMESPACE::Format::eUndefined;
125018     uint32_t                                          maxDpbSlots                = {};
125019     uint32_t                                          maxActiveReferencePictures = {};
125020     const VULKAN_HPP_NAMESPACE::ExtensionProperties * pStdHeaderVersion          = {};
125021   };
125022 
125023   template <>
125024   struct CppType<StructureType, StructureType::eVideoSessionCreateInfoKHR>
125025   {
125026     using Type = VideoSessionCreateInfoKHR;
125027   };
125028 
125029   struct VideoSessionMemoryRequirementsKHR
125030   {
125031     using NativeType = VkVideoSessionMemoryRequirementsKHR;
125032 
125033     static const bool                                  allowDuplicate = false;
125034     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoSessionMemoryRequirementsKHR;
125035 
125036 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoSessionMemoryRequirementsKHRVULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR125037     VULKAN_HPP_CONSTEXPR VideoSessionMemoryRequirementsKHR( uint32_t                                 memoryBindIndex_    = {},
125038                                                             VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements_ = {},
125039                                                             void *                                   pNext_              = nullptr ) VULKAN_HPP_NOEXCEPT
125040       : pNext{ pNext_ }
125041       , memoryBindIndex{ memoryBindIndex_ }
125042       , memoryRequirements{ memoryRequirements_ }
125043     {
125044     }
125045 
125046     VULKAN_HPP_CONSTEXPR VideoSessionMemoryRequirementsKHR( VideoSessionMemoryRequirementsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125047 
VideoSessionMemoryRequirementsKHRVULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR125048     VideoSessionMemoryRequirementsKHR( VkVideoSessionMemoryRequirementsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125049       : VideoSessionMemoryRequirementsKHR( *reinterpret_cast<VideoSessionMemoryRequirementsKHR const *>( &rhs ) )
125050     {
125051     }
125052 
125053     VideoSessionMemoryRequirementsKHR & operator=( VideoSessionMemoryRequirementsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125054 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
125055 
operator =VULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR125056     VideoSessionMemoryRequirementsKHR & operator=( VkVideoSessionMemoryRequirementsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125057     {
125058       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR const *>( &rhs );
125059       return *this;
125060     }
125061 
operator VkVideoSessionMemoryRequirementsKHR const&VULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR125062     operator VkVideoSessionMemoryRequirementsKHR const &() const VULKAN_HPP_NOEXCEPT
125063     {
125064       return *reinterpret_cast<const VkVideoSessionMemoryRequirementsKHR *>( this );
125065     }
125066 
operator VkVideoSessionMemoryRequirementsKHR&VULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR125067     operator VkVideoSessionMemoryRequirementsKHR &() VULKAN_HPP_NOEXCEPT
125068     {
125069       return *reinterpret_cast<VkVideoSessionMemoryRequirementsKHR *>( this );
125070     }
125071 
125072 #if defined( VULKAN_HPP_USE_REFLECT )
125073 #  if 14 <= VULKAN_HPP_CPP_VERSION
125074     auto
125075 #  else
125076     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::MemoryRequirements const &>
125077 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR125078       reflect() const VULKAN_HPP_NOEXCEPT
125079     {
125080       return std::tie( sType, pNext, memoryBindIndex, memoryRequirements );
125081     }
125082 #endif
125083 
125084 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
125085     auto operator<=>( VideoSessionMemoryRequirementsKHR const & ) const = default;
125086 #else
operator ==VULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR125087     bool operator==( VideoSessionMemoryRequirementsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125088     {
125089 #  if defined( VULKAN_HPP_USE_REFLECT )
125090       return this->reflect() == rhs.reflect();
125091 #  else
125092       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryBindIndex == rhs.memoryBindIndex ) && ( memoryRequirements == rhs.memoryRequirements );
125093 #  endif
125094     }
125095 
operator !=VULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR125096     bool operator!=( VideoSessionMemoryRequirementsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125097     {
125098       return !operator==( rhs );
125099     }
125100 #endif
125101 
125102   public:
125103     VULKAN_HPP_NAMESPACE::StructureType      sType              = StructureType::eVideoSessionMemoryRequirementsKHR;
125104     void *                                   pNext              = {};
125105     uint32_t                                 memoryBindIndex    = {};
125106     VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements = {};
125107   };
125108 
125109   template <>
125110   struct CppType<StructureType, StructureType::eVideoSessionMemoryRequirementsKHR>
125111   {
125112     using Type = VideoSessionMemoryRequirementsKHR;
125113   };
125114 
125115   struct VideoSessionParametersCreateInfoKHR
125116   {
125117     using NativeType = VkVideoSessionParametersCreateInfoKHR;
125118 
125119     static const bool                                  allowDuplicate = false;
125120     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoSessionParametersCreateInfoKHR;
125121 
125122 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoSessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR125123     VULKAN_HPP_CONSTEXPR VideoSessionParametersCreateInfoKHR( VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateFlagsKHR flags_                          = {},
125124                                                               VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR            videoSessionParametersTemplate_ = {},
125125                                                               VULKAN_HPP_NAMESPACE::VideoSessionKHR                      videoSession_                   = {},
125126                                                               const void *                                               pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
125127       : pNext{ pNext_ }
125128       , flags{ flags_ }
125129       , videoSessionParametersTemplate{ videoSessionParametersTemplate_ }
125130       , videoSession{ videoSession_ }
125131     {
125132     }
125133 
125134     VULKAN_HPP_CONSTEXPR VideoSessionParametersCreateInfoKHR( VideoSessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125135 
VideoSessionParametersCreateInfoKHRVULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR125136     VideoSessionParametersCreateInfoKHR( VkVideoSessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125137       : VideoSessionParametersCreateInfoKHR( *reinterpret_cast<VideoSessionParametersCreateInfoKHR const *>( &rhs ) )
125138     {
125139     }
125140 
125141     VideoSessionParametersCreateInfoKHR & operator=( VideoSessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125142 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
125143 
operator =VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR125144     VideoSessionParametersCreateInfoKHR & operator=( VkVideoSessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125145     {
125146       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR const *>( &rhs );
125147       return *this;
125148     }
125149 
125150 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR125151     VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
125152     {
125153       pNext = pNext_;
125154       return *this;
125155     }
125156 
125157     VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR &
setFlagsVULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR125158       setFlags( VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
125159     {
125160       flags = flags_;
125161       return *this;
125162     }
125163 
125164     VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR &
setVideoSessionParametersTemplateVULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR125165       setVideoSessionParametersTemplate( VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParametersTemplate_ ) VULKAN_HPP_NOEXCEPT
125166     {
125167       videoSessionParametersTemplate = videoSessionParametersTemplate_;
125168       return *this;
125169     }
125170 
setVideoSessionVULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR125171     VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR & setVideoSession( VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession_ ) VULKAN_HPP_NOEXCEPT
125172     {
125173       videoSession = videoSession_;
125174       return *this;
125175     }
125176 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
125177 
operator VkVideoSessionParametersCreateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR125178     operator VkVideoSessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
125179     {
125180       return *reinterpret_cast<const VkVideoSessionParametersCreateInfoKHR *>( this );
125181     }
125182 
operator VkVideoSessionParametersCreateInfoKHR&VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR125183     operator VkVideoSessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
125184     {
125185       return *reinterpret_cast<VkVideoSessionParametersCreateInfoKHR *>( this );
125186     }
125187 
125188 #if defined( VULKAN_HPP_USE_REFLECT )
125189 #  if 14 <= VULKAN_HPP_CPP_VERSION
125190     auto
125191 #  else
125192     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
125193                const void * const &,
125194                VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateFlagsKHR const &,
125195                VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR const &,
125196                VULKAN_HPP_NAMESPACE::VideoSessionKHR const &>
125197 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR125198       reflect() const VULKAN_HPP_NOEXCEPT
125199     {
125200       return std::tie( sType, pNext, flags, videoSessionParametersTemplate, videoSession );
125201     }
125202 #endif
125203 
125204 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
125205     auto operator<=>( VideoSessionParametersCreateInfoKHR const & ) const = default;
125206 #else
operator ==VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR125207     bool operator==( VideoSessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125208     {
125209 #  if defined( VULKAN_HPP_USE_REFLECT )
125210       return this->reflect() == rhs.reflect();
125211 #  else
125212       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) &&
125213              ( videoSessionParametersTemplate == rhs.videoSessionParametersTemplate ) && ( videoSession == rhs.videoSession );
125214 #  endif
125215     }
125216 
operator !=VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR125217     bool operator!=( VideoSessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125218     {
125219       return !operator==( rhs );
125220     }
125221 #endif
125222 
125223   public:
125224     VULKAN_HPP_NAMESPACE::StructureType                        sType                          = StructureType::eVideoSessionParametersCreateInfoKHR;
125225     const void *                                               pNext                          = {};
125226     VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateFlagsKHR flags                          = {};
125227     VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR            videoSessionParametersTemplate = {};
125228     VULKAN_HPP_NAMESPACE::VideoSessionKHR                      videoSession                   = {};
125229   };
125230 
125231   template <>
125232   struct CppType<StructureType, StructureType::eVideoSessionParametersCreateInfoKHR>
125233   {
125234     using Type = VideoSessionParametersCreateInfoKHR;
125235   };
125236 
125237   struct VideoSessionParametersUpdateInfoKHR
125238   {
125239     using NativeType = VkVideoSessionParametersUpdateInfoKHR;
125240 
125241     static const bool                                  allowDuplicate = false;
125242     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eVideoSessionParametersUpdateInfoKHR;
125243 
125244 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VideoSessionParametersUpdateInfoKHRVULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR125245     VULKAN_HPP_CONSTEXPR VideoSessionParametersUpdateInfoKHR( uint32_t updateSequenceCount_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
125246       : pNext{ pNext_ }
125247       , updateSequenceCount{ updateSequenceCount_ }
125248     {
125249     }
125250 
125251     VULKAN_HPP_CONSTEXPR VideoSessionParametersUpdateInfoKHR( VideoSessionParametersUpdateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125252 
VideoSessionParametersUpdateInfoKHRVULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR125253     VideoSessionParametersUpdateInfoKHR( VkVideoSessionParametersUpdateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125254       : VideoSessionParametersUpdateInfoKHR( *reinterpret_cast<VideoSessionParametersUpdateInfoKHR const *>( &rhs ) )
125255     {
125256     }
125257 
125258     VideoSessionParametersUpdateInfoKHR & operator=( VideoSessionParametersUpdateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125259 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
125260 
operator =VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR125261     VideoSessionParametersUpdateInfoKHR & operator=( VkVideoSessionParametersUpdateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125262     {
125263       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR const *>( &rhs );
125264       return *this;
125265     }
125266 
125267 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR125268     VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersUpdateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
125269     {
125270       pNext = pNext_;
125271       return *this;
125272     }
125273 
setUpdateSequenceCountVULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR125274     VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersUpdateInfoKHR & setUpdateSequenceCount( uint32_t updateSequenceCount_ ) VULKAN_HPP_NOEXCEPT
125275     {
125276       updateSequenceCount = updateSequenceCount_;
125277       return *this;
125278     }
125279 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
125280 
operator VkVideoSessionParametersUpdateInfoKHR const&VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR125281     operator VkVideoSessionParametersUpdateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
125282     {
125283       return *reinterpret_cast<const VkVideoSessionParametersUpdateInfoKHR *>( this );
125284     }
125285 
operator VkVideoSessionParametersUpdateInfoKHR&VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR125286     operator VkVideoSessionParametersUpdateInfoKHR &() VULKAN_HPP_NOEXCEPT
125287     {
125288       return *reinterpret_cast<VkVideoSessionParametersUpdateInfoKHR *>( this );
125289     }
125290 
125291 #if defined( VULKAN_HPP_USE_REFLECT )
125292 #  if 14 <= VULKAN_HPP_CPP_VERSION
125293     auto
125294 #  else
125295     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
125296 #  endif
reflectVULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR125297       reflect() const VULKAN_HPP_NOEXCEPT
125298     {
125299       return std::tie( sType, pNext, updateSequenceCount );
125300     }
125301 #endif
125302 
125303 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
125304     auto operator<=>( VideoSessionParametersUpdateInfoKHR const & ) const = default;
125305 #else
operator ==VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR125306     bool operator==( VideoSessionParametersUpdateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125307     {
125308 #  if defined( VULKAN_HPP_USE_REFLECT )
125309       return this->reflect() == rhs.reflect();
125310 #  else
125311       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( updateSequenceCount == rhs.updateSequenceCount );
125312 #  endif
125313     }
125314 
operator !=VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR125315     bool operator!=( VideoSessionParametersUpdateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125316     {
125317       return !operator==( rhs );
125318     }
125319 #endif
125320 
125321   public:
125322     VULKAN_HPP_NAMESPACE::StructureType sType               = StructureType::eVideoSessionParametersUpdateInfoKHR;
125323     const void *                        pNext               = {};
125324     uint32_t                            updateSequenceCount = {};
125325   };
125326 
125327   template <>
125328   struct CppType<StructureType, StructureType::eVideoSessionParametersUpdateInfoKHR>
125329   {
125330     using Type = VideoSessionParametersUpdateInfoKHR;
125331   };
125332 
125333 #if defined( VK_USE_PLATFORM_WAYLAND_KHR )
125334   struct WaylandSurfaceCreateInfoKHR
125335   {
125336     using NativeType = VkWaylandSurfaceCreateInfoKHR;
125337 
125338     static const bool                                  allowDuplicate = false;
125339     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eWaylandSurfaceCreateInfoKHR;
125340 
125341 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
WaylandSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR125342     VULKAN_HPP_CONSTEXPR WaylandSurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateFlagsKHR flags_   = {},
125343                                                       struct wl_display *                                display_ = {},
125344                                                       struct wl_surface *                                surface_ = {},
125345                                                       const void *                                       pNext_   = nullptr ) VULKAN_HPP_NOEXCEPT
125346       : pNext{ pNext_ }
125347       , flags{ flags_ }
125348       , display{ display_ }
125349       , surface{ surface_ }
125350     {
125351     }
125352 
125353     VULKAN_HPP_CONSTEXPR WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125354 
WaylandSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR125355     WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125356       : WaylandSurfaceCreateInfoKHR( *reinterpret_cast<WaylandSurfaceCreateInfoKHR const *>( &rhs ) )
125357     {
125358     }
125359 
125360     WaylandSurfaceCreateInfoKHR & operator=( WaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125361 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
125362 
operator =VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR125363     WaylandSurfaceCreateInfoKHR & operator=( VkWaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125364     {
125365       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR const *>( &rhs );
125366       return *this;
125367     }
125368 
125369 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR125370     VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
125371     {
125372       pNext = pNext_;
125373       return *this;
125374     }
125375 
setFlagsVULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR125376     VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
125377     {
125378       flags = flags_;
125379       return *this;
125380     }
125381 
setDisplayVULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR125382     VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR & setDisplay( struct wl_display * display_ ) VULKAN_HPP_NOEXCEPT
125383     {
125384       display = display_;
125385       return *this;
125386     }
125387 
setSurfaceVULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR125388     VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR & setSurface( struct wl_surface * surface_ ) VULKAN_HPP_NOEXCEPT
125389     {
125390       surface = surface_;
125391       return *this;
125392     }
125393 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
125394 
operator VkWaylandSurfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR125395     operator VkWaylandSurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
125396     {
125397       return *reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR *>( this );
125398     }
125399 
operator VkWaylandSurfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR125400     operator VkWaylandSurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
125401     {
125402       return *reinterpret_cast<VkWaylandSurfaceCreateInfoKHR *>( this );
125403     }
125404 
125405 #  if defined( VULKAN_HPP_USE_REFLECT )
125406 #    if 14 <= VULKAN_HPP_CPP_VERSION
125407     auto
125408 #    else
125409     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
125410                const void * const &,
125411                VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateFlagsKHR const &,
125412                struct wl_display * const &,
125413                struct wl_surface * const &>
125414 #    endif
reflectVULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR125415       reflect() const VULKAN_HPP_NOEXCEPT
125416     {
125417       return std::tie( sType, pNext, flags, display, surface );
125418     }
125419 #  endif
125420 
125421 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
125422     auto operator<=>( WaylandSurfaceCreateInfoKHR const & ) const = default;
125423 #  else
operator ==VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR125424     bool operator==( WaylandSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125425     {
125426 #    if defined( VULKAN_HPP_USE_REFLECT )
125427       return this->reflect() == rhs.reflect();
125428 #    else
125429       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( display == rhs.display ) && ( surface == rhs.surface );
125430 #    endif
125431     }
125432 
operator !=VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR125433     bool operator!=( WaylandSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125434     {
125435       return !operator==( rhs );
125436     }
125437 #  endif
125438 
125439   public:
125440     VULKAN_HPP_NAMESPACE::StructureType                sType   = StructureType::eWaylandSurfaceCreateInfoKHR;
125441     const void *                                       pNext   = {};
125442     VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateFlagsKHR flags   = {};
125443     struct wl_display *                                display = {};
125444     struct wl_surface *                                surface = {};
125445   };
125446 
125447   template <>
125448   struct CppType<StructureType, StructureType::eWaylandSurfaceCreateInfoKHR>
125449   {
125450     using Type = WaylandSurfaceCreateInfoKHR;
125451   };
125452 #endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
125453 
125454 #if defined( VK_USE_PLATFORM_WIN32_KHR )
125455   struct Win32KeyedMutexAcquireReleaseInfoKHR
125456   {
125457     using NativeType = VkWin32KeyedMutexAcquireReleaseInfoKHR;
125458 
125459     static const bool                                  allowDuplicate = false;
125460     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR;
125461 
125462 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Win32KeyedMutexAcquireReleaseInfoKHRVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125463     VULKAN_HPP_CONSTEXPR Win32KeyedMutexAcquireReleaseInfoKHR( uint32_t                                   acquireCount_     = {},
125464                                                                const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs_    = {},
125465                                                                const uint64_t *                           pAcquireKeys_     = {},
125466                                                                const uint32_t *                           pAcquireTimeouts_ = {},
125467                                                                uint32_t                                   releaseCount_     = {},
125468                                                                const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs_    = {},
125469                                                                const uint64_t *                           pReleaseKeys_     = {},
125470                                                                const void *                               pNext_            = nullptr ) VULKAN_HPP_NOEXCEPT
125471       : pNext{ pNext_ }
125472       , acquireCount{ acquireCount_ }
125473       , pAcquireSyncs{ pAcquireSyncs_ }
125474       , pAcquireKeys{ pAcquireKeys_ }
125475       , pAcquireTimeouts{ pAcquireTimeouts_ }
125476       , releaseCount{ releaseCount_ }
125477       , pReleaseSyncs{ pReleaseSyncs_ }
125478       , pReleaseKeys{ pReleaseKeys_ }
125479     {
125480     }
125481 
125482     VULKAN_HPP_CONSTEXPR Win32KeyedMutexAcquireReleaseInfoKHR( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125483 
Win32KeyedMutexAcquireReleaseInfoKHRVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125484     Win32KeyedMutexAcquireReleaseInfoKHR( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125485       : Win32KeyedMutexAcquireReleaseInfoKHR( *reinterpret_cast<Win32KeyedMutexAcquireReleaseInfoKHR const *>( &rhs ) )
125486     {
125487     }
125488 
125489 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
Win32KeyedMutexAcquireReleaseInfoKHRVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125490     Win32KeyedMutexAcquireReleaseInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & acquireSyncs_,
125491                                           VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const &                           acquireKeys_     = {},
125492                                           VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const &                           acquireTimeouts_ = {},
125493                                           VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & releaseSyncs_    = {},
125494                                           VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const &                           releaseKeys_     = {},
125495                                           const void *                                                                                    pNext_ = nullptr )
125496       : pNext( pNext_ )
125497       , acquireCount( static_cast<uint32_t>( acquireSyncs_.size() ) )
125498       , pAcquireSyncs( acquireSyncs_.data() )
125499       , pAcquireKeys( acquireKeys_.data() )
125500       , pAcquireTimeouts( acquireTimeouts_.data() )
125501       , releaseCount( static_cast<uint32_t>( releaseSyncs_.size() ) )
125502       , pReleaseSyncs( releaseSyncs_.data() )
125503       , pReleaseKeys( releaseKeys_.data() )
125504     {
125505 #      ifdef VULKAN_HPP_NO_EXCEPTIONS
125506       VULKAN_HPP_ASSERT( acquireSyncs_.size() == acquireKeys_.size() );
125507       VULKAN_HPP_ASSERT( acquireSyncs_.size() == acquireTimeouts_.size() );
125508       VULKAN_HPP_ASSERT( acquireKeys_.size() == acquireTimeouts_.size() );
125509 #      else
125510       if ( acquireSyncs_.size() != acquireKeys_.size() )
125511       {
125512         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
125513                           "::Win32KeyedMutexAcquireReleaseInfoKHR::Win32KeyedMutexAcquireReleaseInfoKHR: acquireSyncs_.size() != acquireKeys_.size()" );
125514       }
125515       if ( acquireSyncs_.size() != acquireTimeouts_.size() )
125516       {
125517         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
125518                           "::Win32KeyedMutexAcquireReleaseInfoKHR::Win32KeyedMutexAcquireReleaseInfoKHR: acquireSyncs_.size() != acquireTimeouts_.size()" );
125519       }
125520       if ( acquireKeys_.size() != acquireTimeouts_.size() )
125521       {
125522         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
125523                           "::Win32KeyedMutexAcquireReleaseInfoKHR::Win32KeyedMutexAcquireReleaseInfoKHR: acquireKeys_.size() != acquireTimeouts_.size()" );
125524       }
125525 #      endif /*VULKAN_HPP_NO_EXCEPTIONS*/
125526 
125527 #      ifdef VULKAN_HPP_NO_EXCEPTIONS
125528       VULKAN_HPP_ASSERT( releaseSyncs_.size() == releaseKeys_.size() );
125529 #      else
125530       if ( releaseSyncs_.size() != releaseKeys_.size() )
125531       {
125532         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
125533                           "::Win32KeyedMutexAcquireReleaseInfoKHR::Win32KeyedMutexAcquireReleaseInfoKHR: releaseSyncs_.size() != releaseKeys_.size()" );
125534       }
125535 #      endif /*VULKAN_HPP_NO_EXCEPTIONS*/
125536     }
125537 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
125538 
125539     Win32KeyedMutexAcquireReleaseInfoKHR & operator=( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125540 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
125541 
operator =VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125542     Win32KeyedMutexAcquireReleaseInfoKHR & operator=( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
125543     {
125544       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR const *>( &rhs );
125545       return *this;
125546     }
125547 
125548 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125549     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
125550     {
125551       pNext = pNext_;
125552       return *this;
125553     }
125554 
setAcquireCountVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125555     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setAcquireCount( uint32_t acquireCount_ ) VULKAN_HPP_NOEXCEPT
125556     {
125557       acquireCount = acquireCount_;
125558       return *this;
125559     }
125560 
125561     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR &
setPAcquireSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125562       setPAcquireSyncs( const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs_ ) VULKAN_HPP_NOEXCEPT
125563     {
125564       pAcquireSyncs = pAcquireSyncs_;
125565       return *this;
125566     }
125567 
125568 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
125569     Win32KeyedMutexAcquireReleaseInfoKHR &
setAcquireSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125570       setAcquireSyncs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & acquireSyncs_ ) VULKAN_HPP_NOEXCEPT
125571     {
125572       acquireCount  = static_cast<uint32_t>( acquireSyncs_.size() );
125573       pAcquireSyncs = acquireSyncs_.data();
125574       return *this;
125575     }
125576 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
125577 
setPAcquireKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125578     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setPAcquireKeys( const uint64_t * pAcquireKeys_ ) VULKAN_HPP_NOEXCEPT
125579     {
125580       pAcquireKeys = pAcquireKeys_;
125581       return *this;
125582     }
125583 
125584 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
125585     Win32KeyedMutexAcquireReleaseInfoKHR &
setAcquireKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125586       setAcquireKeys( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & acquireKeys_ ) VULKAN_HPP_NOEXCEPT
125587     {
125588       acquireCount = static_cast<uint32_t>( acquireKeys_.size() );
125589       pAcquireKeys = acquireKeys_.data();
125590       return *this;
125591     }
125592 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
125593 
setPAcquireTimeoutsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125594     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setPAcquireTimeouts( const uint32_t * pAcquireTimeouts_ ) VULKAN_HPP_NOEXCEPT
125595     {
125596       pAcquireTimeouts = pAcquireTimeouts_;
125597       return *this;
125598     }
125599 
125600 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
125601     Win32KeyedMutexAcquireReleaseInfoKHR &
setAcquireTimeoutsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125602       setAcquireTimeouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & acquireTimeouts_ ) VULKAN_HPP_NOEXCEPT
125603     {
125604       acquireCount     = static_cast<uint32_t>( acquireTimeouts_.size() );
125605       pAcquireTimeouts = acquireTimeouts_.data();
125606       return *this;
125607     }
125608 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
125609 
setReleaseCountVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125610     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setReleaseCount( uint32_t releaseCount_ ) VULKAN_HPP_NOEXCEPT
125611     {
125612       releaseCount = releaseCount_;
125613       return *this;
125614     }
125615 
125616     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR &
setPReleaseSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125617       setPReleaseSyncs( const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs_ ) VULKAN_HPP_NOEXCEPT
125618     {
125619       pReleaseSyncs = pReleaseSyncs_;
125620       return *this;
125621     }
125622 
125623 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
125624     Win32KeyedMutexAcquireReleaseInfoKHR &
setReleaseSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125625       setReleaseSyncs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & releaseSyncs_ ) VULKAN_HPP_NOEXCEPT
125626     {
125627       releaseCount  = static_cast<uint32_t>( releaseSyncs_.size() );
125628       pReleaseSyncs = releaseSyncs_.data();
125629       return *this;
125630     }
125631 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
125632 
setPReleaseKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125633     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setPReleaseKeys( const uint64_t * pReleaseKeys_ ) VULKAN_HPP_NOEXCEPT
125634     {
125635       pReleaseKeys = pReleaseKeys_;
125636       return *this;
125637     }
125638 
125639 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
125640     Win32KeyedMutexAcquireReleaseInfoKHR &
setReleaseKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125641       setReleaseKeys( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & releaseKeys_ ) VULKAN_HPP_NOEXCEPT
125642     {
125643       releaseCount = static_cast<uint32_t>( releaseKeys_.size() );
125644       pReleaseKeys = releaseKeys_.data();
125645       return *this;
125646     }
125647 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
125648 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
125649 
operator VkWin32KeyedMutexAcquireReleaseInfoKHR const&VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125650     operator VkWin32KeyedMutexAcquireReleaseInfoKHR const &() const VULKAN_HPP_NOEXCEPT
125651     {
125652       return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHR *>( this );
125653     }
125654 
operator VkWin32KeyedMutexAcquireReleaseInfoKHR&VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125655     operator VkWin32KeyedMutexAcquireReleaseInfoKHR &() VULKAN_HPP_NOEXCEPT
125656     {
125657       return *reinterpret_cast<VkWin32KeyedMutexAcquireReleaseInfoKHR *>( this );
125658     }
125659 
125660 #  if defined( VULKAN_HPP_USE_REFLECT )
125661 #    if 14 <= VULKAN_HPP_CPP_VERSION
125662     auto
125663 #    else
125664     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
125665                const void * const &,
125666                uint32_t const &,
125667                const VULKAN_HPP_NAMESPACE::DeviceMemory * const &,
125668                const uint64_t * const &,
125669                const uint32_t * const &,
125670                uint32_t const &,
125671                const VULKAN_HPP_NAMESPACE::DeviceMemory * const &,
125672                const uint64_t * const &>
125673 #    endif
reflectVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125674       reflect() const VULKAN_HPP_NOEXCEPT
125675     {
125676       return std::tie( sType, pNext, acquireCount, pAcquireSyncs, pAcquireKeys, pAcquireTimeouts, releaseCount, pReleaseSyncs, pReleaseKeys );
125677     }
125678 #  endif
125679 
125680 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
125681     auto operator<=>( Win32KeyedMutexAcquireReleaseInfoKHR const & ) const = default;
125682 #  else
operator ==VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125683     bool operator==( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125684     {
125685 #    if defined( VULKAN_HPP_USE_REFLECT )
125686       return this->reflect() == rhs.reflect();
125687 #    else
125688       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( acquireCount == rhs.acquireCount ) && ( pAcquireSyncs == rhs.pAcquireSyncs ) &&
125689              ( pAcquireKeys == rhs.pAcquireKeys ) && ( pAcquireTimeouts == rhs.pAcquireTimeouts ) && ( releaseCount == rhs.releaseCount ) &&
125690              ( pReleaseSyncs == rhs.pReleaseSyncs ) && ( pReleaseKeys == rhs.pReleaseKeys );
125691 #    endif
125692     }
125693 
operator !=VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR125694     bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
125695     {
125696       return !operator==( rhs );
125697     }
125698 #  endif
125699 
125700   public:
125701     VULKAN_HPP_NAMESPACE::StructureType        sType            = StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR;
125702     const void *                               pNext            = {};
125703     uint32_t                                   acquireCount     = {};
125704     const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs    = {};
125705     const uint64_t *                           pAcquireKeys     = {};
125706     const uint32_t *                           pAcquireTimeouts = {};
125707     uint32_t                                   releaseCount     = {};
125708     const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs    = {};
125709     const uint64_t *                           pReleaseKeys     = {};
125710   };
125711 
125712   template <>
125713   struct CppType<StructureType, StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR>
125714   {
125715     using Type = Win32KeyedMutexAcquireReleaseInfoKHR;
125716   };
125717 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
125718 
125719 #if defined( VK_USE_PLATFORM_WIN32_KHR )
125720   struct Win32KeyedMutexAcquireReleaseInfoNV
125721   {
125722     using NativeType = VkWin32KeyedMutexAcquireReleaseInfoNV;
125723 
125724     static const bool                                  allowDuplicate = false;
125725     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eWin32KeyedMutexAcquireReleaseInfoNV;
125726 
125727 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Win32KeyedMutexAcquireReleaseInfoNVVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125728     VULKAN_HPP_CONSTEXPR Win32KeyedMutexAcquireReleaseInfoNV( uint32_t                                   acquireCount_                = {},
125729                                                               const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs_               = {},
125730                                                               const uint64_t *                           pAcquireKeys_                = {},
125731                                                               const uint32_t *                           pAcquireTimeoutMilliseconds_ = {},
125732                                                               uint32_t                                   releaseCount_                = {},
125733                                                               const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs_               = {},
125734                                                               const uint64_t *                           pReleaseKeys_                = {},
125735                                                               const void *                               pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
125736       : pNext{ pNext_ }
125737       , acquireCount{ acquireCount_ }
125738       , pAcquireSyncs{ pAcquireSyncs_ }
125739       , pAcquireKeys{ pAcquireKeys_ }
125740       , pAcquireTimeoutMilliseconds{ pAcquireTimeoutMilliseconds_ }
125741       , releaseCount{ releaseCount_ }
125742       , pReleaseSyncs{ pReleaseSyncs_ }
125743       , pReleaseKeys{ pReleaseKeys_ }
125744     {
125745     }
125746 
125747     VULKAN_HPP_CONSTEXPR Win32KeyedMutexAcquireReleaseInfoNV( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125748 
Win32KeyedMutexAcquireReleaseInfoNVVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125749     Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
125750       : Win32KeyedMutexAcquireReleaseInfoNV( *reinterpret_cast<Win32KeyedMutexAcquireReleaseInfoNV const *>( &rhs ) )
125751     {
125752     }
125753 
125754 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
Win32KeyedMutexAcquireReleaseInfoNVVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125755     Win32KeyedMutexAcquireReleaseInfoNV( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & acquireSyncs_,
125756                                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const &                           acquireKeys_  = {},
125757                                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & acquireTimeoutMilliseconds_             = {},
125758                                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & releaseSyncs_ = {},
125759                                          VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const &                           releaseKeys_  = {},
125760                                          const void *                                                                                    pNext_ = nullptr )
125761       : pNext( pNext_ )
125762       , acquireCount( static_cast<uint32_t>( acquireSyncs_.size() ) )
125763       , pAcquireSyncs( acquireSyncs_.data() )
125764       , pAcquireKeys( acquireKeys_.data() )
125765       , pAcquireTimeoutMilliseconds( acquireTimeoutMilliseconds_.data() )
125766       , releaseCount( static_cast<uint32_t>( releaseSyncs_.size() ) )
125767       , pReleaseSyncs( releaseSyncs_.data() )
125768       , pReleaseKeys( releaseKeys_.data() )
125769     {
125770 #      ifdef VULKAN_HPP_NO_EXCEPTIONS
125771       VULKAN_HPP_ASSERT( acquireSyncs_.size() == acquireKeys_.size() );
125772       VULKAN_HPP_ASSERT( acquireSyncs_.size() == acquireTimeoutMilliseconds_.size() );
125773       VULKAN_HPP_ASSERT( acquireKeys_.size() == acquireTimeoutMilliseconds_.size() );
125774 #      else
125775       if ( acquireSyncs_.size() != acquireKeys_.size() )
125776       {
125777         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
125778                           "::Win32KeyedMutexAcquireReleaseInfoNV::Win32KeyedMutexAcquireReleaseInfoNV: acquireSyncs_.size() != acquireKeys_.size()" );
125779       }
125780       if ( acquireSyncs_.size() != acquireTimeoutMilliseconds_.size() )
125781       {
125782         throw LogicError(
125783           VULKAN_HPP_NAMESPACE_STRING
125784           "::Win32KeyedMutexAcquireReleaseInfoNV::Win32KeyedMutexAcquireReleaseInfoNV: acquireSyncs_.size() != acquireTimeoutMilliseconds_.size()" );
125785       }
125786       if ( acquireKeys_.size() != acquireTimeoutMilliseconds_.size() )
125787       {
125788         throw LogicError(
125789           VULKAN_HPP_NAMESPACE_STRING
125790           "::Win32KeyedMutexAcquireReleaseInfoNV::Win32KeyedMutexAcquireReleaseInfoNV: acquireKeys_.size() != acquireTimeoutMilliseconds_.size()" );
125791       }
125792 #      endif /*VULKAN_HPP_NO_EXCEPTIONS*/
125793 
125794 #      ifdef VULKAN_HPP_NO_EXCEPTIONS
125795       VULKAN_HPP_ASSERT( releaseSyncs_.size() == releaseKeys_.size() );
125796 #      else
125797       if ( releaseSyncs_.size() != releaseKeys_.size() )
125798       {
125799         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
125800                           "::Win32KeyedMutexAcquireReleaseInfoNV::Win32KeyedMutexAcquireReleaseInfoNV: releaseSyncs_.size() != releaseKeys_.size()" );
125801       }
125802 #      endif /*VULKAN_HPP_NO_EXCEPTIONS*/
125803     }
125804 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
125805 
125806     Win32KeyedMutexAcquireReleaseInfoNV & operator=( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
125807 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
125808 
operator =VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125809     Win32KeyedMutexAcquireReleaseInfoNV & operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
125810     {
125811       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV const *>( &rhs );
125812       return *this;
125813     }
125814 
125815 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125816     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
125817     {
125818       pNext = pNext_;
125819       return *this;
125820     }
125821 
setAcquireCountVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125822     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & setAcquireCount( uint32_t acquireCount_ ) VULKAN_HPP_NOEXCEPT
125823     {
125824       acquireCount = acquireCount_;
125825       return *this;
125826     }
125827 
125828     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV &
setPAcquireSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125829       setPAcquireSyncs( const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs_ ) VULKAN_HPP_NOEXCEPT
125830     {
125831       pAcquireSyncs = pAcquireSyncs_;
125832       return *this;
125833     }
125834 
125835 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
125836     Win32KeyedMutexAcquireReleaseInfoNV &
setAcquireSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125837       setAcquireSyncs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & acquireSyncs_ ) VULKAN_HPP_NOEXCEPT
125838     {
125839       acquireCount  = static_cast<uint32_t>( acquireSyncs_.size() );
125840       pAcquireSyncs = acquireSyncs_.data();
125841       return *this;
125842     }
125843 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
125844 
setPAcquireKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125845     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & setPAcquireKeys( const uint64_t * pAcquireKeys_ ) VULKAN_HPP_NOEXCEPT
125846     {
125847       pAcquireKeys = pAcquireKeys_;
125848       return *this;
125849     }
125850 
125851 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
125852     Win32KeyedMutexAcquireReleaseInfoNV &
setAcquireKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125853       setAcquireKeys( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & acquireKeys_ ) VULKAN_HPP_NOEXCEPT
125854     {
125855       acquireCount = static_cast<uint32_t>( acquireKeys_.size() );
125856       pAcquireKeys = acquireKeys_.data();
125857       return *this;
125858     }
125859 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
125860 
125861     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV &
setPAcquireTimeoutMillisecondsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125862       setPAcquireTimeoutMilliseconds( const uint32_t * pAcquireTimeoutMilliseconds_ ) VULKAN_HPP_NOEXCEPT
125863     {
125864       pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_;
125865       return *this;
125866     }
125867 
125868 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
125869     Win32KeyedMutexAcquireReleaseInfoNV &
setAcquireTimeoutMillisecondsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125870       setAcquireTimeoutMilliseconds( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & acquireTimeoutMilliseconds_ ) VULKAN_HPP_NOEXCEPT
125871     {
125872       acquireCount                = static_cast<uint32_t>( acquireTimeoutMilliseconds_.size() );
125873       pAcquireTimeoutMilliseconds = acquireTimeoutMilliseconds_.data();
125874       return *this;
125875     }
125876 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
125877 
setReleaseCountVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125878     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & setReleaseCount( uint32_t releaseCount_ ) VULKAN_HPP_NOEXCEPT
125879     {
125880       releaseCount = releaseCount_;
125881       return *this;
125882     }
125883 
125884     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV &
setPReleaseSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125885       setPReleaseSyncs( const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs_ ) VULKAN_HPP_NOEXCEPT
125886     {
125887       pReleaseSyncs = pReleaseSyncs_;
125888       return *this;
125889     }
125890 
125891 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
125892     Win32KeyedMutexAcquireReleaseInfoNV &
setReleaseSyncsVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125893       setReleaseSyncs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & releaseSyncs_ ) VULKAN_HPP_NOEXCEPT
125894     {
125895       releaseCount  = static_cast<uint32_t>( releaseSyncs_.size() );
125896       pReleaseSyncs = releaseSyncs_.data();
125897       return *this;
125898     }
125899 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
125900 
setPReleaseKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125901     VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & setPReleaseKeys( const uint64_t * pReleaseKeys_ ) VULKAN_HPP_NOEXCEPT
125902     {
125903       pReleaseKeys = pReleaseKeys_;
125904       return *this;
125905     }
125906 
125907 #    if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
125908     Win32KeyedMutexAcquireReleaseInfoNV &
setReleaseKeysVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125909       setReleaseKeys( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & releaseKeys_ ) VULKAN_HPP_NOEXCEPT
125910     {
125911       releaseCount = static_cast<uint32_t>( releaseKeys_.size() );
125912       pReleaseKeys = releaseKeys_.data();
125913       return *this;
125914     }
125915 #    endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
125916 #  endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
125917 
operator VkWin32KeyedMutexAcquireReleaseInfoNV const&VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125918     operator VkWin32KeyedMutexAcquireReleaseInfoNV const &() const VULKAN_HPP_NOEXCEPT
125919     {
125920       return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV *>( this );
125921     }
125922 
operator VkWin32KeyedMutexAcquireReleaseInfoNV&VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125923     operator VkWin32KeyedMutexAcquireReleaseInfoNV &() VULKAN_HPP_NOEXCEPT
125924     {
125925       return *reinterpret_cast<VkWin32KeyedMutexAcquireReleaseInfoNV *>( this );
125926     }
125927 
125928 #  if defined( VULKAN_HPP_USE_REFLECT )
125929 #    if 14 <= VULKAN_HPP_CPP_VERSION
125930     auto
125931 #    else
125932     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
125933                const void * const &,
125934                uint32_t const &,
125935                const VULKAN_HPP_NAMESPACE::DeviceMemory * const &,
125936                const uint64_t * const &,
125937                const uint32_t * const &,
125938                uint32_t const &,
125939                const VULKAN_HPP_NAMESPACE::DeviceMemory * const &,
125940                const uint64_t * const &>
125941 #    endif
reflectVULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125942       reflect() const VULKAN_HPP_NOEXCEPT
125943     {
125944       return std::tie( sType, pNext, acquireCount, pAcquireSyncs, pAcquireKeys, pAcquireTimeoutMilliseconds, releaseCount, pReleaseSyncs, pReleaseKeys );
125945     }
125946 #  endif
125947 
125948 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
125949     auto operator<=>( Win32KeyedMutexAcquireReleaseInfoNV const & ) const = default;
125950 #  else
operator ==VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125951     bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
125952     {
125953 #    if defined( VULKAN_HPP_USE_REFLECT )
125954       return this->reflect() == rhs.reflect();
125955 #    else
125956       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( acquireCount == rhs.acquireCount ) && ( pAcquireSyncs == rhs.pAcquireSyncs ) &&
125957              ( pAcquireKeys == rhs.pAcquireKeys ) && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds ) &&
125958              ( releaseCount == rhs.releaseCount ) && ( pReleaseSyncs == rhs.pReleaseSyncs ) && ( pReleaseKeys == rhs.pReleaseKeys );
125959 #    endif
125960     }
125961 
operator !=VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV125962     bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
125963     {
125964       return !operator==( rhs );
125965     }
125966 #  endif
125967 
125968   public:
125969     VULKAN_HPP_NAMESPACE::StructureType        sType                       = StructureType::eWin32KeyedMutexAcquireReleaseInfoNV;
125970     const void *                               pNext                       = {};
125971     uint32_t                                   acquireCount                = {};
125972     const VULKAN_HPP_NAMESPACE::DeviceMemory * pAcquireSyncs               = {};
125973     const uint64_t *                           pAcquireKeys                = {};
125974     const uint32_t *                           pAcquireTimeoutMilliseconds = {};
125975     uint32_t                                   releaseCount                = {};
125976     const VULKAN_HPP_NAMESPACE::DeviceMemory * pReleaseSyncs               = {};
125977     const uint64_t *                           pReleaseKeys                = {};
125978   };
125979 
125980   template <>
125981   struct CppType<StructureType, StructureType::eWin32KeyedMutexAcquireReleaseInfoNV>
125982   {
125983     using Type = Win32KeyedMutexAcquireReleaseInfoNV;
125984   };
125985 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
125986 
125987 #if defined( VK_USE_PLATFORM_WIN32_KHR )
125988   struct Win32SurfaceCreateInfoKHR
125989   {
125990     using NativeType = VkWin32SurfaceCreateInfoKHR;
125991 
125992     static const bool                                  allowDuplicate = false;
125993     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eWin32SurfaceCreateInfoKHR;
125994 
125995 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Win32SurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR125996     VULKAN_HPP_CONSTEXPR Win32SurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::Win32SurfaceCreateFlagsKHR flags_     = {},
125997                                                     HINSTANCE                                        hinstance_ = {},
125998                                                     HWND                                             hwnd_      = {},
125999                                                     const void *                                     pNext_     = nullptr ) VULKAN_HPP_NOEXCEPT
126000       : pNext{ pNext_ }
126001       , flags{ flags_ }
126002       , hinstance{ hinstance_ }
126003       , hwnd{ hwnd_ }
126004     {
126005     }
126006 
126007     VULKAN_HPP_CONSTEXPR Win32SurfaceCreateInfoKHR( Win32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126008 
Win32SurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR126009     Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126010       : Win32SurfaceCreateInfoKHR( *reinterpret_cast<Win32SurfaceCreateInfoKHR const *>( &rhs ) )
126011     {
126012     }
126013 
126014     Win32SurfaceCreateInfoKHR & operator=( Win32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126015 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
126016 
operator =VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR126017     Win32SurfaceCreateInfoKHR & operator=( VkWin32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126018     {
126019       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR const *>( &rhs );
126020       return *this;
126021     }
126022 
126023 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR126024     VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
126025     {
126026       pNext = pNext_;
126027       return *this;
126028     }
126029 
setFlagsVULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR126030     VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::Win32SurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
126031     {
126032       flags = flags_;
126033       return *this;
126034     }
126035 
setHinstanceVULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR126036     VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR & setHinstance( HINSTANCE hinstance_ ) VULKAN_HPP_NOEXCEPT
126037     {
126038       hinstance = hinstance_;
126039       return *this;
126040     }
126041 
setHwndVULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR126042     VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR & setHwnd( HWND hwnd_ ) VULKAN_HPP_NOEXCEPT
126043     {
126044       hwnd = hwnd_;
126045       return *this;
126046     }
126047 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
126048 
operator VkWin32SurfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR126049     operator VkWin32SurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
126050     {
126051       return *reinterpret_cast<const VkWin32SurfaceCreateInfoKHR *>( this );
126052     }
126053 
operator VkWin32SurfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR126054     operator VkWin32SurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
126055     {
126056       return *reinterpret_cast<VkWin32SurfaceCreateInfoKHR *>( this );
126057     }
126058 
126059 #  if defined( VULKAN_HPP_USE_REFLECT )
126060 #    if 14 <= VULKAN_HPP_CPP_VERSION
126061     auto
126062 #    else
126063     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
126064                const void * const &,
126065                VULKAN_HPP_NAMESPACE::Win32SurfaceCreateFlagsKHR const &,
126066                HINSTANCE const &,
126067                HWND const &>
126068 #    endif
reflectVULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR126069       reflect() const VULKAN_HPP_NOEXCEPT
126070     {
126071       return std::tie( sType, pNext, flags, hinstance, hwnd );
126072     }
126073 #  endif
126074 
126075 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
126076     auto operator<=>( Win32SurfaceCreateInfoKHR const & ) const = default;
126077 #  else
operator ==VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR126078     bool operator==( Win32SurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126079     {
126080 #    if defined( VULKAN_HPP_USE_REFLECT )
126081       return this->reflect() == rhs.reflect();
126082 #    else
126083       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( hinstance == rhs.hinstance ) && ( hwnd == rhs.hwnd );
126084 #    endif
126085     }
126086 
operator !=VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR126087     bool operator!=( Win32SurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126088     {
126089       return !operator==( rhs );
126090     }
126091 #  endif
126092 
126093   public:
126094     VULKAN_HPP_NAMESPACE::StructureType              sType     = StructureType::eWin32SurfaceCreateInfoKHR;
126095     const void *                                     pNext     = {};
126096     VULKAN_HPP_NAMESPACE::Win32SurfaceCreateFlagsKHR flags     = {};
126097     HINSTANCE                                        hinstance = {};
126098     HWND                                             hwnd      = {};
126099   };
126100 
126101   template <>
126102   struct CppType<StructureType, StructureType::eWin32SurfaceCreateInfoKHR>
126103   {
126104     using Type = Win32SurfaceCreateInfoKHR;
126105   };
126106 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
126107 
126108   struct WriteDescriptorSetAccelerationStructureKHR
126109   {
126110     using NativeType = VkWriteDescriptorSetAccelerationStructureKHR;
126111 
126112     static const bool                                  allowDuplicate = false;
126113     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eWriteDescriptorSetAccelerationStructureKHR;
126114 
126115 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
WriteDescriptorSetAccelerationStructureKHRVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR126116     VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureKHR( uint32_t                                               accelerationStructureCount_ = {},
126117                                                                      const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR * pAccelerationStructures_    = {},
126118                                                                      const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
126119       : pNext{ pNext_ }
126120       , accelerationStructureCount{ accelerationStructureCount_ }
126121       , pAccelerationStructures{ pAccelerationStructures_ }
126122     {
126123     }
126124 
126125     VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureKHR( WriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126126 
WriteDescriptorSetAccelerationStructureKHRVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR126127     WriteDescriptorSetAccelerationStructureKHR( VkWriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126128       : WriteDescriptorSetAccelerationStructureKHR( *reinterpret_cast<WriteDescriptorSetAccelerationStructureKHR const *>( &rhs ) )
126129     {
126130     }
126131 
126132 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
WriteDescriptorSetAccelerationStructureKHRVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR126133     WriteDescriptorSetAccelerationStructureKHR(
126134       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures_,
126135       const void *                                                                                                pNext_ = nullptr )
126136       : pNext( pNext_ )
126137       , accelerationStructureCount( static_cast<uint32_t>( accelerationStructures_.size() ) )
126138       , pAccelerationStructures( accelerationStructures_.data() )
126139     {
126140     }
126141 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
126142 
126143     WriteDescriptorSetAccelerationStructureKHR & operator=( WriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126144 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
126145 
operator =VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR126146     WriteDescriptorSetAccelerationStructureKHR & operator=( VkWriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126147     {
126148       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR const *>( &rhs );
126149       return *this;
126150     }
126151 
126152 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR126153     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
126154     {
126155       pNext = pNext_;
126156       return *this;
126157     }
126158 
126159     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureKHR &
setAccelerationStructureCountVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR126160       setAccelerationStructureCount( uint32_t accelerationStructureCount_ ) VULKAN_HPP_NOEXCEPT
126161     {
126162       accelerationStructureCount = accelerationStructureCount_;
126163       return *this;
126164     }
126165 
126166     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureKHR &
setPAccelerationStructuresVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR126167       setPAccelerationStructures( const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR * pAccelerationStructures_ ) VULKAN_HPP_NOEXCEPT
126168     {
126169       pAccelerationStructures = pAccelerationStructures_;
126170       return *this;
126171     }
126172 
126173 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAccelerationStructuresVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR126174     WriteDescriptorSetAccelerationStructureKHR & setAccelerationStructures(
126175       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures_ ) VULKAN_HPP_NOEXCEPT
126176     {
126177       accelerationStructureCount = static_cast<uint32_t>( accelerationStructures_.size() );
126178       pAccelerationStructures    = accelerationStructures_.data();
126179       return *this;
126180     }
126181 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
126182 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
126183 
operator VkWriteDescriptorSetAccelerationStructureKHR const&VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR126184     operator VkWriteDescriptorSetAccelerationStructureKHR const &() const VULKAN_HPP_NOEXCEPT
126185     {
126186       return *reinterpret_cast<const VkWriteDescriptorSetAccelerationStructureKHR *>( this );
126187     }
126188 
operator VkWriteDescriptorSetAccelerationStructureKHR&VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR126189     operator VkWriteDescriptorSetAccelerationStructureKHR &() VULKAN_HPP_NOEXCEPT
126190     {
126191       return *reinterpret_cast<VkWriteDescriptorSetAccelerationStructureKHR *>( this );
126192     }
126193 
126194 #if defined( VULKAN_HPP_USE_REFLECT )
126195 #  if 14 <= VULKAN_HPP_CPP_VERSION
126196     auto
126197 #  else
126198     std::
126199       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR * const &>
126200 #  endif
reflectVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR126201       reflect() const VULKAN_HPP_NOEXCEPT
126202     {
126203       return std::tie( sType, pNext, accelerationStructureCount, pAccelerationStructures );
126204     }
126205 #endif
126206 
126207 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
126208     auto operator<=>( WriteDescriptorSetAccelerationStructureKHR const & ) const = default;
126209 #else
operator ==VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR126210     bool operator==( WriteDescriptorSetAccelerationStructureKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126211     {
126212 #  if defined( VULKAN_HPP_USE_REFLECT )
126213       return this->reflect() == rhs.reflect();
126214 #  else
126215       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructureCount == rhs.accelerationStructureCount ) &&
126216              ( pAccelerationStructures == rhs.pAccelerationStructures );
126217 #  endif
126218     }
126219 
operator !=VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR126220     bool operator!=( WriteDescriptorSetAccelerationStructureKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126221     {
126222       return !operator==( rhs );
126223     }
126224 #endif
126225 
126226   public:
126227     VULKAN_HPP_NAMESPACE::StructureType                    sType                      = StructureType::eWriteDescriptorSetAccelerationStructureKHR;
126228     const void *                                           pNext                      = {};
126229     uint32_t                                               accelerationStructureCount = {};
126230     const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR * pAccelerationStructures    = {};
126231   };
126232 
126233   template <>
126234   struct CppType<StructureType, StructureType::eWriteDescriptorSetAccelerationStructureKHR>
126235   {
126236     using Type = WriteDescriptorSetAccelerationStructureKHR;
126237   };
126238 
126239   struct WriteDescriptorSetAccelerationStructureNV
126240   {
126241     using NativeType = VkWriteDescriptorSetAccelerationStructureNV;
126242 
126243     static const bool                                  allowDuplicate = false;
126244     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eWriteDescriptorSetAccelerationStructureNV;
126245 
126246 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
WriteDescriptorSetAccelerationStructureNVVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV126247     VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureNV( uint32_t                                              accelerationStructureCount_ = {},
126248                                                                     const VULKAN_HPP_NAMESPACE::AccelerationStructureNV * pAccelerationStructures_    = {},
126249                                                                     const void *                                          pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
126250       : pNext{ pNext_ }
126251       , accelerationStructureCount{ accelerationStructureCount_ }
126252       , pAccelerationStructures{ pAccelerationStructures_ }
126253     {
126254     }
126255 
126256     VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureNV( WriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126257 
WriteDescriptorSetAccelerationStructureNVVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV126258     WriteDescriptorSetAccelerationStructureNV( VkWriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT
126259       : WriteDescriptorSetAccelerationStructureNV( *reinterpret_cast<WriteDescriptorSetAccelerationStructureNV const *>( &rhs ) )
126260     {
126261     }
126262 
126263 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
WriteDescriptorSetAccelerationStructureNVVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV126264     WriteDescriptorSetAccelerationStructureNV(
126265       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureNV> const & accelerationStructures_,
126266       const void *                                                                                               pNext_ = nullptr )
126267       : pNext( pNext_ )
126268       , accelerationStructureCount( static_cast<uint32_t>( accelerationStructures_.size() ) )
126269       , pAccelerationStructures( accelerationStructures_.data() )
126270     {
126271     }
126272 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
126273 
126274     WriteDescriptorSetAccelerationStructureNV & operator=( WriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126275 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
126276 
operator =VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV126277     WriteDescriptorSetAccelerationStructureNV & operator=( VkWriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT
126278     {
126279       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV const *>( &rhs );
126280       return *this;
126281     }
126282 
126283 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV126284     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
126285     {
126286       pNext = pNext_;
126287       return *this;
126288     }
126289 
126290     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureNV &
setAccelerationStructureCountVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV126291       setAccelerationStructureCount( uint32_t accelerationStructureCount_ ) VULKAN_HPP_NOEXCEPT
126292     {
126293       accelerationStructureCount = accelerationStructureCount_;
126294       return *this;
126295     }
126296 
126297     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureNV &
setPAccelerationStructuresVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV126298       setPAccelerationStructures( const VULKAN_HPP_NAMESPACE::AccelerationStructureNV * pAccelerationStructures_ ) VULKAN_HPP_NOEXCEPT
126299     {
126300       pAccelerationStructures = pAccelerationStructures_;
126301       return *this;
126302     }
126303 
126304 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAccelerationStructuresVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV126305     WriteDescriptorSetAccelerationStructureNV & setAccelerationStructures(
126306       VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureNV> const & accelerationStructures_ ) VULKAN_HPP_NOEXCEPT
126307     {
126308       accelerationStructureCount = static_cast<uint32_t>( accelerationStructures_.size() );
126309       pAccelerationStructures    = accelerationStructures_.data();
126310       return *this;
126311     }
126312 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
126313 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
126314 
operator VkWriteDescriptorSetAccelerationStructureNV const&VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV126315     operator VkWriteDescriptorSetAccelerationStructureNV const &() const VULKAN_HPP_NOEXCEPT
126316     {
126317       return *reinterpret_cast<const VkWriteDescriptorSetAccelerationStructureNV *>( this );
126318     }
126319 
operator VkWriteDescriptorSetAccelerationStructureNV&VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV126320     operator VkWriteDescriptorSetAccelerationStructureNV &() VULKAN_HPP_NOEXCEPT
126321     {
126322       return *reinterpret_cast<VkWriteDescriptorSetAccelerationStructureNV *>( this );
126323     }
126324 
126325 #if defined( VULKAN_HPP_USE_REFLECT )
126326 #  if 14 <= VULKAN_HPP_CPP_VERSION
126327     auto
126328 #  else
126329     std::
126330       tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::AccelerationStructureNV * const &>
126331 #  endif
reflectVULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV126332       reflect() const VULKAN_HPP_NOEXCEPT
126333     {
126334       return std::tie( sType, pNext, accelerationStructureCount, pAccelerationStructures );
126335     }
126336 #endif
126337 
126338 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
126339     auto operator<=>( WriteDescriptorSetAccelerationStructureNV const & ) const = default;
126340 #else
operator ==VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV126341     bool operator==( WriteDescriptorSetAccelerationStructureNV const & rhs ) const VULKAN_HPP_NOEXCEPT
126342     {
126343 #  if defined( VULKAN_HPP_USE_REFLECT )
126344       return this->reflect() == rhs.reflect();
126345 #  else
126346       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructureCount == rhs.accelerationStructureCount ) &&
126347              ( pAccelerationStructures == rhs.pAccelerationStructures );
126348 #  endif
126349     }
126350 
operator !=VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV126351     bool operator!=( WriteDescriptorSetAccelerationStructureNV const & rhs ) const VULKAN_HPP_NOEXCEPT
126352     {
126353       return !operator==( rhs );
126354     }
126355 #endif
126356 
126357   public:
126358     VULKAN_HPP_NAMESPACE::StructureType                   sType                      = StructureType::eWriteDescriptorSetAccelerationStructureNV;
126359     const void *                                          pNext                      = {};
126360     uint32_t                                              accelerationStructureCount = {};
126361     const VULKAN_HPP_NAMESPACE::AccelerationStructureNV * pAccelerationStructures    = {};
126362   };
126363 
126364   template <>
126365   struct CppType<StructureType, StructureType::eWriteDescriptorSetAccelerationStructureNV>
126366   {
126367     using Type = WriteDescriptorSetAccelerationStructureNV;
126368   };
126369 
126370   struct WriteDescriptorSetInlineUniformBlock
126371   {
126372     using NativeType = VkWriteDescriptorSetInlineUniformBlock;
126373 
126374     static const bool                                  allowDuplicate = false;
126375     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eWriteDescriptorSetInlineUniformBlock;
126376 
126377 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
126378     VULKAN_HPP_CONSTEXPR
WriteDescriptorSetInlineUniformBlockVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock126379       WriteDescriptorSetInlineUniformBlock( uint32_t dataSize_ = {}, const void * pData_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT
126380       : pNext{ pNext_ }
126381       , dataSize{ dataSize_ }
126382       , pData{ pData_ }
126383     {
126384     }
126385 
126386     VULKAN_HPP_CONSTEXPR WriteDescriptorSetInlineUniformBlock( WriteDescriptorSetInlineUniformBlock const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126387 
WriteDescriptorSetInlineUniformBlockVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock126388     WriteDescriptorSetInlineUniformBlock( VkWriteDescriptorSetInlineUniformBlock const & rhs ) VULKAN_HPP_NOEXCEPT
126389       : WriteDescriptorSetInlineUniformBlock( *reinterpret_cast<WriteDescriptorSetInlineUniformBlock const *>( &rhs ) )
126390     {
126391     }
126392 
126393 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
126394     template <typename T>
WriteDescriptorSetInlineUniformBlockVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock126395     WriteDescriptorSetInlineUniformBlock( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_, const void * pNext_ = nullptr )
126396       : pNext( pNext_ ), dataSize( static_cast<uint32_t>( data_.size() * sizeof( T ) ) ), pData( data_.data() )
126397     {
126398     }
126399 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
126400 
126401     WriteDescriptorSetInlineUniformBlock & operator=( WriteDescriptorSetInlineUniformBlock const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126402 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
126403 
operator =VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock126404     WriteDescriptorSetInlineUniformBlock & operator=( VkWriteDescriptorSetInlineUniformBlock const & rhs ) VULKAN_HPP_NOEXCEPT
126405     {
126406       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock const *>( &rhs );
126407       return *this;
126408     }
126409 
126410 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock126411     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlock & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
126412     {
126413       pNext = pNext_;
126414       return *this;
126415     }
126416 
setDataSizeVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock126417     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlock & setDataSize( uint32_t dataSize_ ) VULKAN_HPP_NOEXCEPT
126418     {
126419       dataSize = dataSize_;
126420       return *this;
126421     }
126422 
setPDataVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock126423     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlock & setPData( const void * pData_ ) VULKAN_HPP_NOEXCEPT
126424     {
126425       pData = pData_;
126426       return *this;
126427     }
126428 
126429 #  if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
126430     template <typename T>
setDataVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock126431     WriteDescriptorSetInlineUniformBlock & setData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_ ) VULKAN_HPP_NOEXCEPT
126432     {
126433       dataSize = static_cast<uint32_t>( data_.size() * sizeof( T ) );
126434       pData    = data_.data();
126435       return *this;
126436     }
126437 #  endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
126438 #endif   /*VULKAN_HPP_NO_STRUCT_SETTERS*/
126439 
operator VkWriteDescriptorSetInlineUniformBlock const&VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock126440     operator VkWriteDescriptorSetInlineUniformBlock const &() const VULKAN_HPP_NOEXCEPT
126441     {
126442       return *reinterpret_cast<const VkWriteDescriptorSetInlineUniformBlock *>( this );
126443     }
126444 
operator VkWriteDescriptorSetInlineUniformBlock&VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock126445     operator VkWriteDescriptorSetInlineUniformBlock &() VULKAN_HPP_NOEXCEPT
126446     {
126447       return *reinterpret_cast<VkWriteDescriptorSetInlineUniformBlock *>( this );
126448     }
126449 
126450 #if defined( VULKAN_HPP_USE_REFLECT )
126451 #  if 14 <= VULKAN_HPP_CPP_VERSION
126452     auto
126453 #  else
126454     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const void * const &>
126455 #  endif
reflectVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock126456       reflect() const VULKAN_HPP_NOEXCEPT
126457     {
126458       return std::tie( sType, pNext, dataSize, pData );
126459     }
126460 #endif
126461 
126462 #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
126463     auto operator<=>( WriteDescriptorSetInlineUniformBlock const & ) const = default;
126464 #else
operator ==VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock126465     bool operator==( WriteDescriptorSetInlineUniformBlock const & rhs ) const VULKAN_HPP_NOEXCEPT
126466     {
126467 #  if defined( VULKAN_HPP_USE_REFLECT )
126468       return this->reflect() == rhs.reflect();
126469 #  else
126470       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dataSize == rhs.dataSize ) && ( pData == rhs.pData );
126471 #  endif
126472     }
126473 
operator !=VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock126474     bool operator!=( WriteDescriptorSetInlineUniformBlock const & rhs ) const VULKAN_HPP_NOEXCEPT
126475     {
126476       return !operator==( rhs );
126477     }
126478 #endif
126479 
126480   public:
126481     VULKAN_HPP_NAMESPACE::StructureType sType    = StructureType::eWriteDescriptorSetInlineUniformBlock;
126482     const void *                        pNext    = {};
126483     uint32_t                            dataSize = {};
126484     const void *                        pData    = {};
126485   };
126486 
126487   template <>
126488   struct CppType<StructureType, StructureType::eWriteDescriptorSetInlineUniformBlock>
126489   {
126490     using Type = WriteDescriptorSetInlineUniformBlock;
126491   };
126492 
126493   using WriteDescriptorSetInlineUniformBlockEXT = WriteDescriptorSetInlineUniformBlock;
126494 
126495 #if defined( VK_USE_PLATFORM_XCB_KHR )
126496   struct XcbSurfaceCreateInfoKHR
126497   {
126498     using NativeType = VkXcbSurfaceCreateInfoKHR;
126499 
126500     static const bool                                  allowDuplicate = false;
126501     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eXcbSurfaceCreateInfoKHR;
126502 
126503 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
XcbSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR126504     VULKAN_HPP_CONSTEXPR XcbSurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::XcbSurfaceCreateFlagsKHR flags_      = {},
126505                                                   xcb_connection_t *                             connection_ = {},
126506                                                   xcb_window_t                                   window_     = {},
126507                                                   const void *                                   pNext_      = nullptr ) VULKAN_HPP_NOEXCEPT
126508       : pNext{ pNext_ }
126509       , flags{ flags_ }
126510       , connection{ connection_ }
126511       , window{ window_ }
126512     {
126513     }
126514 
126515     VULKAN_HPP_CONSTEXPR XcbSurfaceCreateInfoKHR( XcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126516 
XcbSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR126517     XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126518       : XcbSurfaceCreateInfoKHR( *reinterpret_cast<XcbSurfaceCreateInfoKHR const *>( &rhs ) )
126519     {
126520     }
126521 
126522     XcbSurfaceCreateInfoKHR & operator=( XcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126523 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
126524 
operator =VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR126525     XcbSurfaceCreateInfoKHR & operator=( VkXcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126526     {
126527       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR const *>( &rhs );
126528       return *this;
126529     }
126530 
126531 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR126532     VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
126533     {
126534       pNext = pNext_;
126535       return *this;
126536     }
126537 
setFlagsVULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR126538     VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::XcbSurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
126539     {
126540       flags = flags_;
126541       return *this;
126542     }
126543 
setConnectionVULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR126544     VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR & setConnection( xcb_connection_t * connection_ ) VULKAN_HPP_NOEXCEPT
126545     {
126546       connection = connection_;
126547       return *this;
126548     }
126549 
setWindowVULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR126550     VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR & setWindow( xcb_window_t window_ ) VULKAN_HPP_NOEXCEPT
126551     {
126552       window = window_;
126553       return *this;
126554     }
126555 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
126556 
operator VkXcbSurfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR126557     operator VkXcbSurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
126558     {
126559       return *reinterpret_cast<const VkXcbSurfaceCreateInfoKHR *>( this );
126560     }
126561 
operator VkXcbSurfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR126562     operator VkXcbSurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
126563     {
126564       return *reinterpret_cast<VkXcbSurfaceCreateInfoKHR *>( this );
126565     }
126566 
126567 #  if defined( VULKAN_HPP_USE_REFLECT )
126568 #    if 14 <= VULKAN_HPP_CPP_VERSION
126569     auto
126570 #    else
126571     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
126572                const void * const &,
126573                VULKAN_HPP_NAMESPACE::XcbSurfaceCreateFlagsKHR const &,
126574                xcb_connection_t * const &,
126575                xcb_window_t const &>
126576 #    endif
reflectVULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR126577       reflect() const VULKAN_HPP_NOEXCEPT
126578     {
126579       return std::tie( sType, pNext, flags, connection, window );
126580     }
126581 #  endif
126582 
126583 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR126584     std::strong_ordering operator<=>( XcbSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126585     {
126586       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
126587         return cmp;
126588       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
126589         return cmp;
126590       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
126591         return cmp;
126592       if ( auto cmp = connection <=> rhs.connection; cmp != 0 )
126593         return cmp;
126594       if ( auto cmp = memcmp( &window, &rhs.window, sizeof( xcb_window_t ) ); cmp != 0 )
126595         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
126596 
126597       return std::strong_ordering::equivalent;
126598     }
126599 #  endif
126600 
operator ==VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR126601     bool operator==( XcbSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126602     {
126603       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( connection == rhs.connection ) &&
126604              ( memcmp( &window, &rhs.window, sizeof( xcb_window_t ) ) == 0 );
126605     }
126606 
operator !=VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR126607     bool operator!=( XcbSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126608     {
126609       return !operator==( rhs );
126610     }
126611 
126612   public:
126613     VULKAN_HPP_NAMESPACE::StructureType            sType      = StructureType::eXcbSurfaceCreateInfoKHR;
126614     const void *                                   pNext      = {};
126615     VULKAN_HPP_NAMESPACE::XcbSurfaceCreateFlagsKHR flags      = {};
126616     xcb_connection_t *                             connection = {};
126617     xcb_window_t                                   window     = {};
126618   };
126619 
126620   template <>
126621   struct CppType<StructureType, StructureType::eXcbSurfaceCreateInfoKHR>
126622   {
126623     using Type = XcbSurfaceCreateInfoKHR;
126624   };
126625 #endif /*VK_USE_PLATFORM_XCB_KHR*/
126626 
126627 #if defined( VK_USE_PLATFORM_XLIB_KHR )
126628   struct XlibSurfaceCreateInfoKHR
126629   {
126630     using NativeType = VkXlibSurfaceCreateInfoKHR;
126631 
126632     static const bool                                  allowDuplicate = false;
126633     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType  = StructureType::eXlibSurfaceCreateInfoKHR;
126634 
126635 #  if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
XlibSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR126636     VULKAN_HPP_CONSTEXPR XlibSurfaceCreateInfoKHR( VULKAN_HPP_NAMESPACE::XlibSurfaceCreateFlagsKHR flags_  = {},
126637                                                    Display *                                       dpy_    = {},
126638                                                    Window                                          window_ = {},
126639                                                    const void *                                    pNext_  = nullptr ) VULKAN_HPP_NOEXCEPT
126640       : pNext{ pNext_ }
126641       , flags{ flags_ }
126642       , dpy{ dpy_ }
126643       , window{ window_ }
126644     {
126645     }
126646 
126647     VULKAN_HPP_CONSTEXPR XlibSurfaceCreateInfoKHR( XlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126648 
XlibSurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR126649     XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126650       : XlibSurfaceCreateInfoKHR( *reinterpret_cast<XlibSurfaceCreateInfoKHR const *>( &rhs ) )
126651     {
126652     }
126653 
126654     XlibSurfaceCreateInfoKHR & operator=( XlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
126655 #  endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
126656 
operator =VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR126657     XlibSurfaceCreateInfoKHR & operator=( VkXlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
126658     {
126659       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR const *>( &rhs );
126660       return *this;
126661     }
126662 
126663 #  if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR126664     VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
126665     {
126666       pNext = pNext_;
126667       return *this;
126668     }
126669 
setFlagsVULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR126670     VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::XlibSurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
126671     {
126672       flags = flags_;
126673       return *this;
126674     }
126675 
setDpyVULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR126676     VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR & setDpy( Display * dpy_ ) VULKAN_HPP_NOEXCEPT
126677     {
126678       dpy = dpy_;
126679       return *this;
126680     }
126681 
setWindowVULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR126682     VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR & setWindow( Window window_ ) VULKAN_HPP_NOEXCEPT
126683     {
126684       window = window_;
126685       return *this;
126686     }
126687 #  endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
126688 
operator VkXlibSurfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR126689     operator VkXlibSurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
126690     {
126691       return *reinterpret_cast<const VkXlibSurfaceCreateInfoKHR *>( this );
126692     }
126693 
operator VkXlibSurfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR126694     operator VkXlibSurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
126695     {
126696       return *reinterpret_cast<VkXlibSurfaceCreateInfoKHR *>( this );
126697     }
126698 
126699 #  if defined( VULKAN_HPP_USE_REFLECT )
126700 #    if 14 <= VULKAN_HPP_CPP_VERSION
126701     auto
126702 #    else
126703     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &,
126704                const void * const &,
126705                VULKAN_HPP_NAMESPACE::XlibSurfaceCreateFlagsKHR const &,
126706                Display * const &,
126707                Window const &>
126708 #    endif
reflectVULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR126709       reflect() const VULKAN_HPP_NOEXCEPT
126710     {
126711       return std::tie( sType, pNext, flags, dpy, window );
126712     }
126713 #  endif
126714 
126715 #  if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR )
operator <=>VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR126716     std::strong_ordering operator<=>( XlibSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126717     {
126718       if ( auto cmp = sType <=> rhs.sType; cmp != 0 )
126719         return cmp;
126720       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 )
126721         return cmp;
126722       if ( auto cmp = flags <=> rhs.flags; cmp != 0 )
126723         return cmp;
126724       if ( auto cmp = dpy <=> rhs.dpy; cmp != 0 )
126725         return cmp;
126726       if ( auto cmp = memcmp( &window, &rhs.window, sizeof( Window ) ); cmp != 0 )
126727         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
126728 
126729       return std::strong_ordering::equivalent;
126730     }
126731 #  endif
126732 
operator ==VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR126733     bool operator==( XlibSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126734     {
126735       return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( dpy == rhs.dpy ) &&
126736              ( memcmp( &window, &rhs.window, sizeof( Window ) ) == 0 );
126737     }
126738 
operator !=VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR126739     bool operator!=( XlibSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
126740     {
126741       return !operator==( rhs );
126742     }
126743 
126744   public:
126745     VULKAN_HPP_NAMESPACE::StructureType             sType  = StructureType::eXlibSurfaceCreateInfoKHR;
126746     const void *                                    pNext  = {};
126747     VULKAN_HPP_NAMESPACE::XlibSurfaceCreateFlagsKHR flags  = {};
126748     Display *                                       dpy    = {};
126749     Window                                          window = {};
126750   };
126751 
126752   template <>
126753   struct CppType<StructureType, StructureType::eXlibSurfaceCreateInfoKHR>
126754   {
126755     using Type = XlibSurfaceCreateInfoKHR;
126756   };
126757 #endif /*VK_USE_PLATFORM_XLIB_KHR*/
126758 
126759 }  // namespace VULKAN_HPP_NAMESPACE
126760 #endif
126761